软件工程(C语言实践篇)课程总结

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

C编码实践篇实验报告

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

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

https://www.shiyanlou.com/courses/reports/1273208 【实验三:内部模块化的命令行菜单小程序V2.0】

https://www.shiyanlou.com/courses/reports/1273225 【实验四:用可重用的链表模块来实现命令行菜单小程序V2.5】

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

https://www.shiyanlou.com/courses/reports/1277465 【实验七:将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分别代表参数个数和内容。

课程学习总结

       经过了一个学期,我完成了软件工程这门课的学习。在这一个学期当中,我对于软件的认识,又有了些新的感触。首先,这门课让我明白了,所谓软件开发,并不是单纯地堆砌代码,调整代码,而是需要一个科学的方法论为指导的科学的开发的过程。代码编写,只是在软件开发过程中很小的一个部分,而更重要的是,前期的设计工作,以及后期的可维护进程,都是极为重要的。就像曾经有个高人说过一样:”什么时候,开发程序也像盖楼一样有一个科学的指导方案,能够知道那些不具有专业知识的人也能完成工作,那才是软件开发所应达到的目标。“这样,才能将人们从软件开发的繁重的脑力活动之中解放出来。而软件工程这门课,正是这一系列软件开发工程化方法的起步。

       总而言之,这门课虽然不像我当初想的那样进展,但是也确实使我有所收获。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值