原来软件工程可以这样学~~~

来源:互联网 发布:如何改变图片尺寸软件 编辑:程序博客网 时间:2024/04/29 16:45

李文静  原创作品转载请注明出处:

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

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

首先代码的书写需要遵循统一格式,注意代码风格的原则:简明、易读、无二义性缩进、命名、注释等代码编排的风格规范

其次模块化的思想中,讲究高内聚低耦合,接口要规范,代码要注意通用性

注意以下原则,PurposePreconditions(assumptions)ProtocolsPostconditions(visible effects)Quality Attributes

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

然后在C实践方面,C语言是面向过程的一门计算机语言但是它依然可以面向对象,就是运用callback函数。可以用callback函数实现多态以便接口更加通用,实现信息隐藏。

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

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

二 实验报告汇总

(1)实验一:第一个实验主要是熟悉整个课程的编码环境,熟悉Linux下的编程,以及使用git管理代码

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

(2)实验二:代码规范的学习

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

(3)实验三:模块化

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

(4)实验四:加入了链表的操作

                      实验四:可重用的链表模块来实现命令V2.5

(5)实验五:使用了callback函数

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

(6)实验七:可重用子系统的学习以及利用makefile编译程序

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

三 总结

几个月前我曾对线上的课程学习抱有怀疑的态度,毕竟看视频时很耗费时间的事情,老师的讲课状态也是优雅而偏慢的。不过转眼这一阶段的课程就结束了,却并没有过多的不适应,值得一提的是,网易的课程和实验楼的搭配非常的好。

以前接触的软件工程课程一般都是停留在理论和需求分析的层面,基本就是概念和画图,而这门课把软件工程的思想融入到真正的c代码当中,更加实用,学到的东西也更多。对初学者而言,实验的部分值得一试。



0 0
原创粉丝点击