说到软件工程,不得不提到我非常喜欢的一个计算机科学家Dijkstra对软件工程的形象概述,他说:“软件工程,是穷途末路的工程”。这句话,一方面说出了软件工程的起源,也形象的表达了对软件工程的无奈,和怀疑。
1.软件危机
在计算机技术发展的初期,人们通常认为,软件就是程序,当时这样的说法是没人去怀疑的。那个时候,程序的开发通常是特定的硬件配合特定的程序,开发者和使用者通常为同一人,软件规模极小,很多很多程序都是一些简单的汇编。然后到了上世纪60年代后期,软件的规模已经发展到了一定的规模,人们逐渐发现开发的成本越来越高,软件的维护消耗的资源已经到了让人吃惊的地步,甚至不可维护。就这样出现了“软件危机的概念”,总得老说就是软件越来越难开发,越来越难维护,严重阻碍了计算机技术的发展,到了所谓的穷途末路。
2.软件工程
“软件危机”的出现促使了软件工程的诞生。软件工程主要是对软件给出新的正确的认识,提出解决软件危机需要的开发方法和开发工具。比如,软件工程认为软件不仅仅是程序,它应该是程序、数据和文档的集合。
3.软件工程方法学
软件工程主要包括方法学和管理方面的内容,是技术和管理结合成的工程学科。方法学主要是传统方法和面向对象方法。
3.1传统方法学
传统方法学又叫结构化方法,就是结构化分析(SA)、结构化设计(SD)和结构化实现(SP),利用支持结构化方法的工具。
结构化方法将软件开发分为:需求、分析、编码、测试和维护。将软件周期分为不同的阶段,用相应的方法实现相应的阶段内容。
3.2面向对象方法
当软件的需求比较模糊或者随时间变化比较大的时候,结构化方法开发和维护会很困难。最主要是结构化方法要么面向数据要么面向行为,没有将数据和行为结合起来。这时候出现面向对象方法,将现实世界抽象成数据和行为的结构体。
结构化方法是将一系列的工作顺序的实行,数据和行为分离,不符合现实世界的实际。而面向对象方法,完全模拟了现实世界的抽象归纳和继承发展。
当然面向对象的发展,主要得益于面向对象技术和工具的大力支持,比如从80年代兴起的面向对象语言以及统一建模语言(UML)。
4.软件开发过程
软件开发过程是指软件开发的步骤和活动,,软件系统在实现过程中的所应用方法的。当然对应不同的开发方法,以及不同需求的项目,有不同适合的过程。常见的有:瀑布模型,快速原型模型,增量模型,螺旋模型。
统一过程模型是最数据化的过程模型,不过目前只适合在数学等相关研究领域用途。最近最热门的还由敏捷开发和极限编程,这样的方法对开发人员要求很高,更依赖开发人员的个人素质。
5.最新计算机技术发展
新技术的发展将会对现有软件工程提出新的发展要求,以下主要说明云计算技术的发展以及对软件工程的发展。
最近几年发展最快的,感受最深的当属云计算技术,无论是快捷的阿里云服务还是随处可见的大数据服务,都是云计算发展的体现。云计算的发展改变了人们的生活方式,对软件开发的变革更是巨大无比。云计算将软件工程的面向对象,逐渐发展为面向服务。一个软件的很多子构建直接由云计算提供,使得人们将软件开发的重心从开发转移到需求分析,甚至有人提出了“ 构软件”的概念。云计算还将用户和开发者联系到一起,完全改变了原有的软件工程的模式。虽然还不敢说云计算能够解决软件危机,但是其降低成本提高开发效率是看的见的,其使软件开发模式多元化,商业模式多样化是必然的。
我个人来说,云计算对开发者的改变也是巨大的,我想有一天,小型的应用的开发者将就是用户本身,如果现在的程序员还停留在没有思想的码农生活中,势必会淘汰。
个人观点
在我看来,软件工程如果是一个人,他一定是一个浪子。说他游手好闲,看起又是才华横溢,说他腹无实物,却又被普遍认可。回到起点,软件工程是在走投无路的情况下被逼的提出来的,他并不像其他工程那样建立在真正的科学的基础上,开发一个项目并不是说有软件工程就能很好的开发,没有软件工程就做不好,但是软件工程最大的好处就是在人们不知道怎么去开发的时候,告诉人们怎么去开发。
我觉得软件工程最大败笔就是被人过度的宣扬,膜拜,并没有认识到软件工程只是工具的本质。包括很多提出著名软件工程思想的科学家,他们并没有什么拿的出的实际作品,我就敢说他们就是胡吹而已,可是只要人们质疑他们提出的方法,他们总是能找出理由,开发者没有完全按照他的方法进行,我想他们自己真的能做到完全按照他们的开发思想做吗像中国人发明的英语语法,语法确实有助于学习英语,但是把语法应试化,过度宣扬,导致了,哑巴英语,过度的软件工程宣扬造就的就是不会开发的软件工程师。
不管是软件工程,还是新型的开发技术,都只是工具而已,这需要有充分的认识。工具的使用,只能使制造力的提高,加强了中国制造的标签,而中国真正缺少的是科学的计算机科学技术的教育体系。
魏思政
2015.10.12
计算机学院楼
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!