这一学期我迎来了一门很贴近编程实践的一门课:软件工程。第一次上课,王建民老师就给了我一种耳目一新的感觉,他并没有像其他老师一样按照既定的书本或者是PPT对这门课进行介绍,而是先引入了“做中学”的概念,然后就这一概念进行了具体的介绍。王老师使用了学习游泳的过程模拟学习软件工程这门课程的学习。这让我对如何进行这门课的学习有了一个大概的了解。
接下来的一系列课程中,王老师围绕着构建之法的结构,对一些软件开发过程中要注意的问题做了一定的简介,我也由此对一个软件开发的过程有了全面的认识。原本我以为软件开发就是一群人聚集在一起写代码,学习了这门课程之后我才知道软件并非是一些代码这么简单,在开发软件的过程中,编写代码的工作量其实只占不到所有工程量的30%,而后期的管理和维护更是占了60%到80%之多。一个完整的项目规划须包括,软件的定义,可行性分析报告,项目开发计划,软件需求说明书,概要设计说明书,详细设计说明书,用户操作手册,测试计划,测试分析报告,开发进度报告,项目开发总结报告,软件维护手册,软件问题报告,软件修改报告,等多个文档,每个文档都要上级验收审查,而文档数量众多,要做好这点真的不是很容易,而恰恰写好文档正能保证完成软件工程其中一个目的的关键,既研究如何用最小的开销做出生存期较长的软件,再加上各个阶段都要进行周密的策划、详细的分工部署和人员安排,且各阶段要据具体情况不断的反复才能达成,所以代码只是开发软件这个浩大的工程的一个小小的过程。
而在具体的编程实践中,我也逐渐的认识到个人编程风格的形成是很重要的,因为这影响到了软件后期繁重的维护,大家都要阅读你的程序,如果你写的程序毫无规范可言,那么别人怎么能读懂你的程序?读不懂程序,维护又从何谈起呢?所以,在今后的学习中,一定要注意这方面的培养,在写程序的过程中,我要逐步的在规范的基础上形成属于自己的风格,既方便自己的修改,也方便日后他人的阅读。
王老师说过的一句话,我至今记忆犹新:软件工程是为人服务的,所以是一门有很大学问的,很值得深入学习的系统工程。没错,在我看来,软件工程就是一个围绕着用户,开发者,运维人员的系统,在这个系统里,用户提出自己对软件功能的需求,然后开发者根据这些需求将具体的功能进行实现,把软件交付给用户,之后就是运维人员对于开发出来的软件的运行进行维护了,或者在开发者对于软件做出更新后发布新版本供用户使用。因此,软件开发中对于合作开发的其他开发者要有足够的信心、耐心,不能遇到一点小问题就与组队开发的队员闹掰了,因为软件是大家一起开发的,处理好成员之间的关系,才能更好的为实现最终软件的发布而共同奋斗。
最后,是我对于这门课以及老师的一些建议:
1.软件工程的这种“做中学”模式很有效果,但是任务量有些大,由于大三专业课任务也比较重,所以可能会导致顾此失彼的后果,所以这门课我个人感觉可以提前到大二上,这样一来既不会对专业课产生太大的影响,又可以使学生更早地认识到自身的不足之处。
2.软件工程的学习过程中有很多问题会出现,这时候结对、结组开发的优势就体现出来了,不同的人会有不同的问题,互相借鉴,取长补短就可以顺利地完成开发,但是这样一来也会导致一部分人完全没有作为,就只等着同组的其他人做完之后Copy一下就行了,希望可以对这个问题进行一定程度上的解决。
3.王老师上课的时候很有激情,所讲的内容也不是那么的枯燥乏味,所以基本上不会出现上课睡觉的情况,但是如果真的出现了这种情况,希望老师能用一些更为柔和的方式解决,而不是很强硬的直接去指出某人在睡觉,然后进行一些惩罚措施,其实同学们也都不是有意要在您的课上睡觉的,但是由于某些原因,使他们做出了上课睡觉这个事,只要能给他们一些较为明显的示意,让他们明白在上课时睡觉是不对的,相信他们是不会再犯的。