0%

250324-软件工程

软件工程

开发过程模型

瀑布模型

  • 需求分析
  • 软件设计
  • 程序设计
  • 编码实现
  • 单元测试
  • 集成测试
  • 系统测试
  • 运行维护

特点

严格区分阶段,只适合需求明确的项目

缺点

  • 正确性难以确定
  • 串行化,很长才能看到结果
  • 每个阶段完全解决这个阶段的问题(不现实)

原型模型

  • 需求分析(主要针对该项)
  • 软件涉及
  • 程序设计

两个阶段

  • 原型开发阶段
  • 目标软件开发阶段

原型分类

  • 抛弃型原型
  • 演化型原型

alt text

V 模型

alt text
测试贯穿于始终

测试分阶段,测试计划提前

W 模型

W模型

测试和开发进行

迭代和增量

迭代与增量

增量

一块一块做增量

迭代

逐步进化

螺旋模型

螺旋模型

以快速原型模型为基础+瀑布模型

考虑了风险问题

构建组装模型

构建组装模型
示例:方舱医院、积木

优点:易扩展、易重用、降低成本、安排任务更灵活

缺点:需要经验丰富的架构师、设计不好的构建难重用、强调重用牺牲其他指标、第三方构建质量难控制

基于构建的软件工程(CBSE)

CBSE

  • 购买而不是重新构造(不要重新造轮子 )
    要素

组装

  • 顺序组装
  • 层次组装(必须分层,层次之间接口兼容)
  • 叠加组装(多个合并新的构建、对外提供接口,不需明确顺序)

    不兼容

  • 参数不兼容(操作有相同的名字,但是参数类型和参数个数不相同)
  • 操作不兼容(操作名有不同)
  • 操作不完备(有些操作无法完成)

快速应用开发模型(RAD)

  • SDLC 瀑布
  • CBSD 基于构建

统一过程(UP)

核心工作流

核心

  • 用例驱动
  • 以架构为中心
  • 迭代和增量

    阶段

  • 初始(需求)
  • 细化(设计确定系统架构)
  • 构造(构建的开发、构建)
  • 移交

核心工作流

  • 业务建模
  • 需求
  • 分析与设计
  • 实现
  • 测试
  • 部署
  • 配置与变更管理
  • 项目管理
  • 环境

敏捷方法

敏捷方法

敏捷方法-XP

价值观

  • 沟通(加强面对面沟通)
  • 简单(不过度设计)
  • 反馈(及时反馈)
  • 勇气(接受变更的勇气)

敏捷方法(SCRUM)

SCRUM
alt text

逆向工程

alt text

  • 实现级(语法树)
  • 结构级(程序分量之间相互联系关系)
  • 功能级(程序段)
  • 领域级(应用领域概念之间对应关系)

alt text

概念

  • 重构(同一抽象级别,例如算法重写,输入输出不变)
  • 设计恢复(借助工具抽象出有关数据设计)
  • 逆向工程(设计的恢复过程)
  • 正向工程(改变重构,改善整体质量)
  • 再工程()

净室软件工程

净室软件工程