一、总结与体会
本学期很荣幸选修了的高级软件工程课程。孟老师的课程在软件工程基本概念的基础上,由近及远、由浅入深、全面的讲解了代码中的软件工程的内容。立足于实践,多学多练,有针对性的训练了同学们作为未来程序员的基本功。本课程主要分为:工欲善其事,必先利其器、工程化的编程实战、从需求分析到软件设计、软件科学基础概论、软件危机和软件过程五个部分。
工欲善其事,必先利其器
- Typing
- VSCode
- Git
- Vim
- 正则表达式
工程化的编程实战
- 代码规范和代码风格
- 编写高质量代码的基本方法
- 模块化软件
- 接口
- 可重入函数和线程安全
- 软件质量
从需求分析到软件设计
- 获取需求
- 需求分析和建模
- 面向对象分析
- 关系数据模型软件设计
软件科学基础概论
- 软件是什么
- 设计模式
- 软件架构
- 软件质量
软件危机和软件过程
- 软件危机
- 软件过程模型
- PSP和TSP
- CMM/CMMI
- 敏捷方法
- DevOps
二、重要知识总结
-
1.高质量需求的特点:
正确的、一致的、无二义性、完整的、可行的、无与主要目标不相关的需求、可描绘的、可测试的 -
2.有哪些需求类型:
功能需求:根据所需活动描述所需行为
质量需求或非功能性需求:描述软件必须具备的一些质量特征
设计约束:设计决策,例如平台或接口组件的选择
过程约束:对可用于构建系统的技术或资源的限制 -
3.需求分析的两类基本方法:
原型化方法(Prototyping)和建模的方法(Modeling)是整理需求的两类基本方法。
1)原型化方法可以很好地整理出用户接口方式(UI,User Interface),比如界面布局和交互操作过程。
2)建模的方法可以快速给出有关事件发生顺序或活动同步约束的问题,能够在逻辑上形成模型来整顿繁杂的需求细节。 -
4.用例满足的四个必要条件:
必要条件一:它是不是一个业务过程?
必要条件二:它是不是由某个参与者触发开始?
必要条件三:它是不是显式地或隐式地终止于某个参与者?
必要条件四:它是不是为某个参与者完成了有用的业务工作? -
5.统一过程的核心要义是什么:
统一过程(UP,Unified Process)的核心要义是用例驱动(Use case driven)、以架构为中心
(Architecture centric)、增量且迭代(Incremental and Iterative)的过程。 -
6.模块化的基本原理
模块化(Modularity)是在软件系统设计时保持系统内各部分相对独立,以便每一个部分可以被独
立地进行设计和开发。
背后的基本原理:关注点分离: -
7.本地化外部接口是什么含义
使用本地化外部接口来提高代码的适应能力, 将我们的代码接口分离出来,写成本地化的外部接
口,能更好的帮助我们分离业务之间的关联性,使得代码开发更加高效。 -
8.接口的5个基本要素:
接口的目的;
接口使用前所需要满足的条件,一般称为前置条件或假定条件;
使用接口的双方遵守的协议规范;
接口使用之后的效果,一般称为后置条件;
接口所隐含的质量属性。 -
9.通用接口定义的基本方法:
参数化上下文
移除前置条件
简化后置条件 -
10.依赖倒置原则的含义及其应用价值
依赖倒置原则的定义为:高层模块不应该依赖低层模块,两者都应该依赖其抽象;抽象不应该依赖细节,细节应该依赖抽象。其核心思想是:要面向接口编程,不要面向实现编程。应用于:模块化设计 -
11.MVC架构为什么更灵活以及MVVM架构为什么更智能
MVC: Mod