从结构化范型到面向对象范型的转变_第1页
从结构化范型到面向对象范型的转变_第2页
从结构化范型到面向对象范型的转变_第3页
从结构化范型到面向对象范型的转变_第4页
全文预览已结束

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

从结构化范型到面向对象范型的转变

1计算机专业教育对象的特殊性一般来说,风格是观察和分析问题的方法论。在计算机软件技术中,软件范型是指软件的组织和结构设计技术。它不仅指软件静态的组织和结构模型,还指动态软件开发和结构的模型。软件和软件流程是相同问题的两个方面。为了获得和理解整个软件的内容,例如范围、使用、意义和价值,我们必须同时从这两个方面来理解它。软件范型是软件工程学中十分重要的概念、原则和思维模式.严格地说,软件工程学是一门应用性的工程学科,也可以称之为计算机科学与工程科学的交叉学科.它的宗旨是应用工程学的方法和技术,研究软件开发与维护的方法、工具和管理,其目标是提高软件质量和软件生产效率.自1968年北大西洋公约组织的一次计算机学术会议上提出“软件工程”(SoftwareEngineering)概念以后,学术界形成了众多软件方法学的分支,比如结构化方法,有限状态机方法,PETRI方法,形式化方法,面向对象方法等.其中,结构化方法发展最快,在软件产业界得到广泛的接受和使用,较早成为占主导地位的软件构造与开发模式,人们称之为“结构化范型”.由于结构化方法学把过程和数据分离为相互独立的实体,如何使表达处理过程的程序和表达处理对象的数据相容便成为极难克服的困难.虽然可以做到一定程度上程序和数据的重用,但是无法从根本上解决软件生产中的“构件组装”问题.面向对象的软件方法学在被产业界冷落的20年中日渐成熟,在结构化范型面临困境的时候,终于脱颖而出.因较好地解决重用性问题而受到学术界和产业界的青睐,“面向对象范型”正在逐渐地成为主流地位的软件范型,犹如Windows取代DOS一样,来势勇猛、不可阻挡.本文的目的在于描述从结构化范型到面向对象范型的转变,分析这种转变产生的影响,提出学校教育和继续教育中必须对此高度重视,及时地在课程、教材、实习中反映这种转变,使计算机专业的教育和培训与学术界和产业界保持尽可能地同步与接轨,培养出在软件产业界直接可用的“成品”,而不是走上社会后还需半年或一年以上的培训才能工作的“半成品”.2结构化软件方法学的基本思想结构化方法(StructureMethod)是程序设计方法学领域和产业界最早使用的方法,也是长期流行的占主导地位的软件方法.1966年Bohm和Jacopini证明:只用三种基本的控制结构就能实现任何单入口、单出口的程序.这三种基本的控制结构是“顺序”、“选择”和“循环”.将这三种结构用日本日立制作所二村良彦提出的问题分析图(PAD)表示,分别为图1(a)、(b)和(c).实际上,用顺序结构和循环结构完全可以实现选择结构,在理论上最基本的控制结构只有两种.这些研究成果为结构程序技术奠定了理论基础.人们把支持这3种结构的语言称为结构化程序设计语言,把基于这种理论的设计称为结构化程序设计,把与此相关联的软件技术称为结构化软件技术.当然,严格地讲程序和软件并不是完全相同的概念,程序设计方法学和软件工程学研究的途径和侧重点也有所差异.但是,随着信息技术和产业的发展,两门学科研究的内容和方法相互渗透,两条途径的界限逐渐模糊化、一体化了.所以本文并不严格地区分它们,有时甚至根据习惯,交换使用这些基本一致的术语.一般地说,结构化软件方法学的基本思想是:(1)把顺序、分支、循环3种基本控制结构组成的模块视为被结构化了的,把结构化的模块视为一切软件系统的基本构成单位.(2)按照自顶向下、逐步求精的思路,对现实的复杂系统实行功能分解,把软件系统逐级地划分成若干子系统,子系统再分成若干模块.其中,每个模块是可以单独编程的结构化单元,它们功能相对独立,接口简明,界面清楚,编码、测试、使用和维护都比较方便.(3)使用一批简单的结构化的模块组合成复杂的软件系统,完成预定的功能.这样,结构化方法就能较好地驾驭软件复杂性,从而成为实用的、易操作的软件方法,在中小规模软件开发中应用获得成功.3面向对象的方法对象是人们主观认识的客体.客观世界由各种各样的对象组成.每个对象都有各自的内部状态和运动规律.对象之间不是孤立的.对象之间的相互联系与作用,构成各种各样的复杂系统.上述认识,用计算机软件术语来描述,则是:每个对象的静态结构和特征可用特征值来表达,即是数据;对象的动态特征和运行规律,就是它的操作(或功能),可以用程序过程来表示.任何对象的数据和操作两者是紧密联系、不可分割的.比如在芯片上存储数据之后,就改变了它的结构或状态.而结构或状态的改变也必然导致功能的改变.面向对象的方法(ObjectOrientedMethod)把数据和操作通过“封装”实现综合,把对象内部的数据和过程对外部隐蔽起来,只向外部提供一个窗口发送和接受消息,实现对象间的通讯与相互操作.结构化方法也研究对象,但它把对象的数据和操作分开.结构化的程序实际上表达处理数据的过程,因此它不面向整个对象,主要是面向其中的信息处理过程,简言之曰,它是面向过程的.面对象的方法学认为:软件不能仅是一组处理程序的集合,更不能只是一组数据,而是一组包含数据与该数据上操作的对象的集合;对象之间的联系与互动不单是调用与返回,而是在它们之间发送与接受消息,通过消息激活机制把对象动态地连接在一起,协同完成复杂的任务,如图2所示.软件的集成不再是增量式的扩充与调试,而是构件组装、“柔性”制造.它将一批具有标准接口的软件对象(数据与功能的统一)整合成复杂的系统,而不必考虑该对象产生的硬件平台、软件环境、程序语言、数据库机制、不同的网络协议、以及不同的用户界面.就像汽车总装厂不必考虑零部件的生产厂家、所用的生产设备等等,只要求相互间有符合设计的标准接口.这样就可以形成一种“对象总线”.在总线上流通的不再是数据、程序、地址、控制之类,而是对象组件.这样对象范型就为生产可重用的软件构件提供一条有效的途径,能比结构化范型更好地驾驭软件的复杂性.对象间通过通讯实现互操作正是新一代客户/服务器(Client/Server)模式的实质.因为具有数据转换接口的远程过程调用(RPC)机制,使得对象间可以相互提供服务,实现互操作.这样就能支持因特网(Internet)上的分布对象计算.在对象总线上,任何组件(对象)都可以相互作用和通信.与抽象类的单个对象设计不同,框架是协同完成一些工作的对象的设计,为开发人员提供了一个内部结构,它具有丰富的功能和很强的内部对象类之间的联接.这样,在总线上,任何对象都可运行,由框架给出一个“有序的社会”(即虚拟社会、信息的社会),使得任何遵循约定和规则的对象都能合法地运行与活动.而这种对象的“社会”是靠传统的结构化方法与技术建立不起来的.4可视化框架、方法与工具当代软件工程的发展正面临着从传统的结构化范型到面向对象范型的转变.对象技术作为新范型的核心技术正在得到新的语言、新的系统和新的方法学的支持.它正在发展成为21世纪软件工程的主流技术.对象技术的影响面不仅是软件工程学术界和产业界,而且是整个计算机科学界,信息技术(IT)产业界.它甚至影响到人们的思维方式,对哲学等社会科学产生作用.在软件工程学术界,专家、学者踊跃探索和交流,呈现百家争鸣的局面.以创立者命名的种种面向对象方法,比如Booch方法,Coad和Yourdon方法,Jocobson方法,Rumbaugh方法,Wirfs-Brock方法等等不断出现.有的专家,如Hutt,编书列举并比较16种不同的面向对象的分析与设计方法.另一些专家,比如DTkach,WFang等则试图建立统一的面向对象的方法,提出可视化技术与面向对象方法的结合,即可视化建模技术(VMT),试图取各家所长,基于现有面向对象方法中的成熟技术,采用这些方法中的最好的思想、特色、观点及技术,并把它们融合成一个完整的开发过程.在软件产业界,Microsoft公司1993年发表软件对象模型/对象连接和嵌入标准(COM/OLE).国际对象管理集团(OMG)于1995年推出公共对象请求代理系统结构规范(CORBA)2.0.对象范型已成为软件工业标准化的理论和技术基础.软件开发者已经(或正在)抛弃沿用几十年的传统结构化范型,实践新的构件组装模型,如图3所示.为了向应用开发者和最终用户提供所需的对象组件,部分软件厂商继续生产可重用的用户界面、信息管理、系统管理和任务管理等公用设施(CommonFacility).另一些厂商则为不同的专业领域(如金融、保健、制造、零售、电子贸易、交通等)的市场提供接口定义语言(IDL)描述的接口和框架以及标准构件,从而形成“领域工程”(DomainEngineering).软件从业人员的结构发生新的分化,软件开发人员一分为三,即软件构件制作人员,软件构件采购销售人员,系统分析及软件装配人员.5计算机专业课程内容设计要求面对学术界、产业界、思想界中正在实现的由传统结构化范型到面向对象范型的转变,教育界已经开始适应这种转变.首先,软件工程比以往更加受到计算机教育专家的重视.比如1999年10月在重庆召开的全国高等院校计算机教育研讨会上,美国Illinois大学教授CarlK.Chang的特邀报告题为:通向软件工程时代的未来计算机教育计划.这位教授是IEEE和ACM中负责制订计算机专业教育计划的委员会副主席.在美国斯坦福大学教学计划中,以软件工程为龙头形成新的系列课程.理论课包括语言、软件工程、及软件工程高级课题3个层次;实践课包括多种语言编程、单独项目开发及大项目开发3个层次.在我国北京大学等高校把面向对象的方法学作为软件工程的主流技术讲授给学生.但是,国内也有大量的学校,在非计算机专业中完全不上软件工程课,只讲如何编程序,在计算机专业中只开设2个学分的软件工程课程,不可能也没有安排实践活动.有的教师甚至认为;软件工程讲座一下就行了.在2个学分的软件工程课中,也基本上介绍传统僵化的软件瀑布模型,对面向对象方法讲得很少,更谈不上动手实践.结果,学生毕业后要用的未认真学,花了时间和精力学的却派不上用场.教育者应先受教育,为了把软件技术由传统的结构化方法转移到面向对象方法,教师必须首先学习、研究和实践.在继续教育、成人教育计划中,也应当把面向对象范型作为重要的教学内容.6面向技术的发展、实现和教育的新变革在20世纪90年代初期,一位美国教授(J.Bien)访问中国时,看到书店里充斥着DOS书籍,关于Windows的图书较少,他指出DOS正在死去,Windows即将占领市场.过了五年的功夫,书市上的Windows取代了昔日DOS书籍的地位.今天,面向对象技术取代结构化软件技术的地位也是势不可挡的历史潮流.无论是研究人员、市场营销人员、软件开发人员、教师

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论