本学期的高级软件工程主要介绍了以下内容:
一:工欲善其事必先利其器
老师从实用性和高效性角度出发,向我们讲解了:VSCode、Git、Vim和正则表达式。
- 首先讲解了如何使用VSCode来辅助编程,讨论了代码编辑器和IDE之间的区别。
- 然后是Git,阐明了如何使用Git来对项目进行版本控制,并说明了如何与其他成员共同协作完成一个项目。
- 其次是Vim,其既是一个好的文本编辑器又是一个不错的程序开发工具。
- 最后则讲解了正则表达式,熟练使用正则表达式可以让我们在代码的修改和编辑中更加得心应手。
二、工程化编程实战——代码中的软件工程
本节讲解了代码规范和代码风格,阐述了其在软件开发过程中的重要性。代码规范的原则包括简明、易读、无二义性等。其次还讲述了模块化的基本原理、模块化代码的基本写法、软件设计中的一些基本方法。
通过实现:“使用Go或Rust实现一个命令行的菜单小程序,最终目标是完成一个通用的命令行的菜单子系统便于在不同项目中重用”为例,我深刻的理解了代码规范的重要性。
三、从需求分析到软件设计
本节通过讲述软件是怎样样诞生的,软件在开发过程中要遵循哪些要求,以此引入了需求分析的概念。学习了如何从获取需求,需求分析到软件设计的过程,学习了敏捷统一过程、对象交互建模和形成软件设计方案的基本方法。介绍了对象交互建模的基本概念和方法。
本章节以面向对象的分析和设计为思想方法的主线,学习了一种从需求分析到软件设计的基本建模方法,我在完整地学习了这种从需求分析到软件设计的基本建模方法之后,对面向对象的概念有了切身体会。
四、软件科学基础概论
本节介绍了什么是软件,讲解了软件的基本概念、设计模式、软件架构和软件质量。
- 基础概念主要介绍了软件的定义、特点、分类、生命周期和开发模型等基础概念。软件的特点包括复杂性、易变性、不可见性和不可触摸性等。软件的分类包括系统软件、应用软件和中间件等。软件的生命周期包括需求分析、设计、编码、测试和维护等阶段。软件的开发模型包括瀑布模型、迭代模型、增量模型和螺旋模型等。
- 然后讲解了设计模式,它是一种解决软件设计问题的经验总结,可以帮助开发人员更好地处理复杂的问题,提高软件的可靠性和效率。还介绍了一些常用的设计模式比如观察者模式等。
- 最后介绍了软件架构(三层架构、MVC架构、MVVM架构)、软件架构风格(管道-过滤器、客户-服务、P2P、发布-订阅、CRUD、层次化)、软件架构的描述方法(分解视图、依赖视图、泛化视图、执行视图、实现视图、部署视图、工作任务分配视图)以及几种重要的软件质量属性(易于修改维护、良好的性能表现、安全性、可靠性、健壮性、易用性、商业目标)。
五、软件危机和软件过程
本节主要介绍软件危机和软件过程。
- 首先介绍了软件危机的背景和产生原因。软件危机是由于软件开发过程中的复杂性和不可预测性导致的,软件开发项目往往超出预算、超时完成或无法满足客户需求。
- 软件过程则是指开发、部署和维护软件系统的一系列活动和步骤。它描述了在软件开发生命周期中的不同阶段,以及在每个阶段中需要执行的任务和活动。软件过程是为了有效地组织和管理软件开发过程,确保软件按时、高质量地交付而存在的指导原则和方法。
- 最后介绍了一些解决软件危机的常见方法,包括CMM/CMMI、敏捷方法和DevOps等软件过程模型,并对CMM/CMMI、敏捷方法和DevOps等软件过程模型进行了详细的介绍和比较。这些模型各有优缺点,需要根据具体情况选择适合的模型。CMM/CMMI适用于大型企业,敏捷方法适用于小型团队,而DevOps则适用于需要快速交付软件的团队。
六、总结
本课程的学习,使我收获颇丰。首先,我深入了解了软件开发的各个方面,包括需求分析、设计模式、软件架构等,学会了如何有效地管理软件项目。其次,我学会了该如何使用各种高效的工具和技术来提高软件质量和开发效率。最后,我也更加清晰的意识到团队合作的重要性。总之,通过本课程的学习,我不仅掌握了专业的知识和技能,还培养了解决问题的能力,为将来的职业发展提供了有力的支持。
参考资料:代码中的软件工程