这几天,我在学习一些开发模式,外面敏捷开发模式好象很热门,又听说敏捷开发注重代码(好象蛮符合我这种懒人,最好少写点文档),网上找了些相关文章学习,看了很迷惑,这里整理了一些概念给和我一样的新手入门,也同时写了点我的看法,错误之处请大家指点.
概念:
2001年,一些专家成立为敏捷联盟。
目的
---------------------------
快速工作和响应能力
敏捷开发过程的方法:
------------------------------
特征驱动软件开发(Feature Driven Development,简称FDD),
自适应软件开发(Adaptive Software Development,简称ASD),
极限编程(eXtreme Programming,简称XP)。极限编程(XP)是于1998年由Smalltalk社群中的大师级人物Kent Beck首先倡导的。
(还有其他...)
敏捷宣言:
------------------
谈判 不如 合作
过程 不如 交流
计划 不如 变化
文档 不如 程序
敏捷开发对象的设计原则:
----------------------------------------------------
单一职责原则(SRP) 就一个类而言,应该仅有一个引起它变化的原因。
开放-封闭原则(OCP) 软件实体应该是可以扩展的,但是不可修改。
Liskov替换原则(LSP) 子类型必须能够替换掉它们的基类型。
依赖倒置原则(DIP) 抽象不应该依赖于细节。细节应该依赖于抽象。
接口隔离原则(ISP) 不应该强迫客户依赖于它们不用的方法。接口属于客户,不属于它所在的类层次结构。
重用发布等价原则(REP) 重用的粒度就是发布的粒度。
共同封闭原则(CCP) 包中的所有类对于同一类性质的变化应该是共同封闭的。一个变化若对一个包产生影响,则将对该包中的所有类产生影响,而对于其他的包不造成任何影响。
共同重用原则(CRP) 一个包中的所有类应该是共同重用的。如果重用了包中的一个类,那么就要重用包中的所有类。
无环依赖原则(ADP) 在包的依赖关系图中不允许存在环。
稳定依赖原则(SDP) 朝着稳定的方向进行依赖。
稳定抽象原则(SAP) 包的抽象程度应该和其稳定程度一致。
个人体会:
第一:敏捷开发强调的是响应变化,靠变化来获取活力和优势。所以团队几乎不进行预先设计,不需要一个成熟的初始设计。
第二:敏捷开发强调的是需求和开发的阶段性。所以客户是阶段性的提出需求,并阶段性验收的,所以客户必须是团体的一部分。
问题:
1 怎么把客户加入开发团队?
2 没有一个合理的初始设计怎么保证阶段性开发质量和整体质量?
3 是否有最佳实践? 除了“结对编程”!
有兴趣的朋友可以我的评论文章《读"极限编程与敏捷开发"》,此文的大部分内容截选于这篇文章http://www.sawin.com.cn/doc/SE/Agile/xpagile.htm。