软件工程是一门研究用工程化方法构建和维护有效的、实用的和高质量的软件的学科。而工程化的最主要的特点是系统化、规范化、可量化并且严格控制流程得完成开发或生产任务,在此严格的条件下优质、高效的进行生产活动。工程化思想的这种优秀品质,决定了她在生产活动中不可替代的地位。比如各大品牌的手机(如Nokia、Apple)都严格的控制其生产流程,所以品牌手机比山寨机质量要好很多,售后维护也比山寨机做到系统、规范。
在软件开发过程中,我们也运用工程化思想指导开发。软件工程是前人总结的心得经验,前车之鉴 后事之师啊。就像武林之中的泛泛之辈意外的得到一本终极武功秘籍,武林至尊 指日可待 岂不快哉!遥想当年,诸葛孔明不就是凭借着对《孙子兵法》以及其他兵书的透彻理解,灵活运用成就千古奇谈的吗?
软件工程提供了很多模型,其中非常经典的瀑布模型,她是一种理想化模型,为了保障软件开发的正确性,每一阶段任务完成后,都必须对它的阶段性产品进行评审,确认之后再转入下一阶段的工作。评审过程发现错误和疏漏后,应该及时反馈到前面的有关阶段修正错误或弥补疏漏,然后再重复前面的工作,直至某一阶段通过评审后再进入下一阶段。
瀑布模型有许多优点,如可强迫开发人员采用规范的方法;严格规定了每个阶段必须提交的文档;要求每个阶段交出的所有产品都必须经过质量保证小组的仔细验证等。
但瀑布模型也存在缺点,其主要表现在:①在软件开发的初始阶段指明软件系统的全部需求是困难的,有时甚至是不现实的。而瀑布模型在需求分析阶段要求客户和系统分析员必须做到这一点才能开展后续阶段的工作。②确定需求后,用户和软件项目负责人要等相当长的时间才能得到一份软件的最初版本。如果用户对这个软件提出比较大的修改意见,那么整个软件项目将会蒙受巨大的人力、财力和时间方面的损失。所以说她是理想化的模型,但她的清晰明朗,规范紧凑 为其他模型提供了参考。故将其作为教材典范。
记得有一次面试,面试题目就是:如果让你开发一个图书馆管理系统,请你简单描述一下你会怎么去实现以及你的想法。想必大家在求学时期就做过图书管理系统,大概都了解怎么做,也不用工程化思想就能做到,但用语言又不知道该怎么描述。如果你用软件工程思想将步骤用你自己的话简单叙述一遍,相信你的面试分一定不会低。
作为程序员,虽然不用做软件工程类的工作,也应该培养软件工程思想。正所谓不想当将军士兵不是好士兵。在工作中面对自己的代码,多以软件工程化思想推敲考究一下,看是否能够将代码写的更漂亮、更优秀。闲的时候可以设想一下如果自己是软件架构师或者项目经理,该如何设计整个软件开发周期,预测在开发过程中可能遇到的问题及相应的解决方案。只有时刻准备着那个职位,才会有机会获得那个职位,机会是留给有准备的人的,不是吗?