网易云课堂《软件工程》课程学习总结

学习心得

我不是计算机或者软件专业科班出身,但是由于工作学习涉及到软件开发,需要大量地写代码、维护代码。
对于一些一个人写的小程序,只要实现功能就可以了,毕竟代码量少,逻辑清晰,无论是编写的时候还是后续维护的时候,都比较容易。但是遇到功能比较复杂,需要多人合作的规模较大的程序,写起来就不是那么得心应手了,往往会遇到很多问题,后期维护也变得复杂很多。比如新增或者修改一个功能,牵扯的面太广,很多地方的代码都要修改。有时候顾此失彼,修改了一个地方,却因为逻辑上没考虑周全,导致了新的bug。
这时,我发现,只会编程写代码已经不能有效地处理这些问题了,如何组织不同功能的代码才是问题的关键。软件工程这门课正是处理这个问题的。
十个星期下来,虽然花不了太多时间,但是学到了不少新的概念、新的方法。首先学习了代码风格规范,这一点我之前也看了资料并实践过,因此感受很深,觉得好的代码最起码一眼看上去清晰明了,在课程中更加系统地学习了代码风格的规范。然后就是我最关心的模块化设计的思想,很多概念对我而言是第一次清晰地被表述出来。比如KISS原则、逻辑层数据层分开原则、低耦合高内聚原则等概念,对于设计代码很有用。另外,为了达到模块化设计的目的,一些技术和概念的学习和使用也很重要,比如错误与异常处理、模块的可重用性、线程安全、接口设计等。
有了这些概念之后,我发觉到之前的代码存在很多问题,不是功能上的,而是结构上的。这些知识边学边用,让我在工作中以新的思维思考问题和编写代码。

课程内容

软件工程需要实践,没有实践就没有真实的体验和感受。因此这门课程以编写Linux命令行菜单程序为主题,以Linux为平台,以C语言为工具,根据课程知识安排了几次实验,列在下面,分别是实验题目、简介和我的实验报告链接。

实验一:写一个hello world小程序

通过最简单的hello world程序,来熟悉Linux下的开发环境。实验报告链接:实验一:写一个hello world小程序

实验二:命令行菜单小程序V1.0

编写一个简单的命令行菜单程序,作为后续实验的基础。实验报告链接:实验二:命令行菜单小程序V1.0

实验三:内部模块化的命令行菜单小程序V2.0

在实验二的基础上,调整代码的结构,把业务逻辑层和数据存储层分开,实现初步的模块化。实验报告链接:实验三:内部模块化的命令行菜单小程序V2.0

实验四:用可重用的链表模块来实现命令行菜单小程序V2.5

在实验三的基础上,把菜单内容(数据层)的数据结构用链表来实现,同时编写了一个通用的链表模块,既可以在这个菜单程序中使用,也可以在其他需要用链表的程序中使用。实验报告链接:实验四:用可重用的链表模块来实现命令行菜单小程序V2.5

实验五:用callback增强链表模块来实现命令行菜单小程序V2.8

在上一个实验的基础上,使用了callback技术。callback技术使得存储菜单命令的数据结构更加通用。实验报告链接:实验五:用callback增强链表模块来实现命令行菜单小程序V2.8

实验七:将menu设计为可重用的子系统

之前已经实现了线程安全(实验6,没有实际编程实验)的独立链表模块,以及数据存储层和业务逻辑层分离的命令行菜单程序。在这次实验中,把菜单程序也要从主函数中剥离出来,使得在其他程序中调用接口就可以使用,这样菜单程序也变成了一个模块。实验报告链接:实验七:将menu设计为可重用的子系统

课程总结

这门课虽然时间短,内容也不可能很多,但是已经足够让我对软件工程有了一个初步的了解。一些核心概念和方法已经可以在工作中用到了;如果需要更深入地学习软件工程,涉足更复杂的软件开发,那么也可以以此为起点,继续学习下去。很感谢这门课以及老师,课程很好,老师讲解得也很详细、通俗。
学习这门课有一点小遗憾就是学习的时候没有同步地阅读相关的参考资料、参考书等等。如果同步阅读的话,理解可能更深一些,也可以补充一些课上没有时间讲授的知识点或者例子。

夏蔚文
原创作品转载请注明出处
《软件工程(C编码实践篇)》MOOC课程http://mooc.study.163.com/course/USTC-1000002006

转载于:https://www.cnblogs.com/xia-weiwen/p/7043876.html

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值