ch9软件工程管理.ppt
第9章软件工程管理l软件工程管理概述l软件规模估算l进度计划l人员组织l软件配置管理l软件质量保证l软件工程标准与软件文档软件工程管理概述l1.软件产品的特点软件是逻辑产品,具有高度的抽象性同一功能的软件可以有多样性软件生产过程复杂,具有易错性软件开发与维护主要是根据用户需求“定制”的,其过程具有复杂性和易变性软件的开发和运行经常受到计算机系统环境的限制,因而软件有安全性和可移植性等问题软件生产有许多新技术需要软件工程师进一步研究和实践l2.软件工程管理的重要性分阶段管理策略涉及多学科软件规模不断增大,管理难度增加,管理不善的后果严重l3.软件工程管理的内容 包括对软件开发成本、控制、开发人员、组织机构、用户、软件开发文档、软件质量等方面的管理。软件规模和开发工作量估算面向规模的度量(代码行技术)面向功能的度量(功能点技术)CoCoMo模型软件项目估算l估算涉及到人、技术、环境、政策等多种因素,很难精确地估算出项目的开销。l常用四种估算方法参照已有类似项目估计待开发项目成本和工作量将大的项目分解成若干子项目,分别估算出子项目成本和工作量,再估算整个项目按软件的生命期分别估算各阶段的工作量和成本,再汇总,从而估算出整个项目根据实验或历史数据给出软件项目工作量或成本的经验公式软件项目代码行和功能点估算是成本和工作量估算的基础。(规模)LOC或FP的期望值:e=(a+4m+b)/6l代码行技术用软件项目的代码行(LOC)数表示软件项目的规模生产率P=L/E,E是软件项目的工作量,用人月(PM)度量,L用千行代码kLOC度量每行代码的平均成本C=S/L,S是软件项目总的开销文档与代码比D=Pd/L,Pd是软件项目的文档页数代码出错率EQR=Ne/L,Ne是软件项目的代码错误数l例:下表提供了一个国外典型的软件项目记录l利用这些数据,可以求出:lP=12.1kLOC/24PM=504LOC/PMlC=168000美元/12.1kLOC=13.88美元/LOClD=365Pd/12.1kLOC=30.16Pd/kLOClEQR=29个/12.1kLOC=2.4个/kLOCl用代码行数估计软件规模简单易行l缺点:代码行数的估算依赖于程序设计语言的功能和表达能力;采用代码行估算方法会对设计精巧的软件项目产生不利影响;在软件项目开发前或开发初期估算它的代码行数十分困难;代码行估算只适用于过程式程序设计语言,对非过程式的程序设计语言不太适用等l功能点技术依据对软件信息域特性和软件复杂性的评估结果,估算软件规模5个信息域特性为:用户输入数:各个用户输入是面向不同应用的输入数据(参数,不含查询数)个数。用户输出数:各个用户输出是面向应用的输出信息个数,包括报告,屏幕信息,错误信息等。用户查询数:查询是一种联机的交互操作,统计查询/响应的总计数。文件数:每一个逻辑主文件都应计数。逻辑主文件是指逻辑上的一组数据,可以是一个大数据库的一部分,可以是一个单独的文件。外部接口数:与系统中其他设备通过外部接口读写信息次数均应计数。功能点 FP(Function Point)。FP UFP(0.65 0.01SUM(Fi)估算功能点的步骤1.计算未调整的功能点数UFP UFP=a1Inp+a2Out+a3Inq+a4Maf+a5Inf 其中,ai(1i5)是信息域特性系数,值由相应特性的复杂级别决定。l2.计算技术复杂因子TCF14种技术因素:技术因素、数据通信、分布式数据处理、性能标准、高负荷的硬件、高处理率、联机数据输入、终端用户效率、联机更新、复杂的计算、可重用性、安装方便、操作方便、可移植性、可维护性。复杂性校正值复杂性校正值复杂性校正值复杂性校正值 FiFi1.1.系统是否需要系统是否需要系统是否需要系统是否需要可靠的备份可靠的备份可靠的备份可靠的备份和和和和恢复恢复恢复恢复?2.2.是否需要是否需要是否需要是否需要数据通信数据通信数据通信数据通信?3.3.是否有是否有是否有是否有分布处理的功能分布处理的功能分布处理的功能分布处理的功能?4.4.是否是否是否是否性能成为关键性能成为关键性能成为关键性能成为关键?5.5.系统是否系统是否系统是否系统是否运行在既存的高度实用化的操作环境中运行在既存的高度实用化的操作环境中运行在既存的高度实用化的操作环境中运行在既存的高度实用化的操作环境中?6.6.系统是否需要系统是否需要系统是否需要系统是否需要联机数据项联机数据项联机数据项联机数据项?7.7.联机数据项是否需要联机数据项是否需要联机数据项是否需要联机数据项是否需要建立多重窗口显示和操作建立多重窗口显示和操作建立多重窗口显示和操作建立多重窗口显示和操作,以处理输入处以处理输入处以处理输入处以处理输入处理理理理。8.8.主文件是否主文件是否主文件是否主文件是否联机更新联机更新联机更新联机更新?9.9.输入输入输入输入、输出输出输出输出、文件文件文件文件、查询查询查询查询是否是否是否是否复杂复杂复杂复杂?10.10.内部处理过程内部处理过程内部处理过程内部处理过程是否是否是否是否复杂复杂复杂复杂?11.11.程序代码程序代码程序代码程序代码是否是否是否是否可复用可复用可复用可复用?12.12.设计中是否包括了设计中是否包括了设计中是否包括了设计中是否包括了转移转移转移转移和和和和安装安装安装安装?13.13.系统是否设计成可以系统是否设计成可以系统是否设计成可以系统是否设计成可以重复安装在不同机构中重复安装在不同机构中重复安装在不同机构中重复安装在不同机构中14.14.系统是否设计成系统是否设计成系统是否设计成系统是否设计成易修改易修改易修改易修改和和和和易使用易使用易使用易使用?l计算技术因子对软件规模的综合影响程度DI:l技术复杂性因子TCP由下式计算:TCP=0.65+0.01 DI l计算功能点数FP FP=UFP TCP 一旦计算出一旦计算出一旦计算出一旦计算出功能点功能点功能点功能点,就可仿照,就可仿照,就可仿照,就可仿照LOCLOC的方式的方式的方式的方式度量软件的度量软件的度量软件的度量软件的生产率、质量和其它属性:生产率、质量和其它属性:生产率、质量和其它属性:生产率、质量和其它属性:生产率生产率生产率生产率 FPFPPMPM(人月)人月)人月)人月)质量质量质量质量 错误数错误数错误数错误数FPFP 成本成本成本成本 元元元元FP FP 文档文档文档文档 文档页数文档页数文档页数文档页数FPFP功能点度量功能点度量功能点度量功能点度量是为了是为了是为了是为了商用信息系统应用商用信息系统应用商用信息系统应用商用信息系统应用而设计的。而设计的。而设计的。而设计的。代码行度量与功能点度量的比较代码行度量(依赖开发语言)与功能点度量(不依赖开发语言)的比较 LOC/FP(平均):汇编语言=300FORTRAN=100pascal=90Ada=70面向对象语言=30 四代语言4GL=20 代码生成器=15一行Ada语言代码的“功能”平均是一行FORTRAN语言代码“功能”的1.4倍,一行四代语言代码的“功能”平均是一行传统程序设计语言代码“功能”的35倍CoCoMo 模型l1981年Boehm提出“构造性成本模型”(Constructive Cost Model)l该成本估算模型是一种精确、易于使用的成本估算方法lCOCOMO模型的分类(按其详细程度,分三级)基本模型、中间模型、详细模型基本模型是静态单变量模型,用源代码行数(LOC)为自变量的经验函数计算软件开发工作量。中间模型在用LOC为自变量的函数计算软件开发工作量(称为名义工作量)的基础上,用涉及产品、硬件、人员、项目等方面的影响因素调整工作量估算。详细COCOMO模型包括中间模型的所有特性,但用上述各种影响因素调整工作量估算时,还要考虑对软件工程过程中每一步骤(分析、设计等)的影响。基本的CoCoMo模型l公式l其中:E 表示工作量(人月PM)D 表示开发时间(月)L 是项目的代码行估计值(千行代码)基本的CoCoMo模型参数la,b,c,d 常数取值软件类型abcd适用范围组织型2.41.052.50.38各类应用程序半独立型3.01.122.50.35各类实用程序、编译程序等嵌入型3.61.202.50.32实时处理、控制程序、操作系统中间的CoCoMo模型以基本的CoCoMo模型为基础,工作量估计公式中乘以调节因子EAF E 表示工作量(人月PM)L 是项目的代码行估进一步考虑15种影响软件工作量的因素软件类型ab组织型3.21.05半独立型3.01.12嵌入型2.81.2015种影响软件工作量的因素种影响软件工作量的因素 fil产品因素:软件可靠性、数据库规模、产品复杂性;l硬件因素:执行时间限制、存储限制、虚拟机易变性、环境周转时间;l人的因素:分析员能力、应用领域实际经验、程序员能力、虚拟机使用经验、程序语言使用经验;l项目因素:现代程序设计技术、软件工具的使用、开发进度限制。例 一个规模为10KLOC的商用微机远程通信的嵌入型软件,使用中间COCOMO模型进行成本估算。名义工作量E1 2.8(10)1.20 44.38实际工作量E 44.381.17 51.9中间CoCoMo模型与各种开发方案对工作量的影响l建议参加项目的人数N 为人数,D 为开发时间(月),E 为工作量(人月)l一般来说,由N个程序员组成的小组,实现相同的规模的程序,相互通信数 ,设每次通信和交换意见的平均的工作量 ,则增加的通信开销为l一般情况下,由N 个程序员组成的小组共同开发一个程序的工作量 ,满足:l程序员小组的生产率:l单个程序员与程序员小组生产率的比为l事实:盲目增加程序员人数会推迟软件完成的日期 CoCoMo2模型1997年Boehm对CoCoMo模型进行了扩充,称为CoCoMo2.COCOMO2模型分成三个层次l应用系统组成模型:用于估算构建原型的工作量,这种模型考虑到大量使用已有构件的情况l早期设计模型:用于软件结构设计阶段l后期设计模型:用于软件开发阶段 COCOMO2模型把软件开发工作量表示成代码行(KLOC)的非线性函数:其中,是模型系数,典型值为3.0,b是模型指数,fi是成本因素。COCOMO2模型使用了5个分级因素Wi(1i5),分别是:项目先例性、开发灵活性、风险排除度、项目组凝聚力和过程成熟度。其中每个成本因素划分为6个级别,每个级别的分级因素Wi取值如下:甚低Wi=5,低 Wi=4,正常Wi=3,高Wi=2,甚高Wi=1,特高Wi=0。b的值:进度计划l可以把用于一般开发项目的进度安排的技术和工具应用于软件项目。l为监控软件项目的进度计划和工作的实际进展情况,为表现各项任务之间进度的相互依赖关系,需要采用图示的方法。l在图示方法中,必须明确标明:l 各个任务的计划开始时间,完成时间;l 各个任务完成标志(即文档编写和评审);l 各个任务与参与工作的人数,各个任务与工作量之间的衔接情况;l 完成各个任务所需的物理资源和数据资源甘特图Gantt Chartl在甘特图中,每一任务完成的标准,不是以能否继续下一阶段任务为标准,而是以必须交付应交付的文档与通过评审为标准。因此在甘特图中,文档编制与评审是软件开发进度的里程碑。工程网络技术l工程网络技术PERT技术(Program Evaluation and Review Technique)叫做程序评估与审查技术,CPM方法叫做关键路径法,它们都是安排开发进度,制定软件开发计划的最常用的方法。l它们都采用网络图来描述一个项目的任务网络,也就是从一个项目的开始到结束,把应当完成的任务用图或表的形式表示出来。1.计算最早时刻2.计算最迟时刻3.关键路径4.机动时间通常用两张表来定义网络图。通常用两张表来定义网络图。通常用两张表来定义网络图。通常用两张表来定义网络图。一张表给出与一特定软件项目有关的所有任务(也称一张表给出与一特定软件项目有关的所有任务(也称一张表给出与一特定软件项目有关的所有任务(也称一张表给出与一特定软件项目有关的所有任务(也称为为为为任务分解结构任务分解结构任务分解结构任务分解结构WorkBreakdownStructureWorkBreakdownStructure);另一张表给出另一张表给出另一张表给出另一张表给出应当按照什么样的次序来完成这些任务应当按照什么样的次序来完成这些任务应当按照什么样的次序来完成这些任务应当按照什么样的次序来完成这些任务(有时称为限制表(有时称为限制表(有时称为限制表(有时称为限制表RestrictionListRestrictionList)。)。)。)。PERTPERT技术和技术和技术和技术和CPMCPM方法都为项目计划人员提供了一些定方法都为项目计划人员提供了一些定方法都为项目计划人员提供了一些定方法都为项目计划人员提供了一些定量的工具。量的工具。量的工具。量的工具。确定关键路径,即决定项目开发时间的任务链。确定关键路径,即决定项目开发时间的任务链。确定关键路径,即决定项目开发时间的任务链。确定关键路径,即决定项目开发时间的任务链。在关键路径上的各个任务都是时间余量为零的关键在关键路径上的各个任务都是时间余量为零的关键在关键路径上的各个任务都是时间余量为零的关键在关键路径上的各个任务都是时间余量为零的关键任务,不能有任何时间延误。任务,不能有任何时间延误。任务,不能有任何时间延误。任务,不能有任何时间延误。应用统计模型,对每一个单独的任务确定最可能应用统计模型,对每一个单独的任务确定最可能应用统计模型,对每一个单独的任务确定最可能应用统计模型,对每一个单独的任务确定最可能的开发持续时间的估算值。的开发持续时间的估算值。的开发持续时间的估算值。的开发持续时间的估算值。计算边界时间,以便为具体的任务定义时间窗口。计算边界时间,以便为具体的任务定义时间窗口。计算边界时间,以便为具体的任务定义时间窗口。计算边界时间,以便为具体的任务定义时间窗口。上述示例工程中各项任务的进度安排,可用Gantt图画出:(先安排关键路径上的任务)路径优化人员组织1.开发人员2.组织机构l三种组织结构模式按课题划分的模式(Project Format)按职能划分的模式(Functional Format)矩阵形模式(Matrix Format)l程序设计小组的组织形式有3种:主程序员组、民主制程序员组及层次式小组3.用户用户的阻力和干扰:不积极配合、求全求快、功能的变化软件项目组织的建立软件项目组织的建立软件项目组织的建立软件项目组织的建立开发组织采用什么形式,要针对开发组织采用什么形式,要针对开发组织采用什么形式,要针对开发组织采用什么形式,要针对软件项目的特点软件项目的特点软件项目的特点软件项目的特点来决来决来决来决定,同时也定,同时也定,同时也定,同时也与参与人员的素质有关与参与人员的素质有关与参与人员的素质有关与参与人员的素质有关。组织原则组织原则组织原则组织原则 (1)(1)尽早落实责任:尽早落实责任:尽早落实责任:尽早落实责任:在软件项目工作开始时,要尽在软件项目工作开始时,要尽在软件项目工作开始时,要尽在软件项目工作开始时,要尽早早早早指定专人负责指定专人负责指定专人负责指定专人负责,使他,使他,使他,使他有权进行管理有权进行管理有权进行管理有权进行管理,并,并,并,并对任务的完成对任务的完成对任务的完成对任务的完成负全责负全责负全责负全责。(2 2)减少接口:)减少接口:)减少接口:)减少接口:一个组织的一个组织的一个组织的一个组织的生产率随完成任务中存生产率随完成任务中存生产率随完成任务中存生产率随完成任务中存在的通信路径数目增加而降低在的通信路径数目增加而降低在的通信路径数目增加而降低在的通信路径数目增加而降低。要有合理的人员分工、。要有合理的人员分工、。要有合理的人员分工、。要有合理的人员分工、好的组织结构、有效的通信,减少不必要的生产率的损好的组织结构、有效的通信,减少不必要的生产率的损好的组织结构、有效的通信,减少不必要的生产率的损好的组织结构、有效的通信,减少不必要的生产率的损失。失。失。失。(3 3)责权均衡:)责权均衡:)责权均衡:)责权均衡:软件经理人员所负的责任不应比委软件经理人员所负的责任不应比委软件经理人员所负的责任不应比委软件经理人员所负的责任不应比委任给他的权力还大。任给他的权力还大。任给他的权力还大。任给他的权力还大。组织结构的模式组织结构的模式组织结构的模式组织结构的模式1 1)按课题划分的模式)按课题划分的模式)按课题划分的模式)按课题划分的模式 把软件开发人员按课题组成小组,小组成员自始至终参把软件开发人员按课题组成小组,小组成员自始至终参把软件开发人员按课题组成小组,小组成员自始至终参把软件开发人员按课题组成小组,小组成员自始至终参加所承担课题的各项任务。他们应负责完成软件产品的加所承担课题的各项任务。他们应负责完成软件产品的加所承担课题的各项任务。他们应负责完成软件产品的加所承担课题的各项任务。他们应负责完成软件产品的定义、设计、实现、测试、复查、文档编制、甚至包括定义、设计、实现、测试、复查、文档编制、甚至包括定义、设计、实现、测试、复查、文档编制、甚至包括定义、设计、实现、测试、复查、文档编制、甚至包括维护在内的全过程。维护在内的全过程。维护在内的全过程。维护在内的全过程。2 2)按职能划分的模式)按职能划分的模式)按职能划分的模式)按职能划分的模式 把参加开发项目的软件人员按任务的工作阶段划分成若把参加开发项目的软件人员按任务的工作阶段划分成若把参加开发项目的软件人员按任务的工作阶段划分成若把参加开发项目的软件人员按任务的工作阶段划分成若干个专业小组。要开发的软件产品在每个专业小组完成干个专业小组。要开发的软件产品在每个专业小组完成干个专业小组。要开发的软件产品在每个专业小组完成干个专业小组。要开发的软件产品在每个专业小组完成阶段加工(即工序)以后,沿工序流水线向下传递。例阶段加工(即工序)以后,沿工序流水线向下传递。例阶段加工(即工序)以后,沿工序流水线向下传递。例阶段加工(即工序)以后,沿工序流水线向下传递。例如,分别建立计划组、需求分析组、设计组、实现组、如,分别建立计划组、需求分析组、设计组、实现组、如,分别建立计划组、需求分析组、设计组、实现组、如,分别建立计划组、需求分析组、设计组、实现组、系统测试组、质量保证组、维护组等。各种文档资料按系统测试组、质量保证组、维护组等。各种文档资料按系统测试组、质量保证组、维护组等。各种文档资料按系统测试组、质量保证组、维护组等。各种文档资料按工序在各组之间传递。工序在各组之间传递。工序在各组之间传递。工序在各组之间传递。3 3)矩阵形模式)矩阵形模式)矩阵形模式)矩阵形模式 这种模式实际上是以上两种模式的复合。一方面,按这种模式实际上是以上两种模式的复合。一方面,按这种模式实际上是以上两种模式的复合。一方面,按这种模式实际上是以上两种模式的复合。一方面,按工作性质,成立一些专门组,如开发组、业务组、测试工作性质,成立一些专门组,如开发组、业务组、测试工作性质,成立一些专门组,如开发组、业务组、测试工作性质,成立一些专门组,如开发组、业务组、测试组等;另一方面,每一个项目又有它的经理人员负责管组等;另一方面,每一个项目又有它的经理人员负责管组等;另一方面,每一个项目又有它的经理人员负责管组等;另一方面,每一个项目又有它的经理人员负责管理。每个软件人员属于某一个理。每个软件人员属于某一个理。每个软件人员属于某一个理。每个软件人员属于某一个 专门组,又参加某一项专门组,又参加某一项专门组,又参加某一项专门组,又参加某一项目的工作。目的工作。目的工作。目的工作。l l程序设计小组的组织形式程序设计小组的组织形式小组内部人员的组织形式对生产率也有影响。小组内部人员的组织形式对生产率也有影响。现有的组织形式有三种。现有的组织形式有三种。(1)主程序员制小组)主程序员制小组 小组的核心由一位小组的核心由一位主程序员主程序员(高级工程师高级工程师)、二至五位二至五位技术员技术员、一位、一位后援工程师后援工程师组成。组成。主程序员负责小组全部技术活动的计划、主程序员负责小组全部技术活动的计划、协调与审查,设计和实现项目中的关键部协调与审查,设计和实现项目中的关键部分。分。技术员负责项目的具体分析与开发,文档资料的编写技术员负责项目的具体分析与开发,文档资料的编写技术员负责项目的具体分析与开发,文档资料的编写技术员负责项目的具体分析与开发,文档资料的编写工作。后援工程师支持主程序员的工作,为主程序员提工作。后援工程师支持主程序员的工作,为主程序员提工作。后援工程师支持主程序员的工作,为主程序员提工作。后援工程师支持主程序员的工作,为主程序员提供咨询,也做部分分析、设计和实现的工作。并在必要供咨询,也做部分分析、设计和实现的工作。并在必要供咨询,也做部分分析、设计和实现的工作。并在必要供咨询,也做部分分析、设计和实现的工作。并在必要时能代替主程序员工作。时能代替主程序员工作。时能代替主程序员工作。时能代替主程序员工作。主程序员制小组还可以由一些主程序员制小组还可以由一些主程序员制小组还可以由一些主程序员制小组还可以由一些专家专家专家专家(如通信专家或数据如通信专家或数据如通信专家或数据如通信专家或数据库设计专家库设计专家库设计专家库设计专家)、辅助人员辅助人员辅助人员辅助人员(如打字员和秘书如打字员和秘书如打字员和秘书如打字员和秘书)、软件资料员软件资料员软件资料员软件资料员协助工作。协助工作。协助工作。协助工作。(2 2)民主制小组)民主制小组)民主制小组)民主制小组 在民主制小组中,遇到问题,组内成员之间可以平等在民主制小组中,遇到问题,组内成员之间可以平等在民主制小组中,遇到问题,组内成员之间可以平等在民主制小组中,遇到问题,组内成员之间可以平等地交换意见。地交换意见。地交换意见。地交换意见。工作目标的制定及做出决定都由全体成员工作目标的制定及做出决定都由全体成员工作目标的制定及做出决定都由全体成员工作目标的制定及做出决定都由全体成员参加。参加。参加。参加。虽然也有一位成员当组长,但工作的讨论、成果虽然也有一位成员当组长,但工作的讨论、成果虽然也有一位成员当组长,但工作的讨论、成果虽然也有一位成员当组长,但工作的讨论、成果的检验都公开进行。的检验都公开进行。的检验都公开进行。的检验都公开进行。这种组织形式强调发挥小组每个成这种组织形式强调发挥小组每个成这种组织形式强调发挥小组每个成这种组织形式强调发挥小组每个成员的积极性。员的积极性。员的积极性。员的积极性。有人认为这种组织形式适合于研制时间长、有人认为这种组织形式适合于研制时间长、有人认为这种组织形式适合于研制时间长、有人认为这种组织形式适合于研制时间长、开发难度大的项目。开发难度大的项目。开发难度大的项目。开发难度大的项目。(3 3)层次式小组)层次式小组)层次式小组)层次式小组 在层次式小组中,组内人员分为在层次式小组中,组内人员分为在层次式小组中,组内人员分为在层次式小组中,组内人员分为 三级:三级:三级:三级:组长(项目负组长(项目负组长(项目负组长(项目负责人)责人)责人)责人)一人负责全组工作,包括任务分配、技术评审和一人负责全组工作,包括任务分配、技术评审和一人负责全组工作,包括任务分配、技术评审和一人负责全组工作,包括任务分配、技术评审和走查、掌握工作量和参加技术活动。走查、掌握工作量和参加技术活动。走查、掌握工作量和参加技术活动。走查、掌握工作量和参加技术活动。他直接领导二至他直接领导二至他直接领导二至他直接领导二至三名三名三名三名高级程序员高级程序员高级程序员高级程序员,每位高级程序员通过基层小组,管理,每位高级程序员通过基层小组,管理,每位高级程序员通过基层小组,管理,每位高级程序员通过基层小组,管理若干位若干位若干位若干位程序员程序员程序员程序员。这种组织结构这种组织结构这种组织结构这种组织结构只允许必要的人际通信只允许必要的人际通信只允许必要的人际通信只允许必要的人际通信。比较。比较。比较。比较适用于项适用于项适用于项适用于项目本身就是层次结构的课题目本身就是层次结构的课题目本身就是层次结构的课题目本身就是层次结构的课题。因为这样可以把项目按功。因为这样可以把项目按功。因为这样可以把项目按功。因为这样可以把项目按功能划分成若干个子项目,把子项目分配给基层小组,由能划分成若干个子项目,把子项目分配给基层小组,由能划分成若干个子项目,把子项目分配给基层小组,由能划分成若干个子项目,把子项目分配给基层小组,由基层小组完成。基层小组完成。基层小组完成。基层小组完成。这种组织方式比较适合于大型软件项目的开发。这种组织方式比较适合于大型软件项目的开发。这种组织方式比较适合于大型软件项目的开发。这种组织方式比较适合于大型软件项目的开发。人员配备人员配备人员配备人员配备如何合理地配备人员,也是成功地完成软件项目的切如何合理地配备人员,也是成功地完成软件项目的切如何合理地配备人员,也是成功地完成软件项目的切如何合理地配备人员,也是成功地完成软件项目的切实保证。所谓合理地配备人员应包括:实保证。所谓合理地配备人员应包括:实保证。所谓合理地配备人员应包括:实保证。所谓合理地配备人员应包括:按不同阶段适时任用人员按不同阶段适时任用人员按不同阶段适时任用人员按不同阶段适时任用人员 恰当掌握用人标准恰当掌握用人标准恰当掌握用人标准恰当掌握用人标准。项目开发各阶段所需人员项目开发各阶段所需人员项目开发各阶段所需人员项目开发各阶段所需人员一个项目完成的快慢,取决于参与开发人员的多少一个项目完成的快慢,取决于参与开发人员的多少一个项目完成的快慢,取决于参与开发人员的多少一个项目完成的快慢,取决于参与开发人员的多少在开发过程中,多数软件项目是以恒定人力配备的。在开发过程中,多数软件项目是以恒定人力配备的。在开发过程中,多数软件项目是以恒定人力配备的。在开发过程中,多数软件项目是以恒定人力配备的。实际人力需求与开发进度的关系如下图中的曲线所示实际人力需求与开发进度的关系如下图中的曲线所示实际人力需求与开发进度的关系如下图中的曲线所示实际人力需求与开发进度的关系如下图中的曲线所示。按此曲线,需要的人力随开发进展逐渐增加,在编码与单按此曲线,需要的人力随开发进展逐渐增加,在编码与单按此曲线,需要的人力随开发进展逐渐增加,在编码与单按此曲线,需要的人力随开发进展逐渐增加,在编码与单元测试阶段达到高峰,以后又逐渐减少。元测试阶段达到高峰,以后又逐渐减少。元测试阶段达到高峰,以后又逐渐减少。元测试阶段达到高峰,以后又逐渐减少。如果恒定地配备人力,在开发初期将会有部分人力资源用如果恒定地配备人力,在开发初期将会有部分人力资源用如果恒定地配备人力,在开发初期将会有部分人力资源用如果恒定地配备人力,在开发初期将会有部分人力资源用不上而浪费掉。在开发中期,需要人力不够,造成进度的延不上而浪费掉。在开发中期,需要人力不够,造成进度的延不上而浪费掉。在开发中期,需要人力不够,造成进度的延不上而浪费掉。在开发中期,需要人力不够,造成进度的延误。在开发后期就需要增加人力以赶进度。误。在开发后期就需要增加人力以赶进度。误。在开发后期就需要增加人力以赶进度。误。在开发后期就需要增加人力以赶进度。恒定地配备人力将浪费人力资源恒定地配备人力将浪费人力资源恒定地配备人力将浪费人力资源恒定地配备人力将浪费人力资源。配备人员的原则配备人员的原则配备人员的原则配备人员的原则重质量重质量重质量重质量 软件项目是技术性很强的工作,要任用少量软件项目是技术性很强的工作,要任用少量软件项目是技术性很强的工作,要任用少量软件项目是技术性很强的工作,要任用少量有实践经验、有能力的人员去完成关键性的任务。有实践经验、有能力的人员去完成关键性的任务。有实践经验、有能力的人员去完成关键性的任务。有实践经验、有能力的人员去完成关键性的任务。重培训重培训重培训重培训 培养所需技术人员和管理人员是有效解决人培养所需技术人员和管理人员是有效解决人培养所需技术人员和管理人员是有效解决人培养所需技术人员和管理人员是有效解决人员问题的好方法员问题的好方法员问题的好方法员问题的好方法。双阶梯提升双阶梯提升双阶梯提升双阶梯提升 人员提升应分别按技术职务和管理职务人员提升应分别按技术职务和管理职务人员提升应分别按技术职务和管理职务人员提升应分别按技术职务和管理职务进行,不能混在一起。进行,不能混在一起。进行,不能混在一起。进行,不能混在一起。对项目经理人员的要求对项目经理人员的要求对项目经理人员的要求对项目经理人员的要求软件经理人员是工作的组织者,软件经理人员是工作的组织者,他的管理能力他的管理能力的强弱是项目成败的关键的强弱是项目成败的关键。他应具有以下能力:。他应具有以下能力:把用户提出的非技术性要求加以整理提炼把用户提出的非技术性要求加以整理提炼把用户提出的非技术性要求加以整理提炼把用户提出的非技术性要求加以整理提炼,以技术以技术以技术以技术说明书的形式转告给分析员和测试员。说明书的形式转告给分析员和测试员。说明书的形式转告给分析员和测试员。说明书的形式转告给分析员和测试员。能说服用户放弃一些不切实际的要求能说服用户放弃一些不切实际的要求,以保以保证合理的要求得以满足。证合理的要求得以满足。能够把表面上似乎无关的要求集中在一起能够把表面上似乎无关的要求集中在一起能够把表面上似乎无关的要求集中在一起能够把表面上似乎无关的要求集中在一起,归结为归结为归结为归结为 “需要什么需要什么需要什么需要什么”,“,“要解决什么问题要解决什么问题要解决什么问题要解决什么问题”。这是一种综合。这是一种综合。这是一种综合。这是一种综合问题的能力。问题的能力。问题的能力。问题的能力。要懂得心理学要懂得心理学要懂得心理学要懂得心理学,能说服上级领导和用户,让他们理能说服上级领导和用户,让他们理能说服上级领导和用户,让他们理能说服上级领导和用户,让他们理解什么是不合理的要求。但又要使他们毫不勉强解什么是不合理的要求。但又要使他们毫不勉强解什么是不合理的要求。但又要使他们毫不勉强解什么是不合理的要求。但又要使他们毫不勉强,乐乐乐乐 于接受,并受到启发。于接受,并受到启发。于接受,并受到启发。于接受,并受到启发。评价人员的条件评价人员的条件评价人员的条件评价人员的条件软件项目中人的因素越来越受重视。在评价和任用软软件项目中人的因素越来越受重视。在评价和任用软软件项目中人的因素越来越受重视。在评价和任用软软件项目中人的因素越来越受重视。在评价和任用软件人员时,必须掌握一定的标准。件人员时,必须掌握一定的标准。件人员时,必须掌握一定的标准。件人员时,必须掌握一定的标准。人员素质的优劣常常人员素质的优劣常常人员素质的优劣常常人员素质的优劣常常影响到项目的成败影响到项目的成败影响到项目的成败影响到项目的成败。牢固掌握计算机软件的基本知识和技能。牢固掌握计算机软件的基本知识和技能。牢固掌握计算机软件的基本知识和技能。牢固掌握计算机软件的基本知识和技能。善于分析和综合问题,具有严密的逻辑思维能力。善于分析和综合问题,具有严密的逻辑思维能力。善于分析和综合问题,具有严密的逻辑思维能力。善于分析和综合问题,具有严密的逻辑思维能力。工作踏实、细致工作踏实、细致工作踏实、细致工作踏实、细致,不靠碰运气,遵循标准和规范,不靠碰运气,遵循标准和规范,不靠碰运气,遵循标准和规范,不靠碰运气,遵循标准和规范,具有严格的科学作风。具有严格的科学作风。具有严格的科学作风。具有严格的科学作风。工作中表现出有耐心、有毅力、有责任心。工作中表现出有耐心、有毅力、有责任心。工作中表现出有耐心、有毅力、有责任心。工作中表现出有耐心、有毅力、有责任心。善于听取别人的意见,善于与周围人员团结协作,善于听取别人的意见,善于与周围人员团结协作,善于听取别人的意见,善于与周围人员团结协作,善于听取别人的意见,善于与周围人员团结协作,建立良好的人际关系。建立良好的人际关系。建立良好的人际关系。建立良好的人际关系。具有良好的书面和口头表达能力。具有良好的书面和口头表达能力。具有良好的书面和口头表达能力。具有良好的书面和口头表达能力。软件配置管理l软件配置(Software Configuration)是软件产品在软件开发或运行过程中产生的全部信息。l软件配置管理(Software Configuration Management)简称SCM,是在软件的整个生存周期内管理变更的一组活动。l软件配置管理(Software Configuration Management,简称SCM)的四项任务:()标识变更()控制变更()配置审计()配置状态报告软件配置管理概念软件配置管理概念 l软件开发过程的最终结果包括三类信息:计算机程序(源程序和目标程序);描述程序的文档(面向技术人员和面向用户);数据结构(包括程序内部和外部定义两部分)。l组成上述信息的所有项目构成一个软件配置,其中每一项称为一个软件配置项(Software Configuration Item,简称SCI),它是配置管理的基本单位。一个SC中最早的SCI是系统规格说明书。lSCM要解决的主要问题就是保证软件的质量。基线技术基线技术基线技术基线技术 l基线(baseline)的原意是棒球场的边线,在软件开发过程中,为了有效地控制变动,软件配置管理引入基线的概念。lIEEE组织对于基线的定义“已经通过正式复审和批准的某规约或产品,它因此可以作为进一步开发的基础,并且只能遵循正式的变化控制过程得到改变”。l根据这个定义,基线标志软件开发过程的各个里程碑,任一SCI,一旦形成文档并复审通过,即成为一个基线,它标志开发过程中一个阶段的结束。对于已成为基线的SCI,虽然可以修改,但必须按照一个特殊的、正式的过程进行评估,确认每一处修改。相反,对于未成为基线的SCI,可以进行非正式修改。l某个SCI一旦成为基线,随即被放入项目数据库(project database)。此后,若开发小组中某位成员希望改动SCI,首先要将它拷贝到私有工作区并在项目数据库中锁住,不允许他人使用。在私有工作区中完成修改控制过程并复审通过之后,再把修改后的SCI推出并回送到项目数据库,同时解锁。l一般软件配置需包括下列SCI:l1系统规格说明书l2软件项目规划l3需求分析结果l 1)软件需求规格说明书l 2)可执行的或“纸样”原型l4初步用户手册 l5设计规格说明书l 1)数据设计描述l 2)总体结构设计描述l 3)模块设计描述l 4)界面设计描述l 5)对象描述(若采用面向对象技术)l6 6源代码清单l7测试规格说明书l 1)测试计划和过程l 2)测试用例和实验结果 l8操作和安装手册l9可执行程序l 1)每个模块的可执行代码l 2)连接到一起的代码l10数据库描述l 1)数据模型和文件结构l 2)初始化映象l11联机用户手册l12维护文档l 1)软件问题报告单l 2)维护申请单l 3)预计变动的顺序l13软件工程的标准和过程 软件配置管理任务软件配置管理任务 l软件配置管理主要任务是控制软件的修改,主要包括:标识软件配置中各种对象;管理软件的各种版本;控制对软件的修改;审计配置;报告配置情况。标识配置对象标识配置对象标识配置对象标识配置对象 l所有SCI都应按面向对象的方式命名并组织起来。对象命名是为了能够根据名称提取对象;而通过组织对象并描述其间的关系则着眼于在对象变更时能够清楚地了解变更的影响范围。l基本对象在分析、设计、编码或测试阶段由开发人员创建的某个“文本单元”(unit of text)。例如,需求说明书中某一节,某个模块的源代码,或按等价分类法制定的一套测试用例l复合对象由若干基本对象和复合对象组合而成的对象,是一个递归的概念。例如,“设计规格说明书”是复合对象,它由“数据模块”和“模块N”等基本对象组合而成。l每个配置对象都拥有名字、描述、资源列表和实际存在体四个部分:1.对象名一般为无二