在《软件工程(C编码实践篇)》MOOC课程http://mooc.study.163.com/course/USTC-1000002006 的学习过程中对软件工程这个概念有了自己一点想法。
首先我对软件工程的理解是软件工程是一种优化软件设计与实现的一种思想和方案,比如说我们需要注重代码的格式这是为了增加可读性,模块化的思想是降低模块间的耦合模块内的内聚,可重用模块接口的设计使得代码块更加通用……软件工程的核心不是在于如何去实现需求的功能而是在于何如高效的实现。这就好比瓦匠可以盖几层小楼,但是无法去盖一栋高层大厦。而软件工程就是告诉我们如何从只能够从盖几层小楼的“瓦匠”转变为能够盖高楼大厦的工程师。
其次对于软件工程的学习心得,我的感觉就是要转变思想方式。软件工程要求我们有一种更加抽象的思想去理解和实践,不能拘泥于把功能实现就好的程度,而是把我们的实现更加抽象起来从另一个角度来思考如何更加有效地实现功能。比如考虑代码的模块化,接口的可重用设计,以及系统的可重用设计。
代码层面的演练:
实验一:写一个hello world小程序 https://www.shiyanlou.com/courses/reports/643226
理解:了解linux系统下vi编辑器的使用,在vi编辑器下编写C语言代码。
实验二:命令行菜单小程序V1.0 https://www.shiyanlou.com/courses/reports/658767
理解:代码编写时要注意规范,因为在后期维护或者阅读时方便理解。
实验三:内部模块化的命令行菜单小程序V2.0 https://www.shiyanlou.com/courses/reports/661599
理解:模块化的思想正式为了实现 高内聚、低耦合 的思想。提高代码的质量。
实验四:用可重用的链表模块来实现命令行菜单小程序V2.5 https://www.shiyanlou.com/courses/reports/702086
理解:设计一个单独可重用的链表数据结构,并将这个数据结构用在 命令行菜单小程序中。实现了对能够单独完成某项功能代码块的重用
实验五:用callback增强链表模块来实现命令行菜单小程序V2.8 https://www.shiyanlou.com/courses/reports/717551
理解:隐藏单独完成某项功能代码块的某些信息,增加该模块的通用型。
实验七:将menu设计为可重用的子系统 https://www.shiyanlou.com/courses/reports/746852
理解:通过暴漏接口的方法实现了对可以单独完成某些功能的子系统的重用
学习这门课最大的收获我觉得是在思想上有了改变,以前没有引起注意的方面现在都会有所留意,为以后程序的编写和设计很有帮助。说起最大的遗憾,就是学习的时间比较短理解的不够深入,而且我用java语言比较多,C语言好久没有用了,因此在编程伤会有一点困难。
最后,非常感谢中国科学技术大学 孟宁老师,您幽默简洁讲解方式以及对知识点独创性地命名 让我对于某些思想记忆犹新。
刘磊
原标题:软件工程学习小结
关键词: