首页 > 代码库 > 软件工程(C编码实践篇) 学习总结

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

By: 吴倩+ 原创作品转载请注明出处 + 《软件工程(C编码实践篇)》MOOC课程http://mooc.study.163.com/course/USTC-1000002006 

一  对代码层面的软件工程的理解及学习心得体会

通过《软件工程》这门课的学习,使我认识到软件不仅仅只是逻辑的代码实现,更是使软件变得具有更好的功能,更健壮和具有更好移植性的一个工程。同样一个问题,有的人可能是用数据结构做逻辑控制,有的人用ifelse来做控制。不同的代码实现会导致不同的执行结果和执行效率。唯有对软件和软件的开发过程,有充分的认识,才能更好的开发出,过程受控、质量受控的软件产品。

(1)实验一中我了解了linux环境下进行C语言编程的基本方法。学习了如果在ubuntu上用终端编译代码,老师带我们走近和了解ubuntu,这个开源的系统由于性能优越和永久免费,得到了几乎所有公司的采用,我们从现在开始了解,也是为了接下来的工作打好基础。

(2)在代码的规范上,需要项目组统一格式,注意代码风格的原则:简明、易读、无二义性缩进、命名、注释等代码编排的风格规范。

(3)在设计规范上,要保证代码是高内聚,例如一个函数只做一件事,一个模块只做一类事的,实现功能尽量用库函数;还有要遵循“不和陌生人说话”的原则,以保证除了类提供的接口,别人无法访问类的其他内容。同时要合理使用数据结构、控制结构等来简化代码。

(4)在模块化的思想中,讲究高内聚低耦合,接口要规范,代码要注意通用性,注意以下原则,Purpose,Preconditions(assumptions),Protocols,Postconditions(visible effects),Quality Attributes。

(5)C语言是面向过程的一门计算机语言,但是它的思想和理论基础仍然被大多数现阶段实用的语言所继承,所以重温和了解它是有必要的。

(6)在处理多线程问题中,需要关注函数是否是可重入的,使用互斥锁,读写锁以保证多线程安全。同时了解了函数的可重入性与线程安全之间的关系,可重入的函数不一定是线程安全的;可重入的函数在多个线程中并发使用时是线程安全的,但不同的可重入函数(共享全局变量及静态变量)在多个线程中并发使用时会有线程安全问题(可能是线程安全的也可能不是线程安全的);不可重入的函数一定不是线程安全的。

(7)在子系统的设计当中,要设计出可重用的接口。在linux下对代码的编译可以编写Makefile文件,然后直接用make命令编译会省事不少。getopt()用来分析命令行参数。参数argc和argv分别代表参数个数和内容。

二 实验报告汇总

(1)实验报告一

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

(2)实验报告二

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

(3)实验报告三

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

(4)实验报告四

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

(5)实验报告五

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

(6)实验报告七

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

三 总结
整一个学期下来,总的来说还是学到了很多东西的,有很多地方是值得肯定的,其实在我看来,软件工程与其说是一门课程,不如说是一门思想。是一个如何去分析和处理问题的过程,应该说其范畴已经远远不止局限于该门课程,成为了一个综合的一个能够解决问题的思想集合。我会觉得,哦,原来我上次的代码还可以这样改,改成这样比以前更好用,个人认为最大的收获是对软件工程思想里面关于模块化和接口的设计,有了思想指导,代码不成问题,孟宁老师说,两成的时间开发,八成的时间维护与测试,好的代码不仅仅是性能与功能的问题,而是后期维护代价的问题,干净利落总比一团乱麻强得多。谢谢孟宁老师的教导,未来会更好!

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