云课堂软件工程(C编码实践篇)学习之我见
2016-11-19 14:44
288 查看
梁作宇 + 原创作品转载请注明出处 + 《软件工程(C编码实践篇)》MOOC课程http://mooc.study.163.com/course/USTC-1000002006
1.将系统化的、严格约束的、可量化的方法应用于软件的开发、运行和维护,即将工程化应用于软件;
2.在1中所述方法的研究。
软件工程对于IT软件行业来说是最基础最根本的学科,一款成功的软件开发周期要从分为三个阶段:
1.定义阶段:可行性研究、初步项目计划、需求分析;
2.开发阶段:概要设计、详细设计、编码与实现、测试;
3.运行和维护阶段:发布、运行与维护。
那么针对于软件工程(C编码实践篇)这门课程,基于代码层面的软件工程又该怎么理解呢?
在线上的六次代码实验和一次线上小测的过程中,我们将一个menu菜单程序从简单的hello world式的小程序,逐步发展与完善,比如规范代码风格、使代码模块化、增加代码可读性、使用链表的操作、设计成可重用的子系统等等。这个过程,将一个简单、朴实无华的小程序,变身为高大上,具有一个严谨框架规范的、符合软件工程要求的程序。
七次线上课程的实验,使程序更趋于完美和严谨,这就是软件工程这门课的初衷,也是软件工程这门学科存在的意义。
每一次的实验都是有紧密关联的,层层递进,正体现了一个代码的优化与完善。这正是软件工程的意义所在。同时,值得注意的是,从第五次实验开始,到第七次实验,代码的难度陡然增加,本人花费了较长的时间去完成,有的时候我觉得这些时间是毫无意义的,但是老师说,这种找错纠错的过程,本身就是提高。举个例子吧,Makefile文件的编写,我就一直出错,后来查明真相,是空格和Tab键的原因。还有callback的含义和使用,在询问同学、查阅资料后,花了两天的时间,才完成任务。与其说是浪费时间,不如说这些时间是真真正正地让我学到了知识,学到了本事!
线上课堂和实验,这种全新的授课方式,让人耳目一新,一来可以节省线下课堂的时间,二来巩固与延伸了线下授课内容和知识。作为已经快要完成这门课程的学生来说,我是极力支持这种教学模式的,并希望能将其推广。
最后说一句,作为一个学软件的工科生,实践永远是第一位。线上课程多敲敲代码,找找BUG,永远是学习软件开发的不二法门!
1、课程简介:
识人与识别代码工程质量的类比
2、熟悉Linux实验环境:
工欲善其事必先利其器
实验一:写一个hello world小程序
http://www.shiyanlou.com/courses/reports/1244367
这次是第一次在课堂上和同学们一起使用,并且互评,觉得这种学习方式有利于同学们共同进步,本实验比较简单,主要是让学者熟悉实验楼的用法,熟悉并掌握
Linux的基本操作,编写简单的hello
world小程序。
3、代码风格规范:
课程实验项目要求
简约而不简单
实验二:命令行菜单小程序V1.0
https://www.shiyanlou.com/courses/reports/1244972
实验二要求实现命令菜单小程序,本实验老师要求重视实验代码规范,并且以后的实验代码都要规范,主要的代码规范包括:缩进4个空格、所有的“{“和”}”要独占
一行,上下之间成对的“{}”要对其等等,养成良好的代码习惯,不仅有助于我们自己看代码,也有助于其他程序员阅读代码,好的代码习惯将对我们受用一生。
4、基本的模块化设计
Separation of Concerns
实验三:内部模块化的命令行菜单小程序V2.0
https://www.shiyanlou.com/courses/reports/1245399
通过此次学习,加深了对程序模块化重要性的认识,在以后的学习工作中,注意把代码的业务逻辑和数据存储使用不同的源文件实现。此次实验也加强了我的编码
能力与动手能力。
5、可重用模块的接口设计
天王盖地虎
实验四:用可重用的链表模块来实现命令行菜单小程序V2.5
https://www.shiyanlou.com/courses/reports/1246275
本次实验中用到了#ifndef以及#endif,这是一个新的知识点,我开始了解并掌握他们的用法,这是一个进步和提高。
每次的实验内容都是层层递进,对我们模块化编程与规范化编程都有很大的帮助,改善了我们之前的代码风格和习惯,受益匪浅。
6、可重用模块的接口设计(callback函数)
卧底
实验五:用callback增强链表模块来实现命令行菜单小程序V2.8
https://www.shiyanlou.com/courses/reports/1247037
本次实验还是有一定难度的,自己做的时候遇到很多问题,在同学的帮助下才艰难完成。这次实验我学会了callback的使用,对回调函数有了更深刻的认识。同
时我也进行了代码的解压和拷贝,前几次尝试时都操作错误,这说明我在这方面的不熟练,希望在课下时间能多多练习。高软实验的难度逐渐加大,我也越来越力不
从心,可见我的水平还是不够的,希望能及时查缺补漏,赶上其他同学的进程和水平。
7、函数的可重入性(reentrant)及线程安全浅析
一家人早上抢厕所
实验六(测验):函数的可重入性(reentrant)及线程安全
8、子系统的可重用设计
够用就好
实验七:将menu设计为可重用的子系统
http://www.shiyanlou.com/courses/reports/1248078
这是实验楼最后一次实验,也是这个系列难度最高的一次实验。做的时候比较谨慎,不过错误也很多,在实验五的linktable.c和linktable.h的基础上,了解了如何
使用getopt函数获取命令行参数,以支持带参数的复杂命令。 同时我还学会了利用Makefile文件进行编译与运行,使用户可以使用make和make clean来编译程序和清
理自动生成的文件。本次实验使我收获很多,同时认识到了自己的不足之处,希望在以后的学习和工作中能够不断提高自己
980c
的编码能力。
网易云课堂授课方式的确很新颖,值得推广。感谢孟宁老师这段时间的授课与教学,还有三位助教学长、同学的帮助与指导。
我不仅完成了软件工程这门课的学习,还充分认识到了自己的不足之处,通过线上实验与学习,强化与巩固了我的实践代码能力,纠错找错能力,这是最难能可贵的。
遗憾是有的,实验过程的效率不高,让我浪费了许多很宝贵的时间。不过这同样也是一笔珍贵的财富,让我充分理解了程序的内涵与概念,强化了所学的知识水平。还有,我对Linux操作、Git操作尚有不足之处,这也是一大遗憾,希望能在以后的学习工作中,加强重视,完善自我!
最后,再一次感谢孟宁老师!由衷致谢!
写在前言
很荣幸选择了孟宁老师在中国科学技术大学苏州研究院开设的“高级软件工程”这门课。软件工程作为一门具有主导地位的专业课,孟宁老师用一种全新的授课方式——网易云课堂线上教学,以另一种思维模式,巩固与延伸了我们在线下对课本知识的理解,提高与锻炼了我们实践与应用能力。在这短短的八周学习时间里,获益颇丰。软件工程之我见
根据IEEE,在软件工程术语汇编中的定义为,软件工程是:1.将系统化的、严格约束的、可量化的方法应用于软件的开发、运行和维护,即将工程化应用于软件;
2.在1中所述方法的研究。
软件工程对于IT软件行业来说是最基础最根本的学科,一款成功的软件开发周期要从分为三个阶段:
1.定义阶段:可行性研究、初步项目计划、需求分析;
2.开发阶段:概要设计、详细设计、编码与实现、测试;
3.运行和维护阶段:发布、运行与维护。
那么针对于软件工程(C编码实践篇)这门课程,基于代码层面的软件工程又该怎么理解呢?
在线上的六次代码实验和一次线上小测的过程中,我们将一个menu菜单程序从简单的hello world式的小程序,逐步发展与完善,比如规范代码风格、使代码模块化、增加代码可读性、使用链表的操作、设计成可重用的子系统等等。这个过程,将一个简单、朴实无华的小程序,变身为高大上,具有一个严谨框架规范的、符合软件工程要求的程序。
七次线上课程的实验,使程序更趋于完美和严谨,这就是软件工程这门课的初衷,也是软件工程这门学科存在的意义。
C编码实践篇学习之心得
线上开设实验课,对于本人来说是一种全新的体验。刚开始接触网易云课堂和实验楼的我,显得有些力不从心,遇到了一些小麻烦。不过都只是一些平台上的操作问题,在实验一次后,这些“不起眼”的小问题都能迎刃而解。线下孟宁老师对软件工程这门课进行讲解,线上通过代码层面来让我换一个角度和思维去理解软件工程。网易云课堂的软件工程C编码实践篇这门课程,它还让我们熟悉了Linux环境的一些操作和Git的一些操作。对我而言,收获颇丰。每一次的实验都是有紧密关联的,层层递进,正体现了一个代码的优化与完善。这正是软件工程的意义所在。同时,值得注意的是,从第五次实验开始,到第七次实验,代码的难度陡然增加,本人花费了较长的时间去完成,有的时候我觉得这些时间是毫无意义的,但是老师说,这种找错纠错的过程,本身就是提高。举个例子吧,Makefile文件的编写,我就一直出错,后来查明真相,是空格和Tab键的原因。还有callback的含义和使用,在询问同学、查阅资料后,花了两天的时间,才完成任务。与其说是浪费时间,不如说这些时间是真真正正地让我学到了知识,学到了本事!
线上课堂和实验,这种全新的授课方式,让人耳目一新,一来可以节省线下课堂的时间,二来巩固与延伸了线下授课内容和知识。作为已经快要完成这门课程的学生来说,我是极力支持这种教学模式的,并希望能将其推广。
最后说一句,作为一个学软件的工科生,实践永远是第一位。线上课程多敲敲代码,找找BUG,永远是学习软件开发的不二法门!
实验目录与感
友情提示:实验链接加大醒目!1、课程简介:
识人与识别代码工程质量的类比
2、熟悉Linux实验环境:
工欲善其事必先利其器
实验一:写一个hello world小程序
http://www.shiyanlou.com/courses/reports/1244367
这次是第一次在课堂上和同学们一起使用,并且互评,觉得这种学习方式有利于同学们共同进步,本实验比较简单,主要是让学者熟悉实验楼的用法,熟悉并掌握
Linux的基本操作,编写简单的hello
world小程序。
3、代码风格规范:
课程实验项目要求
简约而不简单
实验二:命令行菜单小程序V1.0
https://www.shiyanlou.com/courses/reports/1244972
实验二要求实现命令菜单小程序,本实验老师要求重视实验代码规范,并且以后的实验代码都要规范,主要的代码规范包括:缩进4个空格、所有的“{“和”}”要独占
一行,上下之间成对的“{}”要对其等等,养成良好的代码习惯,不仅有助于我们自己看代码,也有助于其他程序员阅读代码,好的代码习惯将对我们受用一生。
4、基本的模块化设计
Separation of Concerns
实验三:内部模块化的命令行菜单小程序V2.0
https://www.shiyanlou.com/courses/reports/1245399
通过此次学习,加深了对程序模块化重要性的认识,在以后的学习工作中,注意把代码的业务逻辑和数据存储使用不同的源文件实现。此次实验也加强了我的编码
能力与动手能力。
5、可重用模块的接口设计
天王盖地虎
实验四:用可重用的链表模块来实现命令行菜单小程序V2.5
https://www.shiyanlou.com/courses/reports/1246275
本次实验中用到了#ifndef以及#endif,这是一个新的知识点,我开始了解并掌握他们的用法,这是一个进步和提高。
每次的实验内容都是层层递进,对我们模块化编程与规范化编程都有很大的帮助,改善了我们之前的代码风格和习惯,受益匪浅。
6、可重用模块的接口设计(callback函数)
卧底
实验五:用callback增强链表模块来实现命令行菜单小程序V2.8
https://www.shiyanlou.com/courses/reports/1247037
本次实验还是有一定难度的,自己做的时候遇到很多问题,在同学的帮助下才艰难完成。这次实验我学会了callback的使用,对回调函数有了更深刻的认识。同
时我也进行了代码的解压和拷贝,前几次尝试时都操作错误,这说明我在这方面的不熟练,希望在课下时间能多多练习。高软实验的难度逐渐加大,我也越来越力不
从心,可见我的水平还是不够的,希望能及时查缺补漏,赶上其他同学的进程和水平。
7、函数的可重入性(reentrant)及线程安全浅析
一家人早上抢厕所
实验六(测验):函数的可重入性(reentrant)及线程安全
8、子系统的可重用设计
够用就好
实验七:将menu设计为可重用的子系统
http://www.shiyanlou.com/courses/reports/1248078
这是实验楼最后一次实验,也是这个系列难度最高的一次实验。做的时候比较谨慎,不过错误也很多,在实验五的linktable.c和linktable.h的基础上,了解了如何
使用getopt函数获取命令行参数,以支持带参数的复杂命令。 同时我还学会了利用Makefile文件进行编译与运行,使用户可以使用make和make clean来编译程序和清
理自动生成的文件。本次实验使我收获很多,同时认识到了自己的不足之处,希望在以后的学习和工作中能够不断提高自己
980c
的编码能力。
总结与感谢
网易云课堂授课方式的确很新颖,值得推广。感谢孟宁老师这段时间的授课与教学,还有三位助教学长、同学的帮助与指导。我不仅完成了软件工程这门课的学习,还充分认识到了自己的不足之处,通过线上实验与学习,强化与巩固了我的实践代码能力,纠错找错能力,这是最难能可贵的。
遗憾是有的,实验过程的效率不高,让我浪费了许多很宝贵的时间。不过这同样也是一笔珍贵的财富,让我充分理解了程序的内涵与概念,强化了所学的知识水平。还有,我对Linux操作、Git操作尚有不足之处,这也是一大遗憾,希望能在以后的学习工作中,加强重视,完善自我!
最后,再一次感谢孟宁老师!由衷致谢!
相关文章推荐
- 软件工程(C编码实践篇)学习总结
- 软件工程(C编码实践篇)学习总结
- 软件工程学习理解与心得《软件工程(C编码实践篇)》MOOC课程http://mooc.study.163.com/course/USTC-1000002006
- 软件工程(C编码实践)学习总结——中国科学技术大学孟宁老师主讲!
- 软件工程(C编码实践篇)学习总结
- 软件工程(C编码实践篇)学习总结
- 软件工程(C编码实践篇)学习总结
- 软件工程(C编码实践篇)学习总结
- 软件工程(C编码实践篇)学习总结
- 《软件工程(C编码实践篇)》学习总结
- 软件工程(C编码实践篇)学习总结
- 软件工程(C编码实践篇)学习心得
- 软件工程(C编码实践篇)学习总结【实验楼系列shiyanlou.com】
- 软件工程(C编码实践篇)学习总结
- 软件工程(c编码实践篇) 学习总结
- 软件工程(c编码实践) 学习笔记(一)
- 软件工程(C编码实践篇)学习总结
- 软件工程(C编码实践篇)学习总结
- 软件工程(C编码实践篇)学习总结
- 软件工程(C编码实践篇)学习总结