软件工程的发展
20世纪60年代到80年代初
主要成果:提出瀑布模型、开发了诸多过程式语言(如C、Pascal)和开发方法(如Jackson方法、结构化方法)、开发了一些支持工具(调试工具、测试工具)
。
特征:前期主要研究系统实现技术,后期开始关注软件质量和软件工程管理。
20世纪80年代以来
主要成果 :提出《软件生存周期过程》、开展计算机辅助工程(CASE)、面向对象语言(如Smalltalk、C++)、提出面对对象软件开发方法等。
概念: 是指导计算机软件开发和维护的一门工程学科。采用工程的概念、原理、技术和方法来开发与维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来,以经济地开发出高质量的软件并有效地维护它,这就是软件工程。
软件工程方法学:
面向对象方法: 把数据和行为看成同等重要,它是一种以数据为主线,把数据和对数据的操作紧密地结合起来的方法。
面向对象方法学4个要点:
优点:
对象(object):融合了数据及在数据上的操作行为。
类(class):类是对具有相同数据和相同操作的一组相似对象的定义。
继承:按照父类与子类的关系,把若干个相关类组成一个层次结构的系统。
消息:对象彼此间仅能通过发送消息互相联系。
采用结构化技术来完成软件开发的各项任务;
划分为若干个阶段,然后顺序地完成每个阶段的任务;
每个阶段的任务相对独立,而且比较简单,降低了整个软件开发工程的困难程度; 前一个阶段是后一个阶段的前提和基础,而后一阶段提出的解法更具体,细节更多;
每个阶段结束前必须从技术和管理两方面对这个阶段的开发成果进行严格的检查,通过之后这个阶段才算结束;保证了质量,提高可维护性;
当软件规模庞大,或者的需求模糊或随时间而变化时,传统方法学往往不成功;维护起来仍然很困难。
方法:是完成软件开发的各项任务的技术方法,回答“怎样做”的问题;
工具:是为运用方法而提供的自动的或半自动的软件工程支撑环境;如,CASE(Computer-Aided Software Engineering )工具
过程:需要完成的一系列任务的框架,它规定了完成各项任务的工作步骤。
概念: 通常把在软件生命周期全过程中使用的一整套技术方法的集合称为方法学(methodology),也称为范型(paradigm)。
3要素:
传统方法学(生命周期方法学或结构化范型)——强调自顶向下:
面向对象方法学——强调主动地多次反复迭代
面向对象方法学的尽量模拟人类习惯的思维方式,使开发软件的方法与过程尽可能接近人类认识世界解决问题的方法与过程。
面向对象方法学开发软件的过程,是一个主动地多次反复迭代的演化过程,保证了在各项开发活动之间的平滑过渡。
促进了软件重用。最终的软件产品由许多较小的、基本上独立的对象组成,每个对象相当于一个微型程序,而且大多数对象都与现实世界中的实体相对应,降低了复杂性,提高了可理解性,简化了开发和维护工作。