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

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


总结:对软件工程的理解及学习软件工程(C编码实践篇)的心得


 经过近半学期对软件工程的学习,通过课程学习及一点点完成一个menu小程序,让我对软件工程有了一定的认识。软件工程就像我以前所接触的工业工程,是对工程的一个系统的详细的构建。一个好的工程并不能像原始作坊一样,蒙头去完成最基本的需求,而是要先从需求开始,逐步地搭建整个工程的构架,再进行一步一步的完善。中间不仅要完成简单的基本需求,更要从软件的可重用性,安全性,模块化的设计要求去考虑。经过了代码风格规范的要求,模块化设计的思想,接口规范和通用原则,callback函数的使用,子系统可重用的设计等章节的联系,让我对软件工程的这些设计要求有了具体层面上的理解。学习这门课收获颇丰,受益匪浅。


代码层面的软件工程的理解:


代码设计规范:KISS,设计与实现保持一致,不要和陌生人说话,一定要有错误处理 ,用数据结构来简化代码

函数的可重入性

高内聚低耦合的架构设计目标

模块化设计

线程安全性设计


实验报告作业及小结:

1.熟悉linux实验环境

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

 实验报告 

小结:通过实验熟悉了linux的基本操作指令

2.代码风格规范

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

实验报告

小结:学习了缩进、命名、注释等代码编排的风格规范。代码风格的原则:简明、易读、无二义性。

3.基本的模块化设计

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

实验报告

小结:学习使命令小程序模块化,将实现不同功能的程序模块化,使程序便于修改管理,提高程序的可扩展性。

4.重用模块的接口设计

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

实验报告

小结:学习接口规范,了解内聚和耦合(讲究高内聚低耦合),通用原则。nktable链表的实现提供一种通用数据组织的结构,我们可借此对数据进行任意的组织,而不必考虑数据的存储形式是什么。这在实践中是方便与易用的。利用这种方式可以提高代码的重用性。

5.可重用模块的接口设计(callback函数) 

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

实验报告

小结:学习了callback方式的使用,以此使得给用户提供的接口更加通用。之前没想到过c语言也可以这样来构造接口,隐藏函数私有信息。通过这样的方法产生类似面向对象编程的效果。此次实验不仅是解决这单个程序的需求,还学习了这种面向对象的思想。

6.函数的可重入性(reentrant)及线程安全浅析

小结:了解多线程的概念,知道函数的可重入性(reentrant)与线程安全概念和关系。用互斥锁,读写锁改进程序。

7.子系统的可重用设计

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

实验报告

小结:学习使用int main(int argc, char * argv[]) shell将命令行解析成argc和argv传递给执行程序,以及Makefile的使用。


学习《软件工程(C编码实践篇)》课程中最大的收获:

学习这门课不仅仅是学习了最基本的软件工程的框架和设计要求,更重要的是学到了软件工程的思想,学习了从大局角度构建一整个个工程的思维。了解到了软件工程远不止最基本的构建,更多的是从多方面(如:模块化,可重入,线程安全等)进行考虑设计。从此次课程收获颇丰,受益匪浅。


学习完《软件工程(C编码实践篇)》课程后您最大的遗憾:

学习这门课的遗憾可能是没有完全独立敲出所有的代码,之前也没有项目经历,所以对有些代码的设计没有很深刻的理解。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值