一、学习收获
课上老师按照以下5部分展开介绍:
- 工欲善其事必先利其器——Typing、VSCode、Git、Vim、RegEx
- 工程化编程实战——一个工程化C语言项目范例
- 从需求分析到软件设计——从分析到设计的基本方法
- 软件科学基础概论——代码的结构、特性和描述方法
- 软件危机和软件过程——软件危机的前生后世
1 工欲善其事必先利其器
2 工程化编程实战
通过实践编写menu项目实例,了解编写高质量代码的基本方法。在实践过程中,我学习了模块化代码的基本写法,软件设计中的一些基本方法,通过可重用设计了解了通用接口定义的基本方法,降低耦合度,进行线程方面的分析等。
3 从需求分析到软件设计
这一部分在我们当前的学习中是经常被忽略的,因为我们工程实践的机会很少,也没有真正应用到工程项目当中,所以这一部分的学习可以温故而知新。
其中,主要讲述了需求的类型,需求分析的方法,高质量需求的要求,什么是用例,敏捷统一过程等知识。
4 软件科学基础概论
这一部分知识较多也较为繁杂主要讲述了什么是软件,软件的基本构成,软件的基本结构,软件中的一些而特殊机制。此外重点讲述了设计模式相关的内容,以及常用的设计模式的优缺点。此外讲述了MVVM模式,观察者模式。软件结构的描述方法,软件质量的定义,提升软件性能的方法。
4.1 针对设计模式中的七大原则:
- 单一职责原则 (Single Responsibility Principle)
- 开放-关闭原则 (Open-Closed Principle)
- 里氏替换原则 (Liskov Substitution Principle)
- 依赖倒转原则 (Dependence Inversion Principle)
- 接口隔离原则 (Interface Segregation Principle)
- 迪米特法则(Law Of Demeter)
- 组合/聚合复用原则 (Composite/Aggregate Reuse Principle)
4.2 软件架构的描述方法
- 分解视图(Decomposition View)
- 依赖视图(Dependencies View)
- 泛化视图(Generalization View)
- 执行视图(Execution View)
- 实现视图(Implementation View)
- 部署视图(Deployment View)
- 工作任务分配视图(Work-assignment View)
5 软件危机和软件过程
最后这一部分着重讨论了,针对软件危机和软件开发过程的统一和优化,尤其是PSP和TSP对个人和团队的指导作用。而最后讲述的DevOps讨论了在业务、运维和效益层面进行快速迭代重构。
二、总结课程学习,聚焦到某一关键问题谈谈对软件工程的理解
我在这里想关注的式团队软件过程(Team Software Process),团队软件过程是为开发软件产品的开发团队提供指导,TSP的早期实践侧重于帮助开发团队改善其质量和生产率,以使其更好的满足成本及进度的目标。
团队软件过程TSP基于以下4条基本原理:
- 应该遵循一个确定的、可重复的过程并迅速获得反馈,这样才能使学习和改革最有成效;
- 一个群组是否有效,是由明确的目标、有效的工作环境、有能力的教练和积极的领导这4方面因素的综合作用所确定的,因此应在这4个方面同时努力,而不能偏废其中任何—个方面;
- 应注意及时总结经验教训,当学员在项目中面临各种各样的实际问题并寻求有效的解决问题方案时,就会更深刻地体会到TSP的威力;
- 应注意借鉴前人和他人的经验,在可知利用的工程、科学和教学法经验的基础上来规定过程改进的指令。
在学校中我们很难接触一些工程上的项目去锻炼自己的软件开发的能力,与团队的协作机会更是如数家珍,所以如何训练自己这方面的能力是非常重要的。因此学习如何做出有效的领导和管理行为,如何做出妥协与安排等活动,对我们以后的学习、工作都将是一份宝贵的资源。
参考资料 代码中的软件工程
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!