# 软件生命周期与开发模型

# 软件生命周期

  • 计划周期
    • 问题定义
      • 落实问题的性质、工程目标与规模
    • 可行性研究
      • 估计系统的成本和效益
  • 开发周期
    • 需求分析
    • 总体设计
      • 确立 总体结构和模块模块关系,定义模块之间的接口,指定综合测试规划
    • 详细设计
      • 设计 模块内的细节,算法数据结构和接口信息
    • 编码
    • 调试
  • 运行时期
    • 维护

# 软件开发模型

参考模型详解: https://www.huaweicloud.com/articles/d73cc306589697b05e0cae01cc5c65e2.html

  • 瀑布模型

    • 自顶向下,依次进行的线性模型
    • 每个步骤要进行审核,建立检查点
    • 最早的模型,现在已弃用;开发的后期测试阶段才可能找到错误,犯错成本高
    • 但若是建立一个较为成熟的软件开发模板,可使用该模型,因为该模型目的性强,功能性高,且需求明确

    pbmx

  • V 模型

    • 测试活动重点化
    • 可尽早发现问题,降低犯错成本

    vmx

  • 喷泉模型

    • 面向对象设计 的开发模型
    • 每个工作步骤之间 无间隙 ,可同时执行分析和设计
    • 每个工作之间 相互迭代

    pqmx

  • 螺旋模型

    • 对于有风险的项目可以及时止损
    • 适合 大规模开发的软件模型

    lxmx

  • 增量模型

    • 能在较短的时间内向用户提交可完成部分工作的产品。
    • 逐步增加产品功能可以使用户有充裕的时间学习和适应新产品,从而减少一个 全新的软件可能给客户组织带来的冲击。
    • 规避技术风险
    • 可并行开发构件,加快开发的进度
    • 适用于 项目在既定的商业要求期限之前不可能找到足够的开发人员
  • 原型化模型

    • 对于许多 需求不够明确的项目 ,比较适合采用该模型。原型技术有分为三类:抛弃式、演化式和递增式。

    zlmx

  • 协同开发模型

    • 适用于所有软件开发

#软件开发与测试

  • 划分软件系统模块应做到 高内聚,低耦合

# 测试分类

  • 动态测试
    • 白盒测试
      • 即透明盒测试,是基于代码的测试,也称 结构测试逻辑测试
      • 主要检测软件代码中的错误,修改代码的逻辑和参数
    • 黑盒测试
      • 直接让软件运行起来测试,不考虑软件的底层代码与内部结构,只关心软件的输入输出
      • 也称 功能测试
      • 黑盒与白盒测试是互补的,缺一不可
    • 灰盒测试
      • 既关心软件代码,也关心软件的输入和输出,相当于是黑盒与白盒的结合
  • 静态测试
    • 采用人工检测和计算机辅助静态分析的手段对程序进行检测。静态分析中进行人工测试的主要方法有桌前检查(程序员自查)、代码审查和代码走查。

# 软件测试

  • 单元测试
    • 测试的是模块接口,局部数据结构,边界条件,独立的路径,错误处理
  • 集成测试
    • 模块间的接口和通信
  • 系统测试
    • 包括恢复测试、安全性测试、强度测试、性能测试、可靠性测试和安装测试
  • 验收测试
    • 包括有效性测试、软件配置审查、验收测试

# 项目管理

# 九大知识领域

  1. 范围管理
  2. 时间管理
  3. 成本管理
  4. 质量管理
  5. 人力资源管理
  6. 沟通管理
  7. 风险管理
  8. 采购管理
  9. 整体管理

# 甘特图 (Gantt Chart)

  • 通过条状图来显示项目、进度和其他时间相关的系统进展的内在关系随着时间进展的情况。

  • 优点

    • 在于标明了各任务的计划进度和当前进度,能动态地反映项目进展
  • 缺点

    • 在于难以反映多个任务之间存在的复杂逻辑关系

    gtt

# PERT 图 (计划审计方法)

  • 定义

    • 一种 网络模型,描述一个项目任务之间的关系。可以明确表达任务之间的依赖关系,即哪些任务完成后才能开始另一些任务,以及如期完成整个工程的关键路径,但是不能清晰地描述各个任务之间的并行关系。
  • 关键路径

    • 从开始定点到结束定点的最长路径(时间开销最大路径) 即为关键路径
  • 松弛时间

    • 松弛时间 = 关键路径的时间 -(包含某活动最长路径所需要的时间)
    • 第一种求法:最晚开始时间 - 最早开始时间
    • 第二种求法:关键路径的总时间 - 包含该任务的关键路径花的时间

    pret

  • 软件编码规模

    • 软件编码规模 =(最大规模 + 4 最可能的规模 + 最小规模)/6