文档介绍:敏捷软件开发81
摘要
Introduction
Agile Development
Agile Design
*
Institute of Computer Software
Nanjing University
*
关系不是对立的,而是互相协作的,具有共同的目标:提交正确的软件。
*
Institute of Computer Software
Nanjing University
*
Extreme Programming
XP强调4个因素:
交流(communication),XP要求程序员之间以及和用户之间有大量而迅速的交流
简单(simplicity),XP要求设计和实现简单和干净
反馈(feedback),通过测试得到反馈,尽快提交软件并根据反馈修改
勇气(courage),勇敢的面对需求和技术上的变化
*
Institute of Computer Software
Nanjing University
*
Extreme Programming
XP特别适用于需求经常改变的领域,客户可能对系统的功能并没有清晰的认识,可能系统的需求经常需要变动。
XP也适用于风险比较高的项目,当开发人员面对一个新的领域或技术时,XP可以帮助减低风险
XP适用于小的项目(人员上),人员在2-12人之间,XP不适用于人员太多的项目
*
Institute of Computer Software
Nanjing University
*
Practices of XP
客户作为团队成员
用户素材 user stories
短周期交付
迭代计划
发布计划
验收测试
结对编程 pair programming
*
Institute of Computer Software
Nanjing University
*
Practices of XP
测试驱动的开发方法 Test-Driven Development
集体所有权
持续集成
可持续的开发速度
开放的工作空间
计划游戏 planning game
简单的设计
重构 Refactoring
隐喻 Metaphor:将整个系统联系在一起的全局视图
*
Institute of Computer Software
Nanjing University
*
摘要
Introduction
Agile Development
Agile Design
*
Institute of Computer Software
Nanjing University
*
*
Institute of Computer Software
Nanjing University
*
What is Design?
“After reviewing the software development life cycle as I understood it, I concluded that the only software documentation that actually seems to satisfy the criteria of an engineering design is the source code listings.”
-- Jack Reeves
*
Institute of Computer Software
Nanjing University
*
Design Smells
Rigidity 僵化性 难于修改
Fragility 脆弱性 一改便乱
Immobility 牢固性 难于重用
Viscosity 粘滞性 做好事难
Needless Complexity 不必要的复杂性
Needless Repetition 不必要的重复
Opacity 晦涩性
*
Institute of Computer Software
Nanjing University
*
The “Copy” Program
Initial Design
void copy(){
int c;
while ((c=RdKbd())!= EOF)
WrtPrt(c);
}
*
Institute of Computer Software
Nanjing University
*
Requirement changes
bool ptFlag = false;
//remember to reset this flag
void Copy(){
int c;
while ((c=(ptFlag?RdPt(): RdKbd())