商业化背景下的开发模式--敏捷开发

  • 传统软件开发

  • 背景

  上世纪70年代前,随着软件开发的普及,出现了众多的“软件作坊”,然而随着软件规模的上升,软件开发的技术并没有实质的提升,于是出现了“软件危机”。70年代后,传统软件开发的出现为人们提供了设计和管理软件工程的手段,并且一直沿用至今,传统软件工程已经是一种十分成熟的软件开发方法。

  瀑布模式是一种典型的传统软件开发模式:

  它分为需求分析,系统设计,系统代码实现,单元测试,组合测试5个阶段,每个阶段都必须在上一阶段完成后才可以进行,是一种线性模型的开发模式。也正是因为最开始可以将该软件的功能需求全部定下,软件的开发也可以更有针对性。因此,传统软件开发的方法经常用于开发一些大型软件系统,这类系统的需求不易变更,而且开发周期较长,使用传统软件开发可以使得软件整体性更强,内部逻辑更加严谨,系统的稳定性和可靠性更强。

  • 传统软件开发的不足

  瀑布模型的开发模式要求每一步必须在上一步完成后才能进行,这种线性模型导致软件的开发周期过长。而且,一旦在开发过程中客户变更了需求,开发者很难对软件的需求进行修改,甚至可能需要推到重新开发。在软件开发商业化的今天,开发者需要经常面对客户的需求变更,而且客户经常需要检查你的项目进展,因此传统开发模式不再适合于这类商业软件的开发。于是,人们提出了一种新的开发模式--敏捷软件开发。

  • 敏捷开发

  • 什么是敏捷开发

  关于敏捷开发一篇论文中是这样解释的:应用比较轻量级的管理模式,通过迭代的开发手段解决了应对变化的问题,满足了对需求变化的快速响应。简单来讲,敏捷开发不同于瀑布模式,更像是一种模块化的开发。开发者不用在系统设计之初就设计好所有的需求,而可以先针对某一功能进行开发,开发完成后可以单独就这一功能向客户展示,这时如果客户提出其他需求,我们可以及时添加相应的功能,而无需对系统的基础设计结构进行改动。

  下面这张图很形象的描述了敏捷开发:

  在开发过程中的任何需求改动,即图中的feedback都可以再次回到系统设计进行添加,开发后也可以及时将这一功能投入到市场,并了解客户的信息回馈,反馈到开发者改动系统设计。

  这种反复迭代开发的开发模式,不同于往传统软件开发中系统需求、系统设计、代码实现、单元测试、组合测试这样的线性模型,它根据不同的功能需求,在每次迭代的过程中实现一部分功能,这样每一次迭代都会有新的进展,及时向客户反映开发的进展情况。

  下面解读一下敏捷开发的12条准则:

1,最重要的是通过尽早和不断交付有价值的软件满足客户需求。

  敏捷开发中,不必等到项目开发完成后再给用户进行展示,每当实现一个功能,就可以及时展现给客户,这种反馈更为及时。

2,欢迎需求的变化,即使在开发后期。驾驭变化,保持客户竞争优势。

  敏捷开发是一个迭代的过程,在开发过程中任何的需求变化,可以及时回到软件设计层进行功能的添加或改变,针对需求变化做出及时的响应。

3,经常交付可以工作的软件,从几星期到几个月,时间尺度越短越好。

  迭代的开发流程保证了可以及时产生成果展示给客户,这一条和第一条类似。

4,业务人员和开发者应该在整个项目过程中始终朝夕在一起工作。

  针对其快速响应需求变化的特点,业务人员与开发者一起工作可以使开发出的软件更加符合客户的需求。

5,给开发者提供适宜的环境,满足他们的需求并相信他们可以完成任务。

  信任在开发过程中也尤为重要。

6,在开发小组中最有效率也最有效的信息传达方式是面对面的交流。

  面对面交流对信息的传递更为准确,开发者可以更准确的了解客户的需求。

7,可以工作的软件是进度的主要度量标准。

  每次迭代的过程都会产生一个可以展示的功能反馈给客户,让客户了解项目进展情况,并且及时给出反馈意见。

8,敏捷过程提倡可持续开发。出资方,开发人员和用户应该能够保持恒久稳定的进展速度。

9,对卓越技术与良好设计的不断追求将有助于提高敏捷性。

10,要做到简洁即尽最大可能减少不必要的工作。

11,最好的架构,需求和设计都源自自我组织的团队。

12,每个一段时间,团队都要总结如何更有效率,然后相应的调整自己的行为。

  集中解释这几条准则,敏捷开发也是一种团队的开发,在Scrum开发框架中要求,在开发之初,需要开会将不同的任务划分到不同的冲刺轮次中,这样可以有效减少重复的工作,每次开发的迭代周期前都要开会,确定这次迭代要完成的任务,保证了任务的进展与质量。

  • 敏捷开发框架--Scrum

  Scrum是一个敏捷开发框架,是一个增量的,迭代的开发过程。

  Scrum将整个项目开发过程是分为多个周期比较短的多个迭代来完成。每个迭代周期由4个阶段组成:计划、预备、开发和发布。一般情况下,Scrum在迭代周期上有一定的要求限制,大约为30天。在Scrum管理框架中,将这样的一个迭代称为一个冲刺(Sprint)。每个冲刺过程后,客户可以看到展示的成果,并且提出需求的变更和意见,反馈给开发者,这些问题都可以在下一次迭代中来解决。

  Scrum的开发流程使得开发者与客户可以紧密合作,为客户及时的提供项目的进展情况,开发者也可以及时得到需求的变更,及时进行修改,提高了项目开发的敏捷性。

 

  • 总结

  传统开发与敏捷开发都有自己适用的领域,各有所长。如果我们开发一个需求明确,任务周期较长的项目,我们可以采用传统开发模式进行开发,这样开发出的项目稳定性和可靠性更强,而且项目的内部组织更加整体化。对于大多数的商业开发,在开发过程中往往需要及时给予客户反馈,并且客户会经常变更需求,这样的项目更适合使用敏捷开发模式进行开发,可以减少开发者很多重复的工作并且可以让客户及时了解项目的进展情况。

  • 参考文献

  [1] 葛岳  《基于敏捷开发方法的软件项目管理研究》 天津大学管理与经济学部

  [2] 百度百科:敏捷开发

http://baike.baidu.com/link?url=Eu7tcXbJO16pTytAxhZZ-sUQhJCBMePQAi6GsZJ7YbbbLhfgvIW67HvjgBGLnTMF_39SlH6VmLrvCJ29sYqmXJt-D8h2q97OZxQj_S5tTIt6lZw3RFUF76qO-z8j5oT8

  [3] 百度文库:软件工程发展史

http://wenku.baidu.com/link?url=CKn26QZKzPJOC-bijna409fY52nQeWIV_Qrf5QNx80Wdo0b9rsi0jMgKkXWpto10H_xCvVXzirMLuGxF0jjYASFuztwKy9z-NRV9X1pjfle

  [4] 软件工程导论.pdf

 

posted @ 2016-10-19 14:54  DandelionTian  阅读(401)  评论(2)    收藏  举报