一、软件工程概述(5.敏捷软件开发)

一、敏捷软件开发

1. 出现原因

(1)软件开发新挑战(快速进入市场、需求快速变化、技术快速发展)

(2)传统软件开发方法(强调文档、过程,开发人员负担过重)

(3)重载

2. 敏捷软件开发联盟(Agile联盟)

价值观:

        个人和交互高于过程和工具。

        可运行软件高于详尽的文档。

        与客户协作高于合同(契约)谈判。

        对变更及时做出反应高于遵循计划。

指导原则:

        尽早不断地向客户提交有价值的软件

        欢迎变化的需求

        尽快、不断地发布可运行软件

        业务人员和开发人员必须在一起工作

        以积极向上的员工为中心建立项目组,给予他们所需的环境和支持,并充分信任他们

        面对面交流

        测量项目进展的首要依据是可运行的软件

        敏捷过程提倡可持续的开发,项目发起者、开发者和用户应能长期保持恒定的速度

        应时刻关注技术上的精益求精和好的设计, 以增强敏捷性

        简单化是必不可少的,这是尽可能减少不必要工作的艺术

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

        团队要定期反思怎样才能更有效,并据此调整自己的行为

适用范围:

        需求不确定、易挥发

        有责任感和积极向上的开发人员

        用户容易沟通并能参与

典型方法:

        Extreme Programming (简称XP)

        SCRUM

        Crystal Methodologies (简称Crystal)

        Feature Driven Development(简称FDD)

        Dynamic Systems Development Methodology(简称DSDM)

        Adaptive Software Development(简称ASD)

        Pragmatic Programming等

Crystal(水晶法):

       它认为每一个不同的项目都需要一套不同的策略、约定和方法论。通过更好地交流和经常性地交付, 软件生产力得以提高,因为它较少需要中间工作产品。

SCRUM(并列争球法):

        它使用迭代的方法,其中把每30天一次的迭代称为一个“冲刺(sprint)”,并按需求的优先级别来实现产品。多个自组织和自治小组并行地递增实现产品。协调是通过简短的日常情况会议来进行的,就像橄榄球中的 “并列争球(scrum)” 。

ASD(自适应软件开发):

        它有6个基本原则。在该方法中,有一个使命作为指导,它设立项目的目标,但并不描述如何达到这个目标。特征被视作客户价值的关键点,因此项目是围绕着构造的构件来组织并实现特征的。过程中的迭代是很重要的,因此 “重做”与“做”同样关键,变化也包含其中。同时风险也包含其中,它使开发人员首先跟踪最艰难的问题。

XP方法:

        适用于10人以下项目组、开发地点集中的场合,广泛用于需求模糊和挥发性强的场合。

        四个价值观:

                交流        简单        反馈        勇气        (谦逊)

        12个核心实践:

                ⒈完整的团队        ⒉计划对策(发布计划和迭代计划)        ⒊系统比喻

                ⒋小发布        ⒌测试        ⒍简单设计        ⒎结对设计(两个人,一个写一个检查)

                ⒏设计改进        ⒐持续集成        ⒑代码全体共有        ⒒编码标准        ⒓可持续步调

XP方法开发过程:

探索阶段:

        主要工作是开发初始的用户故事 和体系结构骨架。

计划阶段:

        是根据用户故事描述的需求、系统体系结构骨架和系统比喻来制订迭代计划和发布计划。

迭代到发布阶段:

        根据迭代和发布计划,开发满足指定用户故事需求的软件,并与前面已完成的软件版本集成,得到软件的一个新版本。

产品化阶段:

        确认迭代开发的软件已经做好进入产品化的准备。

维护阶段:

        维护阶段涵盖了计划阶段、迭代到发布阶段和产品化阶段

        通常这个阶段主要包括面向产品的活动,如系统的运行和支持。

目录   译者序   第2版前言   第1版前言   第0章不可知和不可说   0.1和解析体验相关的问题   0.1.1解析模式的冲突   0.1.2检测解析模式   0.1.3思考不准确的思想   0.2沟通的不可能性   0.2.1内部重新组织   0.2.2触及共享体验   0.2.3管理不完美的沟通   0.3聆听的三个层次   0.3.1三个层次和方法集   0.3.2三个层次与本书   0.3.3守-破-离   0.4那么,明天我做什么   第0A章不可知和不可说:演进   0A.1沟通和共享的体验   0A.2守-破-离   第1章创造和沟通的合作博弈   1.1软件和诗歌   1.2软件与博弈   1.2.1博弈的类型   1.2.2软件与攀岩   1.2.3创造和沟通的博弈   1.2.4软件与工程化   1.2.5软件与模型构建   1.3再论合作博弈   1.3.1程序员成为沟通专家   1.3.2更快地博弈   1.3.3标识物和道具   1.3.4减少回报   1.3.5对于首要目标的充分度   1.3.6对于积淀的充分度   1.3.7博弈中的博弈   1.3.8开放源码开发   1.4这对我意味着什么   第1A章创造和沟通的合作博弈:演进   1A.1沼泽游戏   1A.2合作中的竞争   1A.3其他领域的合作博弈   1A.4软件工程的重建   1A.4.1这一词汇从哪里来   1A.4.2我们从哪里走错了   1A.4.3重建软件工程   1A.4.4技艺   1A.4.5合作博弈   1A.4.6精益制造   1A.4.7重建后的软件工程   1A.4.8其他工程化中的协作   第2章个人   2.1人是古怪的   2.1.1寻找特征函数   2.1.2古怪性格的元素   2.1.3不可避免的多样性   2.1.4技术的作用   2.1.5相互冲突的共同点   2.2克服失败模式   2.2.1犯错误   2.2.2宁可失败也要选择保守   2.2.3创新而不研究   2.2.4不能始终如一的习惯动物   2.2.5使用纪律和容忍来应对   2.3以一些更好的方式工作   2.3.1具体化   2.3.2实物   2.3.3在某些东西的基础上进行修改   2.3.4观察和聆听   2.3.5支持专注和沟通   2.3.6工作分配要与个性相匹配   2.3.7天赋   2.3.8奖励要能保留乐趣   2.3.9组合奖励   2.3.10反馈   2.4利用成功模式   2.4.1善于四处寻找   2.4.2人们学习   2.4.3可塑性   2.4.4贡献和采取主动   2.4.5组合成功模式   2.4.6英雄也是普通人   2.5明天我该做什么   第2A章个人:演进   2A.1策略平衡   第3章团队的沟通与合作   3.1信息的对流   3.1.1延迟和机会损失成本   3.1.2尔格-秒   3.1.3渗透式沟通   3.1.4穿堂风   3.1.5信息辐射源   3.1.6热空气理论的应用   3.2跨越沟通的鸿沟   3.2.1沟通的形态   3.2.2去掉某些形态所产生的影响   3.2.3利用各种形态   3.2.4黏度与跨越空间的鸿沟   3.3团队就是集体   3.3.1友善和冲突   3.3.2工作时间的公民意识   3.3.3敌意的XP与友善的XP   3.3.4使用胜利来建立“团队”   3.3.5团队文化与亚文化   3.4团队就是生态系统   3.5我明天该做什么   第3A章团队:演进   3A.1一个修订后的办公室布局样本   第4章方法集   4.1一个交付软件的生态系统   4.2方法集中的概念   4.2.1结构术语   4.2.2范围   4.2.3概念术语   4.2.4发布一个方法集   4.3方法集的设计原则   4.3.1常见设计错误   4.3.2在方法集上成功的项目   4.3.3与作者的相关性   4.3.4七条原则   4.4细看XP   4.4.1XP简介   4.4.2剖析XP   4.4.3调整XP   4.5到底为什么使用方法集   4.5.1方法集解决什么问题   4.5.2如何评估一个方法集   4.6明天我应该做什么   第4A章方法集:演进   4A.1方法集与策略   4A.2组织级的方法集   4A.3过程就是循环   4A.4更简单地描述方法集   第5章敏捷与自适应   5.1轻但足够   5.1.1刚好足够   5.1.2对于编制文档的建议   5.2敏捷   5.2.1最佳击球点   5.2.2虚拟团队的麻烦   5.3变得自适应   5.3.1不厌其烦地进行反思   5.3.2方法集成长技术   5.3.3反思研讨会技术   5.4明天我该做什么   第5A章敏捷与自适应:演进   5A.1对于寓意的误解   5A.1.1迭代必须简短   5A.1.2敏捷团队必须驻扎在一起   5A.1.3敏捷团队不需要计划   5A.1.4架构已死;重构是你全部所需要的   5A.1.5我们不需要什么经理   5A.1.6敏捷开发在纪律上要求很低   5A.1.7敏捷只适合最优秀的开发人员   5A.1.8敏捷是既老又新的、失败的、没有尝试过的   5A.2敏捷方法集的演进   5A.2.1XP第2版   5A.2.2Scrum   5A.2.3实用主义和无名的   5A.2.4可预测、计划驱动和其他中心调整   5A.2.5约束理论   5A.2.6精益开发   5A.3新的方法集话题   5A.3.1敏捷项目管理   5A.3.2测试   5A.3.3用户体验设计   5A.3.4规划管控、Burn图和系统工程   5A.3.5用例和用户故事   5A.4经久不绝的问题   5A.4.1最佳击球点和下降   5A.4.2固定价格、固定范围的合同   5A.4.3敏捷、CMMI和ISO9001   5A.4.4何时停止建模   5A.4.5高科技/高接触的工具箱   5A.4.6敏捷的中心   5A.4.7你有多敏捷   5A.4.8引入敏捷   5A.5软件开发之外的敏捷   5A.5.1项目组合管理   5A.5.2客户关系   5A.5.3合同   5A.5.4将变更引入组织   5A.5.5程序员读哈佛商业周刊   5A.5.6建造房屋   5A.5.7机场建设   5A.5.8图书出版   5A.5.9会议组织和敏捷模型的限制   第6章Crystal方法集   6.1对Crystal家族塑形   6.1.1核心Crystal元素   6.2CrystalClear   6.2.1CrystalClear的简要描述   6.2.2CrystalClear的反思   6.3CrystalOrange   6.3.1CrystalOrange的简要描述   6.3.2CrystalOrange的反思   6.4CrystalOrangeWeb   6.4.1CrystalOrangeWeb的简要描述   6.4.2CrystalOrangeWeb的反思   6.5明天我该做什么   第6A章Crystal方法集:演进   6A.1Crystal基因代码   6A.1.1合作博弈的理念   6A.1.2方法集的重点   6A.1.3方法集设计原则   6A.1.4高度成功的项目的7个特性   6A.1.5技术与选择   6A.1.6样本方法集设计   6A.2CrystalClear   6A.3把CrystalClear扩展到Yellow   附录A敏捷软件开发宣言   附录Aa敏捷软件开发宣言和相互依赖声明   附录BNaur、Ehn、宫本武藏   附录BaNaur、Ehn、宫本武藏:演进   附录C后记   参考文献
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值