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

来源:互联网 发布:淘宝店铺详情页装修 编辑:程序博客网 时间:2024/06/05 16:37

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

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

  • 课程简介
  • 心得体会
  • 实验报告目录
  • 总结

课程简介

软件工程(C编码实践篇)是由中科大孟宁老师在网易云课堂上发布的一门关于学习软件工程开发思想的实践性课程。课程中在老师的指导下实现一个C语言小项目——Menu菜单小程序,通过其演化来呈现无设计代码、模块化设计的代码、可复用的代码和回调函数等接口设计,以及可重入函数、线程安全等较深入的设计问题。


心得体会

之前虽然学习过C语言,但对编程的认识一直停留在玩具型程序的层面上。通过这门课的学习,感觉自己对C编程有了更高层次的理解。不仅熟悉了Linux下的C编程环境,而且对代码的模块化设计、回调函数、可重入函数、线程安全以及软件工程理论在实践中的应用有了体系化的认识。


实验报告目录

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

实验要求

写一个hello world小程序:
在Linux命令行环境使用C语言编写,编译后执行输出”Hello,World!”;
实验务必在linux命令行环境下完成,课程视频是在本地虚拟机上操作的,除了目录环境和作业提交方式不同外,基本的命令和编辑操作方式是一致的。

实验报告

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

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

实验要求

1、代码风格规范:

代码风格的原则:简明、易读、无二义性;
缩进、命名、注释等代码编排的风格规范;
《构建之法》4.1代码规范
高质量C++/C编程指南(林锐)

2、具体要求(参照视频中的具体实验过程):

实现一个命令行的菜单小程序,执行某个命令时调用一个特定的函数作为执行动作,实现的命令个数不少于8个;
类似ftp的help目录或者bash的help目录;
程序循环、接收用户的命令,如help、others等命令;
可以广泛通用的命令行菜单子系统组件,可方便地定制而嵌入到其他系统;

实验报告

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

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

实验要求

注意代码的业务逻辑和数据存储之间的分离,即将系统抽象为两个层级:菜单业务逻辑和菜单数据存储

要求:
1)遵守代码风格规范,参考借鉴代码设计规范的一些方法;
2)代码的业务逻辑和数据存储使用不同的源文件实现,即应该有2个.c和一个.h作为接口文件。

实验报告

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

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

实验要求

用可重用的链表模块来实现命令行菜单小程序,执行某个命令时调用一个特定的函数作为执行动作;
链表模块的接口设计要足够通用,命令行菜单小程序的功能保持不变;
可以将通用的Linktable模块集成到我们的menu程序中;
接口规范;

实验报告

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

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

实验要求

本实验在提供的代码基础上进行
给lab5-1.tar.gz找bug,quit命令无法运行的bug
利用callback函数参数使Linktable的查询接口更加通用
注意接口的信息隐藏

实验报告

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

实验六:函数的可重入性(reentrant)及线程安全浅析

实验要求

本周为理论课,未进行实验

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

实验要求

为menu子系统设计接口,并写用户范例代码来实现原来的功能;
使用make和make clean来编译程序和清理自动生成的文件;
使menu子系统支持带参数的复杂命令,并在用户范例代码中自定义一个带参数的复杂命令;
可以使用getopt函数获取命令行参数。

实验报告

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


总结

通过这门课程的学习,我最大的收获是对整个软件开发的设计原则、规范,以及实际开发过程中代码的演化过程有了清楚的认识。实际项目中往往追求产品的快速上线,对工程的质量与规范不甚看重。这样的做法往往导致后期代码的高昂维护成本,甚至需要重构。假如开发人员在工作中能够对软件工程的设计原则、规范有着清醒透彻的认知,能够显著地提升整个项目团队的工作效率。
时间总是流逝地很快,这门课就这样步入了尾声。没能在有限的时间内跟随老师学到更多的知识是我最大的遗憾!

原创粉丝点击