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

来源:互联网 发布:wow.js是用来做什么的 编辑:程序博客网 时间:2024/04/30 13:12

软件工程(C编码实践篇)学习总结

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

 
一、对软件工程的理解及学习软件工程(C编码实践篇)的心得;
       通过学习本课程后,在代码的层面上加深了对软件工程的理解,体现在以下三个方面。 
       1、对代码的风格进行规范,避免阅读障碍,理解困难等。      
       2、对于有一定规模的软件来说,可以通过模块化的思想来分割系统组件模块,然后攻破各个模块。
       3、在代码的编写过程中,没必要自己从头开始编写代码,可以利用别人已经公开的、高效的、可靠的代码,这样既可以节约时间,又可以减少错误。   


       学习了中国科学技术大学软件学院孟宁老师的(C编码实践篇)后,从刚开始一个简单的hello小程序,到基本的模块化设计,可重用模块的接口设计等,每一次实验觉得自己都有很大的进步,提高了自己代码的编写能力,使自己能够严格遵守代码风格规范来编写代码。由于自己以前所学的专业和软件工程相差较大,所以每次做实验都需要很长的时间,但是自己的进步也很明显。还有就是(C编码实践篇)让我明白,自己即使没接触过此类问题,也要自己想办法解决,没有人天生就会一门学科。

 

二、实验报告作业的目录列表(链接)

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

链接:http://blog.csdn.net/weixin_34332893/article/details/78009595

总结:hello world本身很容易,但是linux下工作方式和windows下完全不同,会给不熟悉linux的人带来不少问题。首先vi没有Windows下的IDE智能化,不能实时纠正语法错误,编译是会产生不少语法错误,需要细心调试。其次,linux的诸多命令和参数,需要更长时间练习操作才能熟练掌握。最后,初学者往往不熟悉git,需要一定时间研究版本控制系统。这3点是liunx初学者需要克服的困难。

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

链接:http://blog.csdn.net/weixin_34332893/article/details/78079755

总结:初步接触了模块化设计思想,理解了代码风格的重要性,学会了将命令封装成函数供使用者调用。

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

链接:http://blog.csdn.net/weixin_34332893/article/details/78185024

总结:初步实现了业务逻辑与数据结构的分离,加深了对模块化思想的理解。而且这次自己做死创造难度,采用了AVL树做数据结构,static函数声明,函数指针做参数实现call -back;以及实现了在Windows IDE下编程,共享到Linux虚拟机编译运行,最后从自己的Vmware11的Ubuntu虚拟机向实验楼git代码。从而进一步提高了自身的水平。

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

链接:http://blog.csdn.net/weixin_34332893/article/details/78240324

总结:本次对于数据结构,我参考了Linux内核源代码中双向链表的实现,移植其功能接口集成到menu菜单程序中。而在Linux内核链表的设计中,为了达到最高运行效率,使用了宏定义和内联函数完成所有功能的设计实现,所有代码集成在其设计的接口头文件中。Linux内核源代码博大精深,其通用的设计思想和高效的实现方式,值得C/C++程序员认真阅读,即使不去做内核相关的工作,阅读精彩的代码对程序员自我修养的提高也是大有裨益的。

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

链接:http://blog.csdn.net/weixin_34332893/article/details/78323574

总结:本次实验通过Debug调试的使用增强了代码调试的能力,利用函数指针参数化上下文,以最小化信息隐藏的标准,设计了更加 通用好用 的API接口。

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

链接:http://blog.csdn.net/weixin_34332893/article/details/78460662

总结:本次实验难点在于Liunx系统函数getopt的理解和使用。getopt本身参数众多,难以理解,极易用错。做为最后一次实验,综合了前面所学知识,完成目标需要全面设计和仔细分析调试。

 

三、总结部分

学习完《软件工程(C编码实践篇)》课程后最大的收获:

      通过一学期的学习,使得自己对软件工程有一个初步了解和认识,找到了进一步提高能力的方向。回想起一学期的历程,最大的收获是:抽象能力的提高和模块化思想的实践。非常期待软件工程系列课程的 后续2门课程。最大的遗憾是课程时间比较短,不足以深入学习多线程编程方面的内容。这方面网络上视频稀缺,而书籍比较晦涩难懂,自学难度较大,期待老师以后有时间能制作多线程和并行编程方面的课程。



金汇渲(与最后申请证书的姓名务必一致) + 原创作品转载请注明出处 + 《软件工程(C编码实践篇)》MOOC课程http://mooc.study.163.com/course/USTC-1000002006 ”,