1. 什么是需求
在企业中,经常会听到:用户需求和软件需求
- 用户需求:没用经过合理的评估,通常就是一句话(开发一个五彩斑斓的黑)
- 软件需求:开发人员和测试人员执行工作的依据
1.2 软件需求
在工作中实际见到的软件需求的文档类似于下面的表示:
注意:用户的需求不能直接作为开发和测试的依据。针对用户的需求,产品经理需要进行需求分析(技术可行性、市场可行性、成本投入和收益占比等)后续才可转变为软件需求
2. 开发模型
规范的流程是在时代的演变下逐渐成型的,并不是一开始就是规范的流程。
软件的生命周期
什么是生命周期?
生命周期指的是从生命开始到生命结束的一段时间。以人为例,人类的生命周期是从生命孕育开始,中间会经历幼年、童年、少年、青年、老年,最终直至死亡
而软件/产品的生命周期也是如此,需求的开始是软件生命的起点,中间会经历需求的计划、设计、程序开发、程序设计等阶段,直至软件不再进行维护便到了生命的终点
步骤 | 总结 | 映射软件流程 |
---|---|---|
为什么要建房子?商品房还是普通住宅?建造 100 层技术上是否可行? | 明确合理的建房目标 | 需求分析 |
什么时候开发建房子?计划竣工时间?多久可以交房? | 计划好时间 | 计划 |
建房前明确流程:先打地基,做基础框架,砌墙、粉刷、水电工程… | 设计好具体的建房流程 | 设计 |
按照前面的流程和时间实施建房中… | 施工中 | 编码 |
房屋建造完成,开发商验收成果、买家验收房子品质(房子是否牢固,是否漏水及其他偷工减料的地方,是否按照 规定来建造的) | 检查房屋建造结果 | 测试 |
检查结束开始逐步入住,使用中出现了各种情况如房屋漏水、墙面掉皮、下水道堵塞等问题,一边使用一边找物业 修理 | 使用并及时维护 | 运行维护 |
- 在设计阶段
- 开发:设计开发文档(用什么技术、用什么框架等待)
- 测试:明确需求,设计测试用例、测试计划(明确本次测试设计到的工具、设计到的测试类型等等)
因此,我们就得到了软件(开发)的生命周期:
需求分析——计划——设计——编码——测试——运行维护
对于软件的生命周期中,每个阶段都在做什么呢?
阶段 | 具体内容 | 产出 |
---|---|---|
需求分析 | 分析用户需求是否合理,分别从市场需求、技术等方面进行分析。 | 该阶段会输出需求等文档。 |
计划 | 对成立的需求执行需求执行计划,多长时间内完成该需 求,每段时间具体完成哪些功能。 | 该阶段会输出计划等文档。 |
设计 | 将需求细化成⼀个个任务,团队成员各司其职领取任务 并进行技术设计(如何进行架构设计,设计哪些接口、 采用什么技术) | 该阶段会输出技术等文档。 |
编码 | 开发人员参考需求文档、设计文档、交互图等等文件进 行代码的编写。 | 代码文件等文档。 |
测试 | 测试人员需要介入到软件的测试中来,参考测试用例对 软件进行测试。 | 测试用例、测试设计与计 划、测试报告等文档 |
运行维护 | 项目测试结束之后,项目需要进行上线,并对产品进行 线上的维护。线上的维护主要分为三个方面。分别为修 复性维护、完善性维护和预防性维护。 |
- 维护分为:
- 修复性维护:对项目中未发现的问题进行修复
- 完善性维护:对功能进行完善
- 预防性维护:居安思危,为了避免产品在线上出现一些不可预料的问题,进行一些防护的手段。正常使用没问题,但在一些极端的情况下会出现问题(性能问题),淘宝双十一并发太大、微博热搜
- 产品经历:定需求,明确需求是否正常执行
- 为整个项目负责,人员调配等工作
- 交互:设计交互图
- 前端:设计前端内容(框架、技术、工具)
- 后端:设计后端内容(框架、技术、工具)
- 测试:测试用例、测试计划(测试类型、测试工具等)
常见开发模型
软件开发流程(软件生命周期)
瀑布模型
与软件的生命周期基础流程大差不差
特点:
- 每个流程只执行一次
- 线性的开发流程
瀑布模型最大的一个缺陷在于,可以运行的产品很迟才能被看到
- 意味着没有收益/收益非常低
优点/特点 | 缺点 |
---|---|
强调开发的阶段性 | 测试后置,前面各阶段遗留的风险推迟到测试阶段才被发现,导致项目大面积返工,失去了及早修复的机会 |
线性结构,每个阶段只执行一次 | 测试后置,必须留有足够的时间给测试活动,否则导致测试不充分,将缺陷直接暴漏给用户(产品质量差) |
是其他模型的基础框架 | 周期太长,产品很迟才能被看到和使用,可能会导致需求/功能过时 |
- 瀑布模型的适用场景:需求固定的小项目
螺旋模型
当企业中存在趣多规模庞大、复杂度高、风险大的项目,这种情况下就适合用螺旋模型
- 螺旋模型中,各个阶段都引入了风险分析和模型
- 目的是减少各阶段遗留的风险问题,避免把问题留到后面的阶段
优点 | 缺点 |
---|---|
强调严格的全过程风险管理 | 项目中可能存在的风险性与风险管理人员的技能水平有直接关系 |
强调各开发阶段的质量 | 需求人员、资金、时间的增加和投入,可能会导致项目的成本太高 |
增加风险分析和原型 |
增量模型、迭代模型
既然需求有大有小,小需求我们可以直接用瀑布模型开发出来,复杂的需求我们就将其分解为很多小的需求。而这些被分解出的小需求就称为——增量1、增量2、增量3…
- 将大需求拆分成小需求,每个小需求独立开发上线,这就是增量模型
有一个大需求,先上面基础版本,再上线优化版本1、优化版本2、优化版本3…
- 基础版本:看商品下单
- 优化版本1:购物车,丰富详情页信息
- 优化版本2:丰富下单的付款方式
- …
这就是迭代模型
- 增量是逐块建造的概念
- 迭代是反复求精的概念
- 适用于大型项目,需求不明确
迭代模型和增量模型现在已经不会单独去使用了,而是配合着去使用