常见软件过程介绍
子项目特征
各个子项目的成果都经过 测试 - 具备集成和可运行的特征 - 小项目相互联系
-
敏捷是一种思想,一种价值观。价值迭代交付,以人为本。
1 适应型(Adaptive),而非可预测型(Predictive)。 2 以人为本(people-oriented),而非过程为本(process-oriented)。 3 迭代增量式的开发过程。
工作流程
1) 敏捷建模 2) 实施 3) 测试 4) 部署 5) 项目管理 .
四个主要阶段及其里程碑
AUP过程根据对小型软件项目的分析, 将开发过程的生命周期模型划分 为依次进行的四个阶段, 每个阶段的结束都有一个主要里程碑; 实质上, 每个 阶段就是两个主要里程碑之间的时间跨度, 如下图所示. 可以在每个阶段结束 时进行评估, 以确定是否实现了此阶段的目标. 良好的评估可使项目顺利进入 下一阶段.
敏捷优秀实践概览
产品backlog
理念: 聚焦客户价值(Value),消除浪费 激发团队(Team)潜能,加强协作 不断调整以适应(Adapting)变化
Scrum
回顾会议 稳定开发节奏 客户参与验收 测试驱动开发 Scrum Master 每日站立会议 结对编程 Product Owner 完整团队 代码集体所有 燃烧图 隐喻 迭代计划会议
敏捷过程(Agile Process,AP)
敏捷诞生的历史背景
软件作坊 20世纪60年代 软件规模小,以作坊式开发为主; 硬件飞速发展,软件规模和复杂度激增, 引发软件危机;
70年代
软件危机
80年代 软件过程控制
引入成熟生产制造管理方法,以“过程为 中心”分阶段来控制软件开发(瀑布模 型),一定程度上缓解了软件危机;
它倡导以业务为核心,快速而有效地进行系统开发, 在英国等欧洲国家比较流行。
ASD-Adaptive Software Development,自适应软件开发
由Jim Highsmith在1999年正式提出。ASD强调开发方法的适应性(Adaptive)
敏捷宣言——揭示更好的软件开发方法
敏捷宣言
实例——选课系统。
此项目是应用于学校, 帮助老师登记课程、学生选课的系统预计开发周 期是3个月, 属于典型的小型IT项目。
第一次迭代
先启阶段,拥有的主要工件有: 一个经批准的业务案例、风险清单、初步项目计划、项 目验收计划、精化阶段迭代计划、初始用例模型。 精化阶段,建立了测试环境并且开发测试,系统开发过程中使用的自动化测试工具为 Nunit。 在这个阶段中经过客户调研,确定了粗粒度的业务模型并通过了复审。实际开 发过程中 精化阶段只用了一周时间。最终精化阶段产生的主要工件包括:粗粒度业务模 型、软件构架文档、构建过程迭代计划。 构建阶段,项目经理根据精化阶段的用例模型 确定第一次迭代要完成的功能。然后建模 员建立系统模型,将各个要实现的构件组织成包,各个包中是详细的构件设计。实施员 根据系统模型进行代码编写和测试。构建阶段在第一次迭代过程中用了4周的时间, 经 过2次小的迭代在构建阶段的迭代过程中产生的主要工件为业务模型和系统模型、构件、 部署计划、产品化阶段迭代计划. 产品化阶段,重点是部署,部署最终在客户方完成。
软件过程及其案例分析
--名字
目 录
1. 软件过程概念 2.几种典型的软件过程
3. 软件过程实例应用
4.小结
1. 软件过程概念
定义
软件过程是从软件项目需求定义开始直至软件使用后被废弃为止,跨 越整个软件生存期内的系统开发、运行和维护等全部活动及相关项的总和。
SDP(软件开发过程,Software Development Process),又称为SEP(软件工程 过程,Software Engineering Process),描述了构造、部署以及维护软件的方 式,它定义了开发软件的who、what、when和how。
RUP
RUP是Rational统一过程。从软件过程模式角度看, RUP又是一种典型的软件过程模式,它以迭代增量
式、架构为中心、用例驱动的软件开发方法为主要
特征. RUP中的软件生命周期在时间上被分解为四个顺序 的阶段,有9个核心工作流程在项目中轮流使用,
在每一次迭代中以不同的重点和强度重复。
意义
提倡软件工程设计的简单而优美
敏捷宣言( 2001年)是敏捷起源的基础,由上述4个简单的价值观组成,敏捷宣言的签署推动了敏捷运动
敏捷宣言本质是揭示一种更好的软件开发方式,启迪人们重新思考软件开发中的价值和如何更好的工作
敏捷=理念+优秀实践+具体应用
敏捷包括3个层次
理念(敏捷核心思想) 优秀实践(敏捷的经验积累) 具体应用(能够结合自身灵活应用才是真正敏捷)
AUP ( AgileUnifiedProcess)
主要角色 工作流程 四个主要客户代表 3) 系统分析员 4) 系统设计师 5) 程序员 6) 测试员 AUP中各种活动的执行需要担任不同角色的 人员进行分工合作,一个角色可以包括许多 人员,一个人员也可以承担不同的角色。 AUP中定义的角色在实际开发中可根据需要 进行选择。
敏捷方法
XP -eXtreme Programing极限编程:
思想源自Kent Beck和Ward Cunningham在软件项目中的合作经历。
SCRUM:
是一种迭代的增量化过程,用于产品开发或工作管理 。
水晶方法Crystal:
由Alistair Cockburn在1990年代末提出。把不同类型的项目采用不同的方法。
——基于RUP和敏捷软件过程的小型IT项目开发过程
总体思想及框架 RUP可以适应小型软件项目开发的需要, 但在小型项目中成功应用RUP的关键 是剔除不需要的工件,选择合适的工件子集并保持这些工件非常简明. 开发小型项目的时候, 可以从RUP出发, 并结合敏捷软件过程的思想和做法. 首 先从RUP出发, 采用RUP的四个阶段, 并根据待开发项目的具体情况将RUP进行一 定程度的裁剪和改进, 在需要的时候将敏捷软件开发的优秀实践应用到RUP的四个 阶段中. 这样就得到一个新的基于RUP和敏捷软件开发的适合小型IT项目开发的过 程框架。
2.1 RUP
RUP具有很多长处:提高了团队生产力,在迭代的开发过程、需求管理、基于组 件的体系结构、可视化软件建模、验证软件质量及控制软件变更等方面针对所有关键 的开发活动为每个开发成员提供了必要的准则、模板和工具指导,并确保全体成员共 享相同的知识基础。它建立了简洁和清晰的过程结构,为开发过程提供较大的通用性。 但同时它也存在一些不足:RUP只是一个开发过程,并没有涵盖软件过程的全部 内容,例如它缺少关于软件运行和支持等方面的内容。可以说RUP是一个非常好的开 端但并不完美,在实际的应用中可以根据需要对其进行改进和完善。
比较结果:
RUP吸收了多种开发模型的优点,具有很好的可操作性和实用性,被众多 的开发组织认同和应用,但是由于RUP的内容比较复杂, 各部分联系紧密, 并不容不易剪裁,所以很少有RUP在小型软件项目开发中应用成功的案例。
敏捷软件过程是一种面临迅速变化的需求快速开发软件的过程管理方法, 它强调项目人员的合作及沟通,强调软件类别和项目不同则开发过程也应该 不同。敏捷软件过程被称为轻量级过程比较适合小型项目的开发。
应用——小型IT项目开发
3 实践中如何选择?
确定方案
HOW?
对比
敏捷过程 for example:XP
• 强调团队合作。团队包括:项目经理,客户,开
发者 • 四种价值:交流,简易,回馈,勇气 • 通过对软件的不断测试来获得反馈 • 不只是强调测试,而且要求正确的测试 • .测试能保证同一个BUG 不出现两次 • .通过加强客户的反馈来缩短开发的周期 • 代码质量非常重要 • 开发过程包括许多的小卡片,要组合在一起才有
FDD-Feature Driven Development,特性驱动 软件开发
由Peter Coad、Jeff de Luca 、Eric Lefebvre共同开发,是一套针对中小型软 件开发项目的开发模式。它强调的是简化、实用、 易于被开发团队接受,适用于 需求经常变动的项目。
DSDM-Dynamic System Development Methodology,
软件失败的经验促使过程被不断增加约束 和限制,软件开发过程日益“重型化”, 开发效率降低、响应速度变慢; 随着信息时代到来,需求变化更快,交付 周期成为企业核心竞争力,轻量级的,更 能适应变化的敏捷软件开发方法被普遍认 可并迅速流行。
90年代
重型过程
2001~今 敏捷正在流行
软件开发顺应时代变化,从重型过程转向轻量型敏捷
软件过程中四大要素:生命周期、人员、方法、产品。 四大类要素相互关联成有机整体。 几种常见的软件过程都定义了开发流程中“谁”、“为实现什么”、“如 何”和“做什么” ,其中: 人员表示“谁”。 产品表示“为实现什么”。 方法表示“如何”。 生命周期表示“(何时)做什么”。
2.几种典型的软件过程
目前在软件界影响较大的软件过程:
Rational统一过程(Rational Unified Process,RUP)
敏捷过程(Agile Process,AP)
微软过程(Microsoft Process,MP)
2.1 RUP
RUP是由Rational软件开发公司开发并维护的一个软件过程产品。并且和其开发 的一系列软件开发工具进行了紧密集成,包括Rational Rose建模工具。 过程 产品
(按重要性排序 的需求清单)
持续集成 迭代交付
计划游戏 重构
XP
具体应用:因地制宜选择适合的敏捷实践
敏捷理念 站立 会议
开发团队一
+ +
排序的工 作列表
+ +