架构-软件工程2.2-开发方法
极限编程(XP,Extreme Programming)
在所有的敏捷型方法中,XP是最引人瞩目的。它源于Smalltalk圈子,特别是Kent Beck和Ward Cunningham在20世纪80年代末的密切合作。XP在一些对费用控制严格的公司中的使用,已经被证明是非常有效的。
基础和价值观是交流、朴素、反馈和勇气,即任何一个软件项目都可以从4个方面入手进行改善:
**(1)加强交流(2)从简单做起(3)寻求反馈(4)勇于实事求是。
XP 是一种近螺旋式的开发方法,它将复杂的开发过程分解为一个个相对比较简单的小周期:通过积极的交流、反馈以及其他一系列的方法,开发人员和客户可以非常清楚开发进度、变化待解决的问题和潜在的困难等,并根据实际情况及时地调整开发过程。
XP提倡测试先行,为了将以后出现bug的几率降到最低。
水晶系列方法(COCKBURN)
水晶系列方法是由Alistair Cockburn提出的。它与XP方法一样,都有以人为中心的理念,但在实践上有所不同。Alistair考虑到人们一般很难严格遵循一个纪律约束很强的过程,因此,与XP的高度纪律性不同,Alistair探索了用最少纪律约束而仍能成功的方法,从而在产出效率与易于运作上达到一种平衡。也就是说,虽然水晶系列不如XP那样的产出效率,但会有更多的人能够接受并遵循它。
其目的是发展一种提倡“机动性的”方法,包含具有共性的核心元素,每个都含有独特的角色、过程模式工作产品和实践。
并列争球法(SCRUM)
是一种迭代的增量化过程,明确定义了可重复的方法过程,把每段时间(如30天)一次的选代称为(Sprint),并按需求的优先级别来实现产品,多个自组织和自治的小组并行地递增”冲刺”实现产品。
即明确定义了的可重复的方法过程只限于在明确定义了的可重复的环境中,为明确定义了的可重复的人员所用,去解决明确定义了的可重复的问题。
特性驱动开发方法(FDD)
FDD:Feature Driven Development
是一个迭代的开发模型。
- 有效的软件开发需要3个要素:人、过程和技术。
- 有效的软件开发有5个核心过程:开发整体对象模型、构造特征列表、计划特征开发、特征设计和特征构建
它致力于短时的迭代阶段和可见可用的功能。在FDD中,一个迭代周期一般是两周。
在FDD中,编程开发人员分成两类:首席程序员和”类”程序员(class owner)。首席程序员是最富有经验的开发人员,他们是项目的协调者、设计者和指导者,而”类”程序员则主要做源码编写。
开放式源码
这里提到的开放式源码指的是开放源码界所用的一种运作方式。开放式源码项目有一个特别之处,就是程序开发人员在地域上分布很广,这使得它和其他敏捷方法不同,因为一般的敏捷方法都强调项目组成员在同一地点工作。开放源码的一个突出特点就是查错排障(debug)的高度并行性,任何人发现了错误都可将改正源码的”补丁”文件发给维护者。然后由维护者将这些”补丁”或是新增的代码并入源码库。
自适应软件开发ASD
ASD (Adaptive Software Development)方法由Jim Highsmith提出,其核心是三个非线性的、重叠的开发阶段:
- 猜测
- 合作
- 学习
Booch方法
Booch方法是早期面向对象的软件开发方法的一种,该方法强调了类与对象、它们之间的关系,以及它们在系统中如何交互的重要性。
基于构件的开发方法
基于构件的软件开发中,已有的构件分类方法可以归纳为三大类:
(1)关键字分类法
根据领域分析的结果将应用领域的概念按照从抽象到具体的顺序逐次分解为树形或有向无回路图结构。
(2)刻面分类法
利用 Facet(刻面)描述构件执行的功能、被操作的数据、构件应用的语境或任意其他特征。
(3)超文本方法
基于全文检索技术,使得检索者在阅读文档过程中可以按照人类的联想思维方式任意跳转到包含相关概念或构件的文档。