软件工程第6章项目管理本章要点:软件项目管理概念项目管理组织及过程软件质量及保证CMM模型软件工程本章学习目标:了解项目管理过程理解项目的估算方法了解CMM模型的层次结构软件工程6.1项目管理概述项目管理就是为了满足甚至超越项目涉及人员对项目的需求和期望而将理论知识、技能、工具和技巧应用到项目的活动中去。需要在下面这些相互间有冲突的要求中寻求平衡:范围、时间、成本和质量有不同需求和期望的项目涉及人员明确表示出来的要求(需求)和未明确表达的要求在软件行业,对项目实施有效的管理是软件成败的关键。软件工程项目管理的过程软件项目启动度量估算风险分析进程安排追踪和控制软件工程6.2项目计划计划是管理工作的重要职能,在软件项目管理中,软件项目从制定项目计划开始。项目计划中需要确定以下几项内容:目标:定义了待完成的目标,迫切需要的资源,约束和优先级。范围:定义待开发系统的边界,什么包括在系统里,什么不包括在系统里。产品技术说明:说明软硬件信息以及有关功能、性能、安全性等方面的约束。时间:进度表。资金:预算。地点:工作空间分配。人员:参与人员以及项目组织。软件工程6.3进度安排软件开发项目的进展安排有两种考虑方式:系统最终交付日期已经确定,软件开发部门必须在规定期限内完成任务。系统最终交付日期只确定了大致的年限,最后交付日期由软件开发部门确定进度安排是基于对项目的需求分析和评审软件工程项目的并行性提出一系列进度要求。因为并行任务是同时发生的,以进度计划决定任务之间的从属关系,确定各个任务的先后次序和衔接,以及各个任务完成的持续时间。软件工程6.4项目估算对软件项目进行有效的估算,取决于掌握多少有关项目范围的原始资料。估算的两个主要方法是:第一种方法是根据项目特征和算法进行估算。第二种方法是采用类比的方法,根据历史数据来进行估算。软件工程项目规模估算量软件项目规模最常用的概念--LOCL指所有的可执行的源代码行数,包括可交付的工作控制语言(JCL:JobControlLanguage)语句、数据定义、数据类型声明、等价声明、输入/输出格式声明等。规模估算的三种方法方法一、Delphi法方法二、类比法方法三、功能点估计法软件工程软件开发成本估算软件开发成本主要是指软件开发过程中所花费的工作量及相应的代价。软件开发成本的估算,应是从软件计划、需求分析、设计、编码、单元测试、组装测试到确认测试,整个软件开发过程所花费的代价作为依据的。对于一个大型的软件项目,要进行一系列的估算处理,主要靠分解和类推的方法进行。基本估算方法分为3类:自顶向下的估算方法自底向上的估算法差别估计法软件工程6.5项目组织1组织原则(1)早落实原则(2)减少接口(3)责权均衡2人员配备软件工程6.6软件质量按照ANSI/IEEE1983年的标准,软件质量定义为“与软件产品满足需求所规定的和隐含的能力有关的特征和特性的全体。”软件产品中所能满足用户给定的全部特性的集合软件具有所期望的各种属性组合的程度用户主观得出的软件是否满足其综合期望的程度决定所用软件在使用中将满足其综合期望程度的软件合成特性软件工程质量保证的主要内容软件工程质量保证应用于整个软件过程的保护活动,包括:(1)质量管理方法(2)有效的软件工程技术(方法和工具)。(3)应用于整个软件过程的形式化技术评论。(4)多等级测试策略。(5)软件文档以及对软件进行改变和维护的控制和约束(6)确保遵照软件开发标准的过程。(7)测量和报告机制。软件工程软件工程标准化软件工作的范围从只是使用程序设计语言编写程序,扩展到整个软件生存期。所有这些方面都应逐步建立起标准或规范来。软件工程标准的类型也是多方面的。它可能包括过程标准(如方法、技术、度量等)、产品标准(如需求、设计、部件、描述、计划、报告等)、专业标准(如职别、道德准则、认证、特许、课程等)以及记法标准(如术语、表示法、语言等)。软件工程软件工程标准的制定与推行通常要经历一个环状的生命期(参看图6.2)。最初,制定一项标准仅仅是初步设想,经发起后沿着环状生命期,顺时针进行要经历以下的步骤:软件工程CMM模型CMM(CapabilityMaturityModel)即能力成熟度模型,定义了当一个组织达到不同的过程时应该具有的软件工程能力。它描述了软件过程从无序到有序、从特殊到一般、从定性管理到定量管理、最终到达可动态优化的成熟过程。给出了该过程中5个成熟阶段的基本特性和应遵循的原则、采取的行动,以帮助软件组织改进其软件过程。CMM的基前提是:软件质量在很大程度上取决于开发软件的软件过程的质量和能力;软件过程是一个可管理、可度并不断改进的过程;软件过程的质量受到用以支撑它的技术和设施的影响;软件开发组织在软件过程中所采用的技术层次应适应于软件过程的成熟度。软件工程CMM模型将CMM组织成下图所示的5个等级,其意在于增加软件过程成熟的改进行动按优先级排序。图中带有标记的箭头,指示在成熟度框架的每一步骤上,组织应予以规范化的过程能力的类型。[5]优化级[4]已管理级[2]可重复级[3]已定义级[1]初始级软件工程6.7软件配置管理系统配置指的是交付给特定客户的一个系统构件的集合软件配置管理是监督和控制工作产品中变化的过程。变化遍及整个软件开发过程。软件配置管理是软件系统发展过程中管理和控制变化的规范[IEEEStD.1042-1987]。配置管理系统使得版本的识别、存储和检索以及支持状态记录自动完成。配置管理包括下列活动:配置项的确定变化控制状态记录审核软件工程配置管理的过程软件配置管理的方法大致分三类:单独文件、增量和条件编译。以上三种方法各有优缺点,在实际的项目培训配置管理中是将这些方法有机结合起来满足复杂的配置管理要求。软件工程6.8常用软件项目管理工具开发人员有许多配置管理和版本管理的工具可用,就解以下几种:RCS[Tichy,1985],CVS[Berliner,1990],Perforce[Perforce],ClearCase[Leblang,1994].