《软件工程》课程总结

张剑冬  + 《软件工程(C编码实践篇)》MOOC课程http://mooc.study.163.com/course/USTC-1000002006

        上学期就已经选修过孟宁老师的网络程序设计课程,这次的课程《软件工程》和上次一样,依然采用了一种很新颖的教学方式。与传统教学不同,该课程采用了线上教学+线上/线下实验+同学分享的方式,实践和理论相结合,内容涵盖丰富,使我受益良多。以下是我学习该课程的一些总结和心得体会。


1. 课程总结

        软件工程包含的内容广泛,线上课程和实验主要涉及的是代码层面的内容。课程通过从简单到复杂一步一步设计出一个通用的菜单系统来向我们介绍了设计一个软件所要做的事情和要注意的地方。与以往课程实验实现一些简单的功能函数不同,要设计出一个实用的软件系统,功能需求只是最基础最简单的需求,而其他非功能性需求如可重用性、通用性和可维护性等也占据着非常重要的地位。对于一个软件系统,要实现很好的可维护性,首先编程必须符合一定的代码风格规范,规范和风格统一的代码能增强可读性,既有利于团队成员之间相互交流,也有利于后期的更改维护;其次,模块化也是增强软件可维护性的一个重要方法。程序的模块化还能增强代码的可重用性和通用性。要实现模块化,就要尽量让代码简单,例如一个函数只做一件事,一个模块只做一类事。必须遵循“不和陌生人说话”的原则,封装类,保证一个对象对另一个对象了解的尽可能少。同时为模块设计通用规范的接口。此外,软件开发中还要考虑多线程情况下线程安全的问题,需要关注函数是否是可重入的,以及使用互斥锁以保证多线程安全等。


2. 实验报告汇总

    下面是我完成线上实验的一系列实验报告。

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

实验二:命令行菜单小程序V1.0,具体要求参见视频

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

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

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

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


3. 心得体会

        线上课程和实验使我从实践中学习到了设计开发一个实用的软件系统所包含的内容和要注意的地方,包括代码风格规范、程序的模块化、通用接口的设计和线程安全等等;而同学分享则使我了解到了软件工程涉及的方方面面,以及行业内使用的一些新技术和工具,使我初步了解了在实际企业里是如何进行软件系统开发的。在这门课程中我最大的收获就是通过菜单系统实验学习到的软件设计方法,最大的遗憾是没有参加一个真实实用的项目的开发。

没有更多推荐了,返回首页