1、软件开发方法It is not the strongest of the species that survives, nor the most intelligent that survives. It is the one that is the most adaptable to change.Charles Darwin本章主要内容n 传统软件开发流程 Waterfalln Rational统一开 发过 程 RUPn 敏捷软件开 发 Agile(XP, Scrum)l Do self-learning瀑布式开发:早期的开发方法RISKTIME延迟关键风险解决推迟集中系统的测试、集成没有
2、早期部署经常导致较大的无计划重复RUP Rational Unified Processn RUP是 Rational公司提出的、面向对象的软件开发过程。当时影响较大n 过 程 :l 是 指为达到一个目标而采取的一系列有序的步骤n RUP目 标 :l 高 效、按时地提交一个满足业务需求的软件产 品n RUP特点l RUP提供了在开发机构中分配任务和责任的纪律化方法l RUP在很大程度上是过程独立的,即,它可以用到多种不同的软件开发过程中l RUP是一种特别适合于用 UML表述的软件生命周期方 法,它提 出了一整套以 UML为基础的开发准则,用以指导软件人员以 UML为基础来开发软件RUP所要处
3、理的问题n 有缺陷、无法预测结果的、高度依赖个别 “英雄 ”程序员的、不可重复的开发过程n 开发的软件难以适应用户需求n 在应对需求的变更方面无能为力 n 需要单调乏味和昂贵的测试流程n 对项目中出现的严重缺陷发现太迟n 开发的软件难以维护和扩充RUP介绍n 使得开发团 队涉 众 (包 括,项目经理、测试员、系统分析员、发布维护人员、数据库管理人员、系统架构师、代码设计编写人员 等 ) 共 享l 同一个知识库l 同一个开发过程l 同一个开发视图l 同一种建模语言n RUP的 core ideal 保持最佳实践 Implementing best practicesRUP达到最佳实践的措施n 管
4、理需求n 控 制变更n使用构件架构n质量检验n可视化建模n迭代式开发RUP的需求管理n 需求管理定义 :l 一 种用于查找、记录、组织、跟踪系统需求变更的系统化方法n 需求管理目标 :l 解 决真正的问题,建立用户需要的系统n 需求管理内容:l 提取组织系统的功能和约束,将其写成文档l 估计需求变化,评估变更带来的影响l 跟踪需求的实 现n RUP需求管理的驱 动l 由 Use Case驱动l 在透彻理解系统如何被使用的基础上建造系 统(透 彻理 解 ? )迭代式开发n 降低风险n 得到早期用户反馈n 持续的测试和集成n 适应变更n 提高复用性迭代开发:增量 式 实施每次迭代都是一个小型瀑布开
5、发可视化建模n 描述系统结构和特点n 描述系统的各元素如何组织在一起n 保证设计和实现的一致性n 保证没有歧义的沟通质量检验n 为每个关键模块创建用例并测试,保证所有需求都被实现n 不可接受的应用性能和不能接受的可靠性对一个软件系统的影响性同样重要n 验证软件可靠性:内存泄露、性能瓶颈n 对每一次迭代进行测试RUP使用构件架构n 构件架构的优势l 自下而上地设计、实现、测试体系架构l 用系统化的方法来定义良好的体系结构(愿望)l 采用定义明确的接口使变更更有弹性l 采用现有的或逆向工程得到构件l 由高级别的用例来驱动l 易于直观理解构件架构管理变更n 哪些变更需要管理l 控制、追踪、监控项目的
6、所有变更,从而启动每次迭代l 为每个开发者建立安全的工作空间l 对不同的工作空间的改动提供隔离机制l 控制所有的软件制品:模型、文档、代码RUP以软件体系结构为中心n 强调在软件开发早期就识别出与软件体系结构紧密相关的用例。通过对这些用例分析、实现、测试,形成系统框架n 在后续阶段细化已形成框架,最终实现整个系统n 开发阶段早期形成的良好软件体系结构有利于对系统的理解、支持重用和有效的组织开发RUP软件开发生命周期RUP软件开发生命周期n 横轴:时间l 分为若干阶段 :起 始、细化、构造、提交l 在 每个阶段(横轴区间)都有一或多次迭代- 迭代是一个完整的开发周期- 产生一个可执行的项目发布版
7、本l 每个阶段和每次迭代都有里程碑。- 里程碑提供了一个评审点,评价关键性能是否达到,项目是否需要以某种方式被重新构 造n 纵轴:核心工作流 core workflowl 对应于特定迭代的连续活动l 活动:需求定义、分析、设计、实现、测试- Artifacts:中间制品The Software Development Life Cycle Phases中各名词含义 n Inception:建立项目图景、范围和初始计划n Elaboration :设计、实施、测试(一个被认为良好的)架构,完成项目计划n Construction:建立第一个可运行的系统(软件)版本n Transition :向最
8、终用户提交系统Disciplines (流程 )中各名词含义n Business modeling:描述客户所在组织的组织结构和动态情况n Requirements: 用各种方法描述需求n Analysis and design:描述体系结构视图n Implementation :软件开发、单元测试、集成n Test :描述脚本、执行测试、跟踪测量缺陷n Deployment :材料清单、发布说明、培训等n Configuration management :控制变化,以维持项目制品和各项活动管理的完整性n Project Management :描述迭代开发过程中不同的工作策略n Envir
9、onment :布署一个系统所必需的其他基础设施RUP的起始阶段 Inception n 意图l 项目图景 : 建立业务模型用例 ,高层需求 ,初始项目计划l 明确项目范 围, 解决需求和商业上的风险n 结果l 项目的实际需求,实现 10-20%的用例模型l 初始的业务案例- 成功准则、风险评估、资源评估、显示里程碑进度表和阶段计划n 在初始阶段最后,检查项目的生命周期目标,决定是否继续开发n 起始阶段涉及众多人员RUP的细化阶段 Elaboration n 意图l 分析问题域, 解决架构上的风 险 , 建 立一个健全、合理的体系结构基础l 明确项目高风险因素l 制定一个合理的开发计划n 结果
10、l 完成初始关键用例模型的 80%l 一个可执行的体系结构和文档l 一个修订的用例图和风险评估l 一个针对整个项目的开发计划n 最后检查已经细化的系统目标和范围、体系结构的选择、主要风险的解决方案,决定是否构建软件系统细化阶段以项目架构师和项目经理为主,也包括分析员、开发人员、测试人员;所需人员数量、时间都多于起始阶段RUP的构建阶段 Construction n 意图l 解决代码和运行上的风险l 迭 代增量式开发一个准备交付用户的完整产品。l 描述剩余需求、验收标准、充实设计、完善测试和实现n 产品l 完整的用例图和设计模型l 用户手册l 可执行代码l 开发文档l 每次迭代的评测标准l 改进
11、的开发计划n 在阶段最后,要决定软件、现场、用户是否已经准备妥当,以部署第一个可操作的软件版本本阶段涉及项目架构师、项目经理和具体构建团队的领导,也包括所有开发测试人员;RUP的提交阶段 Transition n 意图l 解决发布的风 险l 为 用户安装部署软件n 产品l 可执行程序l 改进的系统模型l 每次迭代的评测标准l 对程序的描述和评测指标的描述l 改进的用户文档l 改进的开发文档迭代与阶段之间的关系n 每个阶段可有多个迭代n 一个迭代是一个完整的开发过程,将产生一个可执行产品的发布版本RUP带来的软件观念性的变化n 更强的计划性:l 迭代开发意味着更强的计划性和预见性l 阶段划分、阶
12、段内迭代都需要有仔细规划l 项目管理者承担更大责任:确定迭代的内容、时间,主要依据经验n 坦然面对开发中的一部分中间制品推倒重来l 不应过分担忧这些事情,由于迭代过程的细化和相应工具的支持,这种影响可以控制n 坦然面对中间制品不美观l 注重实效,项目管理者要充当意见缓冲区,树立讲信用和可信赖的形象RUP带来的软件观念性的变化n 把软件放在首位l 过分强调规格说明是不恰当的,在开发过程中需求和规格说明都是允许变化的n 尽早进行困难的工作l 将困难工作放在在后期是极其不利的,可能会遭遇 “集成地狱 ”而使开发失去控制。n 强调开发过程监控和量化管理l 对各种变化和扰动测量监控,l 先示范,后发布文
13、档,尽量使开发人员信 服n 成功的软件项目同时需要这两种特质l 既需要好的项目管理 者l 也需要好的体系架构 师RUP的制品 Artifacts - 1n Models: RUP最重要的制品1. Business use case model:结构抽象2. Business analysis model:系统上下文3. Use case model:系统功能4. Analysis model (optional):概念设计5. Design model:建立术语词汇6. Data model (optional):数据结构7. Deployment model:硬件拓扑结构8. Implementation model:建立运行环境模型与工作流之间关系RUP的制品 Artifacts - 2n A view is a projection into a modell 一个视图就是指我们从某一角度观察真实模型,所看到的景象。用数学语言描述,这个景象实际上是真实模型的在某平面上的一个投影。n RUP包含 5个密切关联的视图l 4+1视图:l design view, interaction view, deployment view, implementation view, and use case view