认真是我们
参与这个社会的方式

软件开发模式

瀑布模型

介绍

1970年温斯顿·罗伊斯(Winston Royce)提出了著名的“瀑布模型”,直到80年代早期,它一直是唯一被广泛采用的软件开发模型。

ps:没啥用

核心思想

瀑布模型核心思想是按工序将问题化简,将功能的实现与设计分开,便于分工协作,即采用结构化的分析与设计方法将逻辑实现与物理实现分开。将软件生命周期划分为制定计划、需求分析、软件设计、程序编写、软件测试和运行维护等六个基本活动,并且规定了它们自上而下、相互衔接的固定次序,如同瀑布流水,逐级下落。

总结:分布,按顺序执行,一个步骤完成再进行下一个

优点

  • 为项目提供了按阶段划分的检查点。
  • 当前一阶段完成后,您只需要去关注后续阶段。
  • 可在迭代模型中应用瀑布模型。
  • 增量迭代应用于瀑布模型,每次迭代产生一个可运行的版本,同时增加更多的功能。每次迭代必须经过质量和集成测试。

缺点

  • 在项目各个阶段之间极少有反馈。
  • 只有在项目生命周期的后期才能看到结果。
  • 通过过多的强制完成日期和里程碑来跟踪各个项目阶段。
  • 瀑布模型的突出缺点是不适应用户需求的变化。

敏捷开发模型

概念

敏捷开发(agile develolment),是一种以人为核心、迭代、循序渐进的开发方法。在敏捷开发中,软件项目的构建被切分成多个子项目,各个子项目的成果都经过测试,具备集成和可运行的特征。换言之,就是把一个大项目分为多个相互联系,但也可独立运行的小项目,并分别完成,在此过程中软件一直处于可使用状态。

特点

敏捷方式也称轻量级开发方法。敏捷软件开发宣言内容:

  • 个体和交互胜过过程和工具
  • 可以工作的软件胜过面面具到的文档
  • 客户合作胜过合同谈判
  • 响应变化胜过遵循计划

重点强调:

  • 1. 以人为本,注重编程中人的自我特长发挥。
  • 2. 强调软件开发的产品是软件,而不是文档。文档是为软件开发服务的,而不是开发的主体。
  • 3. 客户与开发者的关系是协作,不是合约。开发者不是客户业务的“专家”,要适应客户的需求,是要客户合作来阐述实际的需求细节,而不是为了开发软件,把开发人员变成客户业务的专家,这是传统开发模式或行业软件开发企业的最大面临问题。
  • 4. 设计周密是为了最终软件的质量,但不表明设计比实现更重要,要适应客户需求的不断变化,设计也要不断跟进,所以设计不能是“闭门造车”、“自我良好”,能不断根据环境的变化,修改自己的设计,指导开发的方向是敏捷开发的目标。

项目的敏捷开发

敏捷开发小组主要的工作方式可以归纳为:

  • 作为一个整体工作;
  • 按短迭代周期工作;
  • 每次迭代交付一些成果;
  • 关注业务优先级;
  • 检查与调整。
  • 最重要的因素恐怕是项目的规模。规模增长,面对面的沟通就愈加困难,因此敏捷方法更适用于较小的队伍,40、30、20、10人或者更少。

因此在敏捷开发模式中,一个项目被分解为多个部分或多个步骤。在每个阶段完成后,项目都可以拿出一定程度可交付的产品。这样做便于实现产品交付目标,降低整个项目的复杂度,同时在项目早期就能拿出初具雏形的产品。

与迭代开发的区别

敏捷开发相比迭代式开发,两者都强调在较短的开发周期提交软件,但是,敏捷开发的周期可能更短,并且更加强调队伍中的高度协作。

敏捷方法有时候被误认为是无计划性和纪律性的方法,实际上更确切的说法是敏捷方法强调适应性而非预见性。适应性的方法集中在快速适应现实的变化。当项目的需求起了变化,团队应该迅速适应。这个团队可能很难确切描述未来将会如何变化。

与瀑布模式的区别

敏捷开发与瀑布模式的不同,主要是下面几个“敏捷”的关注点:

  • 1. 迭代。软件的功能是客户的需求,界面的操作是客户的“感觉”,对迭代的强调是缩短了软件版本的周期
  • 2. 客户参与。以人为本,客户是软件的使用者,是业务理解的专家,没有客户的参与,开发者很难理解客户的真实需求
  • 3. 小版本。快速功能的展现,看似简单,但对于复杂的客户需求,合理地分割与总体上的统一,要很好地二者兼顾是不容易的。

迭代模型

概念

在某种程度上,开发迭代是一次完整地经过所有工作流程的过程:需求、分析设计、实施和测试工作流程。实质上,它类似小型的瀑布式项目。RUP(统一软件开发过程-Rational Unified Process)认为,所有的阶段都可以细分为迭代。每一次的迭代都会产生一个可以发布的产品,这个产品是最终产品的一个子集。

使用条件

  • (1)在项目开发早期需求可能有所变化。
  • (2)分析设计人员对应用领域很熟悉。
  • (3)高风险项目。
  • (4)用户可不同程度地参与整个项目的开发过程。
  • (5)使用面向对象的语言或统一建模语言(Unified Modeling Language,UML)。
  • (6)使用CASE(Computer Aided Software Engineering,计算机辅助软件工程)工具,如Rose(Rose是非常受欢迎的物件软体开发工具。)。
  • (7)具有高素质的项目管理者和软件研发团队。

优点

与传统的瀑布模型相比较,迭代过程具有以下优点:

  • (1)降低了在一个增量上的开支风险。如果开发人员重复某个迭代,那么损失只是这一个开发有误的迭代的花费。
  • (2)降低了产品无法按照既定进度进入市场的风险。通过在开发早期就确定风险,可以尽早来解决而不至于在开发后期匆匆忙忙。
  • (3)加快了整个开发工作的进度。因为开发人员清楚问题的焦点所在,他们的工作会更有效率。
  • (4)由于用户的需求并不能在一开始就作出完全的界定,它们通常是在后续阶段中不断细化的。因此,迭代过程这种模式使适应需求的变化会更容易些。

参考:

  • https://blog.csdn.net/orclight/article/details/8642585
  • http://velep.com/archives/833.html

没有故事 也没有酒

点也没用点也没用