软件开发是一门技术,也是一门艺术。
瀑布模型、极限编程、敏捷开发是有代表性的开发模式,在对开发者、客户、最终的产品的关注上的变化,体现了软件开发管理者在管理模式上的变化。
瀑布模型
是一种理想化的开发模型,要求有明确的需求分析,无法解决软件需求不明确或不准确的问题。
瀑布模型像工厂流水线一样把软件开发过程分成各种工序,并且每个工序可以根据软件产品的规模、参与
人员的多少进一步细分成更细的工序。更符合分层的设计思想,比较适合于大型软件的开发。也因此瀑布模型
是使用最多的开发模型。
瀑布模型将复杂的问题简单化,分层化,便于分工协作,采用结构化的分析与设计方法将逻辑实现与物理
实现分开。
特点:
1、强调文档,前一个阶段的输出就是下一个阶段的输入。文档是各个阶段衔接的重要信息,所以文档
为重中之重。但是各个阶段之间产生大量的文档,极大地增加了工作量。
2、没有迭代与反馈。瀑布模型对反馈没有涉及,所以对变化的客户需求非常不容易适应,意味着使用
了瀑布模型,最好不要走回头路,否则付出的代价会很大的。
3、管理人员较开发人员更喜欢瀑布。文档很适合向领导汇报用,即使不了解项目的人也能看懂项目的
进度情况;同时它也束缚了开发人员的创造性。
4、由于开发流程是一个阶段顺序进行的,只有等到开发完成,用户才能见到结果,增加了开发的风险
;同时由于这种特性,程序中早期的错误可能要等到开发后期的测试阶段才能发现。
5、瀑布模型对人员的要求是,只要会基本的编程就可以。
由于瀑布模型不适合客户需求不断变化的软件开发,并且把开发者编程流水线上的机器,大量重复性工作让编程人员提不起兴趣,编程成了一种没有创意的机械劳动,于是极限编程带来了新鲜的空气。
极限编程
注重用户反馈。有了反馈,开发时间变短,迭代就出现了,快速迭代。
是一种开发管理模式.
强调:
1、角色定位:明确的把客户加入到开发团队中。用户在软件开发过程中的责任被提到与开发者同样的
重要程度。
2、敏捷开发:追求合作与响应变化。迭代就是缩短版本的发布周期,缩短到周、日,完成一个小的功
能模块,可以快速测试、并及时展现给客户,以便及时反馈。小版本加快了客户沟通反馈的频率,功
能简单,在设计、文挡环节大大简化。极限编程中文挡不再重要的原因就是因为每个版本功能简单,
不需要复杂的设计过程。极限编程追求设计简单,实现客户要求即可,无需为扩展考虑太多,因为客
户的新需求随时可以添加。
3、追求价值:极限编程把软件开发变成自我与管理的挑战,追求沟通、简单、反馈、勇气,体现开发
团队的人员价值,激发参与者的情绪,最大限度地调动开发者的积极性,情绪高涨,认真投入,开发
的软件质量就大大提高。
敏捷开发
核心是迭代。最终目标是让客户满意,所以能主动接受需求变更,这样就使设计出来的软件有灵活性,可
扩展性。
特点:
1、迭代:软件的功能是客户的需求,对迭代强调的是缩短了软件版本的周期。
2、项目团队的人数不能太多
3、项目经常发生变更
4、高风险的项目实施
5、开发人员可以参与决策
注意:
1、客户最关心的功能最先完成
2、小版本。快速功能的展现。
3、敏捷开发不等于不写文档,而是减轻了繁重的文档,不以文档为驱动。
瀑布模型由于其过程的不可回溯性,自 然决定了它无法应对需求的变化,对软件开发过程无法及时反馈与
修改,或者说对于应对变化的成本较大。因此瀑布模型是面向过程的;而敏捷开发是面向人的,在开发过程中,
人是第一位。使软件利用人的特点,充分发挥人的创造能力。
不论是瀑布还是敏捷开发,在推行的时候还要认真分析要面对的团队。有很多人现在执迷于敏捷开发,但
是没有传统的瀑布模型,怎么会有敏捷开发,又怎么会体会到敏捷开发的乐趣?况且,对于一个比较大型的需
求确定的项目,还是用瀑布模型比较有优势。