大家好,我是高胜寒,一个在教培行业不忘初心的人,本文是【循序渐进学运维】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层-封顶-交付。
周期快,及时根据市场需求更新

后记

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

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

【DevOps】软件开发生命周期相关推荐

  1. 云原生安全系列 1:零信任安全和软件开发生命周期

    引言: 自动化已经以各种形式出现了几十年,直到现在我们才开始看到它的全部潜力. 自动化软件开发生命周期 (SDLC) 可以显著提高质量保证.开发人员的生产力并减少花在特定任务上的时间.公司已开始在其整 ...

  2. 软件开发生命周期(SDLC)完全指南

    译者:陈峻 软件开发生命周期(Software Development Life Cycle,SDLC)包含了软件从开始到发布的不同阶段.它定义了一种用于提高待开发软件质量和效率的过程.因此,SDLC ...

  3. 软件开发生命周期模型 瀑布模型、增量模型、原型模型、螺旋模型、喷泉模型总结...

    在校期间学习过这些模型,现在来复习一下. 瀑布模型/改进的瀑布模型 虽然瀑布模型仍然存在很多的问题有待解决,但瀑布模型仍然是最基本的和最效的一种可供选择的软件开发生命周期模型.瀑布模型要求软件开发严格 ...

  4. 软件开发生命周期中的设计阶段_测试基础——软件开发生命周期

    今天和大家分享的是软件开发生命周期,主要介绍软件的生命周期和软件的设计模型. 国标(GB8566-88)中将软件生命周期分为8个阶段:可行性研究与计划.需求分析.概要设计.详细设计.实现(包括单元测试 ...

  5. 孙叫兽进阶之路之软件开发生命周期

    孙叫兽,前端全栈开发工程师,java工程师. 软件开发生命周期:

  6. 软件开发生命周期中的设计阶段_什么是软件生命周期模型?软件测试和软件开发的关系分析!...

    软件生命周期这个词,对于大部分人应该比较陌生,但却不容忽视!正因为它的重要性,才有许多不同的软件开发生命周期模型,但是它们都有一个共同的特点,那就是在生命周期中的某一时刻,软件都会被测试.今天我就和大 ...

  7. 软件开发生命周期及开发模型

    软件开发生命周期 软件开发生命周期又叫做SDLC(Software Development Life Cycle),它是集合了计划.开发.测试和部署过程的集合.如下图所示 : 需求分析 这是生命周期的 ...

  8. SDLC 软件开发生命周期及模型

    SDLC 软件开发生命周期及模型 SDLC Waterfall Model 瀑布模式 V-Shaped Model V型模式 Prototype Model 原型模式 Spiral Model Ite ...

  9. sdlc 瀑布式 生命周期_SDLC指南–软件开发生命周期的阶段和方法

    sdlc 瀑布式 生命周期 When I decided to teach myself how to code almost four years ago I had never heard of, ...

  10. 移动开发的软件开发生命周期介绍(二)

    Stabilization--稳定期 Stabilization is the process of working out the bugs in your app. Not just from a ...

最新文章

  1. shell的if判断比较
  2. Java的setmargin,Java Sheet.setMargin方法代碼示例
  3. bootstrap .navbar-header 控制button隐藏/显示
  4. 全栈路线_程序员该走全栈路线还是深度专家路线?
  5. [恢]hdu 2042
  6. C++模版类List实现
  7. 网状meta分析怎么入门?网状meta分析与meta分析区别
  8. fv计算机公式,p=fv是什么公式
  9. 2020美亚杯个人赛头脑风暴
  10. 计算机专业的技能测试,中职学校计算机专业技能测试方法存在的主要问题及其对策...
  11. appium连接mumu模拟器,无法连接问题
  12. python代码怎么换行继续写_python代码太长怎么换行
  13. CryptoJS v3.1.2 源码自取
  14. 如何还原完整差异备份
  15. 数字孪生智慧医院:构建三维人体监测可视化管理平台(三)
  16. Infragistsitcs NetAdvantage WebCombo 控件
  17. (数据库存储应用)S2数据库和表的基本操作
  18. Fast R-CNN 论文详读
  19. 快速查询快递物流,根据更新量筛选出只揽收的单号
  20. 树莓派搭建Minecraft我的世界服务器

热门文章

  1. 第三方验收测试-功能测试方案
  2. WA5320-C-EI无线接入点,WX2510H-F无线控制器设置WAPI
  3. java mysql sqlhelper_SQLHelper 的 java版本 - 转载
  4. 王道考研操作系统同步与互斥(王道大题详解)
  5. 北邮计算机通信原理答案,北邮通信原理习题答案第四章 模拟通信系统
  6. 串口调试工具和串口下载工具的区别
  7. html+CSS+JS实现小米官网(附全部代码)
  8. SUI Mobile 手机移动端H5框架
  9. 正则表达式同时匹配中英文及常用正则表达式
  10. 2021-2004中国环境统计年鉴面板数据、环境面板数据