软件工程

来源:互联网 发布:百度地图js api ios10 编辑:程序博客网 时间:2024/06/03 23:09

本课程为网易云课堂孟宁老师《软件工程:C编码实践篇》的配套实验与作业。软件工程C编码实践篇强化实践能力训练,从学生较为熟悉的编程训练入手,重实践,形成对软件工程直观感性的认识。

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

实验内容
实验一:写一个hello world小程序
https://www.shiyanlou.com/courses/reports/1290192
实验心得:第一次在Linux下操作编程,学习了vim编辑器的使用。同时学会了git的基本指令方法,如git clone、git add 、git push等。
代码地址:https://github.com/SA17225549/software/tree/master/lab1

实验二:命令行菜单小程序V1.0
https://www.shiyanlou.com/courses/reports/1291334
实验心得:初步接触了模块化设计思想,学会了将命令封装成函数从而进行一部分的独立,初步解耦。
代码地址:https://github.com/SA17225549/software/tree/master/lab2

实验三:内部模块化的命令行菜单小程序V2.0
https://www.shiyanlou.com/courses/reports/1293356
实验心得:这次实验是在第二次实验的基础上完成的,在上次实验中加入模块化的思想进一步提高了代码的健壮性和复用性,进一步提高内聚性。
代码地址:https://github.com/SA17225549/software/tree/master/lab3

实验四:用可重用的链表模块来实现命令行菜单小程序V2.5
https://www.shiyanlou.com/courses/reports/1295930
实验心得:在前两次实验的基础上,加入了linktable模块,实现了链表功能的增添,增加了链表的可重用性。实现功能接口,进一步降低耦合度。
代码地址:https://github.com/SA17225549/software/tree/master/lab4

实验五:用callback增强链表模块来实现命令行菜单小程序V2.8
https://www.shiyanlou.com/courses/reports/1298620
实验心得:接触并了解了callback回调函数,利用函数指针调用另一函数,实现调用函数与被调用函数的分离,降低了程序的耦合度。同时讲解了接口隐藏的方法与软件设计时的细节。
代码地址:https://github.com/SA17225549/software/tree/master/lab5

实验六:函数的可重入性(reentrant)及线程安全
实验心得:学习了可重入函数的定义以及与线程安全之间的关系
1.可重入与线程安全的关系:可重入函数不一定是线程安全的,不可重入函数一定不是线程安全的。
2.可重入函数的条件:不为连续的调用持有静态数据;不返回指向静态数据的指针,所有数据由函数调用者提供;使用本地数据,或通过制作全局数据的本地拷贝来保护全局数据;绝不调用任何不可重入的函数。
3.进程与线程:线程独立拥有函数调用栈,共享进程的资源。

实验七:将menu设计为可重用的子系统
https://www.shiyanlou.com/courses/reports/1303894
实验心得:通过makefile文件简化编译操作,同时使用getopt函数获取命令行参数,使menu子系统支持带参数的复杂命令。然后将menu.c从主函数中独立出来后,会极大的降低menu.c和其它文件的耦合程度,修改以及增添新的内容时能尽可能少的考虑其它文件的影响。这样能进一步提高menu程序的可重用性和扩展性。
代码地址:https://github.com/SA17225549/software/tree/master/lab7

实验总结
通过孟宁老师7个单元软件工程课程的学习,对于软件工程、软件开发的理解又进了一步。课程期间,孟宁老师一直在强调代码的书写规范问题、模块化设计思想问题以及KISS原则。并在课程中通过一次一次的实验将命令行程序一步一步地降耦升聚,提升了程序的健壮性和复用性,贯彻了软件工程提升软件可用性的精髓,使我受益良多。但自己的代码编写能力有限,将软件工程的思想与自己工程的结合能力有限,编写出高质量的代码还需要更多的努力。

原创粉丝点击