高级软件工程(2022 Spring)课程总结

高级软件工程(2022 Spring)课程总结

概述

高级软件工程这门课主要从较为实用性的角度来介绍了软件工程的相关知识,以及在编写软件产品过程中可能会使用到的工具,还有一些业界前言的工程理论。

分章节总结

第一部分 工欲善其事必先利其器

这部分主要是介绍了在编写软件产品过程中可能会使用到的工具。覆盖了IDE、版本管理、文本编辑、字符串处理等部分。

  • IDE:异常强大和先进的IDE-VSCODE。和Visual Studio不同,VSCODE是微软的以一种完全不同的设计思路来设计的IDE,强大的插件可以帮助用户个性化创建出一个适合自己的轻量化强大IDE。Remote可以支持我们在各种虚拟环境以及服务器上编辑自己的代码。
  • 版本管理:Git。这里不仅学习到了如何进行简单的版本管理、分支管理等,还了解到了如何管理远程仓库,以及如何向开源社区提交代码。
  • 文本编辑:Vim。作为Unix平台的文本编辑常青树,Vim有着极大的上手门槛,但是一旦熟悉起来,Vim能够带来的编辑和浏览效率是其他文本编辑工具无法匹敌的。最重要的是,Vim是跨平台的,几乎在所有Unix系统中都是预装软件,所以它有着极强的普及度。
  • 字符串处理:正则表达式。为什么C++在互联网应用中出现的频率如此之低?因为他没有一个实用强大的字符串处理库!字符串处理就是互联网应用的根基,而正则表达式是字符串处理绕不开的工具,它在字符串匹配中的实用程度无可匹敌。

在有了各种工具的使用基础之后,我们就能大刀阔斧地开始高级软件工程的学习之旅了。

第二部分 工程化编程实践-代码中的软件工程

这部分主要是基于一个menu程序来展开,学习结构化程序设计的一般方法。主要是有以下部分:

  1. menu程序:这是一个非常基础的程序,基本的功能就是列出这个软件提供的小功能,用户可以通过键入命令来选择一个功能运行。这里重要的是基于结构化程序的思想,将这款简单的软件设计地可重用(满足开闭原则等)。在最终版本的menu程序中,我们使用链表管理menu可以提供的功能,使用回调函数来满足各种不同的查找需求,从而使得软件非常完备。
  2. 代码风格:关于什么样的代码是好代码,主要是易读性。
  3. 性能优先背后的代价:一昧追求性能带来的收益也许并不能抵消开发高性能程序的代价。
  4. 模块化代码设计:如何通过各种方法(如回调函数)来开发出高内聚、低耦合、可维护的代码。

第三部分 从需求分析到软件设计

想要设计出一款合格的软件,需求分析永远是绕不过的一环,因为我们动手之前必须要知道:我们的软件到底要实现什么样的功能?

  • 绘图工具:我们的软件工程过程中需要产出许许多多的文档,例如需求设计文档,而文档中的图是不可少的,比如用例图,时序图等。这部分主要是介绍了常见的绘图工具有哪些。
  • 需求分析:原型化方法和建模的方法是两种基本方法,这里的主要内容是如何进行用例分析。
  • 统一过程:一种软件过程模型,介绍了一种敏捷统一过程,主要内容是编排软件过程的具体方法。

这一部分主要是从较为宏观的角度介绍了一款软件是如何被设计出来的。

第四部分 软件科学基础概论

这部分介绍的是软件科学的基础知识,例如常见的软件架构、设计模式等,从一种比较抽象地角度介绍如何设计一款好的软件。

  • 什么是软件:介绍了软件的基本要素和基本结构等。
  • 一些特殊的软件机制:例如闭包、回调、异步等,特别是介绍了Vue中的异步调用。
  • 设计模式:介绍了一些基本的设计模式,设计模式是一种根据经验总结出来的软件设计思路,以及设计模式背后所遵循的几个软件设计原则。正确使用设计模式可以让我们设计出高效规范的软件。尤其是重点介绍了观察者模式,以及其在Vue中的应用。
  • 一些软件架构:例如MVC、MVVM等,其中也是重点介绍了MVVM,它在目前的互联网产业中运用地非常广泛,这里也是重点介绍了Vue中的MVVM。
  • 软件质量属性:什么样的软件是一款好的软件?这里解决的就是这个问题。

第五部分 软件危机和软件过程

这部分的主要内容有:

  • 软件危机及其发展过程
  • 一些典型的软件模型:例如瀑布模型、V模型等,以及这些软件模型是如何发展过来的,考量是什么,有何优缺点。
  • 个人软件过程:个人如何构建一款软件,在个人开发者越来越多的当下, 这部分的学习有相当的实践意义。
  • 团队软件过程:一个团队如何构建一款软件,以及如何构建一个高效的开发团队,在工作中很有意义。
  • 敏捷开发:敏捷开发是目前很多开发团队开发软件的第一选择,因为它的开发流程的快捷和高效。
  • DevOps:一种把开发、运维、质量保障统一起来的过程,加强这些部门之间的协作和沟通。在云计算逐渐普及的现在,DevOps也逐渐流行了起来。

这部分从软件危机和软件过程出发,在介绍了传统的软件过程的基础上,还介绍了比较前言的软件过程,例如DevOps,具有很强的实用性。

个人学习总结

在这门课程中,我们不仅学到了传统的软件工程知识,还学习到了前言的软件工程理念,例如MVVM,以及这些软件工程理念的具体应用,例如Vue。关于结构化编程部分,menu实验让我受益匪浅,它教会了我如何构造一个规范的可迭代的满足开闭原则的软件系统。工具方面,git无疑是我最大的收获,不仅让我能够管理自己的代码,也能让我向开源项目贡献代码。

个人信息:学号579

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值