什么是软件
是一系列按照特定顺序组织的计算机数据和指令的集合。一般来讲软件被划分为系统软件、应用软件。
软件生命周期
- 定义问题
- 搜集需求
- 可行性研究
- 需求分析
- 软件开发
- 概要设计
- 详细设计
- 编码
- 测试
- 软件维护
- 纠错性维护
- 改善性维护
- 报废
软件开发流程
为了使软件开发的工作系统化并且可控制,需要采用合适的软件开发模型和开发过程管理所有的活动
瀑布模型
概念
是一个项目开发架构。开发过程是通过设计一系列阶段顺序展开的,从系统需求分析开始直到产品发布和维护,每个阶段都会产生循环反馈,因此,如果有信息未被覆盖或者发现了问题,那么最好 “返回”上一个阶段并进行适当的修改,项目开发进程从一个阶段“流动”到下一个阶段。
即
- 软件开发的各项活动严格按照线性方式进行。
- 当前活动接受上一项活动的工作结果。
- 当前活动的工作结果需要进行验证。
优点
开发的各个阶段比较清晰。
强调早期计划及需求调查。
适合需求稳定的产品开发。
缺点
早期的错误可能要等到开发后期的阶段才能发现。
由于开发模型是线性的,增加了开发的风险。
敏捷开发模型
概念
是一种增量模型。软件是以增量的、快速的周期开发的,这也导致许多小的增量版本,每个版本都建立在以前的功能之上,并且每个版本都经过了彻底的测试,以确保软件质量得到维护。
-
XP模型(极限编程)
-
SCRUM框架
特点
适用于需求频繁变化和需要快速开发的场景。增量迭代小步快跑
DevOps
概念
是一组过程、方法与系统的统称,用于促进开发(应用程序/软件工程)、技术运营和质量保障(QA)部门之间的沟通、协作与整合。是一种重视“软件开发人员(Dev)”和“IT运维技术人员(Ops)”之间沟通合作的文化、运动或惯例。透过自动化“软件交付”和“架构变更”的流程,来使得构建、测试、发布软件能够更加地快捷、频繁和可靠
生命周期
- 持续开发
- 持续测试
- 持续集成
- 持续部署
- 持续监控
对发布的影响
- 减少变更范围
- 加强发布协调
- 自动化
CI/CD
持续集成(Continuous Integration,缩写为 CI):
- 种软件开发实践。
- 团队开发成员每天可能会发生多次集成。
- 每次集成都通过自动化的构建(包括编译,发布,自动化测试)来验证。
- 根据测试结果确定新代码和原有代码能否正确地集成在一起。
持续交付(Continuous Delivery,缩写为 CD)
- 是一种软件工程手法。
- 让软件产品的产出过程在一个短周期内完成。
- 保证软件可以稳定、持续的保持在随时可以发目标
- 软件的构建、测试与发布变得更快以及更频繁。
- 减少软件开发的成本与时间,减少风险。
与DevOps关系
DevOps 的范围更广:DevOps 是软件交付过程所涉及的多个团队之间的合作,并且将软件交付的过程自动化。
持续交付是一种自动化交付的手段:关注点在于将不同的过程集中起来,并且更快、更频繁地执行这些过程。
即:DevOps 可以是持续交付下的一个产物,持续交付的成果直接汇入 DevOps 模型