1、软件过程管理-Ch.10 软件过程的管理实践 软件过程的管理实践软件过程的管理实践不同的项目需要不同的方法论,一个项目的不同的项目需要不同的方法论,一个项目的最佳过程是这个项目所能负担的最小过程。最佳过程是这个项目所能负担的最小过程。Alistair Cockburn本章提纲本章提纲10.1 IBM-Rational 10.1 IBM-Rational 业务驱动开发的过程管理业务驱动开发的过程管理10.2 10.2 微软公司的软件开发过程模式微软公司的软件开发过程模式10.3 10.3 敏捷模型的软件过程管理敏捷模型的软件过程管理10.4 10.4 面向构件的软件过程面向构件的软件过程10.5
2、 10.5 软件过程的自定义体系软件过程的自定义体系10.1 IBM-Rational 业务驱动开发的过程管理业务驱动开发的过程管理10.1.1 RUP的迭代过程的迭代过程10.1.2 提高过程的适应性提高过程的适应性10.1.3 需求开发和质量改进需求开发和质量改进10.1.4 架构设计和组件复用架构设计和组件复用10.1.5 跨团队协作跨团队协作10.1.6 过程实施的最佳实践过程实施的最佳实践10.1.1 RUP的迭代过程的迭代过程1234初始阶段初始阶段主要成果是:主要成果是:前景文档:对核心项目要求、关键性质、前景说明。初始的项目术语表。初始的用例模型和商业用例。项目规划,其中明确阶
3、段和迭代,一个或多个原型。初始的风险评估和商业模型。里程碑被评估的准则是:里程碑被评估的准则是:相关共利益者对项目范围定义和成本/进度估计达成共识。通过主要的用例将需求无二义地表达出来。成本/进度估计、优先级、风险和开发过程的可信度。开发出来的体系结构原型的深度和广度 初始阶段细化阶段细化阶段成果是:成果是:用例模型。一些增加的需求可执行的体系结构原型及其描述。修订后的风险表和商业用例、开发用例,指定要使用的过程。整个项目的开发计划。初步的用户手册(可选)。细化阶段被评估的准则是:细化阶段被评估的准则是:产品的前景是否稳定?体系结构是否稳定?可执行的演示是否强调了主要的风险元素,并得到解决?构
4、造阶段的规划是否已经足够详细和准确,是否有可信度的评估支持?如果用当前的计划来开发整个系统,包括使用已定义的体系结构,是否所有相关共利益者对此都达成一致?构造阶段构造阶段版,至少应该包括:版,至少应该包括:在特定平台上集成的软件产品。用户手册和对当前版本的描述。评估准则是:评估准则是:产品版本是否足够稳定和成熟,可以在用户群中发布吗?是否所有相关共利益者都同意产品的发布?实际的资源支出和计划的支出的比值是否仍然可接受?交付阶段交付阶段主要工作有:主要工作有:测试,确认新系统达到用户的预期。与被取代的旧系统并行操作,以及功能性数据库的转换。用户和维护人员培训。向市场、分销商和销售人员进行新产品的
5、展示。交付阶段侧重向用户提交软件的活动,评估准则可以非交付阶段侧重向用户提交软件的活动,评估准则可以非常简单,也可能极其复杂。常简单,也可能极其复杂。用户是否满意?是否能够接受实际的和计划的资源支出的比?10.1.2 提高过程的适应性提高过程的适应性早期开发活动的目标应是找出不确定性,在计划中逐渐提高精确性。把项目划分为一组迭代过程以交付产品的增量价值来获得早期的、连续的用户反馈。利用演示和反馈来调整开发计划。包含并管理变更。在生命周期尽早发现关键风险,通过不断评估所面对的风险,并在下一次迭代中消除或减少已知的风险。同步的测试和验证是减少风险的重要手段之一。10.1.3 需求开发和质量改进需求
6、开发和质量改进1.定义并理解业务过程和用户需求定义并理解业务过程和用户需求2.区分项目,需求与软件能力的优先次序区分项目,需求与软件能力的优先次序3.尽早地并且不断地测试尽早地并且不断地测试4.资源的复用资源的复用5.整个团队在整个过程中关注质量整个团队在整个过程中关注质量10.1.4 架构设计和组件复用架构设计和组件复用复用的问题之一是在开发时两个组件需要知道对方的存在。基于标准的接口和独立于平台和具体实现技术的。软件开发的目标是设计、实现并验证一个架构。降低复杂度和改善交流的方法是利用高级工具、框架和语言。逐步建立起测试自动化,更有效地实施持续集成策略。10.1.5 跨团队协作跨团队协作自
7、我管理团队的概念,激励团队成员达到最好表现。鼓励跨职能的合作。提供有效的合作环境。集成化的跨业务、软件和运作团队间的合作。各司其职,积极参与质量工作。10.1.6 过程实施的最佳实践过程实施的最佳实践起始阶段起始阶段 细化阶段细化阶段 构建和发布阶段构建和发布阶段 10.2 微软公司的软件开发过程模式微软公司的软件开发过程模式10.2.1 MSF的过程模型的过程模型10.2.2 MSF的团队模型的团队模型10.2.3 MSF过程模型的特点和原则过程模型的特点和原则10.2.4 MSF过程模型的应用过程模型的应用10.2.1 MSF的过程模型的过程模型角色和任务角色和任务角色角色任务任务产品管理
8、产品管理程序管理程序管理开发开发用户体验用户体验测试测试发布管理发布管理负责全面工作,确认用户需求,编写前景/范围说明书。负责设计工作,概念设计,项目组织结构。开发系统原型,技术选型,可行性分析。收集用户在使用方面的需求和建议。制定测试策略,建立测试标准。运营和支持,建立运营标准。10.2.2 MSF的团队模型的团队模型6 6种基本角色,种基本角色,即程序管理、开发、测试、发布管理、用户体验和产品管理。这些角色和实现特定的关键质量目标有直接的关系,而关键质量目标能否达到是项目成功的标志。所以,MSF 团队模型的核心是技术项目必须符合各种利益相关人的需求。两种类型的子团队两种类型的子团队职能团队
9、是由职能角色组织起来的单领域子团队。开发角色常常有一个或者多个职能团队来承担。特性团队是跨专业的子团队,把主要精力放在构建解决案的特定特性或者能力上。原则原则10.2.3 MSF的特点和原则的特点和原则目标驱动而非任务驱动。目标驱动而非任务驱动。外部可见的里程碑。外部可见的里程碑。应提交项的变更管理。应提交项的变更管理。递进的版本发布策略。递进的版本发布策略。风险驱动的进度管理。风险驱动的进度管理。项目组集体参与管理产品质量。项目组集体参与管理产品质量。10.2.4 MSF过程模型的应用过程模型的应用1为共同的愿景而工作为共同的愿景而工作2 推动开放式沟通推动开放式沟通3 赋予团队成员权力赋予
10、团队成员权力4 建立清晰的职责和共同的责任建立清晰的职责和共同的责任5关注交付业务价值关注交付业务价值 6 保持灵巧,预测变化保持灵巧,预测变化7 质量投资质量投资8 学习所有的经验学习所有的经验 10.3 敏捷模型的软件过程管理敏捷模型的软件过程管理10.3.1 敏捷方法的过程模型敏捷方法的过程模型10.3.2 敏捷过程的最佳实践敏捷过程的最佳实践10.3.1 敏捷方法的过程模型敏捷方法的过程模型主张简单、轻装前进。主张简单、轻装前进。拥抱变化,这种变化是不断递增的。拥抱变化,这种变化是不断递增的。可持续性,简单的说,在开发的时候就能想象到未来。可持续性,简单的说,在开发的时候就能想象到未来
11、。项目投资产生最大的效益或回报。项目投资产生最大的效益或回报。有目的的建模。有目的的建模。多种模型。多种模型。高质量的工作、快速反馈。高质量的工作、快速反馈。软件是项目的主要目标,文档是次要的。软件是项目的主要目标,文档是次要的。极限编程生命周期极限编程生命周期 测试驱动开发测试驱动开发 10.3.2 敏捷过程的最佳实践敏捷过程的最佳实践编程编程简单设计、测试、重构、编码标准团队实践团队实践代码集体所有、持续集成、隐喻、编码标准、每周40小时工作制、结对编程、小型发布过程过程现场客户、测试、计划博弈、小型发布起始阶段起始阶段 细化阶段细化阶段构建阶段构建阶段交付阶段交付阶段需求用户素材小型发布
12、先行测试测量分析CRC卡片迭代计划任务计划、迭代编程 计划博弈设计系统隐喻单元测试重构持续集成实现编码标准简单设计集体代码所有权运行所有测试10.4 面向构件的软件过程面向构件的软件过程10.4.1 面向构件软件过程的思想面向构件软件过程的思想10.4.2 面向构件软件过程的阶段划分面向构件软件过程的阶段划分10.4.1 面向构件软件过程的思想面向构件软件过程的思想1从传统的关注点分离到构件组装从传统的关注点分离到构件组装2以构件为中心组织软件过程。以构件为中心组织软件过程。3高度关注可复用性和软件过程知识积累高度关注可复用性和软件过程知识积累4高度并行的开发过程高度并行的开发过程基于构件描述
13、的网状软件结构基于构件描述的网状软件结构 10.4.2 面向构件软件过程的阶段划分面向构件软件过程的阶段划分1.需求阶段。需求阶段。捕获需求、识别业务构件、归纳业务构件需求。2.分析与高层设计阶段。分析与高层设计阶段。分析业务构件、识别服务构件,归纳服务构件的需求并完成架构设计。3.并行开发与测试阶段。并行开发与测试阶段。4.提交、发布与部署阶段。提交、发布与部署阶段。5.应用管理。应用管理。CBSP的核心的核心工作产品工作产品表表10-9 CBSP的各个阶段的描述的各个阶段的描述 10.5 软件过程的自定义体系软件过程的自定义体系10.5.1 过程模式的对比分析过程模式的对比分析10.5.2
14、 自我定义的理想管理过程自我定义的理想管理过程10.5.1 过程模式的对比分析过程模式的对比分析鉴于每个软件组织,无论在所属的行业、业务类型、组织规模、成熟度等方面,还是在软件产品线结构、特点、开发平台等方面,都具有自己的特点,很难直接采用某种现成的软件过程模式 CMM/CMMI、RUP、MSF、Agile和和CBSP 优势、弱势和适用范围 对比分析 表表10-10 不同过程模式的比较不同过程模式的比较 10.5.2 自我定义的理想管理过程自我定义的理想管理过程1过程选择的原则过程选择的原则2过程的具体操作建议过程的具体操作建议根据自己的特色来选择软件过程。不要过于在乎过程过根据自己的特色来选择软件过程。不要过于在乎过程过轻或过重,只需要关注它是否合适,因为没有最好、只轻或过重,只需要关注它是否合适,因为没有最好、只有最适合组织本身的过程模式、方法等有最适合组织本身的过程模式、方法等.作业作业第第10章章 1、3Q&A