【DevOps】软件开发生命周期

大家好,我是高胜寒,一个在教培行业不忘初心的人,本文是【循序渐进学运维】DevOps工具篇的第一篇文章

【循序渐进学运维】DevOps工具篇 主要针对的是DevOps常用的工具,比如jenkins,gitlab, docker等工具的结合使用。

文章目录

        • 1. 计划和需求分析
          • a) 计划
          • b) 需求分析
        • 2. 设计项目架构
        • 3. 开发和编程(实现阶段)
        • 4. 测试
        • 5. 部署(进化阶段)
        • 案例
        • 软件开发模型
          • 1. 概念
          • 2. 分类
            • a 瀑布模型
            • b. 敏捷模型
        • 瀑布和敏捷开发的理解
        • 后记

软件开发的生命周期,又叫做SDLC, 主要集成了

  1. 计划和需求分析
  2. 设计项目架构
  3. 开发和编程
  4. 测试
  5. 部署。

1. 计划和需求分析

我们拿到一个项目,它到底要做什么样的功能。每个软件的开发生命周期模型都是从分析开始, 讨论最终的产品的要求。

a) 计划

1) 确定软件的开发总目标
2) 给出软件的功能,性能,可靠性以及接口等方面的设想
3) 对可供开发使用的资源,成本,以及可取得的效益和开发进度做出估计
4) 指定完成开发任务的实施计划

b) 需求分析

软件研发的类型不同,需求来源也不同,针对产品的软件开发,需要做好市场调研。 比如确定软件系统的功能,性能,数据,和界面要求等

在这一阶段,主要的产出物有两个: 一个是项目开发计划,一个是软件需求说明书。 有的公司可能会有一个可行性分析报告。

2. 设计项目架构

第二阶段主要是设计阶段,系统架构和满意状态,就是你要做成什么样子,有什么功能。
明确软件系统是由哪些模块组成的,这些模块的层次结构,调用关系,以及模块的功能,同时确定数据结构和数据库结构。

这个阶段的产出物有: 概要设计说明书,数据库设计说明书,接口设计,详细设计说明书

3. 开发和编程(实现阶段)

编码就是把模块的控制结构转化为程序代码,该阶段需要编码规范。
一般由项目经理带领我们的开发人员进行开发,根据项目的大小和复杂程度,可能需要数月或者更长的时间完成。

4. 测试

测试是为了保证软件质量,该阶段产生的文档主要有软件测试计划、测试用例、软件测试报告。

测试一般由测试人员测试,一些小的项目也可以是开发人员进行测试,测试主要分为:

  • 功能测试

  • 代码测试

  • 压力测试

  • 单元测试: 开发自测,包含各个单元模块,具体到类,函数

  • 集成: 各个单元组合测试,接口是否正确,数据是否正常传递

  • 系统测试: 把整个系统搭建起来,根据规格说明书需求对应测试,看各个功能模块是否与需求相符,系统运行是否ok

5. 部署(进化阶段)

发布就是完成软件开发并把已开发的软件系统安装到客户的服务器上,并进行相关的维护, 根据用户的情况,可能需要对某功能进行修改,bug修复,功能增加等
这个阶段其实就是上线及线上bug反馈
说来也怪,bug的生命周期和软件开发周期一样:

  • bug发现并提出
  • bug的确认和分析
  • 设计bug的修改方案
  • bug修复阶段
  • 测试bug是否修复成功
  • 修复完成后上线
    然后进入下一轮的bug发现并提出阶段,周而复始,所以很多新入行的开发人员,第一年就是在不听的发现bug,修复bug,不会让你涉及到更多核心内容。

该阶段产生的文档主要有项目开发总结报告、用户手册、应用软件清单、源代码清单、维护文档。

案例

公司准备做一个软件,可以帮助用户在回答知乎文章的时候,提高点赞率和收藏量。能够实时的发现热门问答和有潜力的问答,能够根据一些参数生成分数供用户参考。能够判断种草的购物链接是否还存在,能够自动提升知乎盐值分数,以及一些其他功能(此案例只是举例)

  1. 需求: 对知乎用户进行访谈,需求文档撰写,用户确认, 3天
  2. 设计(该要设计2天)
  3. 编码(30-40天)
  4. 测试(7天)
  5. 接项 (5天)

当然每个项目都不一样,软件各个生命阶段周期的大致分布

计划与需求分析: 10 --25%

设计项目架构: 20%~25%
开发与编码: 15%~25%
测试与部署: 30~40%

软件开发模型

1. 概念

软件开发模型(Software Development Model)是指软件开发全部过程、活动和任务的结构框架

2. 分类
a 瀑布模型

瀑布模型是最著名和最常用的软件开发模型,但目前已经不太适合现在的开发了。就像汽车生产流水线一样,各个部门各司其职,工作按照顺序展开。如同瀑布流水,逐层下落。

特点: 阶段时具有顺序性和依赖性,前一个阶段完成,才能进行后一个阶段。
简单易用和容易理解,根据里程碑去检查实现的目标。

缺点:

  • 不适应用户需求的变化,
  • 各个阶段的划分完全固定,阶段之间产生大量的文档,极大的增加了工作量
b. 敏捷模型

敏捷开发的核心是迭代开发+增量开发

迭代开发: 将开发过程拆分成多个小周期,每次小开发都是同样 流程
增量开发: 软件的每个版本,都会增加一个用户可以感知的完整功能,根据新增功能划分迭代。

特点:及时了解市场需求,降低产品不合适市场的风向。

瀑布和敏捷开发的理解

假设我们要建10栋楼

瀑布模型: 打好10栋楼的地基-盖好10层-封顶-交付

花费的时间长,出现问题不容易修改,无法尽快适应市场变化

敏捷开发: 打好1栋楼地基-盖好10层-封顶-交付。
周期快,及时根据市场需求更新

后记

很多学员毕业后去了公司,我找人收集了他们公司现有的开发模型,发现大多数公司的开发模型就是没有模型,完全是混乱状态。

在留言区聊聊你们公司正在用的开发模型吧,我是高胜寒,一个教培行业不忘初心的人。欢迎点赞收藏,我们下片文章再见!

你可能感兴趣的:(#,软件生命周期,敏捷开发)