软件工程
开发过程模型
瀑布模型
- 需求分析
- 软件设计
- 程序设计
- 编码实现
- 单元测试
- 集成测试
- 系统测试
- 运行维护
特点
严格区分阶段,只适合需求明确的项目
缺点
- 正确性难以确定
- 串行化,很长才能看到结果
- 每个阶段完全解决这个阶段的问题(不现实)
原型模型
- 需求分析(主要针对该项)
- 软件涉及
- 程序设计
两个阶段
- 原型开发阶段
- 目标软件开发阶段
原型分类
- 抛弃型原型
- 演化型原型
V 模型
测试贯穿于始终
测试分阶段,测试计划提前
W 模型
测试和开发进行
迭代和增量
增量
一块一块做增量
迭代
逐步进化
螺旋模型
以快速原型模型为基础+瀑布模型
考虑了风险问题
构建组装模型
示例:方舱医院、积木
优点:易扩展、易重用、降低成本、安排任务更灵活
缺点:需要经验丰富的架构师、设计不好的构建难重用、强调重用牺牲其他指标、第三方构建质量难控制
基于构建的软件工程(CBSE)
- 购买而不是重新构造(不要重新造轮子 )
组装
- 顺序组装
- 层次组装(必须分层,层次之间接口兼容)
- 叠加组装(多个合并新的构建、对外提供接口,不需明确顺序)
不兼容
- 参数不兼容(操作有相同的名字,但是参数类型和参数个数不相同)
- 操作不兼容(操作名有不同)
- 操作不完备(有些操作无法完成)
快速应用开发模型(RAD)
- SDLC 瀑布
- CBSD 基于构建
统一过程(UP)
核心
核心工作流
- 业务建模
- 需求
- 分析与设计
- 实现
- 测试
- 部署
- 配置与变更管理
- 项目管理
- 环境
敏捷方法
敏捷方法-XP
价值观
- 沟通(加强面对面沟通)
- 简单(不过度设计)
- 反馈(及时反馈)
- 勇气(接受变更的勇气)
敏捷方法(SCRUM)
逆向工程
- 实现级(语法树)
- 结构级(程序分量之间相互联系关系)
- 功能级(程序段)
- 领域级(应用领域概念之间对应关系)
概念
- 重构(同一抽象级别,例如算法重写,输入输出不变)
- 设计恢复(借助工具抽象出有关数据设计)
- 逆向工程(设计的恢复过程)
- 正向工程(改变重构,改善整体质量)
- 再工程()