一、课程内容总结
工欲善其事必先利其器
该部分课程介绍了一些辅助软件工程,开发的常用的软件和工具,包括 VSCode、Git、Vim 和正则表达式。
- 介绍了 VsCode 的用法和常用快捷键,探究了 VsCode 背后的架构设计思想。
- 以五个常见应用场景为例,介绍了分布式版本控制工具 Git 的基本命令、设计逻辑和常见用法。
- 介绍 Vim 的一些常见用法,包括光标移动,文件编辑,命令模式,编辑模式等常见用法及其快捷键。
- 介绍了正则表达式的用法,包括基本的搜索、通配符用法、字符集、贪婪匹配和懒惰匹配、转义字符和捕获组等用法。
代码中的软件工程
该部分课程以一个工程化C语言项目作为范例,通过代码实践体会软件开发的一些代码规范、基本准则等。
介绍了项目的编译调试环境配置过程,一些良好的代码规范和风格,以及高质量代码的基本方法
介绍了模块化软件设计的思想。模块化是在软件系统设计时保持系统内各部分相对独立,以便每一个部分可以被独立地进行设计和开发。这个做法背后的基本原理是关注点的分离,达到低耦合和高内聚的效果。
介绍了一些可重用软件设计思想。其中一个很重要的概念就是如何设计一个通用的接口,因为软件模块对外提供接口越通用,越能降低各模块之间的耦合度。
探究了软件工程在多线程场景下的线程安全问题。介绍了可重入函数,线程安全等概念,对Linktable软件模块进行了线程安全分析。
需求分析与设计
该部分课程介绍了软件开发从需求分析到设计的一些基本方法。这一部分我们以面向对象的分析和设计为思想方法的主线,提供了一种从需求分析到软件设计的基本建模方法。
- 介绍了需求分析的基本方法,用例建模、业务领域建模的方法,面向对象分析涉及的基本概念,最后以 MongoDB 为例介绍了关系数据模型。
- 介绍了面向对象分析涉及的基本概念,包括对象和属性,继承关系,聚合关系,关联关系等。
- 从需求分析到软件设计过程,包括敏捷统一过程的定义,对象交互建模方法,形成软件设计方案的基本方法等。
软件系统设计——代码的结构、特性和描述方法
从最基本的代码控制结构到函数调用框架,到对象封装、设计模式、软件架构,自底向上讲述了软件系统的构建设计思想。
- 软件的软件的基本结构,介绍了软件的基本构成元素,控制结构,函数调用框架等,以及一些常见编程机制,比如回调函数,多态,闭包,异步调用,匿名函数等。
- 设计模式的基本概念和分类,常用的设计模式简介,以及设计模式背后的设计原则。
- 常见的软件架构举例,介绍了由简到难介绍了三层架构,MVC架构,MVVM架构。特别以 Vue.js 为例介绍了如何利用观察者模式实现 MVVM 模式。
- 常见软件架构风格与策略,比如管道-过滤器、客户-服务架构、P2P架构、发布-订阅架构、CRUD架构、层次化架构等。
- 软件架构的描述方法,包括分解视图,依赖视图,泛化视图,执行视图,实现视图,部署视图,工作任务分配视图等。
- 介绍了软件质量的含义,软件质量模型,过程改进模型,软件质量属性等。
工程过程与项目管理
- 介绍了软件危机的前生今世,总结了没有银弹的软件危机本质。
- 软件过程模型,介绍了瀑布模型,V模型,分阶段增量和迭代,螺旋模型等。
- 软件团队的组织结构,TSP的基本原理,建设高效团队的原则。
二、学习收获和感想
通过本课程的学习,我了解了一个大型软件工程的完整开发流程,包括从需求分析,软件设计,再到编码实现,以及测试、确认评估和后期维护等等一系列阶段。在之前我可能只关注到编码实现部分,通过本课程学习之后,我意识到,其实项目开发过程中还有很多需要注意的细节。
三、参考资料
学号:357