(多年前的读书笔记,从ITEYE迁移过来)
近日正在研读《Head First Software Development》一书,很喜欢深入浅出系列的书籍,语言流畅、行文活泼又不失风趣。同时又可以顺便学习一下英文,其实该系列书籍都挺流畅,只要英文不是特别差读起来就不费任何力气。
其实本书根据软件开发的整个流程,讲了很多的切实可行、可用的实践来帮助我们开发出伟大的软件----(Deliver what the customer want, on time ,on buget!)
Greate software developent --Pleaing your customer
软件存在的最终的价值在于能够满足客户的需求为客户创造价值。如果开发出来的软件不能够使的客户满意,就不是成功的软件,就更谈不上伟大!所以伟大的软件开发在于能够开发出来使得客户满意的软件!
每一个程序员、每一个开发团队都想开发出来伟大的软件,但是从客户一个模糊的主意到一款伟大软件的出生并非易事。所以业界提出很多软件工程方面的理论,希望能够像建筑那样来建造软件,但是没有实体软件并不是实体建筑,业界也已经有定论在---软件开发领域没有银弹 !
并不是每一个士兵都想成为将军,有时候我们需要就是“在一定的时间、一定预算内开发出来客户需要软件 ”--这就是我们的目标,所以我们可以使用已经证明有效的开发过程或实践来开发出来相对较好的软件。迭代式开发就是其中的之一!
软件开发过程有两个主要的问题一直困扰着我们,也使所有的开发人员痛恨不已.....
1.用户不知道他们到底需要什么,或者是说不清楚他们需要什么。
2.需求的变化和增加。
于是我们想出各种办法去弄清楚用户的需求,去获取用户的所有需求。我们希望在项目开始进入设计和编码之前把这些问题都解决掉。但是不幸的是人不是机器, 对事物的认识是有一个过程的,变化总是在发生!所以我们就像一条在不停追逐自己尾巴的狗一样,永远也赶不上。
- 迭代式开发可以启发用户澄清和挖掘需求 。通过短期的开发迭代,我们在每一个迭代结束时产生一个可以工作的软件给用户演示、使用。让用户帮我们核对我们开发有没有偏离方向,是不是他们需要的,因此迭代开发相当于设了一系列的检查点来矫正我们的开发方向。同时,通过可以工作的软件来启发用户,让他们把一些潜在的需求挖掘出来,没有澄清的需求进一步的澄清。
- 迭代式开发可以有效的应对需求的变化和增加。 由于把整个开发过程分为一系列的子开发,所以我们可以灵活在后续的迭代过程中添加和改动需求。同时调整我们的迭代顺序,而不至于因为一开始的完全设计使得没有办法进行调整。
还有一点需要说明的是,可能提到迭代开发就想到敏捷开发、极限编程。但是迭代开发并不是他们专有的,迭代开发超越了开发过程。