第5章信息系统的建设(下)5.1系统建设方法的发展5.1.1结构化方法存在的问题1)整个系统的开发工作是劳动密集型的2)系统开发的整个工作费时过长,难以适应环境的急剧变化。3)对用户需求的变更不能做出迅速的响应。4)结构化的假设:即前一阶段的工作为后一阶段的工作任务规定内容和范围。5)维护工作繁重,专门人才紧缺。5.1.2原型法、面向对象方法与计算机辅助软件工程5.1.3信息系统外包信息系统外包是指一个组织将本组织信息系统的开发、维护与运行管理的部分或全部工作委托给外部的信息服务组织。5.1.4新的信息技术的应用WEB服务、WEB技术、人工智能中的推理技术、人工神经网络技术、智能代理技术、数据挖掘技术及多维数据库和联机分析处理技术、数据仓库技术5.1.5注重信息系统的社会属性随着信息系统的规模与作用范围的扩大和在组织中使命与战略地位的提升,组织与人们对信息系统的依赖性大为提高,信息系统的行为与绩效和整个组织以及各利益相关者的目标、利益取向关系密切。系统的社会因素如制度的、伦理道德的、组织的和人的问题在信息系统工作过程中突出地显露出来。5.2原型法5.2.1原型法的提出传统的结构化开发方法强调系统开发各阶段的严谨性,要求在系统设计和实施阶段之前预先严格定义出完整准确的功能需求和规格说明。但对于不确定因素较多的系统建设,在系统开发前期,用户往往对未来的新系统仅有一个初步的、模糊的想法,很难提出详细明确的系统需求。传统的结构化方法基于两个基本假设:用户提出的需求明确、具体且具有相对稳定性;系统的应用环境(包括系统开发环境、技术环境、企业组织环境等)相对稳定。5.2.2原型法的基本思想原型法的基本思路是用户与系统分析、设计人员合作,根据用户提出的最基本的问题和想法,先很快建立一个应用系统的骨架,作为应用开发的实验模型。通常把这个实验模型叫做系统的原型(Prototype)。用户先运行这个原型系统,熟悉它,使用它,受到启发和取得经验,然后对系统的目标和功能提出精确、具体的需求,在对系统的需求最后决定后,再用传统的方法(生命周期法)建设系统。通常原型系统的部分程序可以在后来的系统建设中直接采用。原型法是传统方法和用户开发相结合的方法。5.2.3原型法的工作步骤(1)明确用户基本信息需求。(2)建立初始的原型系统。(3)使用原型系统,进一步明确用户需求。(4)修改和完善原型系统。按照第二步的原则,根据用户的意见修改和完善原型系统,这一步要强调的是尽快完成并交付用户,然后又回到第三步,在建立原型系统时,第三步和第四步是反复进行的,直到用户和系统其它建设人员均满意为止。修改后的原型可用原型用户和分析设计者满意吗?第三步第二步第四步修改原型使用原型,进一步明确用户需求建立初始原型明确用户基本需求和应用规模,成本估计待改原型初始原型直接将原型用作应用软件使用此原型作为应用系统开发依据NY第一步建立原型系统的步骤5.2.4原型法的运用方式1)探索型主要是针对开发目标模糊、用户和开发人员对项目都缺乏经验的情况,其目的是弄清对目标系统的要求,确定所期望的特性并探讨多种方案的可行性。2)实验型主要用于在规模开发和实现之前,建立真实系统的模型,由局部模型不断实验改进,考核、验证方案是否合适、规格说明是否可靠,最后得到整个系统的模型。3)演化型其目的不在于改进规格说明和用户需求,而是将系统改造得易于变化,在改进原型的过程中将原型演化成最终系统。5.2.5原型法的优缺点及其适用范围优点:1)原型法是以用户为中心来开发系统的,它提供了一个验证用户需求的环境。2)它加强了开发过程中的用户参与程度,降低了需求的不确定性及系统开发风险。3)可以缓和通信和交流的困难,可以提供很好的系统说明和示范,简化开发过程的项目管理和文档编制。缺点:1)对于大型的系统,如果不经过整体性系统分析与设计,要想直接用编程与屏幕显示来处理是很困难的。2)对于大量的运算、逻辑性较复杂的程序模块,原型法很难迅速构造一个合适模型来供人评价。3)对于基础管理不善、信息混乱的问题,原型法应用有一定困难。5.3面向对象方法1.面向对象思想的起源1967年,第一个面向对象的语言—Simula。80年代,Smalltalk、C++、ObjectiveC等通用面向对象语言出现。2.面向对象思想的成熟Smalltalk—80和C++语言被越来越多的人所理解和接受,形成面向对象编程(Object-OrientedPrograming,即OOP)3.信息系统的开发与面向对象思想4.OOP解决问题的思路5.3.1面向对象的基本概念1.对象和类1)对象的基本概念:问题空间中与系统问题处理相关的事物的抽象体,它是把事物的属性和对属性数据的操作方法结合而成的整体。对象的三个特性:(1)预定义行为:对象初始时所定义的动作序列。(2)对象的状态:一个对象可以有任意个属性或域,对象的状态和存储在它的域中的值相对应。(3)对象的标识:标识是对象的唯一编号,用来与其他对象相区别。2消息与操作方法(method)消息(message):对象之间进行通信的数据。一个消息由下列三个元素组成:•消息名;•零个或多个参数列表,为接收对象提供数据信息;•对接收对象的引用。操作方法(method):与一个对象有关的过程,即实现某一操作的一段代码。方法绑定:对象收到一个消息后,决定调用哪个方法来响应该消息的过程。执行与消息对应的预定义行为可能会产生三种结果:•返回一个值给消息发送者。•改变接收者的状态。•改变作为参数传给接收者的对象的状态。图5-1对象的分解图消息到达服务(操作方法)属性(数据)消息发出对象接口3、对象接口(Interface)•对象的接口是以一组操作方法的形式出现的,每一个操作都对应于在响应某个消息时对象所完成的预定义行为,客户通过对象的接口来理解对象支持的各种行为,并根据接口来发送消息。•调用对象的操作方法要遵守一定的规则,这些规则描述了如何使用对象的每一个操作。•对象接口可以分为公有接口和限制型接口。4、类(class)•类的概念:类是在对象之上的抽象,一个类定义了一组大体上相同的对象。一个类所包含的操作方法和属性数据描述了一组对象的共同行为和属性。1)对象是类的具体化,是类的实例。2)每一个对象都属于某个类。类不仅决定了对象的类型,还决定它的域和方法。类的层次结构一个类的上层可以有超类,下层可以有子类,就形成了一种层次结构,在这种层次结构中,一个类可以有多个超类,也可以有多个子类。在面向对象方法中,类(包括超类、子类)具有对象的全部特征。强调类的概念和层次结构是为了强调对于的大体相同的一批对象的共性进行抽取,以形成具有继承关系的类层次结构。而继承性正是面向对象方法建立的系统结构最优越的特性之一。一个类对应着一个概念,它的子类对应着概念中满足某一特殊形式的子概念,每个子类的实例也是父的实例。有两种层次结构:1)分类结构即一般--具体结构关系或者是“isa”关系,如交通工具和汽车的关系,这类分类结构即是继承性的基础,也是面向对象技术中抽象和泛化机制的体现。2)组装结构即整体--部分结构关系或者是“apartof”关系。如汽车和车轮的关系。这是一种由部分聚集成整体的聚集关系。5、继承性(inheritance)•继承性是类层次结构中的一个重要特点,是超类和子类之间共享数据和操作方法的机制。图5-2所示为超类A和它的子类B之间的继承关系。类A得到继承,叫做“单重继承”。如果一个子类有两个以上的父类,则称为“多重继承”。图5-2类的继承关系继承部分从A继承AB增加部分•继承是软件重用的一个基本机制。当通过继承定义一个新类时,新类获得了已存在类的域和行为。图5-3中的类图所描绘了继承层次结构。RectangleEllipseRegionPointFigureLineSegment图5-3类的层次结构Circle•继承有下面三种使用方式:1.子类定义新的属性和方法作为对它所继承的属性和方法的补充。2.子类重新实现所继承的一个或多个方法。3.子类实现一个或多个其父类声明但没有实现的方法。•使用继承可以创建一个类家族。•当利用继承定义新类时,这个新子类就可以被客户使用,软件系统也因增加新的类型而扩展了。6、封装性(encapsulation)•封装的概念:把一组相关软件元素组织到一起的方法。•①对所有对象的内部软件范围的边界进行限定;•②对各对象之间相互作用的接口进行描述;•③对每个对象的内部实现(操作程序和数据)进行保护。•封装的基本单位是对象•利用封装来隐藏那些不属于对象公有接口的软件元素称为信息隐藏。7、多态性(polymorphism)•多态的概念:在收到消息时,对象要予以响应,不同的对象收到同一消息可产生多种不同的结果,即会有多种不同形式,这就是多态。•多态的实现受到继承性的支持•利用类层次的继承关系,把具有通用功能的消息存放在高层次,而实现这一功能的不同的行为放在较低层次5.3.2统一建模语言UML概述1UML的发展从二十世纪八十年代初期开始,用不同的方法进行面向对象的分析与设计。到了二十世纪九十年代中期,出现了第二代面向对象方法,著名的有Booch‘94、OMT(TheObjectModelingTechnique)的沿续以及Fusion等。UML(UnifiedMethodL)是第三代用来为面向对象开发系统的产品进行可视化说明和编制文档的方法,UML的形成过程见图5-4所示。图5.4•UML的优势和特点:1、UML融合了Booch、OMT和OOSE方法中的基本概念;2、UML扩展了现有方法的应用范围;3、UML是标准的建模语言,而不是标准的开发过程。•UML仅仅是一种建模语言,是软件开发方法中的一部分,它是独立于过程的,但它与以用例为驱动、以体系结构为中心、迭代及增量的开发过程相结合将会发挥最大的优势。•UML具有一个完整的概念模型,提供了一套完整、全面的表达方法,其主要元素包括:UML的基本构造块、支配这些构造块如何放在一起的规则和一些运用于整个UML的公共机制。•1、UML的构造块–在UML中可以将词汇划分为3种构造块,即3类词汇或基本元素:事物、关系和图。(1)UML中的事物事物是对模型中最具有代表性的成分的抽象,可分为结构事物、行为事物、分组事物和注释事物;结构事物:通常是模型的静态部分,描述概念或物理元素,UML中共有7种结构事物:–a.类(class):与面向对象方法中类的概念一致。图5-5a中,给出了类Transaction,它包含一个属性和两个操作。–b.接口(interface):描述了一个类或构件的一个服务的操作集,图5-5b给出了一个接口IPrint的图示。–d.用例(usecase):代表了一个系统功能,是对一组动作序列的描述,系统执行这些动作将产生一个对特定的参与者(即系统用户)有价值而且可观察的结果。图5-5d给出了一个用例的图示法。–c.协作(collaboration):定义了一个对象之间的交互,由一组共同工作以提供某种协作行为的角色和其它元素共同构成的一个群体,这些协作行为大于所有元素的各自行为的总和。图5-5c给出了一个协作“人员维护”。–e.主动类(activeclass):是一种特殊的类,其对象至少拥有一个线程或进程。–f.构件(component):描述的是系统中的软件物理事物,图5-5e给出了构件的图示法。–g.节点(node):是在运行时存在的物理元素,表示了一种可计算的资源,图5-5f给出了一个节点的图示。IPrint人员维护登录sHello.java应用服务器Transactiontimeexecute()rollback()图5-5a类图5-5b接口图5-5c协作图5-5d用例图5-5e构件图5-5f节点load空闲图5-5g交互图5-5h状态java.lang图5-5i包图5-5j注解图5-5UML中各种事物的图示法•(3)UML中的图UML中主要包括了以下几种图形:•用例图(usecasediagram);•类图(classdiagram);•对象图(o