1.敏捷软件开发的宣言

“我们正在通过亲身实践以及帮助他人实践的方式来揭示更好的软件开发之路,通过这项工作,我们认识到:

个人和这些人之间的交流胜过了开发过程和工具

可运行的软件胜过了宽泛的文档

客户合作胜过了合同谈判

对变更的良好响应胜过了按部就班地遵循计划

也就是说,虽然上述右边的各项很有价值,但我们认为左边的各项具有更大的价值。”

2.什么是敏捷?

有效的(快速并适应)响应变更

所有利益相关者中的有效沟通

吸引客户到团队

组织团队使其控制工作执行

产品…

快速、增量交付的软件

?问题:敏捷是如何提出的?是否所有项目适合敏捷?什么样的项目适合敏捷?是否完全对立于传统软件过程实践

3.敏捷及变更成本的费用

4.敏捷过程

是由客户对他们需求的描述驱动的(场景)

意识到计划是短期的

着重强调构建活动的软件迭代开发

交付多个软件增量

适应变更的出现

5.敏捷原则

敏捷原则- I

1.我们最优先要做的是通过尽早、持续地交付有价值的软件来使客户满意。

2.即使在开发的后期,也欢迎需求的变更。敏捷过程利用变更为客户创造竞争优势。

3.经常交付可运行软件,交付的间隔可以从几个星期到几个月,交付的时间间隔越短越好。

4.在整个项目开发期间,业务人员和开发人员必须天天都在一起工作。

5.围绕有积极性的个人构建项目。给他们提供所需的环境和支持,并且信任他们能够完成工作。

6.在开发团队内部,最富有效果和效率的信息传递方法是面对面交谈。

敏捷原则- II

7.可运行软件是进步的首要衡量标准。

8.敏捷过程提倡可持续的开发。责任人、开发者和用户应该能够长期保持步调一致。

9.不断关注优秀的技能和好的设计会增强敏捷能力。

10. 简单——使不必做的工作最大化的艺术——是必要的。

11. 最好的架构、需求和设计出自于自组织团队。

12. 每隔一定时间,团队会反省如何才能更有效地工作,并相应调整自己的行为。

6.人的因素

满足人员及团队需求的过程模型,而非周围其他过程模型

敏捷开发团队成员及团队本身必须具备的关键特征:

  • 竞争能力

  • 共同目标

  • 精诚合作

  • 决策能力

  • 模糊问题解决能力

  • 相互信任和尊重

  • 自组织

极限编程(XP)

使用最广泛的敏捷过程,最初由Kent Beck提出。

XP 策划

以“用户故事”产生开始

敏捷团队评估每个故事和分配成本

将故事分组到一个可交付增量

承诺交付日期

在第一个软件增量交付之后,项目速度用于帮助确定后续发行版本的交付日期

XP 设计

遵循KIS(保持简洁)原则

鼓励使用CRC卡(参见第8章)

对于困难的设计问题,提出建立“spike解决方案”——一种设计原型

鼓励“重构”——内部程序设计的迭代改进

XP 编码

在编码之前,对于每一个软件增量建议构建一个单元测试

鼓励“结对编程”

XP 测试

每天执行所有单元测试

验收测试由客户定义,并由客户执行评估客户可见的功能特征

自适应软件开发

最初由 Jim Highsmith提出

ASD ——区分特征

任务驱动规划

基于组件的焦点

使用“时间段” (参见第24章)

明确风险考虑

强调需求收集协作

强调整个过程的“学习”

动态系统开发方法

由 DSDM 协会提出 (www.dsdm.org)

DSDM——区分特征

在很多方面类似XP或ASD

九条指导原则

活跃的用户参与是必不可少的。

DSDM 团队必须有权作出决定。

注重多次产品交付。

适应商业目的是交付产品验收的基本标准。

迭代和增量开发有必要聚集在一个精确的业务解决方案。

开发期间所有的变更都是可逆的。

需求基线是高水准的。

测试集中在整个生命周期。

DSDM Life Cycle (with permission of the DSDM consortium)

DSDM生命周期(DSDM协会许可)

Scrum

最初由Schwaber 和Beedle提出

Scrum——区分特征

开发工作划分为“包”

测试和文档在构建产品过程中是持续的

工作任务称为一个“冲刺”,并来自现有需求的一个“待办项”

会议非常短暂,甚至有时开会都不用椅子

演示是在分配的时间段内向客户交付软件增量

Scrum过程流(使用许可)

Crystal

由 Cockburn 和 Highsmith提出

Crystal——区分特征

实际上,一个过程模型的大家庭允许根据问题特点来操作

强调面对面的沟通

建议使用“反思研讨会”审查团队的工作习惯

特征驱动开发

最初由Peter Coad及其同事提出

FDD——区分特征

强调特征定义

特征“是可以在2周或更短时间实现的具有客户价值的功能”

使用特征模版

<action> the <result> <by | for | of | to> a(n) <object>

创建一个特征列表并实施“特征计划”

在FDD中合并设计和构建

敏捷建模

最初由 Scott Ambler提出

提出一系列敏捷建模原则

  • 有目的的模型

  • 使用多个模型

  • 轻装上阵

  • 内容重于表现形式

  • 理解模型及构件工具

  • 适应本地需要

软件工程——第五章(敏捷开发)相关推荐

  1. 软件工程结课论文 敏捷开发在软件工程中的应用 大学编程作业(TUST 天津科技大学 2022年)

    软件工程结课论文 敏捷开发在软件工程中的应用 大学编程作业(TUST 天津科技大学 2022 年) 软件工程结课论文 敏捷开发在软件工程中的应用 大学编程作业(TUST 天津科技大学 2022 年) ...

  2. 《SaaS软件工程 云计算时代的敏捷开发》PDF版

    点击下载:[<SaaS软件工程 云计算时代的敏捷开发>](https://pan.baidu.com/s/1upWJEYOni1XLsPBnrrMVhQ)![这里写图片描述](https: ...

  3. 软件工程-第五章-总体设计

    软件工程-第五章-总体设计 5. 总体设计 5.1 设计过程 5.2 设计原理 5.2.1 模块化 5.2.2 抽象 5.2.3 逐步求精 5.2.4 信息隐藏和局部化 5.2.5 模块独立 5.3 ...

  4. 54:第五章:开发admin管理服务:7:人脸入库流程;人脸登录流程;浏览器开启视频调试模式(以便能够在本机的不安全域名的情况下,也能去开启摄像头);

    说明: (1)本篇博客内容:介绍人脸入库流程,人脸登录流程:人脸入库流程:Chrome开启视频调试模式,以便能够在本机的不安全域名的情况下,也能去开启摄像头: 目录 一:人脸入库流程,人脸登录流程: ...

  5. 软件工程(三)——敏捷开发和理解需求

    笔者正在学习<软件工程-实践者的研究方法>这本书,记录下一些读书笔记,共勉! 1.敏捷 市场条件变化十分迅速,客户和最终用户的需求在演变,从业者必须使软件工程工作保持敏捷,要限定过程应是灵 ...

  6. 软件测试(五)敏捷开发

    敏捷开发概念: 以用户需求进化为核心,采用迭代,循序渐进的方式进行软件开发 敏捷开发流程: 1.我们首先需要确定一个Product Backlog(按优先顺序排列的一个产品需求列表),这个是由Prod ...

  7. 软件工程 | 第五章 详细设计与实现

    软件工程 系列为本学期(2020春季)软件工程以及软件工程实践课程笔记整理~ 需求文档已经交了,设计文档还会远吗?从理论到实践,果然还有很多东西需要掌握 整理这部分笔记时想起了毕设学长的话,代码要让自 ...

  8. 现代软件工程 第五章 【团队和流程】练习与讨论

    团队模式和团队的开发模式有什么关系? 如果你领头开展一个全新的项目,你要怎么选择"合适"的团队模式? 不同的团队模式如何影响团队绩效的评估? 团队精神和集体主义的区别?     大 ...

  9. 软件工程第五章——总体设计

    总体设计的基本目的就是回答"概括地说,系统应该如何实现"这个问题,因此,总体设计又称为概要设计或初步设计. 总体设计阶段的另一项重要任务是设计软件的结构,也就是要确定系统中每个程序 ...

最新文章

  1. C# 7.2和8.0路线图
  2. Mato的文件管理 (莫队)题解
  3. 浅谈常见的七种加密算法及实现(附代码)
  4. [基础算法]通过后缀表达式实现表达式的计算
  5. sqoop hive导出到mysql_Sqoop hive导出到mysql[转]
  6. C++设计模式详解之装饰者模式解析
  7. ASP.NET长文章分页
  8. hdf5文件-环境配置/使用读写
  9. 【网摘】ActiveX组件及其注册
  10. 程序员修炼之道-第二版
  11. PHP范例完全自学手册pdf
  12. boot版本是什么 cent os_确定 BootROM 或固件版本
  13. 做市商策略(Market Making Strategy)
  14. Failed to connect to the host via ssh: Control socket connect(/root/.ansible/cp/xxx): Connect
  15. MatLab函数:pol2cart()
  16. idea连接数据库失败的几种解决方案
  17. mysql里面对JSON的操作函数JSON_EXTRACT
  18. NCF(Neural Collaborative Filtering)——协同过滤与神经网络的结合
  19. 构建基于体验式营销的虚拟世界
  20. 计算机快捷键桌布,桌面改造 篇三:编程娱乐两不误 | 伪程序猿的Windows双屏组建/效率工具/桌面美化指南...

热门文章

  1. 机子运行慢,如何提升tomcat的运行速度
  2. 我的2007作品回顾flash动画视频
  3. Android 项目编译 Gradle 配置说明
  4. html字两边的横线_css怎么在文字两边加上横线
  5. Django项目实践(爬取今日头条的头条热榜)
  6. 数字化整合服务成主流:2017复合机市场盘点
  7. miui 打开android目录,android – 如何在miui中打开权限弹出窗口?
  8. webpack系统学习(十四)如何编写一个loader
  9. cf端游界面更新显示服务器繁忙,【CF】UI界面更新了,那玩家期待已久的经典服务器呢?...
  10. java首字母报错_下列关于Java名称命名的约定,错误的是()。A.-.$不作为变量名、方法名开头B.变量名、方法名首字母小...