您的位置:首页 > 编程语言 > C语言/C++

软件工程(C编码实践篇)学习总结【实验楼系列shiyanlou.com】

2016-11-20 16:16 405 查看

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

  有些事情没有亲身去体验去经历,永远不知道书上总结的一些思想方法是多么的实用,软件工程是将软件按照工程化方法去开发软件,不是当时完成客户需求就可以了,而是需要大量的时间用于后期维护,之所以为了软件能顺利完成,方便后期维护,就需要代码风格规范的要求,接口规范和通用原则,callback函数的使用,子系统可重用的设计的引出等等,这些是书本没法体验到的,可以说,这些只有在实践中才能检验到自己的不足,才能深刻的理解那些前辈们呕心沥血总结出来的软件工程理论和思想。

  第一次在全程完整地参与了一门网络课程的学习,通过听孟宁老师的课,在实验楼完成线上代码练习,从最开始连实验环境都不会使用到模块化设计的代码,到可复用的代码和回调函数等接口设计,不同于以往的注重空洞理论,这门线上课程重视实践,可以使我们对软件工程有一个直观感性的认识。在老师的一路带领下,顺利地完成了软件课程的学习。本科也是软件工程专业的,软件工程中的概念如果照本宣科,十分空洞无聊,就是传说的“专业课里的政治课”,确实,软件工程中有大量的概念和晦涩难懂的工程实践方法,更别说是线上课程,没有和学生的互动,想要讲的有新意,确实很难。但是我是在这里感受到了老师的用心,把每一节课都讲得尽量生动形象,比如:在讲函数的可重入性(reentrant)及线程安全时,将多进程的抢夺资源行为比如为一家人早上抢厕所,(づ ̄ 3 ̄)づ,虽然不是特别文雅,但是确实通俗易懂,点个赞。

课程报告与代码

第一周 课程实验环境准备

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

hello world简单,这次实验主要还是用来熟悉实验环境和vim工具的。

vim工具确实很爽,但是由于以前一直用ide,这次接触vim确实还是专门找了教材看了一下,vim快速入门这篇不错,可以看一下

实验楼确实是一个在线学习的好地方,虽然有时会不稳定,有一些小bug,但是指示清晰,使用方便,免费的,体验还是很棒的。

第二周 代码风格规范

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

这个实验耗费了我大量的时间,其中几次严重的事故是因为我没有保存代码,最后,在几次的重新coding之后,终于学会了及时提交代码到版本库的习惯,这是我这个实验的最大收获;

实验并不难,但是却花费了很长时间,主要是注意力不集中所至,还是希望自己能克服环境的影响,在学习的时间中专心无二意!

第三周 基本的模块化设计

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

这次实验的难度还是比较大的,看完老师的视频后就开始写代码了,结果发现不知从何开始,于是又详细的看了一遍,总的来说老师讲解地很详细,特别是对代码的模块化思想进行了较为深入的阐述。

实验中主要的问题就是对这种代码的分拆并不是很熟悉,无法有效地编译和运行,特别是通过数据结构的运用达到类似c++中多态的效果,是很棒的一次尝试和体验。

本次实验比之前的实验加深了难度。由于开-闭原则的使用,使得原先一个代码文件完成所有的功能的方式被放弃,转而将原先的文件分拆成了三个文件,增加了部分代码,但是总体而言,代码反而更加精简和易读,主要使用了函数指针、结构体等知识。通过这次实验,深刻地体会到模块化编程思想地好处,通过分离代码的业务逻辑和数据存储层,有效提高了代码的复用性。

第四周 可重用模块的接口设计

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

有一个问题一直困扰着我很长时间,编译后报告segmentation

fault的错误,查找了很长时间,最后终于在同学的提醒下,发现了问题所在,就是menu.c中关于DataNode的定义,我将

LinkTableNode * next;


放到了最后,使得强制类型转换时发生错误



一个小错误,结果很难发觉出来,说明在编程过程中一定要注意,特别是类型的定义中,牵涉到强制类型转换时,前后顺序一定要格外注意。

第五周可重用模块的接口设计(callback函数)

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

本次实验主要是代码的规范编写以及程序模块化的设计和实现。找到quit命令无法运行的bug还是比较容易的,callback机制还是第一次用到,通过学习,确实增加了理解,感受到利用callback函数参数使Linktable的查询接口的好处,信息的隐藏,是保证程序安全的一个很好的思想。

第七周 子系统的可重用设计

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

本次实验主要将之前的menu命令行小程序变成了一个可以被调用的模块,使用getopt函数用来获取命令行参数,使得可以支持带参数的复杂命令,新学了Makefile文件定义,我们可以直接使用make和makeclean来编译程序和清理自动生成的文件。

每一次的实验都是一个学习的过程,在期间能够静下心来学习和coding,也很真实的感受到自己的进步,受益良多。

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

  说到最大的收获就是通过一次线上课程的学习,跟随这老师完成了一个程序在软件工程的指导下一步一步地趋向完善和通用,亲手体会到软件工程的设计流程,学习到了软件开发的思想。软件工程不是一昧的写代码,而是需要考虑模块化,通用性、接口化、讲究高内聚低耦合、可重入、线程安全等等。由于课程的线上编程过程是在linux的虚拟环境下完成的,学会了vim的简单使用,用vim编代码感觉很高大上O(∩_∩)O

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

  遗憾?虽然自己对软件工程的理解更加深刻了,但是,编程的路还是任重而道远,接下来的路还要自己付出辛勤的努力才能有所得,恨自己不能把老师抱走,跟老师一起学/(ㄒoㄒ)/~~

彩蛋

分享一些老师上课引用的经典名言警句:

if you don’t know where you are , a map won’t help

——Watts S.Humphrey

普遍的做法是,选择一种方法,试试看;如果失败了,没关系,再试试别的。不管怎么样,重要的是先去尝试。

——富兰克林 D.罗斯福

夫事未有不生于微而成于著,圣人之虑远故能谨其微而治之,众人之识近故必待其著而后救;治其微则用力寡而功多,救其著则竭力而不能及也。

——资治通鉴

自信人生两百年,会当击水三千里

——毛泽东

广告时间

欢迎大家访问我的——

github主页:https://github.com/linmufeng

个人网站:http://linmufeng.github.io

csdn博客:http://blog.csdn.net/qq470869852

我的微博:@林沐风一直在努力

如果能点一波关注想必是极好的(★ ω ★)

以上
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  软件工程 c语言