生命周期大体上分为11个步骤,如下图:

第一步:概念/创意/需求 产生,这个环节一般是项目发起人完成,也有可能由产品经理或收到反馈后发起,很多时候是会带有这个项目的期望或者说一个愿景,就像这样:

所有的软件都是有被需要的地方才会诞生,要么解决用户痛点(如:膜拜单车,滴滴),要么提高工作效率(如:office,vs,idea等),或是节约成本(淘宝,拼多多,自动售货机)等,一定是会产生一定效果才会被需要。第二步:概要设计,一般由产品经理完成,和项目发起人一起商讨,设计一个大概的模型、绘制相关流程等,分析一下这个项目的可行性如何,是否会有使用难度而导致得不偿失等,对整个项目有一个大体的把握,确定是可行的,才会进入下一步。第三步:需求编写,一般由产品经理完成。有了概要设计和可行性分析以后,这个时候就可以开始写具体的实施方案和实施步骤了,一般需求写完后会跟项目发起人或相关人核对/修改几轮后,才可最终确认,因为这一步与后面的步骤关系紧密,涉及到最终实现,所以不可随意,尽量慎重。第四步:详细设计,一般由产品经理和UI共同完成。有了详细的需求文档或产品原型,经过几轮的讨论修改以后,相关的细则,流程也已经理得很清楚了,那么这个时候就要开始出最终面向用户的设计图了,这个环节也是很重要的,项目发起人也是特别重视这一步的成果,因为是面向最终的用户的效果图。这轮完了之后可能项目的预想就会变成这样:

第五步:编码+UT ,这一步一般由程序猿和测试人员完成。有了产品原型和详细设计了,蓝图和设计稿咱们都有了,接下来该干嘛很容易想到吧,那就是实线这些。这个环节主要是由程序猿完成,测试人员需要提供测试用例,程序猿就开始根据测试用例来编写单元测试。通常这块的程序猿也分为两端,前端和后端,分别由2猿完成(也有1个人同时编写前端和后端的情况),前端主要是把详细设计图的整体元素拆分成小的细节图片(有的是UI人员提供),然后开始前端的界面布局编码,把图片或一些元素按照设计图的要求实现在程序(页面)中,并且需求中的动画效果等也在这一步编写完成。说完前端了,那么后端人员干嘛呢?后端就可以开始做对应的数据库设计,代码框架搭建(这一步根据具体情况而言),业务逻辑代码编写,单元测试编写(这一步主要是增加程序猿的业务代码最终实现的完整性和降低后期维护对整个项目的影响)。第六步:CT,组件测试,这个严格来说是白盒测试的一部分,但是很多公司不见得有白盒测试人员(要求高,需同时懂测试+开发的知识),那么这部通常是由程序猿本着自己的责任心自己来完成,毕竟自己写的组件是要给其他人使用,如果问题太多可是会降低自己对他人的好印象。有的公司或者项目没有采用组件(前端和后端都会有组件)开发可以跳过这步。第七步:SIT,系统集成测试,一般由程序猿+测试人员完成。好了,后端和前端的工作都做完了,并且前后端的对接也完成了,那么这个时候就会有一个可以看到的项目,一个可以让测试人员把玩的东西。有的公司有这么个情况,就是测试人员要和程序猿保持对立面,那么这个环节最容易体现这一点。测试人员会按照测试用例和UI设计图 跟此时上线的程序挨个对比,如果这个程序产生的效果不是按照预期的设想来的话,就会提出bug(修改意见)让程序猿去修改,修改完以后继续核实,测试。测试人员会严格要求开发人员开发的东西要跟测试人员预想的一样,如果达不到这点,是不会让项目流程进入下一步。第八步:UAT,用户验收测试,一般由产品经理+程序猿+测试人员共同完成。在完成了SIT以后,该项目大体效果应该是没问题了,毕竟是经历了很多轮的 测试+修复的过程,测试组的兄弟姐妹们也花了很多时间和精力在上面了,那么这一步相当于说是上线前的一步,也就是最后的一道门,这个时候产品经理会从自己的视角来实际体验这个项目,好不好用啊,体验完以后,会不会达到当初设想的效果啊,有没有当初没有想好的地方啊,有没有改进的空间啊,等等方面,会提出一些修改意见出来(这个时候,如果修改意见不是bug,不是紧急的任务,通常会放到下一轮开发中进行否则就会在这一轮提出给测试,让测试盯着程序猿完成该需求,开发测试完成后,再提交给产品经理看)。在产品经理从他的视角体验完以后,基本没有问题以后才可以进行下一步。这个时候有人说话了:“有必要搞那么多轮测试吗?那多消耗时间和精力啊,项目要求的就是快,我可能没那么多时间弄测试。”那么我就要问了,如果没有CT,没有SIT,没有UT,你怎么保证你写的代码是绝对没有问题的?你怎么保证你写的代码最终上线效果不是像这样的:

这个时候不可能有程序猿敢这样保证。(因为程序猿开发自己的需求会有一个思维定势,我这么开发的,我就这么自行测试,很少有跳出自己的定式思维来全面测试。)第九步:上线,一般由程序猿完成。完成了UAT之后,这个项目基本上是没有问题,可以正常使用的,那么程序猿这个时候就要把这个时期开发的项目放到正式服务器上面运行了,如果支持热更新项目的话,那可以找个空闲的时间把这期开发内容发布到服务器上即可,如果不支持热更新,那么就得找个用户使用少的时间来更新到服务器上(比如凌晨12,这个时候就哭了程序猿了),因为更新会导致项目在2分钟左右的时间不能正常使用,这个环节如果公司实力允许,可以有多台服务器部署的话,可以采取灰度发布的策略来完成(先发布到小范围使用的正式服务器上,测试没有问题后,再同步到其他服务器),这样上线效果更好,更稳定。第十步:维护,一般由项目发起人或项目经理决定是否继续开发该项目或终止或开发新的项目。第十一步:报废,由项目发起人决定。有的老项目诞生以后,因为架构不完善,项目没有达到预期效果,或者公司运营等等问题,需要停止项目运作,此时老项目有可能会报废掉,但是数据或代码、域名等资产可以保留,或转移或封存或在新项目部分地方使用等,此时该老系统有可能到达生命周期的终点。至此,软件的生命周期中的所有步骤都已经历完毕。如有不足的地方欢迎大家指正。

作者:jacygong
链接:https://www.jianshu.com/p/45b5bb21b560
来源:简书

软件工程的完整生命周期相关推荐

  1. 一文读懂机器学习项目的完整生命周期

    https://www.toutiao.com/a6675315427456844291/ 机器学习这东西,在学术界产出颇多,但在工业界,却很少落地.究其原因,是理念落地不够彻底,很多从业者和相关上下 ...

  2. 一张图搞懂Spring bean的完整生命周期

    转载自 一张图搞懂Spring bean的完整生命周期 一张图搞懂Spring bean的生命周期,从Spring容器启动到容器销毁bean的全过程,包括下面一系列的流程,了解这些流程对我们想在其中任 ...

  3. PMP —— 项目完整生命周期

    文章目录 PMP -- 项目完整生命周期 前言 一张图项目管理(以前端角度看) 角色介绍 注意事项 详细流程 项目立项 编写需求和需求评审 会议的主要步骤 参会角色思考 汇报工期 编写技术方案 什么是 ...

  4. 软件工程--软件危机-生命周期-软件过程

    文章目录 软件危机 问题 现象 危机产生的原因 途径 软件 定义 特点 软件工程方法学 软件生命周期(过程模型) 软件定义时期 软件开发时期 运行维护 软件过程 理想瀑布模型 实际瀑布模型 快速原型模 ...

  5. 【软件工程(一)】软件工程概述+软件生命周期模型

    文章目录 软件工程概述 软件的定义 软件的分类 软件工程要素.目标和原则 软件工程知识体系知识域 软件生命周期模型 工程过程 传统模型种类 瀑布模型 演化模型 增量模型 喷泉模型 V模型和W模型 螺旋 ...

  6. java类的完整生命周期详解

    目录 一.概述 二.过程一:Loading(加载)阶段 1.加载完成的操作 (1)加载的理解 (2)加载完成的操作 2.二进制流的获取方式 3.类模型与Class实例的位置 (1)类模型的位置 (2) ...

  7. 图解 Laravel 请求的完整生命周期

    来源 | CSDN博客精选 头图 | 视觉中国 世间万物皆有生命周期,当我们使用任何工具时都需要理解它的工作原理,那么用起来就会得心应手,应用开发也是如此.理解了它的原理,那么使用起来就会游刃有余. ...

  8. Activity启动另一个Activity并返回的完整生命周期

    Android的简单基本问题,这里记录一下 从一个Activity创建后启动另一个Activity并返回的完整log输出: 从log可以看出,当前Activity启动另一个Activity时,总是要等 ...

  9. 【软件工程】软件生命周期模型 --- 瀑布模型、快速原型模型、增量模型、螺旋模型及喷泉模型

    软件生命周期模型是跨越整个生存期的系统开发.运作和维护所实施的全部过程.活动和任务的结构框架. 下面介绍几种常见的软件生命周期模型: 瀑布模型 瀑布模型是将软件生存周期的各项活动规定为按固定顺序而连接 ...

  10. 从数据备份保护到完整生命周期管理平台,爱数全新发布 AnyBackup Family 8

    编辑 | 宋慧 出品 | CSDN 云计算 从2003年创业,开始做数据备份技术,爱数已经走过了近20年的时间.现在,数据的价值被越来越多的业界与用户看到,数据分析应用赛道近年一直持续火热.而现在的爱 ...

最新文章

  1. 如何将APACHE许可证应用于您的工作
  2. iOS开发月报#10|201904
  3. www.android ind.com,Android
  4. Activity基础
  5. 求解最大公因子(JAVA辗转相除法)、python的最大公因子,最小公倍数
  6. [linux]单网卡绑定多个IP
  7. 使用Git将项目上传到GitHub(Windows+Linux双教程)
  8. python 装饰器,登录小练习
  9. IPv4地址中的保留和特殊用途地址
  10. 汉字为什么能流传至今_《汉字为什么是方块字(节选)》阅读附答案
  11. html 显示动态时间
  12. python instagram 爬虫
  13. http://enki-ding-yeah-net.iteye.com/blog/1042644
  14. CS61A Lab 7
  15. 无限创世5.0.0游戏
  16. CentOS7双网卡导致无法访问外网
  17. 马士兵 java 视频
  18. 摆脱海王式电销,外呼系统提升销售效率业绩
  19. jitsi-meet 主持人退出会议后结束会议室(网页访问)
  20. 「秘籍」JAVA求职面试宝典,轻松搞定面试官!拿下大厂offer

热门文章

  1. 阻止YouTube视频在Chrome中自动播放
  2. C#维特智能蓝牙5.0加速度陀螺仪角度姿态传感器协议解析
  3. led点阵c语言程序,LED点阵C语言程序
  4. 《游戏系统设计三》游戏服务器线上出bug,怎么办?急,在线等!热更新
  5. 淘宝客SDK,一键导入淘宝客商城,快速实现流量变现,新增商城返利功能
  6. grid 与axis
  7. 小米开源:站在巨人肩膀上的创新
  8. Hive实战之Youtube数据集
  9. 微信小程序srt_微信小程序商城开发之实现商品加入购物车的功能(代码)
  10. python k线斜率计算_关于数据拟合:找到斜率变化点作为自由参数 – Python