上一篇我们总结了测试方法,有了测试方法(手段),就得知道方法在哪使用,要想知道在哪使用,就得了解软件的生命周期和开发模型。所以我们今天就从软件的生命周期说起
软件的生命周期
软件的生命(存)周期(SDLC)是软件的产生直到报废或停止使用的生命周期,一般分为问题定义与可行性分析、需求分析、软件设计、软件测试、软件运行和维护5个阶段,每个阶段具体包含哪些内容呢?详情如下:
-
问题定义与可行性分析
-
问题定义是:需要做什么、大体做成什么样子
-
可行性分析:首先是能不能做、如果可以做需要投入多少资源、开发周期大体是多久等
-
-
需求分析
-
需求分析:拆解需求、把需求拆分成相对独立、明晰的功能点
-
需求评审:评审对需求的理解是否到位、是否一致、需求是否有遗漏,最重要的作用是统一认知
-
-
软件设计
-
概要设计:解决怎么做的问题。根据项目的特点和使用场景,选择合适的开发框架和组件
-
详细设计:对具体的模块或者功能进行设计,可以细化到接口的入参和出参以及实现步骤
-
软件开发:就是撸码。根据设计文档进行具体的功能实现,并进行联调和自测
-
-
软件测试
-
软件运行和维护
-
发版与部署:版本的发布与生产环境应用包的更新部署
-
升级维护:生产反馈的问题修复和新功能上线
-
软件开发模型
软件开发演化出很多的模型,而每一种模型都融合了软件的生命周期,具体的软件开发模型大体有瀑布模型、增量模型、快速还原(演化)模型、螺旋模型、喷泉模型、敏捷模型等
-
瀑布模型:将软件生存周期的各项活动规定为按固定顺序连接的若干阶段工作,这些工作之间的衔接关系是从上到下、不可逆转,如同瀑布一样
好处 | 劣势 |
---|---|
简单易用和理解 | 只有在最后一个阶段结束后,软件才会准备就绪 |
由于其刚性,管理简单:每个阶段都有明确的结果和流程审查 | 高风险和不确定性 |
发展阶段逐一进行 | 不是复杂和面向对象项目的最佳选择 |
适用于要求明确且不模棱两可的小型或中型项目 | 不适合长期项目 |
易于确定开发周期中的关键点 | 阶段的进展很难衡量,但仍处于发展阶段 |
易于分类和确定任务的优先级 | 集成在最后完成,不提供预先识别问题的选项 |
-
增量模型:把待开发的软件系统模块化,将每个模块作为一个增量组件,从而分批次地分析、设计、编码和测试这些增量组件
好处 劣势 整个项目的资金不会被提前消耗 需求的变化是不可避免的,很容易退化为边做边改模型,从而失去软件的整体性,增加总成本 每次增量交付过程中获取的经验,有利于后面的改进 在每个新的增量构件集成到现有软件体系结构中,必须不破坏原来已经开发出的产品 每次增量交付后,可以重新修订成本和进度的风险 与完整的系统相比,增量方式正式的回顾和评审更难于实现 便于根据市场作出反应 分析阶段采用总体目标而不是完整的需求定义,可能不适应管理 -
快速还原(演化)模型:快速还原模型的第一步是建造一个快速原型,通过对原型的评价,进一步细化待开发软件的需求,由此通过逐步调整原型而进一步满足客户的要求
好处 劣势 可以得到比较良好的需求定义,容易适应需求的变化 客户与开发者对原型理解不同 有利于开发与培训的同步 准确的原型设计比较困难 开发费用低、开发周期短且对用户更友好 不利于开发人员的创新 -
螺旋模型:它将瀑布模型和快速原型模型结合起来,强调了其他模型所忽视的风险分析,它分为制定计划、风险分析、实施工程、客户评估4个阶段
好处 | 劣势 |
---|---|
生命周期分为小部分,如果风险集中度较高,则可以提前完成阶段以解决问题 | 可能相当昂贵 |
开发过程准确记录,可根据变化进行扩展 | 风险控制需要高技能专业人员的参与 |
可伸缩性允许在相对较晚的阶段进行更改并添加新功能 | 对小项目可能无效 |
早期的工作原型已经完成 - 用户可以更快地指出这些缺陷 | 大量的中间阶段需要过多的文档 |
-
喷泉模型:是一种以用户需求为动力,以对象为驱动的模型,主要用于描述面向对象的软件开发过程。该模型认为软件开发过程自下而上周期的各阶段是相互迭代和无间隙的特性
好处 | 劣势 |
---|---|
各个阶段没有明显的界限,开发人员可以同步进行开发 | 并行开发,因此在开发过程中需要大量的开发人员 |
生存期的各个阶段可以相互重叠和多次反复 | 大量的开发人员,人员的协调不利于项目的管理 |
项目的整个生存期中还可以嵌入子生存期 | 灵活、多变使得文档管理的难度加大 |
-
敏捷模型:是一种以人为核心、快速迭代、循序渐进的开发方法,强调以人为本,专注于交付对客户有价值的软件
好处 | 劣势 |
---|---|
功能需求的更正被实施到开发过程中以提供竞争力 | 由于永久性变化而无法衡量最终成本 |
项目按短而透明的迭代划分 | 团队应该是高度专业和客户导向的 |
灵活的变更过程使风险最小化 | 新要求可能与现有架构冲突 |
快速发布第一个产品版本 | 通过所有更正和更改,项目可能会超出预期时间 |
接下来是:测试流程