《软件工程 第十一章 软件项目管理课件》由会员分享,可在线阅读,更多相关《软件工程 第十一章 软件项目管理课件(34页珍藏版)》请在金锄头文库上搜索。
1、软件项目管理,第十一章,11.1 软件项目管理概述,第11章,软件项目管理的职能包括: (1)制订计划:规定要完成的任务和要求,安排资源、人员和进度等。 (2)建立组织:建立分工明确的为实施计划的责任制机构,以保证任务的完成。 (3)配备人员:根据任务要求,任用各种层次的技术人员和管理人员。 (4)协调或追踪与指导:跟踪项目的进展情况,协调、指导、鼓励和动员各种人员完成所分配的任务。 (5)控制或检验:对照计划和标准,监督和检验项目实施的情况。,11.1.1 软件项目管理的职责,11.1 软件项目管理概述,第11章,1启动软件项目 在制定项目计划前,应首先明确项目的目标、考虑候选的解决方案、清
2、楚技术和管理上的要求等。项目的目标标明了项目的目的,但并不涉及如何达到目的。候选的解决方案使管理人员能够从中选择最好的方案,从而确定合理、精确的成本估算,进行实际可行的任务分解以及可管理的进度安排。 项目启动前,应成立项目组,召开项目启动会议,进行组内交流,深刻理解项目目标,对组织形式、管理方式和方针取得一致认识,明确岗位职责等。,11.1.2 软件项目管理的过程,11.1 软件项目管理概述,第11章,2制定项目计划 项目计划是用来指导组织、实施、协调和控制软件开发的重要文件,其主要作用是: (1)可激励和鼓舞团队的士气。 (2)可以使项目成员有明确的分工及工作目标。 (3)可促进项目组相关人
3、员之间的沟通与交流。 (4)可作为项目过程控制和工作考核的基准。 (5)可作为解决用户和开发团队间冲突的依据。,11.1.2 软件项目管理的过程,11.1 软件项目管理概述,第11章,制定项目计划的主要工作是: (1)确定详细的项目实施范围。 (2)定义递交的工作成果。 (3)评估实施过程中的主要风险。 (4)制定项目实施的时间计划。 (5)制定成本和预算计划。 (6)制定人力资源计划等。,11.1.2 软件项目管理的过程,11.1 软件项目管理概述,第11章,3计划的追踪和控制 建立了进度安排后,就可以开始进行追踪和控制活动。项目管理人员负责在整个过程中监督过程的实施,提供过程进展的内部报告
4、,并按合同规定向需求方提供外部报告。项目管理人员可对资源重新定向,对任务重新安排,或者与需求方协商后修改交付日期以及调整已经暴露的问题。 4评审和评价计划的完成程度 项目管理人员需要对项目进行评审,对计划的完成程度进行评价。同时还要对计划和项目进行检查,使之在变更或完成后保持完整性和一致性。 5编写管理文档 如果软件开发工作完成,项目管理人员应从完整性方面检查项目完成的结果和记录,并把这些记录编写成文档保存。,11.1.2 软件项目管理的过程,11.2 软件项目管理概述,第11章,(1)早落实责任。 在软件项目每项工作的开始,要尽早指定专人负责,使其有权进行管理,并对任务的完成全面负责。 (2
5、)减少接口。 在软件开发过程中,人与人之间的交流和联系是必不可少的,即存在着通信路径。一个组织的生产效率随着完成任务中存在的通信路径数目增加而降低。要有合理的人员分工、好的组织结构、有效的通信,这对于提高开发效率非常重要。 (3)责权均衡。 明确每个开发人员的权利和责任,开发人员的责任不应该大于其拥有的权利。,11.2.1 建立项目组织的原则,11.2 软件项目管理概述,第11章,1.按项目划分的形式 把软件开发人员按项目或课题组成小组,小组成员自始至终参加所承担项目或课题的各项任务。 2.按职能划分的形式 把软件开发人员按任务的工作阶段划分成若干个专业小组,每个小组承担其中的一个阶段任务,每
6、个小组可同时承担多个项目。 3.矩阵型形式 这种模式实际上是以上两种模式的结合。一方面,按工作性质成立一些专门组,如开发组、业务组、测试组等;另一方面,每个项目有负责人,每个人属于某个项目组,参加该项目的工作。,11.2.2 项目组织结构的形式,11.2 软件项目管理概述,第11章,(1)主程序员制小组。该小组的核心有三个人。主程序员、辅助程序员和程序管理员。主程序员由经验丰富、能力较强的高级程序员担任,全面负责系统的设计、编码、测试和安装工作;辅助程序员协助主程序员工作;程序管理员负责保管和维护所有的软件文档资料,帮助收集软件的数据,并在研究、分析和评价文档资料的准备方面进行协助工作。 (2
7、)民主制程序员小组。在民主制小组中,组内成员之间可以平等地交换意见。工作目标的制定及决定的提出都由全体成员参加。这种组织形式强调发挥小组每个成员的积极性,适合于研制时间长、开发难度大的项目。 (3)层次式小组。 这种组织中,组内人员分为三级。组长负责全组工作,直接领导23名高级程序员,每位高级程序员管理若干名程序员。这种组织比较适合于层次结构的课题。,11.2.3 程序设计小组的形式,11.2 软件项目管理概述,第11章,1项目开发各阶段所需人员 软件开发人员一般分为项目负责人、系统分析员、高级程序员、程序员、初级程序员、资料员和其他辅助人员。其中系统分析员和高级程序员是高级技术人员;后面几种
8、是低级技术人员。根据项目规模的大小,有的人可能身兼数职,但要明确职责。 软件开发人员要少而精,担任不同职责的人,要求具备的能力也不同。项目负责人需要具有组织能力、判断能力和对重大问题做出决策的能力;系统分析员需要有概括能力、分析能力和社交活动能力; 程序员需要有熟练的编程能力。,11.2.4 人员配备,11.2 软件项目管理概述,第11章,2配备人员的原则 配备软件人员时,应注意以下三个主要原则: 重质量:软件项目是技术性很强的工作,任用少量有实践经验、有能力的人员去完成关键性的任务,常常要比任用较多的经验不足的人员更有效。 重培训:花力气培养所需的技术人员和管理人员是有效解决人员问题的好方法
9、。 双阶梯提升:人员的提升应分别按技术职务和管理职务进行,不能混在一起。,11.2.4 人员配备,11.2 软件项目管理概述,第11章,3项目经理人员的能力要求 软件项目经理人员是工作的组织者,其管理能力的强弱是项目成败的关键。除一般的管理能力要求外,他还应具有以下能力: 总结和表达能力。能够对用户提出的非技术性要求加以整理提炼,以技术说明书形式转告给分析员和测试员。 综合问题的能力。能够把表面上似乎无关的要求集中在一起,归结为“需要什么”和“要解决什么”,具有解决综合问题的能力。 沟通能力。要懂得心理学。能说服用户放弃一些不切实际的要求,以保证合理的要求得以满足。,11.2.4 人员配备,1
10、1.3 软件开发成本估算,第11章,软件开发成本主要是指软件开发过程中所花费的工作量及相应的代价,不包括原材料和能源的消耗,主要是人的劳动消耗。软件产品不存在重复制造过程,软件开发成本是以一次性开发过程所花费的代价来计算的。因此,软件开发成本的估算,应该以整个软件开发过程所花费的代价作为依据。 软件具有可见性差、定量化难等特殊性,尤其对于一个大型的软件项目,由于项目的复杂性,很难在项目完成前准确地估算出开发软件所需要的工作量和费用。 对于一个大型的软件项目,需要进行一系列的估算处理。成本估计不是精确的科学,因此应该使用几种不同的估计技术以便相互校验。,11.3 软件开发成本估算,第11章,常用
11、的成本估算策略有以下四种: (1)参考已经完成的类似项目,估计待开发项目的工作量和成本。 (2)将大的项目分解成若干个小项目,分别对每个子项目的工作量和成本进行估算,再估算整个项目的工作量和成本。 (3)根据软件生存周期,分别估算出软件开发各阶段的工作量和成本,然后再把这些工作量和成本汇总,估算出整个项目的工作量和成本。 (4)根据实验或历史数据给出软件项目工作量或成本的经验估算公式。,11.4 软件进度管理,第11章,1.任务分配、人力资源分配、时间分配要与工程进度相协调 2.任务分解与并行化 3.工作量分布。,11.4.1 进度安排中应考虑的问题,11.4 软件进度管理,第11章,1甘特图
12、法 甘特图,又称横道图,这种方法基于作业排序的目的,是各项任务与时间的对照表。甘特图是先把任务分解成子任务。再用水平线表示任务的工作阶段,线段的起点和终点分别表示任务的起始时间和结束时间,线段的长度表示完成任务所需的时间。 甘特图的优点是直观简明,易于绘制,它标明了各任务的计划进度和当前进度,能动态反映软件开发的进展情况。其缺点是不能显式地描绘各项任务彼此间的依赖关系,进度计划中的关键阶段不明确,难于判断哪些部分应当是主攻和主控对象、计划中有潜力的部分及潜力的大小不明确,往往造成潜力的浪费。,11.4.2 进度安排方法,11.4 软件进度管理,第11章,2工程网络图法 为了克服甘特图的缺点,可
13、以用具有时间标志的网状图来表示各任务的分解情况,以及各个子任务之间在进度上的逻辑依赖关系,即工程网络图。 工程网络图是用圆圈表示事件(一项作业的开始或结束),用箭头表示作业。一个圆圈表示一个开发阶段,圆圈内是阶段符号,圆圈上方是该阶段的最早开始/结束时间,圆圈下方是该阶段的最迟开始/结束时间;箭头表示各个软件开发阶段的依赖关系。,11.4.2 进度安排方法,11.4 软件进度管理,第11章,(1)使用Gantt图描述,11.4.2 进度安排方法,11.4 软件进度管理,第11章,(2)使用工程化网络图描述,11.4.2 进度安排方法,11.5 软件质量保证,第11章,保证软件产品的质量是软件产
14、品生产过程的关键。在这里,软件产品的质量是指软件系统满足用户需要或期望的程度。 软件质量可分解成六个要素,这六个要素是软件的基本特征: (1)功能性: (2)可靠性: (3)易使用性: (4)效率: (5)可维护性: (6)可移植性:,11.5.1 软件质量管理,11.5 软件质量保证,第11章,CMM是软件过程能力成熟度模型(Capacity Maturity Model)的简称。对于软件企业而言,CMM既是一把当前软件过程完善程度的尺子,也是软件开发机构改进软件过程的指南。CMM的核心是对软件开发和维护的全过程进行监控和研究,使其科学化、标准化、能够合理地实现预定目标。 CMM是20世纪8
15、0年代最重要的软件工程发展之一,目前已经在许多国家和地区得到了广泛应用,并成为衡量软件公司软件开发管理水平的重要参考因素和软件过程改进的工业标准。 CMM定义了软件过程成熟度的五个级别,它们描述了过程能力,即通过一系列软件过程的标准所能实现预期结果的程度。,11.5.2 CMM模型,11.6 软件配置管理,第11章,1软件配置管理的定义 软件配置管理(Software Configure Management,SCM)用于整个软件工程过程,其任务是标识和确定系统中的配置项,在系统整个生存期内控制这些配置项的发布和变更,记录并报告配置的状态和变更要求,验证配置项的完整性和正确性。总之,SCM活动
16、的目标是为了:标识变更;控制变更;确保变更正确地实现;向其他有关人员报告变更。,11.6 软件配置管理,第11章,2软件配置管理的主要任务 (1)标识配置项 配置项(Software Configure Item,SCI)简单地说就是受SCM控制和管理的工作产品单元,在配置管理过程中作为单个实体对待,是配置管理的对象。按照ISO 9000的说明,SCI包括:与合同、过程、计划和产品有关的文档和数据;源代码、目标代码和可执行代码;相关产品,包括软件工具、库内的可复用软件、外购软件及用户提供的软件。随着软件工程过程的进展,SCI的数量会不断增多。,11.6 软件配置管理,第11章,(2)进行配置控制 这是配置管理的关键。包括存取控制、版本控制、变更控制和产品发布控制等。 存取控制通过配置管理中的“软件开发库”、“软件基线库”、“软件产品库”来实现,每个库对应着不同级别的操作权限,为团队成员授予不同的访问权利。 版本控制往往使用自动的版本控制工具来实现,如SVN。 变更控制。是应对软件开发过程中各种变化的机制,可以通过建立控制点和报告与审查制度来实现。 产