继承是指一个类因承袭而具有另一个类的能力和特征的机制或关系。父类具有通用性,而子类具有特殊性。子类可以从其父类,直至祖先那里继承方法和属性。利用继承,只要在原来类的基础上修改、增补、删减少量的数据和方法,就可以得到子类,然后生成不同的对象实例。继承的另一个优点是接口的一致性,即父类衍生子类时,父类的操作接口也传递给其子类。继承机制最主要的优点在于支持重用。结构化方法中的过程调用虽然是重用的典型例子,但层次不如继承高。继承的作用有两个方面:一是减少代码冗余;二是通过协调性减少相互之间的接口和界面。
5.封装性(Encapsulation)
封装就是将事物包起来,使外界不知其实际内容。在程序设计中,封装就是将一个实际()()。
隐藏机制,用户只需根据对象提供的外部特性接口访问对象。封装的标准是:具有一个清楚的边界,对象的所有私有数据、内部程序(成员函数)细节被固定在这个边界内;具有一个接口,用于描述对象之间的相互作用、请求和响应,即对消息的说明;对象内部的实现代码受封装壳的保护,其他对象不能直接修改本对象拥有的数据和代码。
继承和封装并不矛盾,封装指的是将属于某类的一个具体的对象封装起来,使其数据和操作成为一个整体;而继承是对类而言的。从另一个角度看,继承和封装机制还具有一定的相似性,它们都是一种共享代码的手段。继承是一种静态共享代码的手段,而封装机制所提供的是一种动态共享代码的手段。
6.多态性(Polymorphism)
不同对象收到同一消息后可能会产生完全不同的结果,这一现象称为多态。在使用多态时,用户可以发送一个通用消息,而实现的细节则由接收对象自行决定,这样同一消息就可以调用不同的方法。多态的实现受到继承性的支持。利用类继承的层次关系,把具有通用功能的消息存放在高层次,而实现这一功能的不同行为放在较低层次,使得在这些低层次上生成的对象能够给通用消息以不同的响应。多态性的本质是一个同名称的操作可对多种数据类型实施操作的能力,即一种操作名称可被赋予多种操作的语义。
由于多态性,使程序在编译时根据当时的条件动态地确定和调用要求的程序代码,称为动态绑定(DynamicalBinding)。动态绑定比较灵活,是面向对象程序设计语言的一个特点,是与类的继承性、多态性相联系的。
10.5.3面向对象方法的开发过程
面向对象的系统开发过程一般经历3个阶段,即面向对象的系统分析(OOA)、面向对象的系统设计(OOD)和面向对象的系统实施(OOP)。
1.面向对象的系统分析(OOA)
这一阶段主要利用面向对象技术进行需求分析,其过程大致如下。
依据对象分析的主要原则,首先利用信息模型(实体关系图,即ER图)技术识别出问题域中的对象实体,标识出对象间的关系,然后通过对对象的分析,确定对象的属性及方法,利用属性变化规律完成对象及其关系的有关描述,并利用方法演变规律描述对象或其关系的处理流程。分析阶段得到的模型是具有一定层次关系的问题空间模型,这个模型有弹性,且易修改、易扩充。
面向对象分析主要运用以下原则。
(1)构造和分解相结合的原则
构造是指由基本对象组装成复杂或活动对象的过程;分解是对大粒度对象进行细化,从而完成系统模型细化的过程。这一原则是实现OOP的基础。
(2)抽象和具体结合的原则
抽象是指强调事物本质属性而忽略其非本质细节;具体则是对必要细节加以刻画的过程。面向对象方法中,抽象包括数据抽象和过程抽象:数据抽象把一组数据及其有关部门的操作封装起来;过程抽象则定义了对象间的相互作用。
(3)
封装是指对象的各种独立外部特性与内部实现相分离,从而减少程序的相互依赖,有助于提高程序的可重用性。
(4)继承性的原则
继承是指直接获取父类已有的性质和特征,而不必再重新定义。这样,在系统开发中只需一次性说明各对象的共有属性和服务,对子类的对象只需定义其特有的属性和方法。继承的目的也是为了提高程序的可重用性。所谓服务,是指对象收到消息后所执行的操作。
2.面向对象的系统设计(OOD)
这一阶段主要利用面向对象技术进行概念设计。值得注意的是,面向对象的设计与面向对象的分析使用了相同的方法,这就使得从分析到设计的转变非常自然,甚至难以区分。可以说,从OOA到OOD是一个积累性的模型扩充过程。这一过程使得设计变得很简单,它主要是从增加属性、服务开始的一种增量式的扩充。这一过程与结构化开发方法那种从数据流程图(DataFlowChart,DFC)到结构图所发生的剧变截然不同。
一般地说,设计阶段就是将分析阶段的各层模型化的“问题空间”逐层扩展,得到一个模型化的特定“实现空间”。有时还要在设计阶段考虑硬件体系结构、软件体系结构,并采用各种手段(如规范化)控制因扩充而引起的数据冗余。
3.面向对象的系统实施(OOP)
这一阶段主要是将OOD中得到的模型利用程序设计实现,具体操作包括选择程序设计语言编程、调试、试运行等。前两个阶段得到的对象及其关系最终都必须由程序设计语言、数据库等技术实现,但由于在设计阶段对此有所侧重考虑,故系统实现不会受具体语言的制约`,因而该阶段占整个开发周期的比重较小。当然,应尽可能采用面向对象的程序语言,一方面,由于面向对象技术日趋成熟,支持这种技术的语言已成为程序设计语言的主流;另一方面,选用面向对象语言能够更容易、更安全和更有效地利用面向对象机制,更好地实现OOD阶段所选的模型。
10.5.4面向对象方法的优缺点
面向对象的开发方法以对象为基础,利用特定软件工具直接完成从对象客体的描述到软件结构之间的转换。其主要优点如下。
①采用面向对象思想,使得系统的描述及信息模型的表示与客观实体相对应,符合人类的思维习惯,有利于系统开发过程中用户与开发人员的交流和沟通,缩短了开发周期,提高了系统开发的正确性和效率。
②系统开发基础统一于对象之上,各阶段工作平滑,避免了许多中间转换环节和多余的劳动,加快了系统的开发进程。
③面向对象技术中的各种概念和特性,如继承、封装、多态性及消息传递机制等,使软件的一致性、模块的独立性及程序的共享性和重用性大大提高,也与分布式处理、多机系统及网络通信等发展趋势相吻合,具有广阔的应用前景。
但是,面向对象的开发也存在明显的不足。首先,必须依靠一定的软件技术支持;其次,在大型项目的开发上具有一定的局限性,必须以结构化系统开发方法的自顶向下的系统,、。
10.6计算机辅助软件工程
早期,人们进行系统开发的主要手段是手工方式,系统开发的速度和质量主要取决于系统分析人员、程序设计人员等的个人经验和水平。这种工作方式的弊端是系统开发周期长,工作效率低;质量得不到保证,数据一致性差;文档不规范,系统维护工作量大等。20世纪80年代迅速发展起来的软件开发技术领域———计算机辅助软件工程(CASE)使得制约信息系统开发的瓶颈被打破,为实现系统开发自动化提供了途径。
计算机辅助软件工程(ComputerAidedSoftwareEngineering,CASE),原来是指用来支持管理系统开发的、由各种计算机辅助软件和工具组成的大型综合性软件开发环境,随着各种工具和软件技术的产生、发展、完善和不断集成,逐步由单纯的辅助开发工具环境转化为一种相对独立的方法论。
10.6.1CASE方法的基本思想
CASE方法解决系统开发问题的基本思想是:结合系统开发的各种具体方法,在完成对目标系统规划和详细调查后,如果系统开发过程的每一步都相对独立且彼此形成对应关系,则整个系统开发就可以应用专门的软件开发工具和集成开发环境(CASE工具、CASE系统、CASE工具箱、CASE工作台等)来实现。
系统开发过程中的对应关系与所采用的具体系统开发方法有关,大致包括:结构化方法中的业务流程分析,数据流程分析,功能模块设计,程序实现,业务功能一览表,数据分析、指标体系,数据/过程分析,数据分布和数据库设计,数据库系统等;面向对象开发方法中的问题抽象,属性、结构和方法定义,对象分类,确定范式,程序实现等。
在实际开发过程中,上述对应关系不一定完全一一对应,利用CASE方法开发的结果之间可能无法实现平滑的衔接,仍然需要开发人员根据实际进行修改、补充。因此,CASE方法具有以下特点。
①实际开发一个系统时,必须根据所采用的开发方法,结合CASE工具和环境进行。
②作为一种辅助性的开发方法,CASE可以为系统开发过程中的具体工作,如各类图表、程序及文档的生成,提供快速自动化的工具和途径。
③CASE环境的使用改变了系统开发中的思维方式、工作流程和实现途径,与其他系统开发方法存在很大差别,因而称为一种方法论。
10.6.2CASE开发环境
CASE作为一个通用的软件支持环境,它应能支持所有软件开发过程的全部技术工作及其管理工作。CASE的集成软件工具能够为系统开发过程提供全面的支持,其作用包括:生;、;、
报告系统信息和项目管理信息;建立系统的原型并模拟系统的工作原理;生成系统的代码及有关的文档;实施标准化和规格化;对程序进行测试、验证和分析;连接外部词典和数据库。
为了提供全面的软件开发支持,一个完整的CASE环境应具有的功能包括:图形功能、查询功能、中心信息库、高度集成化的工具包、对软件开发生命周期的全面覆盖、支持建立系统的原型、代码的自动生成等。这些工具可分为以下3种类型。
(1)系统需求分析工具
此工具是在系统分析阶段用来严格定义需求规格的工具,能将逻辑模型清晰地表达出来。该阶段的工具有原型构造工具、数据流程图绘制与分析工具、数据字典生成工具等。
(2)系统设计工具
设计工具是用来进行系统设计的,如系统结构图设计工具、数据库设计工具、图形界面设计工具等。
(3)软件生产工具
该类工具主要用于最后的软件设计和编程工作。
这些工具集成在统一的CASE环境中,就可以通过一个公共接口,实现工具之间数据的传递,连接系统开发和维护过程中的各个步骤,最后在统一的软、硬件平台上实现系统的全部开发工作。
10.6.3CASE方法的特点
CASE方法的特点主要有以下几点。
①解决了从客观对象到软件系统的映射问题,支持系统开发全过程。
②提高了软件质量和软件重用性。
③系统开发具有较高的自动化水平,缩短了系统开发周期。
④简化了软件开发的管理和维护。
⑤自动生成开发过程中标准化、规范化的统一格式文档,减少了随意性,提高了文档的质量。
⑥自动化的工具使开发者从繁杂的分析设计图表和程序编写工作中解脱出来。
习题
一、名词解释
1.生命周期2.模块化3.原型4.对象5.类6.继承性7.服务二、简答题
1.管理信息系统的开发应采用什么样的策略?为什么?
2.目前管理信息系统开发方法有哪些?这些开发方法之间有什么联系和区别?
。
4.结构化方法的基本思想是什么?它有什么特点?
5.什么是原型法?其产生的背景和基本思想是什么?
6.什么是面向对象方法?其产生的背景和基本思想是什么?
7.CASE方法的基本思想是什么?它有什么特点?
8.人类分析事物的认知方法有哪些?这些方法有什么特点?
三、单选题
1.原型开发中的原型是指()。
A.设计方案B.系统早期可运行的一个版本
C.用户要求D.目标系统
2.对大型系统开发应采用()。
A.生命周期法B.原型法C.面向对象法D.前三种方法结合3.管理信息系统的开发是一项复杂的系统工程,它既涉及(),又涉及社会问题。
A.经济问题B.组织问题C.技术问题D.环境问题
4.大型系统的开发,一般采用()的开发策略。
A.“自下而上”B.“自上而下”
C.“自上而下规划,自下而上实现”D.“自下而上规划,自上而下实现”
5.系统分析法是以系统的观点和系统工程的方法与步骤来分析事物的。它的具体做法是对系统开发过程中的每一步都严格按照先整体后局部,从()的原则进行。
A.特殊到一般B.一般到特殊C.一般到一般D.特殊到特殊管理信息系统规划是从服从于企业战略的角度,对企业信息系统近期、中期、长期的目标、实施策略和方法、实施方案等内容所做的统筹安排。它源于企业整体战略规划,同时又是企业整体规划的组成部分。信息系统开发应该基于企业总体战略目标来进行,将管理目标转化为对信息的需求,按照“自顶向下”的方法来进行。系统规划是管理信息系统开发过程的第一步,它是站在企业战略层次,把企业作为一个有机的整体,全面考虑企业所处的环境、本身的潜力、具备的条件及企业进一步发展的需要,勾画企业在一定时期内所需开发的各类信息系统的应用项目,以及所需要的各类资源。