梁作宇 + 原创作品转载请注明出处 + 《软件工程(C编码实践篇)》MOOC课程http://mooc.study.163.com/course/USTC-1000002006
写在前言
很荣幸选择了孟宁老师在中国科学技术大学苏州研究院开设的“高级软件工程”这门课。软件工程作为一门具有主导地位的专业课,孟宁老师用一种全新的授课方式——网易云课堂线上教学,以另一种思维模式,巩固与延伸了我们在线下对课本知识的理解,提高与锻炼了我们实践与应用能力。在这短短的八周学习时间里,获益颇丰。
软件工程之我见
根据IEEE,在软件工程术语汇编中的定义为,软件工程是:
1.将系统化的、严格约束的、可量化的方法应用于软件的开发、运行和维护,即将工程化应用于软件;
2.在1中所述方法的研究。
软件工程对于IT软件行业来说是最基础最根本的学科,一款成功的软件开发周期要从分为三个阶段:
1.定义阶段:可行性研究、初步项目计划、需求分析;
2.开发阶段:概要设计、详细设计、编码与实现、测试;
3.运行和维护阶段:发布、运行与维护。
那么针对于软件工程(C编码实践篇)这门课程,基于代码层面的软件工程又该怎么理解呢?
在线上的六次代码实验和一次线上小测的过程中,我们将一个menu菜单程序从简单的hello world式的小程序,逐步发展与完善,比如规范代码风格、使代码模块化、增加代码可读性、使用链表的操作、设计成可重用的子系统等等。这个过程,将一个简单、朴实无华的小程序,变身为高大上,具有一个严谨框架规范的、符合软件工程要求的程序。
七次线上课程的实验,使程序更趋于完美和严谨,这就是软件工程这门课的初衷,也是软件工程这门学科存在的意义。
C编码实践篇学习之心得
线上开设实验课,对于本人来说是一种全新的体验。刚开始接触网易云课堂和实验楼的我,显得有些力不从心,遇到了一些小麻烦。不过都只是一些平台上的操作问题,在实验一次后,这些“不起眼”的小问题都能迎刃而解。线下孟宁老师对软件工程这门课进行讲解,线上通过代码层面来让我换一个角度和思维去理解软件工程。网易云课堂的软件工程C编码实践篇这门课程,它还让我们熟悉了Linux环境的一些操作和Git的一些操作。对我而言,收获颇丰。
每一次的实验都是有紧密关联的,层层递进,正体现了一个代码的优化与完善。这正是软件工程的意义所在。同时,值得注意的是,从第五次实验开始,到第七次实验,代码的难度陡然增加,本人花费了较长的时间去完成,有的时候我觉得这些时间是毫无意义的,但是老师说,这种找错纠错的过程,本身就是提高。举个例子吧,Makefile文件的编写,我就一直出错,后来查明真相,是空格和Tab键的原因。还有callback的含义和使用,在询问同学、查阅资料后,花了两天的时间,才完成任务。与其说是浪费时间,不如说这些时间是真真正正地让我学到了知识,学到了本事!
线上课堂和实验,这种全新的授课方式,让人耳目一新,一来可以节省线下课堂的时间,二来巩固与延伸了线下授课内容和知识。作为已经快要完成这门课程的学生来说,我是极力支持这种教学模式的,并希望能将其推广。
最后说一句,作为一个学软件的工科生,实践永远是第一位。线上课程多敲敲代码,找找BUG,永远是学习软件开发的不二法门!
实验目录与感
1、课程简介:
识人与识别代码工程质量的类比
2、熟悉Linux实验环境: