第八章系统开发中的项目管理一、项目管理的主要任务二、软件项目的计划阶段三、项目管理工具一、项目管理的主要任务1、软件项目中的组织结构与角色1)客户:对要开发的新系统进行投资的个人或团体。对于内部开发,客户可能是专门成立的执行委员会或领导小组,对于大型项目还可能成立一个监督委员会。2)用户:最终操作和使用要开发软件系统的人。用户可能就是客户,但并不总是。用户提供有关新系统需求的详细功能和操作的信息,而客户提供商业结构和战略方面的信息,这些是影响系统规划和设计的重要因素。3)开发小组:由系统分析人员,程序员,软件配置人员、测试人员或文档管理员等组成的分工协作单位。4)成员:项目开发的最小单位。用户用户项目经理小组领导小组领导客户一、项目管理的主要任务2、项目经理的任务1)项目规模管理2)项目进度管理3)项目成本管理4)项目质量管理5)人力资源管理6)项目通信管理7)项目风险管理…1)项目规模管理确定要开发的项目的规模并在软件开发过程中加以控制。规模管理的目标:l准确定义新系统的功能和潜能l检查确定的功能是必要的l控制功能集合以防止不适当的增长。员需求扩充:开发活动和系统规范完成以后新增加的系统需求,从而引起项目规模的扩充。它可能发生在整个项目的各个阶段,如分析、设计阶段甚至在实现阶段。发生的阶段越晚,导致的问题越多。如新增一个字段可能导致的后果:数据库结构、输入控制、界面控制、错误处理、报表输出、控制算法、更新算法、测试计划、用户文档。1)项目规模管理确定要开发的项目的规模并在软件开发过程中加以控制。规模管理的内容:l定义规模——系统说明书:将系统要解决的问题和要实现的功能整理成文。l证实规模——需求确认会议:与用户确认各种需求的优先级,保证关键功能得到确认。l控制规模——规模变化日志:记录规模变化及其重要性和优先级,并估计对工作量、进度、资源和预算带来的影响。1)项目规模管理规模管理的技术:软件规模度量•代码行技术LOC(KLOC):由有经验的人员对代码量进行估计。•优点:代码具有共性,可用估算模型多,•缺点:代码不能代表全部,不同语言有差异,不适合OO•方法:L=(a+4m+b)/6n•功能点技术FP:以信息域特性和软件复杂性以功能点为单位进行估计。(输入项数、输出项数、查询项数、主文件数、外部接口数)•优点:与编程语言无关•缺点:主观性强•方法:将不同特性按复杂性分类,每个项数分配几个点数并汇总为UFP,将不同的使用技术按对规模的影响程序分配权重并汇总为TCF作为复杂度因子,FP=UFP*TCF1)项目规模管理规模管理的技术:工作量估算•静态估算:E=A+B*(ev)c•面向LOC:•Walston-Lelix:E=5.2*(KLOC)0.91•Baily-Basily:E=5.5+0.73*(KLOC)1.16…•面向FP:•Albrecht&Gaffney:E=-13.39+0.0545*FP•Kemerer:E=-60.62*7.728*10-8*FP31)项目规模管理规模管理的技术:工作量估算•动态估算:E=(LOC*B0.333/P)3*(1/t)4•t:项目持续时间•B:技术因子,B=0.16(KLOC=5-15)B=0.39(KLOC70)•P:生产率,从历史经验中取得,反映生产率对工作量的影响,如简单嵌入式软件P=2000,电信系统P=10000,大型商业系统P=280002)项目进度管理确定各项任务的时间并在软件开发过程中加以控制。常见问题:客户要求在某一时间得到最终产品,结果——按客户要求而不是实际工作量来制定进度计划。进度管理的目标:l保证进度表与要完成的工作完全一致l准确度量已完成的工作以正确评定已完成进度l有效利用和安排资源和技术以加速整体的进度2)项目进度管理进度管理的内容:l工作分解——项目进度表:评估每项活动的工作量并确定活动之间的依赖关系。关键——确定出所有的活动/真实估计出每项活动的工作量。使用方法:功能点分析,历史记录对照等。l进度计划修正——增加额外活动/时间不足/资源不足。l进度控制——里程碑、关键路径设定。坚持用完成/未完成来衡量里程碑——80/20准则:20%的时间完成80%的进度并不代表剩下的80%的时间能完成20%的进度。2)项目进度管理进度管理的技术:lGantt图重新油漆旧房子,先刮旧漆,再刷新漆,最后清理窗户上的油漆。共15名工人,5把刮旧漆的刮板,5把刷子,5把清理用小刮刀问如何安排?2)项目进度管理进度管理的技术:lPERT/CPM图与关键路径3)项目成本管理成本决定项目最终的效益以及项目的可行性。项目成本的重要部分是人力资源成本——这意味着时间与要付出的努力越多,项目成本就越高。项目成本管理目标:l正确估计预期成本l准确估算现金流和花费的时间安排l控制项目进行过程中的花费l正确记录实际项目的花费3)项目成本管理项目成本管理内容:l成本估算——制定制度确定成本范围,如硬件,开发工具,程序员工资。l预测现金流——效率因子:实际时间/估计时间l花费控制——在节约与浪费中平衡。如封闭开发。4)项目质量管理保证最终产品的质量达到要求。软件质量要求:l易于使用l满足预期目的l鲁棒性l可靠性4)项目质量管理软件质量管理内容l规范与标准化l里程碑与阶段评审l文档控制l测试l外部确认与内部验证——外部满足需求,内部相互一致(不产生冲突)5)人力资源管理建立一个使开发小组成员能尽可能高速高效开展工作的环境。管理目标:l人员获得l人员培训——对经验不足的小组成员进行培训,对项目开发制度与规范进行说明。l小组构建——项目整体结构/每个小组的结构。l人员激励——物质,精神l工作环境优化——交流、网络、资料库人员获得在项目不同阶段制定不同层次的人员组合。计划阶段:项目经理+系统分析员+用户分析阶段:项目经理+更多系统分析员+业务专家+用户设计阶段:项目经理+系统分析员+技术人员(数据库管理员,网络管理员,配置管理员)实现阶段:以上+程序员小组构建•项目组•民主分权式:没有固定负责人,任务协调人临时指定。全体组员协商一致解决问题,通信是平行的。•控制分权式:有固定负责人协调任务完成,指导下级领导人工作。小组负责人划分任务群体协调解决问题,小组内通信平行。•控制集权式:小组负责人管理顶层问题并负责协调,负责人与小组成员为上下级通信关系。小组构建•程序员组•民主制程序员组•优点:主观能动性,凝聚力,学术氛围浓•缺点:通信障碍(2-8名),缺乏权威,不适合多数成员技术不高的情况;程序员把模块打上自己的印迹。•主程序员组•类似外科手术中的关系,由一名能力较强的程序员为核心构建小组。•优点:专业化,层次性强,成员间无通信。•缺点:主程序员即懂技术又懂管理,缺乏后备程序员小组构建•程序员组•现代程序员组常见形式•小型项目:•行政组长负责预算,进度,绩效评价等•技术组长只负责技术。行政组长技术组长程序员程序员程序员小组构建•程序员组•现代程序员组常见形式•大中型项目:•项目经理为中心•集中+民主组长程序员程序员程序员组长程序员程序员程序员项目经理6)项目通信管理保证项目小组能高效的沟通。包括信息的收集、传递与交流。管理目标:l保证及时和准确完整地收集必要的信息l保证项目信息准确反映项目的情况l保证项目组成员能获得最新的信息l对重要项目信息进行记录和归档6)项目通信管理管理内容:l收集什么信息l由谁收集信息l谁需要信息l如何收集信息l如何记录信息l如何验证信息l如何传递信息l如何汇报(时间,形式)7)项目风险管理避免项目过程中可能发生的风险。风险:项目失败的可能性。管理目标:l确定潜在风险l制订策略减少已确认的风险l实施策略监测和控制风险7)项目风险管理管理内容:l风险识别:召开多种类型人员参与的开放式会议。列出项目可能存在的风险并按重要性排序。l风险跟踪:制定风险控制计划并定期对照,重新估计风险并更新重要风险列表。7)项目风险管理风险识别:l产品规模l商业风险l客户相关风险l过程风险l技术风险l开发环境风险l人员风险8)项目配置管理对软件开发过程中的变化进行管理的活动。管理目标:l使变化更容易被适应l在变化时尽可能减少代价管理内容:l确定管理基线——已经确定了的产品规格l标识被管理对象(程序,文档,数据等)l版本控制l变化控制8)项目配置管理管理技术——版本控制系统VSSCVS9)项目获取管理对项目资源获取的管理,主要是对一些硬件、软件、咨询顾问等资源供应商的选择。二、软件项目的计划阶段1、项目计划阶段的主要活动计划阶段一般配备2-3个系统分析员,一人出任项目经理。这几个人将是整个项目的核心,之后将以他们为中心建立其余小组。在计划阶段确认系统要完成的任务并认为可行后,即分配好资源、制订进度计划并做好预算,项目即可启动。l问题定义l制订进度表l可行性分析l人员组织l项目启动1)问题定义确认要解决的问题,制订预期收益明细表——表明客户希望通过新系统实现的结果,确定新系统的能力,这三个部分构成系统作用域文档。必要时,可以用概念原型、系统关联图表示新系统的功能。2)制订进度任务分解制定完成项目所需的各个任务的列表。建立进度PERT/CPM图甘特图3)可行性分析经济可行性组织文化可行性技术可行性进度表可行性资源可行性经济可行性1.成本效益分析:分析比较开发成本与收益以确定投资新系统的开发是有效益的.2.现金流是够充足:确定成本所需的资金来源成本:工资设备工具与平台第三方付款培训设施支持人员差旅及杂项效益:减少工员提高工作能力减少运行费用减少错误损失加快周转减少损耗…计算方法:a.净现值b.投资回收期c.盈亏平衡点d.投资回益率4)人员组织发现和安排适合本项目的人员,并在整个项目过程中组织和管理他们。l制订资源计划l确认参与人员l确定参与用户l小组划分l培训和建组训练5)项目启动计划安排好了吗?资源准备完成了吗?人员训练了吗?GO!!!三、项目管理工具1、MicrosoftProject2、MicrosoftVisualSourceSafe1、MicrosoftProject项目起点制定日历任务管理分解,链接资源管理定义,分配项目跟踪生成报表固定单位固定工期固定工时SSSFFSFF资源信息资源日历资源费率资源分配Example1、MicrosoftVSS数据库用户项目工作目录CheckOutCheckIn版本