您的位置:首页 > 其它

高级软件工程&&《软件工程(C编码实践篇)》课程学习心得及内容总结

2017-11-13 19:32 489 查看
李伯威+原创作品转载请注明出处+《软件工程(C编码实践篇)》MOOC课程http://mooc.study.163.com/course/USTC-1000002006

一、心得体会

首先我要真挚的感谢孟宁老师两个月来不辞辛苦的授课,这让我在其中获益良多.经过两个多月的学习,高级软件工程的课程就要结束了.本人在本科也学习过软件工程这门课程,本想应该没有那么多不同,但是没想到这门课由孟宁老师演绎的如此的不同.尤其是在代码层面的学习,孟老师教授我们把代码作为整个工程的一部分,从代码设计规范,模块化思想,子系统的接口可重用,线程安全等多个方面来编写代码。而且孟老师打破了传统软件工程书本教学的方式,而是理论与实践完美的结合起来,每个实验之间都相互关联,实验内容层层深入,实验难度逐步增加,为我们理解软件工程的思想起到了明显的作用。学习完这几周的课程,我对代码从另外一个角度有了一个全新的认识,真的受益颇多!探索如何以系统性的、规范化的、可定量的过程化方法去开发和维护软件。这样的思维我认为对于一个准程序员来说是非常珍贵的经验.以下是本课的部分经验

(1)在代码的规范上,需要项目组统一格式,函数和变量的命名方式,每个语句前是用tab键还是用4个空格 等等都需要规范!

(2)在设计规范上,要保证代码是高内聚,例如一个函数只做一件事,一个模块只做一类事的,实现功能尽量用库函数;还有要遵循“不和陌生人说话”的原则,以保证除了类提供的接口,别人无法访问类的其他内容。同时要合理使用数据结构、控制结构等来简化代码。

(3)在模块化的思想中,讲究高内聚低耦合,接口要规范,代码要注意通用性。

(4)在处理多线程问题中,需要关注函数是否是可重入的,使用互斥锁,读写锁以保证多线程安全。

(5)在子系统的设计当中,要设计出可重用的接口。

(6)如何设计带参数的函数等。

正如孟宁老师课上讲的:“软件工程是计算机学科中一门政治课,无论在今后的论文答辩还是实际工作中,都会产生深远的影响。”一门学科,比如土木工程,机械工程等,一旦被提高到工程的高度,就意味这不仅仅只是一门科目的学习,需要多学科交错,以有关的自然科学和技术科学为理论基础,结合生产实践中的技术经验,研究和解决在设计,开发,测试,维护软件中的全部理论和实际问题。所以,人们在软件危机(Software Crisis)后,专门设立研究软件工程来解决在软件开发中遇到的问题。现今,数不清的互联网企业加持着计算机软件蓬勃发展,特别是移动端的
App,开发周期短,更新频率高,需求不稳定,这就要求我们这些软件开发人员要对软件工程理解深刻,特别对敏捷开发这一方面。所以孟宁老师在整个授课周期内,安排了一个实践开发项目,来模拟公司中小项目的敏捷开发,强调了只开发有用的制品,聚焦可执行的软件,提倡交流、沟通、团结、合作,让开发者全面理解软件需求。

二、实验报告参考目录

第一周实验:写一个hello world小程序 注:学习Linux环境下的一些基本操作,如cd,gcc,vim,git等,熟悉实验环境。

第二周实验:命令行菜单小程序v1.0 注:学习代码风格的原则:简明、易读、无二义性。并注意缩进、命名、注释等代码编排的风格规范。

第三周实验:内部模块化的命令行菜单小程序V2.0 注:学习模块化思想相关的知识,学会将系统抽象为两个层级:菜单业务逻辑和菜单数据存储。

第四周实验:用可重用的链表模块来实现命令行菜单小程序V2.5 注:学习高内聚低耦合的思想,使代码更具有通用性并且更容易管理。注意接口规范。

第五周实验:用callback增强链表模块来实现命令行菜单小程序V2.8 注:利用callback函数参数接口更加通用,注意接口的信息隐藏

第七周实验:将menu设计为可重用的子系统 注:熟悉使用Makefile文件来简化多个文件的编译命令,学习menu程序的可重用性,学习getopt函数。

三、总结

综上:高级软件工程这门课收获是非常多的,不同于其他传统老师上课讲学生下面听的课程,这门自己动手在写vue.js的代码种不断强化自己对软件工程这么学科的深度理解,互相学习的课程使我认识到软件工程对我们今后的开发,面试找工作都有着重大的影响,在一个团队中一个好的设计,好的代码质量将给团队带来巨大的效益。代码风格良好也为程序带来了良好的可读性,同时也便于软件后期的维护和升级。现在自己在编程的时候经常会自动的考虑代码规范性问题,以及要不要模块化,要不要对接口加以改进,这是学习这门课最大的收获。每一次课每一次实验都有一种新的体验:原来我还可以这样!这是一种思想的前进,思维的提升,相比于两成时间写代码,其余时间维护测试,思维的提升更重要!最后再次感谢孟宁老师和两位助教老师的辛苦指导,没有你们的辛苦耕耘,就没有我们的获益良多!

最大的遗憾就是没有使用vue.js设计一个符合孟宁老师授课的思想的一个完整项目,但是我会争取在课下时间去弥补此次的遗憾.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: