软件工程(C编码实践篇)

来源:互联网 发布:网络网络维护 编辑:程序博客网 时间:2024/05/29 03:18
     石强 原创作品转载请注明出处 《软件工程(C编码实践篇)》 MOOC课程 http://mooc.study.163.com/course/USTC-1000002006 

引言

本课程为网易云课堂孟宁老师《软件工程:C编码实践篇》的配套实验与作业。软件工程C编码实践篇强化实践能力训练,从学生较为熟悉的编程训练入手,重实践,形成对软件工程直观感性的认识。老师设置的课程恰到好处,我从中受益多多。老师上课特别的风趣有意思,对知识点讲解很透彻和有深度。只要从开始到结尾好好地跟着老师的思路去做实验,必定会得到巨大的进步!

课程内容、报告及代码库

1. 熟悉Linux实验环境

实验一:写一个hello world小程序。
实验一报告 和 git代码库
实验总结:第一次在Linux下操作,感觉和windows还是很不一样的。刚开始用vim编译器很不习惯。并且linux的很多命令和参数,需要长时间练习操作才能熟练掌握。第一次在Linux下写hello world,是很适合初学者的。但是由于不熟悉git,所以还是需要花点时间去了解一些的。

2. 代码风格规范

实验二:命令行菜单小程序V1.0。
实验二报告 和 git代码库
实验总结:懂得了代码风格在团队合作中的重要性,也初步接触了模块化设计思想,也学会了将命令封装成函数从而进行一部分的独立。

3. 基本的模块化设计

实验三:内部模块化的命令行菜单小程序V2.0。
实验三报告 和 git代码库
实验总结:初步实现了业务逻辑与数据结构的分离,大大地加深了对模块化思想的理解。

4. 可重用模块的接口设计

实验四:用可重用的链表模块来实现命令行菜单小程序V2.5。
实验四报告 和 git代码库
实验总结:用可重用的链表模块来实现命令行菜单小程序,执行某个命令时调用一个特定的函数作为执行动作,链表模块的接口设计到达足够通用,同时命令行菜单小程序的功能保持不变。在此我将通用的Linktable模块集成到menu程序中。

5. 可重用模块的接口设计(callback函数)

实验五:用callback增强链表模块来实现命令行菜单小程序V2.8。
实验五报告 和 git代码库
实验总结:首先利用callback函数使得linktable的查询接口更加通用,再者通过Debug调试的使用增强了代码调试的能力。

6. 函数的可重入性(reentrant)及线程安全浅析

本次没有实验,但是老师主要介绍了多线程编程和线程安全方面的知识。
多线程和线程安全是当今计算机很重要的知识,通过本次学习初步了解了多线程编程和线程安全的重要性和解决方案,对以后的学习和工作都有着很重要的作用。

7. 子系统的可重用设计

实验七:将menu设计为可重用的子系统。
实验七报告和代码库
实验总结:本次实验,添加了menu接口,扩展了命令行功能,使其可以输入带参数的命令。编写Makefile文件使编译变得简单。同时还有Liunx系统函数getopt的理解和使用。最后一次实验,综合了前面所学知识,完成目标需要全面设计和仔细分析调试。但是通过这次实验可以学到巨多知识。

课程总结

收获

学习完这门课,我对软件设计开发有了一个新的认识,以前总认为软件就是写程序,开发软件项目就是大家一起写程序,然后拼在一起实现最后的功能,但现在,我才知道我对软件有多么肤浅的认识,软件开发远比单单写程序来的高端,来的复杂。下面就从本实验说起。
实验是从最熟悉的hello word写起,当然,这个实验主要是让我们先了解实验环境,了解代码规范的一些基础内容,为后面的学习打基础。接着一步一步做实验,不知不觉将命令行菜单的一个小程序慢慢地变成了一个命令行的小系统,在这个过程中,尽管老师一直强调我们主要考察代码规范,可是我学到的又岂止是代码规范,还有很多能一直受用的知识,linux命令,markdown的书写,4空格缩进,变量名和函数名各种风格,{和}独占一行,且成对对齐,如何简化代码,如何保持设计与实现一致,如何设计规范的接口,如何让模块通用,如何提供皆空的同时隐藏信息,如何用makefile编译工程文件等。
这对以前只注重功能实现的我来说无疑是一个很好的学习过程和提高过程,让我认识到了如何灵活运用c语言的特性来进行封装,信息隐藏,如何一步步的将一个程序进行模块化修改与设计,并且做到高内聚,低耦合的设计。
并且孟宁老师很用心也很幽默,讲那些思想的时候经常会用一些很通俗的例子来加以解释,上的时候一点也不觉得枯燥。所讲课也是由浅入深,注重实践,从实践中加深了我们对软件工程的理解。在完成实验的同时,学习到了很多linux命令,对linux环境也更加熟悉,真的受益匪浅!!

遗憾

虽然课程非常精致,但本人资历尚浅,没有完全领会老师所要传授我们的全部知识技能,老师的好多方法还没有去充分运用实现理解。同时也希望更多程序员来学习孟老师的课程,够好好体会一下软件工程的魅力所在!还有就是既尴尬又搞笑的一个小事,实验四忘记贴报告链接,希望不会有太大影响。

原创粉丝点击