这是我参与「第五届青训营 」伴学笔记创作活动的第 17 天
软件设计
软件工程:自顶向下分阶段实施
结构化设计:自上而下逐步求精
软件开发阶段
可行性分析:经济技术和社会可行性,流程图、结构图,产生可行性报告
需求分析:产生需求规格书、用例图、业务流程图,数据流图
概要设计:把数据流图转换成软件结构和数据结构,划分模块接口、系统架构、功能模块设计、数据库设计、接口设计等。产生框架图、时序图、ER图/结构数据模型、接口文档、概要设计说明书
详细设计:概要设计基础上扩展细化,确定算法等。产生详细设计说明书
编码
测试:设计测试用例发现错误。产生测试计划、测试分析报告
运维:针对环境变化进行修改。产生程序维护手册
设计模式原则
单一职责:一个类仅有一个引起它变化的原因
开放封闭:对程序的改动可以通过增加代码来完成,但是不能改动现有的代码
里氏替换:兼容父类,不修改父类
依赖倒转:细节依赖于抽象,上层依赖于下层
迪米特:尽量降低类之间的耦合
接口隔离:不实现不需要的接口
面向过程&面向对象&泛式编程
面向过程:以过程为中心,一步步实现
面向对象:通过对象完成功能,数据和对数据的操作封装在一起。三大特征:封装继承多态
泛式编程:对类型和操作的抽象,典型STL。比面向对象中运行期的多态效率更高,且代码量小(如果每个类型都多态,就违反dry原则dont repeat urself)
面对对象设计原则
单一职责、开放封闭、依赖倒转、里氏替换、接口隔离、合成复用(多用组合设计类,少用继承)