深入浅出软件开发-----(一)超越过程的迭代式开发

(多年前的读书笔记,从ITEYE迁移过来)

  近日正在研读《Head First Software Development》一书,很喜欢深入浅出系列的书籍,语言流畅、行文活泼又不失风趣。同时又可以顺便学习一下英文,其实该系列书籍都挺流畅,只要英文不是特别差读起来就不费任何力气。

其实本书根据软件开发的整个流程,讲了很多的切实可行、可用的实践来帮助我们开发出伟大的软件----(Deliver what the customer want,  on time ,on buget!)

Greate software developent --Pleaing your customer

软件存在的最终的价值在于能够满足客户的需求为客户创造价值。如果开发出来的软件不能够使的客户满意,就不是成功的软件,就更谈不上伟大!所以伟大的软件开发在于能够开发出来使得客户满意的软件!

每一个程序员、每一个开发团队都想开发出来伟大的软件,但是从客户一个模糊的主意到一款伟大软件的出生并非易事。所以业界提出很多软件工程方面的理论,希望能够像建筑那样来建造软件,但是没有实体软件并不是实体建筑,业界也已经有定论在---软件开发领域没有银弹 !

并不是每一个士兵都想成为将军,有时候我们需要就是“在一定的时间、一定预算内开发出来客户需要软件 ”--这就是我们的目标,所以我们可以使用已经证明有效的开发过程或实践来开发出来相对较好的软件。迭代式开发就是其中的之一!

软件开发过程有两个主要的问题一直困扰着我们,也使所有的开发人员痛恨不已.....

1.用户不知道他们到底需要什么,或者是说不清楚他们需要什么。

       2.需求的变化和增加。

于是我们想出各种办法去弄清楚用户的需求,去获取用户的所有需求。我们希望在项目开始进入设计和编码之前把这些问题都解决掉。但是不幸的是人不是机器, 对事物的认识是有一个过程的,变化总是在发生!所以我们就像一条在不停追逐自己尾巴的狗一样,永远也赶不上。

  • 迭代式开发可以启发用户澄清和挖掘需求 。通过短期的开发迭代,我们在每一个迭代结束时产生一个可以工作的软件给用户演示、使用。让用户帮我们核对我们开发有没有偏离方向,是不是他们需要的,因此迭代开发相当于设了一系列的检查点来矫正我们的开发方向。同时,通过可以工作的软件来启发用户,让他们把一些潜在的需求挖掘出来,没有澄清的需求进一步的澄清。
  •      迭代式开发可以有效的应对需求的变化和增加。 由于把整个开发过程分为一系列的子开发,所以我们可以灵活在后续的迭代过程中添加和改动需求。同时调整我们的迭代顺序,而不至于因为一开始的完全设计使得没有办法进行调整。

还有一点需要说明的是,可能提到迭代开发就想到敏捷开发、极限编程。但是迭代开发并不是他们专有的,迭代开发超越了开发过程。

时间: 2024-11-02 23:39:36

深入浅出软件开发-----(一)超越过程的迭代式开发的相关文章

【转载】快速迭代式开发使用方法总结

本文转载自http://blog.csdn.net/dongkui168/article/details/9069407 ------------------------------------------------------------------------------------------------------ 为什么我在这里主要讨论迭代式软件开发?本文在此抛开千篇一律的理论,拟就根据多年的实践,总结出一套比较务实.可操作性强的方法,以期望在有限的资源下确保软件质量得到较大保证.一

迭代式开发技术

迭代是一开发种技术,用来把系统功能传递到一系列的增量的完整版本,每个版本一个特定固定的时间段被开发,该时间段称之为迭代. 每个迭代的经历过程: 整个迭代过程: 图中颜色代表每次开发每项活动所占的比重不同 迭代式开发的优点: 1.降低风险 2.得到早期用户反馈 3.持续测试和集成 4.适应变更 开发特征: 1.在进行大规模的投资前,就解决了关键的风险问题 2.使的早期用户反馈在初始迭代中就能出现 3.连续进行测试和集成. 4.各个目标里程碑提供了短期的焦点. 5.对过程的测量是通过实现的评定来进行

敏捷开发的26条至理名言 快速迭代式开发使用方法总结

敏捷开发真正的问题是什么?其实敏捷主要还是一种观念,一种意识,通过人来推动. 本文总结了26条有关敏捷开发的关键原则,如何快速迭代式开发,供读者参考借鉴,以指引敏捷软件开发团队. 1.完整地干完一件事后在开始另一件事:用厨房比喻来说就是:"先上这道菜,再开始做下一道".软件开发的最大问题就是同时开始几件事情,这将不可避免的造成某些工作被废弃,从而造成浪费.专注于一件事:完整地实现其功能:运行测试:编写文档:签入所有,把这当做一项工作完成,然后再开始下一件事. 2.不要破坏构建:非常明显

迭代式开发中的禁忌:跨版本修改

最近在做一个项目,这个项目一开始采用的是迭代式的开发模式.但是现在已经乱成一团,乱着乱着开发就变成了测试驱动的开发. 说好的1.0版,改着改着都不知道这是什么版.数据库的结构变化很大.接口规范变化很大.需求变化很多.你可能会想,就算搞个很厉害的架构师,也不见得系统就稳定不变. 是的,确实如此.但是问题是每一次的大改动,根本就是十分随意却没有任何记录的行为.仅靠一个svn(也没用上分支),谁能弄明白到底改了什么鬼? 为什么迭代式的开发,最终变成了依靠测试人员的测试驱动开发?后来我想了一下,发现根本

迭代式开发使用方法总结

http://www.cnblogs.com/pangguoming/p/4922422.html http://www.ibm.com/developerworks/cn/rational/rationaledge/content/jun05/bittner/ http://blog.csdn.net/mvpyao/article/details/42741269

[敏捷开发实践](1) 认识敏捷开发

[敏捷开发实践](1) 认识敏捷开发 1,提要 软件开发是一个系统工程,包括最初的可行性分析.再到设计.开发.测试.维护等整个生命周期.在这个过程中某些阶段的失误或说是变化,都可能增加整个软件项目的风险. 如何在保证效率的基础上还能安计划.保证质量的完成软件项目?于是产生了软件开发的一些方法,这个方法不是指具体有编码阶段的各种设计模式和技巧,而是在整个软件开发策略层面的方法. 传统瀑布模式和新型的敏捷开发就是其中最常用的方法,后面着重讨论敏捷开发的优缺点和敏捷开发的基础知识. 2,常用的开发模式

深入浅出软件开发----(四)计划迭代开发

(多年前的笔记,从ITEYE迁移过来的) 在获取到用户的需求并编写成User Stories,并且通过Playing Poker Game 估算出每一个User Story开发所需的时间后.我们得到了要开发所有的User Stories需要的时间,大多数情况都是客户对新软件的要求都相当的迫切.很少有项目是不受时间的制约的.而成功的软件开发就是在规定的时间,规定的预算开发出来用户需要的软件.所以我们需要根据我们的可用时间来进行软件开发. 计算实际可用的开发时间(以人天为单位): 每一个项目都会有一

详细到复制粘贴就能完成的java开发软件的安装配置过程

java开发与发布过程中需要安装很多软件,这些软件的安装过程通常不是鼠标双击就能解决的,但也不难,只是很少有人会花精力去记住,我将这些软件的安装过程整理出来,以备参考!整理过程以centos 6.5平台为主,其他linux版本也可以参考 jdk java开发最重要的自然是jdk,就从jdk的安装开始吧(windows安装jdk与linux基本相同) 从oracle官方网站下载jdk安装包:jdk-8u111-linux-x64.rpm 安装前检查是否有系统自带的jdk或已经安装的jdk,如果有的

迭代一开发总结心得

思考总结 设想和目标 我们的软件要解决什么问题?是否定义得很清楚?是否对典型用户和典型场景有清晰的描述? 我们软件很明确的定义为,对湖大的老师信息进行爬取和构建知识图谱并展示 典型用户:需要了解湖大教职工信息的老师.学生等 典型场景:考研学生需要了解导师信息 我们达到目标了么(原计划的功能做到了几个? 按照原计划交付时间交付了么? 原计划达到的用户数量达到了么?)? 原计划功能:爬虫爬取老师信息的系统,构建知识图谱,展示知识图谱的系统 实现情况: 爬虫系统基本已经完全实现,知识图谱功能模块将在第