极限编程(extremeprogramming)和其他敏捷软件开发(agilemethodology)方法学(轻量级)RUP强调采用送代和检查的方式来开发软件,整个项目开发过程由多个选代过程组成。在每次选代中只考虑系统的一部分需求,针对这部分需求进行分析、设计、实现、测试和部署等工作,每次迭代都是在系统已完成部分的基础上进行的,每次给系统能够增加一些新的功能,如此循环往复地进行下去,直至完成最终项目。2.7.1Rational统一过程(RUP)1.软件工程过程提供了在开发组织中分派任务和责任的纪律化方法可控的日程和预算,提供满足用户需求的高质量产品2.过程产品Rational公司开发和维护的过程产品3.过程框架a)可配置的过程b)适用于不同规模的开发团队c)适用于不同规模和不同复杂度的项目d)适用于不同的开发环境和领域2.7.2RUP的核心元素口用于成功开发软件的一组基本观念和原则?6条“最佳实践”?10个“流程要素”口可重用方法内容及流程构建块的框架?可以在定义自己的开发方法和过程口底层方法及流程定义语言?统一方法架构元模型OUML2.7.3RUP最佳实践口送代式开发需求分折与设计口需求管理初始计划口使用基于组件的架构实现计效口可视化建模管理环境口验证软件质量测试口控制软件变更评估1.选代式开发见右图示每次代结果生部署成可执行版本口开发过程中需求变更口控制风险
极限编程(extreme programming)和其他敏捷软件开发(agile methodology) 方法学(轻量级) RUP 强调采用迭代和检查的方式来开发软件,整个项目开发过程由多个迭代过程 组成。在每次迭代中只考虑系统的一部分需求,针对这部分需求进行分析、设计、实 现、测试和部署等工作,每次迭代都是在系统已完成部分的基础上进行的,每次给系 统能够增加一些新的功能,如此循环往复地进行下去,直至完成最终项目。 2.7.1 Rational 统一过程(RUP) 1.软件工程过程 提供了在开发组织中分派任务和责任的纪律化方法 可控的日程和预算,提供满足用户需求的高质量产品 2. 过程产品 Rational 公司开发和维护的过程产品 3. 过程框架 a) 可配置的过程 b) 适用于不同规模的开发团队 c) 适用于不同规模和不同复杂度的项目 d) 适用于不同的开发环境和领域 2.7.2 RUP 的核心元素 用于成功开发软件的一组基本观念和原则 6 条“最佳实践” 10 个“流程要素” 可重用方法内容及流程构建块的框架 可以在定义自己的开发方法和过程 底层方法及流程定义语言 统一方法架构元模型 UML 2.7.3 RUP 最佳实践 迭代式开发 需求管理 使用基于组件的架构 可视化建模 验证软件质量 控制软件变更 1.迭代式开发 见右图示 开发过程中需求变更 控制风险
2.需求管理口描述了如何提取、组织和文档化需要的功能和限制:跟踪和文档化折衷方案和决策:捕获和进行商业需求交流口功能需求用例(UseCase)分析技术口非功能需求性能,可靠性,安全性3.架构和组件软件架构(SoftwareArchitecture)?构成系统的组件?组件之间的关联和交互口架构刻画了系统的整体设计?去掉了细节部分?突出了系统的重要特征4.可视化建模由于应用领域不同,模型可以有文字、图形或数学表达式等多种形式,一般说来,使用可视化的图形更容易令人理解。5.验证软件质量软件质量评估不在是事后型的或由单独小组进行的孤立活动,而是内建在贯穿于整个开发过程的、由全体成员参与的所有活动中。6.控制软件变更在变更是不可避免的环境中,必须具有管理变更的能力,才能确保每个修改都是可接受的而且能被跟踪的。2.7.4RUP生命周期1.RUP生命周期核心工作流核心过程工作流程:业务建模、需求、分析与设计、实现、测试、部署核心支持工作流程:配置与变更管理、项目管理、环境2.RUP生命周期工作阶段按时间分成四个顺序阶段,每个阶段以一个主要里程碑结束:每个阶段的目标通过一次或多次送代来完成。精化移交先启构建R+生命周期生命周期初始产品操作体系结构发行目标里程碑里程碑能力里程碑里程碑时间
2.需求管理 描述了如何提取、组织和文档化需要的功能和限制;跟踪和文档化折衷方 案和决策;捕获和进行商业需求交流 功能需求 用例(Use Case)分析技术 非功能需求 性能,可靠性,安全性 3.架构和组件 软件架构(Software Architecture) 构成系统的组件 组件之间的关联和交互 架构刻画了系统的整体设计 去掉了细节部分 突出了系统的重要特征 4.可视化建模 由于应用领域不同,模型可以有文字、图形或数学表达式等多种形式,一般 说来,使用可视化的图形更容易令人理解。 5.验证软件质量 软件质量评估不在是事后型的或由单独小组进行的孤立活动,而是内建在贯 穿于整个开发过程的、由全体成员参与的所有活动中。 6.控制软件变更 在变更是不可避免的环境中,必须具有管理变更的能力,才能确保每个修改 都是可接受的而且能被跟踪的。 2.7.4 RUP 生命周期 1.RUP 生命周期核心工作流 核心过程工作流程:业务建模、需求、分析与设计、实现、测试、部署 核心支持工作流程:配置与变更管理、项目管理、环境 2.RUP 生命周期工作阶段 按时间分成四个顺序阶段,每个阶段以一个主要里程碑结束;每个阶段的目 标通过一次或多次迭代来完成
阶段先启精化构建移交流程■业务建模口分析与设计口实施方法内容测试台曙配置和变更管理■项目管理口环境初始的E1E2C1C2CNT:T2选代流程图方法内容定义与方法内容在流程中的应用5RUP选代式2.7.5采用迭代和渐增的方式来开发软件,整个项目开发过程由多个选代过程组成。2.8敏捷过程与极限编程2.8.1敏捷过程口敏捷软件开发宣言的4个简单的价值观声明O“个体和交互”胜过“过程和工具”O“可以使用的软件”胜过“面面俱到的文档”“客户合作”胜过“合同谈判”0“响应变化”胜过“遵循计划”2.8.2极限编程(ExtremeProgramming)“极限”二字的含义是指把好的开发实践运用到极致
图 方法内容定义与方法内容在流程中的应用 2.7.5 RUP 迭代式 采用迭代和渐增的方式来开发软件,整个项目开发过程由多个迭代过程组成。 2.8 敏捷过程与极限编程 2.8.1 敏捷过程 敏捷软件开发宣言的 4 个简单的价值观声明 “个体和交互”胜过“过程和工具” “可以使用的软件”胜过“面面俱到的文档” “客户合作”胜过“合同谈判” “响应变化”胜过“遵循计划” 2.8.2 极限编程(Extreme Programming) “极限”二字的含义是指把好的开发实践运用到极致
用户故事测试用例需求差错新用户故事隐喻交付计划用户认可最新版本制定交付架构试探送代开发验收测试小交付计划.下一次送代不确定的估计确定的估计难点试探图XP(极限编程ExtremeProgramming)的整体开发过程未完成的任务交流与讨论用户故事新用户故事交付计划新项目速率轮换结对编程人员项目速率持续地优化设计共享的信息“类-责任-协作”卡制定选代计划站立会议结对编程最新版本任务分配个任务新功能测试用例差错验收测试小交付用户认可图XP(极限编程ExtremeProgramming)选代开发过程2.9能力成熟度模型成熟度等级指出CapabilityMaturityModel,包含CMM是改进软件过程的一种策过程能力略,与实际使用的过程模型无关键过程域(KPA)关。达到由组成口能力成熟度模型的结构(如右图目标示)公共特性口能力成熟度等级涉及包含?初始级Y实施或规范化可重复级关键实践措述?已定义级?已管理级基础设施或活动?优化级CNM关键过程域除第1级成熟度之外,每个成熟度等级都包含几个关键过程域,指明了为改进其
图 XP(极限编程 Extreme Programming)的整体开发过程 图 XP(极限编程 Extreme Programming)迭代开发过程 2.9 能力成熟度模型 Capability Maturity Model , CMM 是改进软件过程的一种策 略,与实际使用的过程模型无 关。 能力成熟度模型的结构(如右图 示) 能力成熟度等级 初始级 可重复级 已定义级 已管理级 优化级 CNM 关键过程域 除第 1 级成熟度之外,每个成熟度等级都包含几个关键过程域,指明了为改进其
软件过程,软件开发组织应该重视的区域,同时也指明了为达到某个成熟度等级所必须解决的问题。2.10典型的开发过程例子:为了缓解交通压力,某市决定建立一个公共交通系统。该系统建议人们将私家车停靠在郊区的停车场而换乘公共交通上班,每乘坐一次只需一块钱。市里决定开发一个自动收款机:要求:能够识别1块钱的硬币或纸钞(98%):每次识别应在1秒以内。比较典型的过程通常是这样的:第一幕:系统第一版实现第二幕:结果发现问题一结果发现每次检测需要10秒钟。、需要改变识别算法。第三幕:重新设计快速算法并成功实现第四幕:需求改变项目负责人发现这个算法很有价值,于是要求设计成一个独立的模块好卖钱Development-MaintenanceRequirementsiRequirements4AnalysisiAnalysis4DesigniDesign3Design4Implementation1Implementation2Implementation3Implementation4Episode1Episode3Episode4Episode2典型的开发过程示意图小结:本节在软件工程基本概念的基础上,首先讲述了软件生命周期的概念和基本任务,然后介绍了几种常用的软件生命周期模型、特点、优缺点及其适用范围,通过学习会根据待开发软件项目的特点选择合适的软件过程模型
软件过程,软件开发组织应该重视的区域,同时也指明了为达到某个成熟度等级所必 须解决的问题。 2.10 典型的开发过程 例子:为了缓解交通压力,某市决定建立一个公共交通系统。该系统建议人们将 私家车停靠在郊区的停车场而换乘公共交通上班,每乘坐一次只需一块钱。市里决定 开发一个自动收款机: 要求:能够识别 1 块钱的硬币或纸钞(98%);每次识别应在 1 秒以内。 比较典型的过程通常是这样的: • 第一幕:系统第一版实现 • 第二幕:结果发现问题 – 结果发现每次检测需要 10 秒钟。 – 需要改变识别算法。 • 第三幕:重新设计快速算法并成功实现 • 第四幕:需求改变 – 项目负责人发现这个算法很有价值,于是要求设计成一个独立的模块 好卖钱 典型的开发过程示意图 小结: 本节在软件工程基本概念的基础上,首先讲述了软件生命周期的概念和基本任 务,然后介绍了几种常用的软件生命周期模型、特点、优缺点及其适用范围,通过学 习会根据待开发软件项目的特点选择合适的软件过程模型