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

来源:互联网 发布:一元秒杀包邮 淘宝 编辑:程序博客网 时间:2024/05/16 06:29

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

C编码实践篇实验报告

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

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

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

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

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

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

课程学习心得

通过了《高级软件工程》这门课的学习,使我认识到了软件其实不仅仅是程序,软件开发其实也不仅仅是编写程序,软件是思想在硬件上的载体和体现,处理的是逻辑和信息。唯有对软件和软件的开发过程,有充分的认识,才能更好的开发出,过程受控、质量受控的软件产品。

  • 实验一选择Linux环境告诉我:
    1.一点都不了解Unix-like操作系统的程序员很难讲是一个专业的程序员;
    2.大多数服务器操作系统都是Unix-like操作系统;
    3.Linux环境下做开发可以彻底掌控设计;

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

  • 实验三在设计规范上,要保证代码是高内聚,例如一个函数只做一件事,一个模块只做一类事的,实现功能尽量用库函数;还有要遵循“不和陌生人说话”的原则,以保证除了类提供的接口,别人无法访问类的其他内容。同时要合理使用数据结构、控制结构等来简化代码。
  • 实验四在模块化的思想中,讲究高内聚低耦合,接口要规范,代码要注意通用性,注意以下原则,Purpose,Preconditions(assumptions),Protocols,Postconditions(visible effects),Quality Attributes。
  • 实验五C语言是面向过程的一门计算机语言但是它依然可以面向对象,就是运用callback函数。可以用callback函数实现多态以便接口更加通用,实现信息隐藏。
  • 在处理多线程问题中,需要关注函数是否是可重入的,使用互斥锁,读写锁以保证多线程安全。同时了解了函数的可重入性与线程安全之间的关系,可重入的函数不一定是线程安全的;可重入的函数在多个线程中并发使用时是线程安全的,但不同的可重入函数(共享全局变量及静态变量)在多个线程中并发使用时会有线程安全问题(可能是线程安全的也可能不是线程安全的);不可重入的函数一定不是线程安全的。
  • 实验七在子系统的设计当中,要设计出可重用的接口。在linux下对代码的编译可以编写Makefile文件,然后直接用make命令编译会省事不少。getopt()用来分析命令行参数。参数argc和argv分别代表参数个数和内容。

课程学习总结

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