软考必过 - 系统架构师 - 软件工程
世界上并没有完美的程序,但是我们并不因此而沮丧,因为写程序就是一个不断追求完美的过程。
软件工程
软件开发方法
结构化
-
特点
- 面向过程
-
场景
- 需求明确
面向对象
-
特点
- 复用
- 解耦
面向服务
-
特点
- 粗粒度
- 低耦合
- 标准化接口
-
阶段
- 操作
- 服务
- 业务流程
-
建模
- 服务发现
- 服务实现
- 服务规约
逆向工程
-
级别
-
实现级
- 抽象语法树
-
结构级
- 依赖
-
功能级
- 功能
-
领域级
- 领域
-
净室工程
- 模型驱动架构
软件开发模型
瀑布
-
特点
- 结构化
- bug传递
-
场景
- 需求明确
螺旋
-
特点
- 原型
- 增量和迭代
- 引入风险分析
原型
-
分类
- 抛弃式
- 演化式
-
场景
- 需求不明确
喷泉
-
特点
- 面向对象
V
-
特点
- 测试贯穿始终
-
测试
-
验收测试
-
系统测试
-
集成测试
-
单元测试
- 编码
-
统一过程
-
特点
- 用例驱动
- 以架构为中心
- 增量和迭代
-
阶段
-
初始
- 需求分析
-
细化
- 架构设计
-
构建
- 实现和运维
-
交付
- 发布
-
快速开发
-
特点
- 构件
- 增量和迭代
敏捷方法
-
特点
- 适应性的
- 以人为本
- 周期短,小步快跑
-
场景
- 适用于小型项目
-
价值观
- 沟通
- 简单
- 反馈
- 勇气
-
实例
-
XP极限编程
- 控制成本
-
开放源代码
- 不同地域
-
功用驱动
- 主程序员和“类”程序员
-
SCRUM
- 周期短(2~4周一个sprint),小步快跑
-
构件组装
-
过程
- 需求分析
- 架构设计
- 构件库建立
- 应用软件构建
- 测试和运维
设计模式
原则(7)
-
单一职责原则
- 职责单一
-
开闭原则
- 打开扩展,关闭修改
-
依赖倒置原则
- 具体依赖于抽象,而非抽象依赖于具体
-
接口隔离原则
- 不实现冗余接口
-
里氏替换原则
- 子类能够替换父类
-
迪米特法则
- 对其他类有最少的了解
-
组合重用原则
- 组合代替继承
分类(3)
-
创建型(5)
-
单例
- 一个类只有一个对象
-
工厂方法
- 提供创建对象的统一接口
-
抽象工厂
- 提供创建一系列相关或相互依赖对象的统一接口
-
构建器
- 创建复杂对象
-
原型
- 克隆,快照
-
-
结构型(7)
-
适配器
- 接口适配
-
桥接
- 接口与实现分离组合
-
组合
- 树形机构
-
装饰
- 动态添加职责
-
外观
- 统一对外接口
-
享元
- 对象细粒度共享
-
代理
- 访问控制
- 日志记录,缓存
-
-
行为型(11)
-
责任链
- 职责传递
-
解释器
- 自定义
-
迭代器
- 安全遍历
-
观察者
- 一对多依赖
-
访问者
- 数据与结构分离
-
中介者
- 封装交互,解耦
-
状态
- 状态指导行为
-
策略
- 统一接口,策略切换
-
模板方法
- 抽象流程,复用
-
备忘录
- 记录与恢复
-
命令
- 封装命令,支持撤销
-