在22年的春季学期我学习了孟宁老师的高级软件工程课程,收获非常大。其实我是想上半学期就选孟宁老师的这门课,可惜抽签的时候落选了,幸好下半学期也开了这么课。孟宁老师讲的非常通俗易懂,会将一些复习的概念用一些例子去解释,使得同学们没有什么理解的障碍。在这门课上学习到的设计模式、软件架构等内容,在我上半年找实习的过程中也发挥了非常大的作用。因为我是夸专业考研的,在本科期间根本没有学到过这些课程。如果我没有上这门课的话,面试官问道了我肯定是答不出来的。
这门课对于软件架构的一些视图介绍的非常好,孟宁老师对其中一些视图的解释我一直都记得,有执行试图、部署视图、分解视图和实现视图。
- 执行视图:执行视图展示了系统运行时的时序结构特点,比如流程图、时序图等。执行视图中的每一个执行实体,一般称为组件(Component),都是不同于其他组件的执行实体。如果有相同或相似的执行实体那么就把它们合并成一个。
- 部署视图:部署视图是将执行实体和计算机资源建立映射关系。这里的执行实体的粒度要与所部署的计算机资源相匹配,比如以进程作为执行实体那么对应的计算机资源就是主机,这时应该描述进程对应主机所组成的网络拓扑结构,这样可以清晰地呈现进程间的网络通信和部署环境的网络结构特点。当然也可以用细粒度的执行实体对应处理器、存储器等。部署视图有助于设计人员分析一个设计的质量属性
- 分解视图:分解是构建软件架构模型的关键步骤,分解视图也是描述软件架构模型的关键视图,一般分解视图呈现为较为明晰的分解结构(breakdown structure)特点。分解视图用软件模块勾划出系统结构,往往会通过不同抽象层级的软件模块形成层次化的结构。
- 实现视图:描述软件架构和源文件之间真的映射关系。一般我们通过目录和源文件的命名来来对应软件架构中的包、类的静态结构单元,这样典型的实现视图就可以由软件项目的源文件目录树来呈现。
这门课让我对软件工程这个行业有了整体的认识,包括软件系统的设计,软件的开发流程,需求分析等等,这都是我以前所没有掌握的东西,在这里非常感谢孟宁老师!
参考资料 代码中的软件工程 https://gitee.com/mengning997/se