前言:软件过程是为了获得高质量软件所需要完成的一系列任务的框架,它规定了完成各项任务的工作步骤。简而言之,就是描述为了开发出客户需要的软件,什么人(who)、在什么时候(when)、做了什么事(what)、以及怎么样(how)做这些事以实现某个特定的具体目标。而它就像传统的汽车线性生产流程般通过一系列的需求分析后进行生产。
汽车生产的基本流程
- 汽车设计
- 顾客下订单
- 顾客想要什么?
- 制造它需要花销多少?
- 发货售卖
一、瀑布模型
瀑布模型:就是按照一定的顺序性和依赖性 进行软件开发,就像传统的汽车生产线,简单流程就是顾客需求->厂家设计->厂家生产->测试->出厂;而传统的瀑布模型就是需求分析->规格说明->设计->编码->综合测试->维护;
- 所以可以通过汽车生产来解释瀑布模型
- 需求分析:
这一阶段非常重要,需要顾客和设计者进行沟通交流,减少不必要的资金浪费,时间消耗。因为在生产制造过程中顾客不知道改产哦所需消耗的物资,所以会产生一些过于理想的想法,从而会无法满足顾客的需求。
- 设计:在与顾客谈拢后将所需要的需求开始进行设计,再将设计方案交付到下一阶段。
- 制造:当设计敲定,就可以投入制造了。从漫画可以得知瀑布开发模型是不可以更改需求和设计的,所以到后期软件因为不符合需求了需要更改就会变得异常麻烦,这是最主要的缺点之一。
- 测验:由于瀑布模型有严重的顺序性和依赖性,所以在产品为完成之前,是无法进行测验的。这个时候就会造成资源浪费,如漫画中那个人无所事事般。
二、敏捷模式
敏捷开发模式是一种从1990年代开始逐渐引起广泛关注的一些新型 软件开发方法 ,是一种应对快速变化的需求的一种软件开发能力。 它们的具体名称、理念、过程、术语都不尽相同,相对于"非敏捷",更强调程序员团队与业务专家之间的紧密协作、面对面的沟通(认为比书面的文档更有效)、频繁交付新的软件版本、紧凑而 自我组织 型的团队、能够很好地适应需求变化的代码编写和团队组织方法,也更注重做为软件开发中人的作用。
敏捷开发其实就是以用户的需求进化为核心,采用迭代、循序渐进的方法进行软件开发。在敏捷开发中,软件项目在构建初期被切分成多个子项目,各个子项目的成果都经过测试,具备可视、可集成和可运行使用的特征。换言之,就是把一个大项目分为多个相互联系,但也可独立运行的小项目,并分别完成,在此过程中软件一直处于可使用状态。
简而言之就是可以随时依客户的需求进行修改的一种模式。敏捷开发_百度百科
- takeholder的积极参与 我们对XP的现场客户(On-Site Customer)的概念做了一个扩充:开发人员需要和用户保持现场的接触;现场的用户要有足够的权限和能力,提供建构中的系统相关的信息;及时、中肯的做出和需求相关的决策;并决定它们的优先级。也就是说客户能够在后期产品完成时有其他需求时也可以进行修改,即敏捷过程能够驾驭变化,保持客户的竞争优势。并对客户保持高度透明。
- 公开展示模型 你应当公开的展示你的模型,模型的载体被称为“建模之墙”(modeling wall)或“奇迹之墙(wall of wonder)”。这种模式会把所有的工作混为一起,没有一定的秩序,这时就需要将每一步的工作内容展示在看板上营造出开放诚实的沟通氛围,才能更好的解决乱序问题。
- 看板和scrum可以避免混乱的两种方法。