在我没有上这门课时,我对“软件工程”四个字的概念只是模糊的以为是软件编程。而现在这门课结束了,对软件工程这门学科有了清晰的认识。
在我看来,软件工程与其说是一门课程,不如说是一门思想。是一个如何去分析和处理问题的过程,应该说其范畴已经远远不止局限于该门课程,成为了一个综合的一个能够解决问题的思想集合。
这门课的特别之处在于比其他门课多了“助教”,有书本《构建之法》的作者团队为我们担任助教,给予我们交流。作者邹欣是微软亚洲互联网工程院首席研发总监,使我们在大学里提前体验社会思想,由助教们帮我们批改作业,提出问题,这是个非常好的学习方法。
其实开发软件,就像是解决一个逻辑问题。想想自己平时是怎样写程序的。首先是要有一个想法,即我写的这个程序是要干什么的。然后就是对要实现的核心功能大概构思一种或多种实现方法,并从中选出一种自认为是较好的;接下来就是将涉及的各种主要或次要功能分成各个模块;最后就是分模块来编码。在我看来,除了第一步外,其余的步骤应该是一个循环的过程。
我们还学习了详细设计的方法,其原则是过程描述是否易于理解、复审和维护,进而过程描述能够自然地转换成代码,并保证详细设计与代码完全一致。包括程序流程图、N-S图、PAD图、HIPO图等等。
最后两个月的任务是团队任务,自由组合来进行团队分工,这也是很好的团队训练,因为等到了公司,软件类工作肯定不是一个人完成的,需要提前去适应团队开发,已经在团队开发中所需要注意的问题。例如编码过程中,如果有多个人编码,如何去保证最后能成功的合并多个人的代码而不出错,这就需要团队之间定义好代码的规范性。而且团队间合作还有一个积极性问题,队友在你慵懒时候还能起到相互督促作用,而使得整个项目往更高水平去开发。
软件工程课程虽已结束,但我对于软件工程的学习才刚刚开始。我体会到项目管理的重要性,随着软件规模、复杂度的不断增加,项目开发中更多的是协作、管理和控制。我学习到很多一般性的方法,例如:需求获取、模块化、计划等等。
在这里感谢我的冯老师的虚心教导,老师在我有困难的时候细心为我指导,给了我很大的帮助。感谢助教老师们给的指导和建议,谢谢你们!