软件生命周期与开发模型
软件生命周期
- 计划周期
- 问题定义
- 落实问题的性质、工程目标与规模
- 可行性研究
- ==估计系统的成本和效益==
- 问题定义
- 开发周期
- 需求分析
- 总体设计
- 确立 ==总体结构和模块模块关系,定义模块之间的接口,指定综合测试规划==
- 详细设计
- 设计 ==模块内的细节,算法数据结构和接口信息==
- 编码
- 调试
- 运行时期
- 维护
软件开发模型
参考模型详解: https://www.huaweicloud.com/articles/d73cc306589697b05e0cae01cc5c65e2.html
瀑布模型
- 自顶向下,依次进行的线性模型
- 每个步骤要进行审核,建立检查点
- 最早的模型,现在已弃用;开发的后期测试阶段才可能找到错误,犯错成本高
- 但若是建立一个较为成熟的软件开发模板,可使用该模型,因为该模型目的性强,功能性高,且需求明确
V模型
- 测试活动重点化
- 可尽早发现问题,降低犯错成本
喷泉模型
- 是 ==面向对象设计== 的开发模型
- 每个工作步骤之间 ==无间隙== ,可同时执行分析和设计
- 每个工作之间 ==相互迭代==
螺旋模型
- 对于有风险的项目可以及时止损
- 适合 大规模开发的软件模型
增量模型
- 能在较短的时间内向用户提交可完成部分工作的产品。
- 逐步增加产品功能可以使用户有充裕的时间学习和适应新产品,从而减少一个 全新的软件可能给客户组织带来的冲击。
- 规避技术风险
- 可并行开发构件,加快开发的进度
- 适用于 项目在既定的商业要求期限之前不可能找到足够的开发人员
原型化模型
- 对于许多 ==需求不够明确的项目== ,比较适合采用该模型。原型技术有分为三类:抛弃式、演化式和递增式。
协同开发模型
- 适用于所有软件开发
软件开发与测试
- 划分软件系统模块应做到 ==高内聚,低耦合==
测试分类
- 动态测试
- 白盒测试
- 即透明盒测试,是基于代码的测试,也称 ==结构测试== 、 ==逻辑测试==
- 主要检测软件代码中的错误,修改代码的逻辑和参数
- 黑盒测试
- 直接让软件运行起来测试,不考虑软件的底层代码与内部结构,只关心软件的输入输出
- 也称 ==功能测试==
- 黑盒与白盒测试是互补的,缺一不可
- 灰盒测试
- 既关心软件代码,也关心软件的输入和输出,相当于是黑盒与白盒的结合
- 白盒测试
- 静态测试
- 采用人工检测和计算机辅助静态分析的手段对程序进行检测。静态分析中进行人工测试的主要方法有桌前检查(程序员自查)、代码审查和代码走查。
软件测试
- 单元测试
- 测试的是模块接口,局部数据结构,边界条件,独立的路径,错误处理
- 集成测试
- 模块间的接口和通信
- 系统测试
- 包括恢复测试、安全性测试、强度测试、性能测试、可靠性测试和安装测试
- 验收测试
- 包括有效性测试、软件配置审查、验收测试
项目管理
九大知识领域
- 范围管理
- 时间管理
- 成本管理
- 质量管理
- 人力资源管理
- 沟通管理
- 风险管理
- 采购管理
- 整体管理
甘特图(Gantt Chart)
- ==通过条状图来显示项目、进度和其他时间相关的系统进展的内在关系随着时间进展的情况。==
- 优点
- 在于标明了各任务的计划进度和当前进度,能动态地反映项目进展
缺点
- 在于难以反映多个任务之间存在的复杂逻辑关系
PERT图(计划审计方法)
- 定义:
- 一种 ==网络模型==,描述一个项目任务之间的关系。可以明确表达任务之间的依赖关系,即哪些任务完成后才能开始另一些任务,以及如期完成整个工程的关键路径,但是不能清晰地描述各个任务之间的并行关系。
- 关键路径:
- ==从开始定点到结束定点的最长路径(时间开销最大路径)== 即为关键路径
松弛时间:
- ==松弛时间=关键路径的时间-(包含某活动最长路径所需要的时间)==
- 第一种求法:最晚开始时间-最早开始时间
- 第二种求法:关键路径的总时间-包含该任务的关键路径花的时间
软件编码规模
- ==软件编码规模=(最大规模+4最可能的规模+最小规模)/6==