将软件生命周期划分为制订计划、需求分析、软件设计、程序编写、软件测试和运行维护等六个基本活动,并且规定了他们自上而下、相互衔接的固定次序,如同瀑布流水,逐级下落
若某一阶段发现上一阶段产品不能满足要求, 则需返回重做.
优点:有利于大型软件开发过程中人员的组织、管理,从而提高了大型软件项目开发的质量和效率。
缺点: 过于理想,缺乏灵活性,容易产生需求偏差
V模型强调软件开发的协作和速度,将软件实现和验证有机地结合起来,在保证较高的软件质量情况下缩短开发周期
优点:适合工程量小、人力资源少并且开发过程中改动不大的项目
缺点:错误发现时间迟,产生的风险代价高
先建立一个快速原型,实现客户与系统的交互,客户对原型进行评价,进一步细化待开发软件的需求.
通过逐步调整原型使其满足客户的要求,开发人员可以借此确定客户的真正需求.
原型模型分为两种:
演化式原型模型: 逐步修改原型, 直至其成为可以满足客户需求的最终软件产品.
快速原型模型: 原型获得用户真实需求后即被抛弃, 重新开始开发.
优点: 可以得到比较良好的需求定义,容易适应需求的变化, 开发费用低、开发周期短且对用户更友好
缺点: 客户与开发者对原型理解不同, 准确的原型设计比较困难, 不利于开发人员的创新。
软件被作为一系列的增量构件来设计、实现、集成和测试,每一个构件是由多种相互作用的模块所形成的提供特定功能的代码片段构成。
增量模型在各个阶段并不交付一个可运行的完整产品,而是交付满足客户需求的一个子集的可运行产品。
整个产品被分解成若干个构件,开发人员逐个构件地交付产品,这样做的好处是软件开发可以较好地适应变化,客户可以不断地看到所开发的软件,从而降低开发风险,有利于快速开发软件。
综合了瀑布模型和演化模型的优点,还增加了风险分析,特别适合于大型复杂的系统。
持续集成是一种敏捷开发实践, 持续集成指的是,频繁地(一天多次)将代码集成到主干。.
持续集成的优点在于:
快速发现错误: 每次提交均经过测试, 便于定位错误
防止分支大幅偏离主干: 如果不是经常集成,主干又在不断更新,会导致以后集成的难度变大,甚至难以集成。
与持续集成相关的,还有两个概念,分别是持续交付和持续部署。
持续交付(Continuous delivery)指的是,频繁地将软件的新版本,交付给质量团队或者用户,以供评审。
持续部署(continuous deployment)是持续交付的下一步,指的是代码通过评审以后,自动部署到生产环境。持续部署的目标是,代码在任何时刻都是可部署的,可以进入生产阶段。
持续集成的流程为:
(1) 提交更改
(2) 代码仓库对commit操作配置了钩子(hook),只要提交代码或者合并进主干,就会执行自动化测试。 测试通过, 修改就可以合并如主干完成交付.
(3) 构建工程(build), 进入第二轮全面自动测试.
(4) 通过第二轮测试后, 得到新的可部署版本, 将其自动部署到生产环境.
若任一测试未通过则会放弃集成, 回滚到上一个可部署版本.
需求理论性的东西很少, 不知道加在哪了, 建议按一下[Ctrl] + W快捷键
需求的分类:
功能性需求(Functional Requirement): 对特定功能要求的说明
质量需求(Quality Requirement): 对软件响应能力, 负载能力, 健壮性等非功能性的要求
设计约束(Design Constraint): 平台, 交互模式等要求
工艺约束(Process Constraint): 对软件所用技术, 资源的约束