标签:
“软件工程引论”这门课程尽管没有教授我们具体的算法和编程语言,但是从全面的角度培养了我们如何书写代码并且和团队成员共同完成编程任务的能力。在这学期初,我曾多次听说过“软件工程”这个名词,却始终不了解其深刻含义:什么叫软件?程序、软件、软件工程三者的关系又是如何?然而经过了几节课的学习之后,我拨云见日,从理论上认识了这些基本概念,对这些名词更深入的体会可能需要来源于丰富的实践。后来我们学习了开发流程(包括最基本的瀑布模型)和目前比较流行的敏捷软件开放。实话说,刚开始接触到这些新知识的时候我感觉不足为奇,但是后来随着课程的深入加上自己在团队项目开发中的实践,我逐渐地体会到了这些开发流程、模型和原则的重要性。当然,我们目前所开发的软件规模实在是小得可怜,如果今后有机会从事较大型的软件开发工作,我相信我会对这些理论知识有更入骨的体会,能够结合实例来分析这些流程各自所具有的优点和劣势。还有一点给我比较强烈的震撼是,之前我天真地以为程序猿坐在电脑前反复编写代码和调试代码是开发软件的绝大部分活动。学习之后,我才意识到需求分析、架构设计、详细设计、系统测试扮演着同样重要的地位,软件维护也占据着软件开发中不少的时间和金钱开销。一个比较失败的需求分析可能会使程序员辛辛苦苦、呕心沥血编写的代码毫无意义。这一点我在之前从未重视过,现在发觉大学期间我完成的课程设计可能存在这样的问题:在充分地设计之前就急于动手写代码实现所谓的功能,结果在实际过程中屡屡受挫。另外,这门课还提醒了我一个很重要的方面:写代码要及时写注释。良好规范的注释习惯确实可以帮助自己和其他小伙伴理解代码的内容,可是我每次都会忽视掉添加注释这个习惯。
值得一提的是,邹欣老师编写《现代软件工程-构建之法》给我耳目一新之感。不同于传统的大学教科书,这本书的内容和形式并不呆板教条,而是充满了鲜活的例子和生动、经常能够引起我共鸣的语言。一开始邹老师在绪论里阐述的师生关系便简单直接地戳到了很多大学课程教学的痛点。接下来邹老师循序渐进地介绍了个人技术和流程、结对开发流程、团队开发流程,这也是我们这学期进行实践的主线。邹老师还从实际经验开发的角度讲解了需求分析、软件的设计与实现、软件测试的意义和方法,其间旁征博引,用生动形象的例子将抽象的例子更加生活化、通俗化,方便使我们理解。不过我想,我们只有经过实际工作中的实践才会对这些概念有更加实体化、更加清晰深刻的领悟和个人独特的见解。
标签:
原文地址:http://www.cnblogs.com/liuxin13070013/p/5598557.html