软件工程之课程总结

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

C编码实践篇实验报告

  1. https://www.shiyanlou.com/courses/reports/1243933 【实验一:写一个hello world小程序】

  2. https://www.shiyanlou.com/courses/reports/1244494 【实验二:命令行菜单小程序V1.0】

  3. https://www.shiyanlou.com/courses/reports/1245530 【实验三:内部模块化的命令行菜单小程序V2.0】
  4. https://www.shiyanlou.com/courses/reports/1246411 【实验四:用可重用的链表模块来实现命令行菜单小程序V2.5】

  5. https://www.shiyanlou.com/courses/reports/1246945 【实验五:用callback增强链表模块来实现命令行菜单小程序V2.8】

  6. https://www.shiyanlou.com/courses/reports/1248185 【实验七:将menu设计为可重用的子系统】

课程学习心得

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

(1)实验一中我了解了linux环境下进行C语言编程的基本方法,再一次感受到了ubuntu系统的简便和快捷。 与windows编程需要IDE开发环境不同,linux系统本身已经良好的集成了进行C语言的基本环境,所以只需在终端输入几个简单的命令,程序即可编译并运行了。只是对于习惯了图形界面的我们来说,刚上手时的确会感到这种方法的不便之处,尤其是对于初学者来说,不知道任何gcc或者gdb的命令就根本无从下手,而这一切只能靠记忆。

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

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

(4)在模块化的思想中,讲究高内聚低耦合,接口要规范,代码要注意通用性,注意以下原则,Purpose,Preconditions(assumptions),Protocols,Postconditions(visible effects),Quality Attributes。
(5)C语言是面向过程的一门计算机语言但是它依然可以面向对象,就是运用callback函数。可以用callback函数实现多态以便接口更加通用,实现信息隐藏。
(6)在处理多线程问题中,需要关注函数是否是可重入的,使用互斥锁,读写锁以保证多线程安全。同时了解了函数的可重入性与线程安全之间的关系,可重入的函数不一定是线程安全的;可重入的函数在多个线程中并发使用时是线程安全的,但不同的可重入函数(共享全局变量及静态变量)在多个线程中并发使用时会有线程安全问题(可能是线程安全的也可能不是线程安全的);不可重入的函数一定不是线程安全的。
(7)在子系统的设计当中,要设计出可重用的接口。在linux下对代码的编译可以编写Makefile文件,然后直接用make命令编译会省事不少。getopt()用来分析命令行参数。参数argc和argv分别代表参数个数和内容。

课程学习总结

收获

在学这门课之前对软件工程理解是认为只适用于面向对象的编程语言中,如c++,Java。但是上完这门课之后让我认识的了软件工程这门课不仅只适用于面向对象,即使是面向过程的C语言也可以用到软件工程的思想来进行程序设计。通过本课程的学习,让我认识到了如何灵活运用c语言的特性来进行封装,信息隐藏,如何一步步的将一个程序进行模块化修改与设计,并且做到高内聚,低耦合的设计。

遗憾

希望老师以后可以教我们如何用代码实现一些经典的设计模式。因为设计模式往往都是在课堂上学习的,比较抽象,如果能教给我们怎么用代码实现,那我们的理解一定会更加深刻。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值