您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 信息化管理 > 第16章软件项目管理与过程改进
第十六章软件项目管理与过程改进软件工程(第三版)齐治昌谭庆平宁洪2012年8月第十六章软件项目管理与过程改进16.1软件项目管理与过程模型16.2软件项目度量与估算16.3风险分析16.4软件项目计划16.5软件项目人员和组织16.6软件质量保证16.7软件配置管理16.8软件过程改进2020/5/18国防科技大学计算机学院2软件项目管理与过程改进软件管理是软件工程学科的重要组成部分,在软件生存周期中发挥着重要的作用。软件开发过程中的软件管理称软件项目管理,直接关系到软件项目的成败。软件配置管理贯穿整个软件生存周期,在软件开发过程中是软件项目管理的重要组成部分,在软件交付后是软件有效运行和维护的保障。软件开发组织建设和过程改进是不断推出高质量软件制品的关键。本章主要介绍软件项目管理、软件配置管理、软件过程改进。16.1软件项目管理与过程模型本节主要介绍软件项目管理的概念软件项目管理的过程模型软件项目管理的原则软件项目制品16.1.1软件项目管理的概念软件项目管理是软件工程的重要组成部分。软件项目已通过软件项目的可行性论证和立项的法定程序。软件项目可能是基于计算机的系统工程的一部分,也可能是独立的实体。按照合同要求,软件项目应具有明确的目标、任务、责任人、技术途径、资金投入、交付时间、客户实体、利益相关方。在面向领域的应用软件开发项目中,领域专家和客户愿意和软件开发团队密切合作,这是项目成功的关键。2020/5/18国防科技大学计算机学院5软件项目管理的概念软件工程是人的智力密集型劳动,软件是逻辑制品,软件项目管理更要强调工作的计划性,人员、进度、制品的可控性,要及时进行软件项目的风险分析和管理。客户与开发者必须在项目开发早期、软件需求工程的初始阶段完成下列六项任务。2020/5/18国防科技大学计算机学院6软件项目管理的概念①确定制品目标、范围,主要技术指标、功能和行为特性;②确定管理者和开发人员;③进行成本估算;④进行有效的风险分析、验证与确认;⑤给出恰当的项目任务划分;⑥根据约束条件,如制品交付期限、预算、可用人员、技术接口等因素,选择“最佳”方案,制定可管理的项目进度计划,给出明确的项目进展标志,并将任务、责任落实到人。2020/5/18国防科技大学计算机学院7软件项目管理的概念1999年,软件产业界的统计数据表明,26%的软件项目彻底失败,46%的项目成本和进度超出预定计划。软件项目失败率仍然很高。实践表明,良好的软件开发过程孕育着好的软件制品,而好的软件制品一般隐含良好的软件开发过程。本节的其余部分介绍软件项目管理原则、软件项目的管理模型、生存周期各阶段的软件制品。16.1.2软件项目管理的过程模型第一章讨论了软件生存周期和软件开发的几种模型。生存周期及其划分涉及软件开发过程和过程生成的制品。软件开发过程分为线性过程和非线性过程两类。瀑布模型是典型的线性过程模型。增量模型、螺旋模型虽是迭代模型,但本质上是瀑布模型的应用。统一过程RUP是迭代的非线性模型,与瀑布模型存在本质的区别。这些模型既用于软件开发的技术过程,也用于软件开发的管理过程。软件项目管理的过程模型软件开发的技术人员和管理人员在软件开发过程中分工明确,他们在模型中参与相应的活动,开发相应的制品。软件过程的活动序列按任务分类,组成软件开发人员开发软件制品的“工作流”。“工作流”强调“人的活动”,目标是开发软件制品,其中蕴含开发人员使用的技术、工具和必须遵循的约束条件。第二章介绍了RUP的九个工作流,及在软件生存周期各阶段的工作量分布。2020/5/18国防科技大学计算机学院10软件项目管理的过程模型启动每个工作流都要完成某项任务,产生某些制品,都要使用一定的资源,必须满足一定的约束条件。如,需求工作流将系统工程师或用户以某种方式提供的系统功能和特征作为前置条件,通过需求获取、分析、建模活动生成用软件建模语言(如,UML)描述的软件需求规约。需求阶段的约束是需求文档的标准、表示法、需求预算、进度等。2020/5/18国防科技大学计算机学院11软件项目管理的过程模型软件团队选择软件过程模型时,有很大的灵活性,应根据项目需要确定过程模型。如果问题能很好地划分,时间紧,不可能完成所有功能,可采用增量模型,分期交付。如果项目需求不能完全确定、需求变更频繁可采用RUP迭代过程模型等。2020/5/18国防科技大学计算机学院1216.1.3软件项目管理的原则W.Royce总结了现代软件项目管理应该遵循的十条重要原则。⑴体系结构优先的过程软件体系结构是软件需求、软件设计活动的关键制品。软件体系结构过程涉及软件项目全局,包括:软件项目计划、需求获取、描述、风险分析、软件体系结构设计等。软件体系结构过程与软件实现、交付、维护相比,涉及的人较少,工作量较小。软件项目管理的原则稳定、优质的体系结构是软件实现和交付的基础,可以避免软件上游缺陷蔓延到下游,减少软件制品返工和报废,避免时间和资源的浪费。软件体系结构基线是软件初始、软件细化阶段成熟的标志。体系结构优先的过程体现了软件体系结构在现代软件开发过程中的重要地位。2020/5/18国防科技大学计算机学院14软件项目管理的原则⑵风险驱动的迭代过程软件开发存在许多不确定因素,存在许多风险。适时进行风险分析,提出化解风险的措施,驱动迭代过程,是保证软件开发过程按计划前行,软件制品随软件开发的迭代过程不断进化的有效途径。⑶基于构件的设计基于构件的软件设计可以降低软件复杂性,有效实施软件复用,提高软件质量,降低软件开发成本,缩短交付期限,提高软件项目计划和成本估算的准确性。2020/5/18国防科技大学计算机学院15软件项目管理的原则⑷建立配置和变更管理环境软件开发过程中变更不可避免,需求不能完全确定的项目只能在探索中前进。软件开发文档、中间制品很多,某一文档的变更通常会涉及相关文档,必须对这些文档进行相应的维护,保持软件制品的一致性。采用迭代、增量开发模型,面对不同的用户需求,项目团队将持续发布多种版本的软件制品。复杂多变的软件项目和制品,需要变更管理工具、配置数据库和配置管理系统的支持,人工不能完成这一任务。软件项目管理的原则⑸建立支持双向工程的工具和环境为了保持变更的一致性,软件工具和环境要支持正向工程和逆向工程。详细设计、代码的修改确定后,利用逆向工程工具和环境自动生成软件开发上游的体系结构和需求文档。正向和逆向工程的工具和环境相互配合,为可变更的迭代开发过程提供了灵活性,提高了软件开发的效率和软件制品的质量。2020/5/18国防科技大学计算机学院17软件项目管理的原则⑹用严格的、基于模型的符号描述设计制品程序设计语言是描述程序的工具,用于人与人、人与机器的交流,控制计算机的运行。程序设计语言是用一组符号按照严格的语法、语义、语用定义的。目前广泛使用统一建模语言UML,支持软件需求、设计和实现的全过程(实现过程需要Java、C++等程序设计语言的支持)。UML标准提供用例图、结构图(类图、对象图、包图)、行为图(交互图、状态图、顺序图、通信图)、构件图、部署图五类共十种图形建模表示法和OCL约束语言。软件项目管理的原则⑺为客观的质量控制插装验证和确认过程客观的软件质量强调软件制品的实际质量。在初始和细化阶段,只能通过检查、审查方式评估软件制品,软件的质量评估往往带有主观色彩。在软件开发过程中,设置关键点插装评估过程,对软件制品和过程进行严格检查和V&V可防止缺陷蔓延、减少制品报废和返工,提高软件制品质量。2020/5/18国防科技大学计算机学院19软件项目管理的原则⑻借助演示评估中间制品现代软件开发过程借助场景、用例描述需求。场景、用例具有直观、便捷、容易理解的优点。软件开发过程中借助演示,验证确认基于场景、用例的中间制品的演化过程,有利于团队成员的沟通,及时统一软件开发人员对软件制品的认识,减少因理解过失导致的软件制品缺陷,提高软件制品的评审质量和软件开发效率。2020/5/18国防科技大学计算机学院20软件项目管理的原则⑼大量使用场景。按照场景细化等级,在软件生存周期的前期就开始持续的发布有用的软件版本。保持需求、设计和计划均衡进化。⑽争取更多的投资回报。推广项目团队掌握的方法、技术、工具和经验,建立灵活的配置过程,在经济上争取更多的回报。2020/5/18国防科技大学计算机学院21软件项目管理的原则现代软件项目管理要素是,人员、环境、质量、规模和过程。上述十项原则符合软件经济学基本规律:成本=(人员)×(环境)×(质量)×(规模)(过程)人员:用演示方式进行沟通、不断发布用例进化细节,提高人员对项目、软件制品的理解和认识,避免误解和无效劳动。环境:建立软件双向工程的工具和环境,采用过程插装,进行客观的质量度量和控制,提高软件开发质量和效率。软件项目管理的原则质量:贯彻体系结构优先的原则,统一开发过程和语言,实施变更管理,加强环境基础建设,重视对项目和软件制品的V&V,提高软件制品的质量。规模:采用构件开发,统一开发过程的语言描述,利用多种途径降低复杂性,化解规模带来的压力。过程:采用迭代开发模型,实施可配置的过程改进,进行风险分析和管理,重视项目的过程复用,优化软件开发过程。成本和规模、过程的指数关系表明,减少规模,改进过程对降低成本的特殊重要性。人员、环境、质量、规模、过程的改进可减少大量文档,降低软件开发成本。软件项目管理的原则按照上述原则进行软件项目管理是现代软件开发实践经验的总结,也是软件项目取得成功的关键。软件项目团队应根据自身的实际,在软件项目开发过程中灵活运用,并不断创造新的实践经验和原则。16.1.4软件项目制品现代软件项目的管理过程与开发过程配套,多采用迭代方式。软件制品不是在生存周期的阶段内按照线性方式开发,而是采用迭代方式一起进化。进化过程中不仅要不断丰富、细化系统描述,还要对约束、抽象层次和自由度进行折衷,尽量保持软件制品细节的平衡。为了对软件项目实施管理,软件开发活动产生的制品通常划分为若干制品集,支持软件项目的开发活动。软件项目制品W.Royce将软件项目制品划分为:用文本语言描述的管理集用文本和模型描述问题空间的需求集用解空间模型描述的设计集用程序设计语言及相关文档描述的实现集用机器语言及相关文档描述的实施集2020/5/18国防科技大学计算机学院26软件项目制品近年来用RUP过程开发软件项目已成为一种潮流。用强有力的、可视化的、具有严格语法和语义定义的统一建模语言UML支持体系结构优先策略开发的需求制品集和设计制品集是软件工程在技术上的重大进步。这些制品集是软件工程数据库的重要组成部分。下面从管理制品和工程制品两个方面分别介绍五类制品集。2020/5/18国防科技大学计算机学院271.管理制品集管理制品集即管理集,包括:①工作分解WBS和财务追踪制品②成本、进度和利润预测、度量和统计业务案例制品③描述软件制品范围、开发计划和发布基线的发布版规约④软件项目开发计划⑤基于基线的发布版说明书⑥反映项目进展状态的验证和确认制品⑦软件变更管理系统和软件配置管理系统管理制品集⑧实施文档,包括:移交计划、用户培训课程、销售展示工具包等⑨软件开发环境,包括:软件工具、文档、人员培训资料等管理集制品的形式有软件、文本、图形、图像、视频等项目相关人员应对管理集制品进行评审,按照里程碑进行展示评审管理集制品反映软件项目成本、进度、质量、项目变更、软件制品进化的情况2020/5/18国防科技大学计算机学院292.工程制品集工程制品集由需求集、设计集、实现集和实施集组成。制品集随时间进化,必须保证需求、设计、实现和实施制品之间的系统性、正确性和一致性。需求集用结构化文本描述构想、合同、管理需求、用户原型。用UML描述需求模型,如用例模型和领域业务模型。需求集是评审设计集、实现集和实施集的主要依据,也是生成
本文标题:第16章软件项目管理与过程改进
链接地址:https://www.777doc.com/doc-5412452 .html