敏捷开发 慨叙

news/2024/7/6 1:10:22

       在开始写敏捷开发系列博客时,首先感谢伟大的软件设计师Martin Fower以及其他几位敏捷思想的创建人,是他们带给了我们新的编程思想,解决了毕业几年来一直困恼我的很多问题。

   软件开发是一种对人类智慧的管理,对人大脑思维的“工厂化”管理。人是有感情的、有情绪的、变化的、相对独立的工作单元,这与冰冷的机器是不可比的,所以在中国的历史上,管理人是最难的工作;“学而优则仕”的观点就是让最聪明的人应该选出来做官,做官就是管理人的。软件开发不仅是代码编程,而是人员的有效组织,如何既发挥人的主观能动性,避免情绪变化对工作的影响,又可以让大家有效的交流,让多个大脑的思路统一,快速完成目标呢?多年来软件企业的管理者一直在不断地探索。

另外,有一个问题一直是软件开发管理人员的心病:软件是工具,开发的是客户业务的应用,但客户不了解软件,开发者不了解业务,如何有效沟通是软件质量的重大障碍。把开发者变成客户业务的专家是个没有办法的办法,让软件企业付出的代价也是昂贵的。

瀑布模型、敏捷开发是有代表性的开发模式,在对开发者、客户、最终的产品的关注上的变化,体现了软件开发管理者在管理模式上的变化。
一、瀑布开发

瀑布模型(Waterfall Model)是Royce在1970年提出的,他把大型软件开发分为:分析与编程,象工厂流水线一样把软件开发过程分成各种工序,并且每个工序可以根据软件产品的规模、参与人员的多少进一步细分成更细的工序。该模型非常符合软件工程学的分层设计思路,所以成为软件开发企业使用最多的开发模型。

图1

瀑布模型的特点:

1、强调文档,前一个阶段的输出就是下一个阶段的输入,文档是个阶段衔接的唯一信息。所以很多开发人员好象是在开发文档,而不是开发软件,因为要到开发的后期,才可以看到软件的“模样”。
2、没有迭代与反馈。瀑布模型对反馈没有涉及,所以对变化的客户需求非常不容易适应,瀑布就意味着没有回头路。
3、管理人员喜欢瀑布模型的原因是把文档理解为开发的速度,可以方便地界定不同阶段的里程碑。

瀑布模型的用户很多,也有一些反对的意见:

第一、瀑布模型不适合客户需求不断变化的软件开发,尤其是客户的业务管理的软件,业务随着市场变化,而软件初期的设计可能已经大大变化,而后期的需求更改成本是开始的10倍基数。在ERP盛行的软件市场里,一方面市场带动需求变化,另一方面初期客户对需求描述不清楚,都为瀑布模型的使用团队带来困难。

第二、瀑布模型是一种软件文档的开发,把开发者变成流水线上的机器,大量重复性的工作让编程人员提不起兴趣,工作很枯燥,没有激情,编程成了一种没有创意的机械劳动,这让一向以高科技为标志的高级程序人员大为恼火。

在这种背景下,敏捷开发带来了新鲜的空气

在了解敏捷之前,我们首先看看敏捷开发宣言:

           1. 个体和交互胜过过程和工具

           2. 可工作的软件胜过面面俱到的文档

           3. 客户协作胜过合同谈判

           4. 响应变化胜过遵循计划

    虽然右项也有价值,但我们认为左项更具有价值。

    从上面的宣言可以看出,敏捷开发的核心是 人 、协作、时刻可运行的软件、变化


http://www.niftyadmin.cn/n/4121150.html

相关文章

An ATL Sample using VS2005

An ATL Sample using VS2005<?xml:namespace prefix o ns "urn:schemas-microsoft-com:office:office" />1. Create an ATL COM1). Start VS2005, new a project, select “Visual C”->”ATL”->”ATL Project”, specify the name(“SimonAT…

敏捷开发 迭代流程

敏捷是一柄双刃剑&#xff0c;用的好能极大的提升开发效率&#xff0c;适应需求的变化&#xff01;用的不好则会导致项目的混乱。现在很多公司都说自己在用敏捷开发&#xff0c;很多程序员也说自己懂敏捷开发&#xff01;简单的认为敏捷就是站立会议&#xff0c;就是迭代的开发…

推荐给大家一个网络工程标书模版(仅供参考)

网络工程投标书<?xml:namespace prefix o ns "urn:schemas-microsoft-com:office:office" />目 录1. 经济部分.. 31.1. 唱标报告.. 31.2. 设备及软件报价明细表.. 42. 商务部分.. 52.1. 投标函.. 52.2. 投标人承诺函.. 62.3.…

敏捷开发 迭代需求

迭代需求的整理是敏捷开发的第一步&#xff0c;也是敏捷开发很重要的一步&#xff0c;在这一步中我们需要把客户的业务需求按照优先级的顺序&#xff0c;整理成为一个个的迭代。然后把一个个的迭代拆成一个个可验收的故事卡。 在此需要说说什么是故事卡&#xff0c;故事卡和业务…

斯坦福大学iOS应用开发教程学习笔记(第三课) Objective-C

1、为什么用property&#xff0c;理由有两个&#xff1a; 实体变量的安全性和继承能力 提供延迟实例化&#xff0c;比如&#xff1a;UI更新&#xff0c;一次性检测。 1.1 property可以没有实体变量&#xff0c;怎么做到的呢&#xff1f; 不要用synthesize&#xff0c;自己创建g…

Power of Two 判断是否为2的次方

Power of Two Given an integer, write a function to determine if it is a power of two. Credits: Special thanks to jianchao.li.fighter for adding this problem and creating all test cases. class Solution { public: //n0 以及n为负数 返回错误bool isPowerOfTwo(i…

敏捷开发 需求澄清

SE整理完一个迭代的需求以后&#xff0c;进入下一个流程需求澄清&#xff0c;需求澄清的主要目的是给开发人员澄清需求&#xff0c;确认开发点。 需求澄清的一般流程为&#xff1a; 1. SE给开发人员讲解需求点 2. 开发人员评论需求点是否合理&#xff0c;完善 3. 开发人员大…

成功注册wuchengyu.com域名

这个学期开了.Net课程&#xff0c;为了配合学习&#xff0c;决定弄一些.Net的程序来借鉴学习一下。于是乎&#xff0c;找到了这个采用C#语言写的.Net的博客。 好不容易找到了中意的程序&#xff0c;总得使用吧&#xff0c;于是乎我不得不又设法找了一个物美价廉空间大速度快的虚…