1. 初识软件工程
- 面向过程 -> 对象 -> 构件 -> 服务,粒度逐渐增大
- 开发过程:需求 - 分析、设计、实现、测试 - 产品
2. 编写高质量代码
- google 推出的针对多种语言的编码规范,建议阅读
- 结对编程
- python IDE pycharm
- 代码静态分析,检查代码是否符合规范:pylint、HTMLHint、CSSLint、JSHint
- 代码优化,提高时间空间性能,流程:分析是否需要优化 - 找出瓶颈 - 优化 - 测试
- 性能分析工具,分析性能瓶颈,python内置的Profile
3. 单元测试
- 单元测试 Unit Testing,是对软件的最小可测试单元进行检查和验证
- 在开发单元代码前,编写单元测试代码
- 测试工具:
- 一系列xUnit,如Python - PyUnit,类和函数等简单对象的测试
- Mock测试,虚拟一个对象,比较复杂的、交互行为的测试
- 测试用例:一组输入值和预期结果
- 黑盒测试,将测试对象看做黑盒子,不考虑内部结构,只关注输入输出
- 等价类划分,将输入域划分为若干互不相交的子域,每个子域称为一个等价类;从同一个等价类中选取任何一个输入值,会得到相同的结果
- 要考虑不合理的输入
- 边界值分析,对输入或输出的边界值进行测试,作为等价类划分的补充
- 白盒测试,根据程序逻辑设计测试用例
- 控制流图 CFG,Control Flow Graph,程序的流程图,根据路径设计输入值
4. 软件开发过程
- 包括以下阶段:
- 问题定义:提出问题,技术探索,市场调查 => 可行性研究报告
- 需求分析:收集用户需求,分析需求,建模 => 软件需求规格说明文档
- 软件设计:体系结构设计,接口,组件的算法和数据结构,数据库 => 软件设计说明书
- 软件构造:编写代码,审查,优化 => 源代码
- 软件测试:单元测试,子系统测试,集成测试,验收测试
- 软件维护:投入使用后的改进过程