# 软件工程

# 软件开发方法

  • 原型法
  • 结构化法
  • 面向对象方法
  • 面向服务的方法
  • 形式化方法
  • 统一过程方法
  • 敏捷方法
  • 基于架构的开发方法ABSD

# 软件开发模型

  • 瀑布模型:迭代模型/迭代开发方法
  • 演化模型:快速应用开发
  • 增量模型:构件组装模型/基于构建的开发方法
  • 螺旋模型:统一过程/统一开发方法
  • 原型模型:敏捷开发方法
  • 喷泉模型:模型驱动的开发方法
  • V模型:基于架构的开发方法
# 敏捷方法4大价值观

沟通、简单、反馈、勇气

# 敏捷开发方法
  • 极限编程XP:
  • 水晶方法:
  • 开放式编码:
  • SCRUM:明确定义了的可重复的方法过程。
  • 功用驱动开发方法FDD:编程开发人员分为两类:首席程序员和“类”程序员
  • ASD方法:
# 逆向工程
  • 实现级:抽象语法数、符号表、过程
  • 结构级:程序分量之间相互依赖关系
  • 功能级:程序段功能及程序段
  • 领域级:应用领域概念之间对应关系

# 需求工程

# 需求开发
  • 需求获取
  • 需求分析
  • 需求定义
  • 需求验证
# 需求管理
  • 变更控制
  • 版本控制
  • 需求跟踪
  • 需求状态跟踪
# 需求分析
  • 状态转换图STD
  • 数据流图DFD
  • 数据模型ER图
  • 数据字典
  • UML
# 需求变更管理
  • 问题分析和变更描述
  • 变更分析和成本计算
  • 变更实现

# 系统设计

# 软件设计
  • 结构设计
  • 数据设计
  • 接口设计
  • 过程设计
# 结构化设计
  • 需求设计:数据流图
  • 概要设计:模块结构图、层次图和HIPO图
  • 详细设计:程序流程图、伪代码、盒图
# 面向对象设计-设计原则
  • 单一职责原则:设计目的单一的类。
  • 开放-封闭原则:对扩展开放,对修改封闭。
  • 李氏(Liskov)替换原则:子类可以替换父类。
  • 依赖倒置原则:要依赖于抽象,而不是具体实现;针对接口编程,不要针对实现编程。
  • 接口隔离原则:使用多个专门的接口比使用单一的总接口要好。
  • 组合重用原则:要尽量使用组合,而不是继承关系达到重用目的。
  • 迪米特(Demeter)原则(最少知识法则):一个对象应当对其他对象有尽可能少的了解。

面向对象的设计模型包含以包图表示的软件体系结构图,以交互图表示的用例实现图,完整精确的类图,针对复杂对象的状态图和用以描述流程化处理的活动图等。

# 设计模式-创建型模式
  • Factory Method工厂方法模式:
  • Abstract Factory抽象工厂模式:
  • Builder构建器模式:
  • Prototype原型模式:
  • Singleton单例模式:
# 设计模式-结构型模式
  • Adapter适配器模式
  • Bridge桥接模式
  • Composite组合模式
  • Decorator装饰模式
  • Fecade外观模式
  • Flyweight享元模式:对庞大对象的管控。eg:汉字编码、棋牌。
  • Proxy代理模式:快捷方式
# 设计模式-行为型模式
  • Chain of Responsibility职责链模式:eg:请假审批
  • Command命令模式:eg:日志记录,可撤销
  • Interpreter解释器模式:eg:虚拟机
  • Iterator迭代器模式:数据集
  • Mediator中介者模式:不直接引用
  • Menmento备忘录模式:游戏存档
  • Observer观察者模式:订阅、广播、联动
  • State状态模式:状态变成类
  • Strategy策略模式:多方案切换
  • Template Method模版方法模式:框架
  • Visitor访问者模式:数据与操作分离。在不改变原来类结构(活动节点)的基础上增加新功能。

# 软件测试

# 软件测试方法
  • 动态测试:计算机运行。黑盒测试、白盒测试、灰盒测试
  • 静态测试:纯人工。桌前检查、代码审查、代码走查
# 测试阶段
  • 单元测试
  • 集成测试:主要测试各模块之间的接口是否正常起作用。
  • 系统测试
  • 确认测试
  • 回归测试
# 软件调试
  • 蛮力法
  • 回溯法
  • 原因排除法
# 系统测试

系统测试是根据系统方案说明书来设计测试用例,常见的系统测试主要有恢复测试、安全性测试、压力测试、性能测试、可靠性测试、可用性测试、可维护性测试和安装测试。

# 软件运行与软件维护

# 系统转换计划
  • 高水平高价值:改造
  • 高水平低价值:集成
  • 低水平高价值:继承
  • 低水平低价值:淘汰
# 软件维护
  • 正确性维护
  • 适应性维护
  • 完善性维护
  • 预防性维护
上次更新: 7/27/2022, 6:03:55 PM