王方正 原创作品转载请注明出处 《软件工程(C编码实践篇)》MOOC课程 http://mooc.study.163.com/course/USTC-1000002006
一、学习心得
我是一名非计算机专业的学生,学习网易云课堂上软件工程这门课是想来提升自己的计算机编程能力。这门课的代码量并不算大,孟宁老师更关注的是将软件工程的思想教授给我们。自己根据课程内容总结下来,要想完成一个软件设计需要经过以下几步:
- 对所要完成的任务进行抽象,设计基本的数据结构;
- 进行模块化设计,一个模块只完成一类相似的任务,并且要具有可重用性;
- 对模块的接口进行改进,使其达到高内聚低耦合;
- 对模块进行封装,信息隐藏。
主要步骤是这些,在软件设计过程中还要注意函数的可重入性和线程安全问题,有的时候为了提高模块或者函数的通用性要使用call-back方式接口或者设计带参数的命令,这些都要具体情况具体分析。
我在学校内也选了C++程序语言设计这门公选课,通过这 两门课的对比,我发现语言不同,但是软件设计的思想都是相通的。但有的时候自己会觉得知道模块化呀这些思想还是远远不够的,具体到代码实现时还是要多练习,多自己去动手做一些小项目才能更深刻的理解它们。
二、实验报告目录
- 实验一 熟悉实验环境,写一个简单的hello world小程序;
- 实验二 写一个简答的菜单小程序;
- 实验三 将菜单小程序内部模块化;
- 实验四 用通用链表来设计菜单,并对模块接口改进;
- 实验五 使用call-back方式接口,并实现信息隐藏;
- 实验七 将menu程序改成一个子系统,并编写带参数的命令。
三、课程总结
我在软件工程这门课程的学习中最大的收获就是对软件工程有了一个系统的了解,并且学习到了它的思想。以前自己的专业也有过一些编程,不过主要是做科学计算,和软件工程的编程有很大的差别。现在自己编程的时候经常会自动地考虑到要不要模块化、要不要对接口加以改进,这也许就是我最大的进步。
个人感觉这门课已经做的很好啦,孟宁老师很用心也很幽默,讲那些思想的时候经常会用一些很通俗的例子来加以解释,上的时候一点也不觉得枯燥。