




已阅读5页,还剩17页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第1章1. 结构化分析方法是面向数据流进行需求分析的方法。结构化分析方法使用数据流图DFD与数据字典DD来描述,面向数据流问题的需求分析适合于数据处理类型软件的需求描述。其核心思想是分解化简问题,将物理与逻辑表示分开,对系统进行数据与逻辑的抽象。结构化分析方法体现在用抽象模型的概念,按照软件内部数据传递、变换的关系,自顶向下逐层分解,直到找到满足功能要求的所有可实现的软件为止。 2. 结构化设计方法的基本思想是将系统划分成一些独立的功能模块,这些模块按照一定的组织层次构造起来形成软件结构,通过自顶向下逐步细化的方法将用数据流图表示的信息转换成程序结构的设计描述。结构化分析方法是面向数据流进行需求分析的方法。其核心思想是分解化简问题,将物理与逻辑表示分开,对系统进行数据与逻辑的抽象。结构化分析方法体现在用抽象模型的概念,按照软件内部数据传递、变换的关系,自顶向下逐层分解,直到找到满足功能要求的所有可实现的软件为止。结构化设计是在结构化分析的基础上完成的。结构化设计属于面向数据流的设计方法。在需求分析阶段,通过结构化分析方法,解决了一个关键问题:信息流。数据流是软件开发人员考虑问题的出发点和基础。数据流从系统的输入端向输出端流动,要经历一系列的变换或处理。用来表现这个过程的数据流图(DFD):实际上就是软件系统的逻辑模型。结构化设计要解决的任务,就是在上述需求分析的基础上,将DFD图映射为软件系统的结构。换句话说,这类设计方法允许把用DFD图表示的系统逻辑模型方便地转换成对于软件结构的初始设计描述。从结构化分析到结构化设计工具的转变: 3. 模块是数据说明、可执行语句等程序对象的集合,模块可以单独被命名的而且可通过名字来访问,例如,过程、函数、子程序、宏等等都可作为模块。模块化就是把程序划分成若干个模块,每个模块具有一个子功能,把这些模块集总起来组成一个整体,可以完成指定的功能,实现问题的要求。 第2章1. 结构化软件开发方法存在的问题有:(1)软件开发效率低下。(2)软件的可复用性较差。(3)开发的软件不能满足用户的最终需求。(4)软件维护困难。产生这些问题主要有以下几个原因:(1)面向过程的方法使用的基本技术是结构化设计,它的核心是将用户的需求对应到软件功能上。(2)面向过程方法大多是基于瀑布型的。(3)结构化方法中,过程分析和数据分析之间的边界问题始终未解决。2. 面向对象系统包含的要素有3个:对象,类和继承。3. “接口”通常有两种不同的含义:一是指某种程序语言中存在的特定的语法和结构;二是仅仅指某个类所具有的方法的特征集合。4. 当今软件开发比较重视软件的“可扩充性”和“可复用性”,而软件“模块化”是实现该目标的重要途径。提供模块化实现“复用性”的方法是利用“继承”机制实现类与类之间关系聚集、泛化和组合等。5. 模块是一个对外提供服务的单元。继承使模块的开发实现了“闭合开放”原则,该原则使模块本身的编译和储存可以在类中通过封装实现,又可以使新的模块可以无须重写代码就可以在已有模块的基础上就能获得已有的属性和方法。继承可以实现这一功能。6. (1)构造函数:不能。每个类至少包括一个构造函数,如果在构造类时没有显式的定义构造函数,那么编译器在执行时会为类自动构造一个。在调用时,编译器会根据派生的实现先调用基类后调用派生类的构造函数,因此没有必要继承基类的构造函数。(2)析构函数:同“构造函数”。(3)用户定义的NEW运算符:能。如果运算符设置为公有的,派生类可以继承。(4)友元关系:不能。因为友元函数不是类的成员函数,当然不能被它的派生类继承。(5)成员变量的属性:能。如果是公有的,派生类可以访问。7. (1)以年、月、日、时、分、秒为数据元素的类Ctime。class Ctimeint year,month,day,hour,minute,second;(2)把Ctime类看作基类,用它来派生Stime类,属性中添加国名和格林威治时间差。class Stime:public Ctimeint country_name,time_difference;8. 面向对象的系统分析和设计是将面向对象的方法运用到软件开发的分析设计阶段。面向对象的系统分析和设计的主要目的是完成对某个特定应用论域的分析和系统的建模。应完成的主要工作是描述系统中的对象、对象的属性和操作、对象的动态特征、对象间的相互关系等,从而建立系统的静态模型和动态模型。系统分析和设计应遵循的原则是:(1)系统开发应从客户角度来考虑。(2)信息系统的开发过程并不是一个顺序进行的,它允许步骤的迭代。(3)如果系统成功的可能性受到很大限制时,应取消整个项目。(4)重视文档材料,因为它是系统开发生命周期中重要的成果和重要的参考资料,应加以重视。9. 建立系统模型的步骤包括:(1)研究问题域和客户需求。(2)识别对象。(3)描述对象的内部特征,如对象的属性及方法。(4)描述对象的外部特征,如整体部分结构、一般特殊结构、实例连接和消息连接。(5)对信息建模过程进行规范标准化。10. OOA模型的五个层次包括“主题层”、“结构层”、“服务层”、“属性层”和“类及对象层”。“类及对象层”表示系统的基本构造块;“属性层”反映系统中各个对象之间的相互约束、限制和规则;“服务层”反映对象的服务和实例之间的消息通信;“结构层”反映特定应用域中的结构关系;“主题层”反映系统中相互关联的对象提供的功能。11. 乘法九九表的C+程序如下:源程序代码如下:#include class Tablepublic:void print(int x,int y,int z); void Table:print (int x,int y,int z)Coutx*y=zt ;class Table9:public Tablepublic:void print();void Table9:print()int i,j;int x,y,z;for (i=1;i10;i+)for(j=1;ji+1;j+)x=i;y=j;z=i*j;Table:print(y,x,z);coutendl;void main()Table9 t;t.print();12. (1)消息传递通常要指出接受方。(2)由于接受方具有保持状态的能力,所以如果同一发送方在不同时刻向同一接收方发送同样的信息,接受方可因状态的不同而得到不同的结果。(3)消息传递可以是异步的,发送方可以无需等待接受方返回信息就继续执行后面的操作,因而支持程序的并发和分布操作,而过程调用只能是同步的,本质上是串行的。13. (1)发现类及对象。描述如何发现类及对象。从应用领域开始识别类及对象,从而形成整个应用的基础,然后,据此分析系统的任务。(2)识别结构。该阶段分为两个步骤。第一,识别“一般特殊”结构,该结构反映了类的层次性;第二,识别“整体部分”结构,该结构用来表示一个对象如何成为另一个对象的一部分,以及多个对象如何组装成更大的对象。(3)定义主题。主题由一组类及对象组成,用于将类及对象模型划分为更大的单位,便于理解。(4)定义属性。其中包括定义类的实例(对象)之间的实例连接。(5)定义服务。其中包括定义对象之间的消息连接。14. 开发时间短、效率高、可靠性高,所开发的程序具有更强的适应性。由于面向对象编程的可重用性,可以在应用程序中采用大量的成熟类库,从而大大缩短了开发时间,这样程序更易于维护、更新和升级。同时面向对的继承和封装特征使得应用程序的修改带来的影响更加局部化15. 分析是问题抽象,它主要说明做什么;设计是问题求解,它主要说明怎么做;实现是求出问题的结果。任何方法学对客观世界的抽象和求解过程都是如此。在问题抽象阶段,结构化方法面向过程,按照数据变换的过程寻找问题的突破点,对问题进行逐渐分解细化。描述数据变换的功能模型是结构化方法的重点。如果问题的功能比数据更复杂或者更重要,那么应该选择结构化方法。结构化方法的缺点是在数据结构复杂且比较稳定时,如果以过程为中心主导分析和设计,一旦系统发生变化就会给以后的开发带来很大混乱。 由于对过程的理解不同,在运用面向过程方法进行功能模块的划分时会因人而异。而运用面向对象方法对对象进行细分时,从同一问题域的对象出发,不同人得出相同结论的概率较高。在设计上,结构化方法学遵循自顶向下、由大及小的原则。模块往往与数据库相独立,功能模块与数据库逻辑模式间没有映射关系,程序与数据结构很难封装在一起。如果数据结构复杂,则模块的独立性很难保证。而面向对象方法抽象的系统结构能映射到数据库结构中,很容易实现程序与数据结构的封装。 “形式化原则”是在软件工程遵循的一条基本原则,即对问题的抽象结论应该以形式化语言图形语言、伪码语言等形式化语言表述出来。结构化方法可以用数据流图、系统结构图、数据词典、状态转移图、实体关系图来进行系统逻辑模型的描述;而面向对象方法则主要使用对象模型图、动态模型图、功能模型图等。其中对象模型图近似系统结构图与实体关系图的结合,动态模型图类似状态迁移图,功能模型图类似数据流图。16. 一个接口是一些方法特征的集合,一个接口只有方法的特征,而没有方法的实现,因此这些方法在不同的地方被实现时,可以具有完全不同的行为。抽象类通常代表一个抽象概念,它提供一个继承的出发点。抽象类仅提供一个类型的部分实现。抽象类可以有实例变量,以及一个或多个构造方法。抽象类可以同时有抽象方法和具体方法。相同点:都是用来定义对象的方法特征,都可以被继承。区别:(1)接口只有方法的特征,而抽象类既有方法的特征,也有方法的部分实现。(2)接口将方法的特征和实现分割开来,而抽象类没有。(3)抽象类的进一步抽象,就变为了接口。17. 经典的三层体系结构:(1)表示层:人机交互界面、窗口、报表等。(2)应用逻辑层:用于管理和实现业务过程。(3)数据层:存储系统数据。18. UML一共定义了九种图,它们是:用例图、类图、对象图、状态图、顺序图、协作图、活动图、构件图、部署图。属于UML静态建模机制的有5种图:用例图、类图、对象图、构件图、部署图。属于UM动态建模机制的有:状态图、顺序图、协作图、活动图。19. 交互图是用来描述类之间的行为的。顺序图和协作图两者均被称为交互图。交互图用于一个系统的动态建模。通常,它包括对类、接口、构件和节点的具体的或原型化的实例以及它们之间传递的消息进行建模。20. 要创建一个UML活动图,需要反复执行下列步骤。(1)确定活动图的范围。首先应该确定建模的范围,是对整个系统还是一个子系统建模。一旦定义了活动图的范围,需要其顶部,做一个说明。本题的建模范围是一个学校管理系统中的“报名”部分。(2)确定活动。活动是活动图的核心和完成系统任务必须执行的处理步骤。可从用例模型出发,对每个角色所驱动的主要用例引入一个活动,如果是对整个系统建模,应对每个主要流程引入一个活动。在“报名”的活动图中确定了填写信息表、登记入学、帮助填写信息表、参加开学典礼等6个活动。(3)确定活动的起点和结束点。每个活动图只能有一个起始点但可以有多个结束点,结束点可以是所有活动的结束,也可以是对执行过程的终止。(4)标明活动之间的转变。当一个活动结束时将进入下一个活动,称为活动转移。可标明活动转移的条件或引起活动转移的事件。如活动“填写信息表”有两个活动转移,当填写报名表不正确时,则转移到活动“帮助填写信息表”,当填写正确时,则转移到活动“登记入学 ”。(5)添加判断点。当对建模的逻辑需要做出一个判断时,需要添加判断点。例如,在图2-29中,在登记入学活动之后,还必须按照入学条件进行判断,如果满足条件则继续执行入学报到的活动,不满足者则结束活动。(6)找出并行活动。当两个活动间没有直接的联系,而且它们都必须在第三个活动开始前结束,那么它们是可以并行运行的。在图2-29中,用同步线描述系统任务中的并发活动,参加开学典礼、分班及交纳本学年学费三种活动可并行执行,使用同步线表示它们都要在结束整个流程前完成。第3章三、思考题1. 面向对象体系结构虽然提供了封装性、多态性和继承性,但仍然存在一些缺点不能解决: (1)与具体语言有关,需要借助某种具体的编程语言来实现。(2)只能实现类级别的封装,封装粒度较小。(3)类和模块之间关系紧密,耦合度较高高。(4)需要用户对面向对象语言和类比较了解。由于面向对象技术存在以上不足,导致面向对象体系结构难以形成统一的标准和开发规范,难以达到软件重用所要求的可移植性和互操作性的标准。在这种情况下,面向对象技术促进了组件技术的产生,就像面向对象技术在结构化技术基础上产生一样,组件技术为软件开发提供了改进的方法和新的思路,并最终引发了一种新的技术趋势的产生。2. 在软件开发的早期阶段,应用程序总是被编写成一个单独的模块,就是说一个应用程序就是一个单独的二进制文件。直到后来引入了面向组件的编程思想后,应用程序文件才被划分成多个子模块来分别编写,每个子模块具有一定的功能,并具有一定的独立性。通常,这种模块是以功能为单位来划分的。总之,面向组件编程思想,其指导思想就是分隔。可以这样来理解“分隔”的含义,所谓“分”,就是要将应用程序(尤其是大型软件)按功能划分成多个模块;所谓“隔”,就是指每一个模块要有一定的独立性,要最大限度地与其他模块“隔”开。3. 组件技术是一种较新的软件开发技术。到目前为止,还难以确定组件技术的明确定义。比如,对组件技术的常见说法有以下这些:“二进制软件单元”、“任意场合可部署的软件”、“特别适合第三方开发”和“规范定义的接口”等等。组件单独开发并作为软件单元使用,它具有明确的接口,软件就是通过这些接口调用组件所能提供的服务,多种组件可以联合起来构成更大型的组件乃至直接建立整个系统。例如,一个进销存系统,进货方面是一个组件来完成,库存也是,出货也是。也就是说,所有的业务逻辑、程序逻辑,全被封装在一个个的组件中去了。各模块独立成章,却又互相联系。就像一台电脑,CPU、硬盘、主板,都是一个个独立模块,最后合并,就成了电脑。4. 组件可以被认为是面向对象和其他软件技术的化身。区分组件和其他先前的技术有四个原则:封装性(encapsulation)、多态性(polymorphism)、后期连接(late binding)和安全性(safety)。这个列表与面向对象是重复的,除了它删除了继承(inheritance)这个重点。在组件思想中,继承是紧密耦合的、白盒(white-box)关系,它对于大多数形式的包装和重复使用都是不适合的。作为代替,组件通过调用其他的对象和组件重复使用功能,代替了从它们那儿继承。在组件术语中,这些调用叫做委托(delegations)。5. 大体上说,组件就是对象。C+ Builder中叫组件,Delphi中叫部件,而在Visual BASIC中叫控件。为了统一起见,在本章的举例中,我们把Delphi中的部件也称作组件。组件是对数据和方法的简单封装。C+ Builder中,一个组件就是一个从TComponent派生出来的特定对象。组件可以有自己的属性和方法。属性是组件数据的简单访问者。方法则是组件的一些简单而可见的功能。而构件(component)是指可复用的软件组成成份,可被用来构造其他软件。它可以是被封装的对象类、类树、一些功能模块、软件框架(framework)、软件构架(或体系结构Architectural)、文档、分析件、设计模式(Pattern)等。构件分为构件类和构件实例,通过给出构件类的参数,生成实例,通过实例的组装和控制来构造相应的应用软件,这不仅大大提高了软件开发者的开发效率,也大大提高了软件的质量。6. 模式,即pattern。其实就是解决某一类问题的方法论。你把解决某类问题的方法总结归纳到理论高度,那就是模式。Alexander给出的经典定义是:每个模式都描述了一个在我们的环境中不断出现的问题,然后描述了该问题的解决方案的核心。通过这种方式,你可以无数次地使用那些已有的解决方案,无需在重复相同的工作。模式有不同的领域,建筑领域有建筑模式,软件设计领域也有设计模式。当一个领域逐渐成熟的时候,自然会出现很多模式软件设计模式由能够应用于所有组件下部构造的软件知识的共同主体组成。软件设计模式是检验过的用于解决特定类别的结构上的软件问题的设计方法,它们已经备案以供其他开发者重复使用。7. 创建一个组件,大致可以分为以下6个步骤。(1)确定一个基类。(2)创建一个组件单元。(3)在新组件中添加属性、方法和事件。(4)测试该组件。(5)在Delphi中注册该组件。(6)为该组件建立帮助文件。8. COM充分展示了面向组件编程思想的优点,这些优点可以归纳如下:(1)有利于复用,能够使软件开发快捷方便。(2)有利于软件开发的分工合作。(3)有利于用户定制满足自己需要的应用。(4)有利于软件的升级维护。9. 成功地开发和综合专用组件的关键是,它能够服从界面的各种需要和习惯,以及开发环境所期望的行为。专用组件是一个对象类,这个对象类是专用组件或其他组件的后代,这使它本身就服从基本需要的大部分,但除了这些基本功能外,组件还可以定义任意复杂的行为和可以显示任意丰富的属性集合提供给组件用户或者应用程序员。这些对组件的标准及基本行为的扩充是组件开发人员的责任。组件开发难度大,对组件开发人员的要求相对较高,不仅要充分了解组件用户的需求,透彻了解有关的已有组件的限制或缺点,而且还要对面向对象编程(OOP)课题有相当深入的理解。10. 创建组件的方法有三种:(1)通过创建组件模板创建一个新组件。(2)从一已存在的专用类派生一个新类,创建一个新的组件。(3)从非专用组件中派生一个新组件。通过创建组件模板创建一个新组件是最简单的一种方法,组件开发人员开发的代码将随用户对此组件的使用嵌入用户程序内,它只能改变或增强组件的很少的功能和属性值,而不能修改组件的参数或增加改变组件的属性,也不能够用于创建ActiveX组件,从而不能跨平台应用。后两种方法可以创建专用的较复杂的组件,且ActiveX支持通过OCX实现跨平台运行这些组件。第4章三、思考题1. 目前,中间件技术的发展来源于以下几个应用需求驱动:(1)消息驱动:基于统一标准的消息表示,采用点到点或消息代理结构,实现数据资源共享。(2)应用驱动:基于基础通信中间件和构件管理平台,实现应用连接。(3)流程驱动:支持企业流程重构,加速客户、供应商、合作伙伴和员工之间的动态电子商务进程。(4)用户驱动:通过统一的界面访问所需要的任何信息,并控制应用的运行,从而增强了协作,实现了系统功能的快速扩展。(5)模型驱动:为企业应用开发和管理提供可视化的布局和设计能力,为开发者建立、发布和管理集成的应用和服务提供全面的支撑。2. 中间件是处于应用软件和系统软件(操作系统、网络协议、数据库等)之间的一个软件层,它屏蔽了环境底层的复杂性,提供给应用开发者统一的、功能强大的APIs,使应用开发者只专注于业务逻辑的开发,快速地开发出可靠、高效的企业级分布式应用。3. 中间件具有以下一些特点:能够满足大量应用的需要;能够运行于多种硬件和OS平台上;支持分布计算,提供跨网络的与硬件和OS平台的无关的应用或服务;支持标准的协议;支持标准的接口。4. 中间件具有以下几种功能:(1)首先,中间件屏蔽了底层操作系统的复杂性,使程序开发人员面对一个简单而统一的开发环境,减少程序设计的复杂性,将注意力集中在自己的业务上,不必再为程序在不同系统软件上的移植而重复工作,从而大大减少了技术上的负担。(2)中间件带给应用系统的,不只是开发的简便、开发周期的缩短,也减少了系统的维护、运行和管理的工作量,还减少了计算机总体费用的投入。(3)其次,中间件作为新层次的基础软件,其重要作用是将不同时期、在不同操作系统上开发应用软件集成起来,彼此像一个天衣无缝的整体协调工作,这是操作系统、数据库管理系统本身做不了的。5. 中间件技术的优势如下:中间件提供客户机与服务器之间的连接服务,这些服务具有标准的程序接口和协议。针对不同的操作系统和硬件平台,它们可以有符合接口和协议规范的多种实现。由于标准接口对于可移植性和标准协议对于互操作性的重要性,中间件已成为许多标准化工作的主要部分。对于应用软件开发,中间件远比操作系统和网络服务更为重要,中间件提供的程序接口定义了一个相对稳定的高层应用环境,不管底层的计算机硬件和系统软件怎样更新换代,只要将中间件升级更新,并保持中间件对外的接口定义不变,应用软件几乎不需任何修改,从而保护了企业在应用软件开发和维护中的重大投资。中间件在分布式的客户和服务之间扮演着承上启下的角色,如事务管理、负载均衡以及基于Web的计算等。同时中间件产品在很大程度上简化了一个由不同硬件构成的分布式处理环境的复杂性,所以它的出现正日益引起用户的关注。6. 从理论上讲,中间件具有以下工作机理:客户端上的应用程序需要从网络上的某个地方获取一定的数据或服务,这些数据或服务可能处于一个不同硬件环境和运行着不同操作系统及特定查询语言数据库的服务器中。客户机应用程序中负责寻找数据或服务的部分只需访问一个中间件系统,由中间件完成在网络中找到数据源或服务,进而传输客户请求到服务器,并把来自服务器的答复信息经过重新组合,最后将结构送回到客户端的应用程序。7. 远程过程调用的特点有:(1)客户/服务器模式。远程过程调用过程实际上是通过客户/服务器方式实现的,它是通过客户端的应用调用一个位于远端服务器平台的进程或服务。(2)同步性。即当客户机发出请求时,服务器处于运行状态。(3)复杂性。远程调用的实现环境可能需要系统级的任务来创建,因此比较复杂。但是,创建一旦完成,对程序员就是透明的了。8. 消息中间件的工作原理是:本地应用程序发送一条消息到消息队列接口,消息队列接口对消息队列进行调整后,将消息放入本地消息队列。消息通道代理通过传输协议和网络将消息发送到远程系统。在另一端,远端的应用程序通过消息队列接口读取消息。消息中间件具有以下优点:实现了不同平台和网络协议应用程序之间的无缝连接;在不可靠的网络上实现可靠的通信;直接调用发送/接收的应用程序的接口,实现了应用程序之间的互操作,不必考虑底层的通信问题;通信程序可在不同的时间运行。 程序不在网络上直接相互通话,而是间接地将消息放入消息队列,因为程序间没有直接的联系,所以它们不必同时运行。9. 对于这三个分布计算平台,现在从以下3个方面进行分析比较:(1)可用性:要求所采用的软件构件技术必须足够成熟,相应的产品也必须是成熟的,这样才能保证在重要的企业应用中能够稳定、可靠、安全地运行。(2)集成性:集成性主要反映了基础平台对应用程序互操作能力的支持程度。它要求分布在不同机器平台和操作系统上、采用不同的语言或者开发工具生成的各类商业应用软能够无缝地集成在一起,形成一个统一的企业应用框架。这一应用框架以网络为基础,并可以实现对遗留应用的集成。另外,由于数据库在企业应用中的重要作用,软件构件技术要求能够与数据库技术集成。 (3)可扩展性:集成框架必须能够扩展,根据应用的需要增加或修改系统的功能。另外,通过保证当前应用的可重用性,最大程度地保护企业的投资,降低开发成本。10. 网格(GRID)技术实质上就是一个基于互联网的中间件系统,用户可以通过PC、手机或PDA从互联网上获取来自全球的资源,包括所有的CPU、存储器、操作系统、应用软件等资源,这样互联网就变成了一个虚拟的、强大的计算平台。网格的重要特征是对资源的共享和管理。主要的资源有四种:(1)计算资源。启动程序,监测、控制进程运行;对分配给进程的资源进行管理;查询功能,包括确定硬、软件状态、相关负载信息和队列状态等。(2)存储资源。上传、下载文件;对数据传输的资源如空间、磁盘带宽、网络带宽、CPU等进行管理;确定可用空间、带宽使用率等相关负载信息。(3)网络资源。对进行网络传输的资源进行管理控制;查询网络状态和负载情况。(4)代码库。对源码和目标码进行管理。11. 要理解移动计算问题可以从三个方面来展开:(1)用户移动。无论用户处在什么位置,都能够得到一致的工作环境,包括用户的配置信息和他所“订阅”的服务。(2)终端移动。无论终端设备在哪个接入点接入网络,都能正常工作,也就是说底层网络对终端设备是透明的。(3)服务移动。目前,不仅越来越多的服务依靠移动的资源,而且很多时候服务本身就处在不断移动中,因此,必须保证用户及其终端设备可以随时找到这些服务。所以,移动计算需要一个基础设施将合适的协议、机制、工具集成起来,提供上述三方面的功能。移动中间件正是可以满足上述要求的一种基础软件。它随时对移动用户和终端进行跟踪和重定位,保证移动Agent之间的相互通信,克服系统的异构性带来的差异,并且为开放的网络环境提供安全性保证。12. 中间件是对分布式应用的抽象,它抛开了与应用相关的业务逻辑的细节,保留了典型的分布式系统模式的关键特征,将复杂的分布式系统以统一的形式提供给应用。应用可以在中间件提供的环境中更好地集中于处理业务逻辑,并以构件化的形式在异构环境中实现良好的协同工作。如果说构件反映了一种前沿的软件设计思想,极大地推动了整个软件行业的发展,那么,中间件作为应用软件系统集成的关键技术,不仅保证了构件化思想的实施,而且为构件提供了真正的运行环境和空间。中间件工业化标准的制定、统一及实现,将使得基于构件的应用开发成为可能。可以预见,在不久的将来,软件构件技术将成为软件产业化革命的必然发展趋势。13. Web Services就是可以通过web描述、发布、定位和调用的模块化应用。Web Services可以执行任何功能,从简单的请求到复杂的业务过程。一旦Web Services被部署,其他的应用程序或是Web Services就能够发现并且调用这个部署的服务。简单地说,它是利用某种机制,通过Web来获得自己需要的服务。14. 可靠中间件是以中间件的方式提供一组服务,通过这组服务,给要开发的软件系统增加可靠性和可用性。如今已有不少关于软件可靠性的研究成果,包括可靠性模型和可靠性保障技术,如预测错误技术、防错技术,容错技术、消除错误技术,现在已经有一些中间件支持容错和QoS属性。第5章三、思考题1. 软件工厂是一个按照流水线的工作方式、遵循一定的生产质量规范,批量、高效的生产标准化的“软件零部件”(构件),并对其进行组装从而批量完成软件产品或应用的机构。生产工作将不受时间和地点的限制。 构件化的软件生产是实现软件工厂的主流模式,其核心是在一个开发平台上通过预制和定制多个软件构件,依托构件库及相关工具平台,像工业生产零配件一样根据开发目的组织软件部件的开发生产、工业式组装与协作、规模化的批量生产。2. 构件的基本属性有:(1)构件是可独立配置的单元,因此构件必须自包容。(2)构件强调与环境和其他构件的分离,因此构件的实现是严格封装的,外界没机会或没必要知道构件内部的实现细节(注:这一点对软件蓝领是最主要的)。(3)构件可以在适当的环境中被复合使用,因此构件需要提供清楚的接口规范,可以与环境交互。(4)构件不应当是持续的,即构件没有个体特有的属性,理解为构件不应当与自身副本区别。从以上四个属性可以看出,构件沿袭了对象的封装特性,但同时并不局限在一个对象,其内部可以封装一个或多个类、原型对象甚至过程,结构是灵活的。构件突出了自包容和被包容的特性,这就是在软件工厂的软件开发生产线上作为零件的必要特征。3. 软件复用是指重复使用已有的软件产品用于开发新的软件系统,以达到提高软件系统的 开发质量与效率、降低开发成本的目的。4. (1)代码的复用。(2)设计结果的复用。(3)分析结果的复用。(4)测试信息的复用。5. 软件复用的三个基本问题为:一是必须有可以复用的对象,二是所复用的对象必须是有用的,三是复用者需要知道如何去使用被复用的对象。两个相关过程为:可复用软件(构件)的开发和基于可复用软件(构件)的应用系统构造(集成和组装)。6. 影响软件的因素可以分为技术因素和非技术因素:(1)实现软件复用的关键技术因素主要包括:软件构件技术、领域工程、软件构架、软件再工程、开放系统、软件过程、CASE技术等。(2)除了上述的技术因素以外,软件复用还涉及众多的非技术因素: 人的因素。 管理因素。 教育因素。 法律因素。7. 软件复用可以从多个角度进行考察。(1)依据复用的对象,可以将软件复用分为产品复用和过程复用。(2)依据对可复用信息进行复用的方式,可以将软件复用区分为黑盒(Black-box)复用和白盒(White-box)复用。(3)依据抽象程度的高低,可以划分为如下的复用级别: 代码的复用。包括目标代码和源代码的复用。 设计的复用。 分析的复用。 测试信息的复用。主要包括测试用例的复用和测试过程信息的复用。 8. 可复用构件是指可以在多个软件系统的开发过程中被重复使用的软件产品。相对于普通软件产品,对可复用构件的特殊要求包括:具有功能上的独立性与完整性、具有较高的通用性、具有较高的灵活性、具有严格的质量保证和具有较高的标准化程度。9. 常见的可作为复用候选的10种软件制品:(1)项目计划。(2)成本估计。(3)体系结构。(4)需求模型和规约。(5)设计。(6)源代码。(7)用户文档和技术文档用户界面。(8)数据。(9)测试案例。除了上面列出的10种软件元素外,复用还包含了软件开发过程中的其他元素,如特定的分析建模方法、检查技术、测试用例设计技术、质量保证等。10. 程序设计结构方面:(1)需求的符合性。(2)业务流程的可调整性。 (3)业务信息的可调整性。源代码的组织结构方面:(1)可扩充性:系统方案的升级、扩容、扩充性能。(2)可移植性:不同客户端、应用服务器、数据库管理系统。11. 可以从多个侧面进行分类:(1)按开发过程构件分为分析件、设计件、程序件和数据件。(2)按功能分,分为三层:基础层为基本数据类构件和系统支撑构件;中间层为各种通的中间件,顶层为针对领域的专用构件或子系统构件,从粒度上看,通常底层的粒度为较小,而顶层的粒度为较大。(3)按使用方式分为动态和静态两种。(4)按构件的结构分为原子构件及由多个构聚集的组合构件。12. 要实现构件技术必须具备下列几个条件:(1)有标准软件体系结构,保证构件间通信协议统一,实现同步和异步操作控制,突破本地空间限制,充分利用网络环境。 (2)构件有标准接口,保证系统可分解成多个功能独立的单元,用构件组装而成。 (3)构件独立于编程语言。 (4)构件提供版本兼容,来实现应用系统的扩展和更新。13. 传统的软件开发大多采用面向对象技术,构件技术与面向对象技术紧密相关。构件和对象都是对现实世界的抽象描述,通过接口封装了可复用的代码实现,不同的是,首先在概念层面上,对象描述客观世界实体,构件提供客观世界服务,其次在复用策略上,对象是通过继承实现复用,而构件是通过合成实现复用;最后在技术手段上,构件通过对象技术而实现,对象按规定经过适当的接口包装之后成为构件,一个构件通常是多个对象的集合体。构件技术是对象技术的发展,构件具有更强的独立性、封闭性和可复用性。(1)构件和对象都是对客观世界实体的一种抽象描述,他们的共同特点是信息隐藏和一定的独立性。但是构件要求是自描述,独立性更强,而对象达不到这一要求。(2)构件和对象的本质区别:构件提供的是服务,对象提供的是功能;构件接口描述了问题域,而对象接口描述了方案域。(3)存取构件和对象中的信息都必须通过它们的接口,构件的结构有必要充分描述它的语义,对象做不到这一点,所以对象需要另加接口才可以成为构件,所以有人认为构件对象接口,其实这只是构件的充分条件。(4)构件的接口是一种服务提供者对消费者的承诺:即契约(contract);用契约确保一组构件之间的行为组合。对象就没有这个说法。由于服务存在的持久性,所以服务都是永久性存储对象。(5)构件的粒度一般较粗,它可能包括一个或多个对象(或类),它的接口一般也比对象复杂。(6)对象是类的实例,对象是动态的;有人说构件是静态的,应该和类相对应;事实上并不尽然,可以这样看,在特定领域体系结构(DSSA)中定义的构件是静态的,而集成到应用系统中的构件是动态的,目前尚未见到有人对它们的区别。14. 构件开发的特点如下:(1)可复用性。(2)系统结构分层,业务与实现分离,逻辑与数据分离。(3)易用性。(4)语言无关性。(5)构件是语言(源程序)无关的,构件的调用协议是语言无关的协议。(6)位置透明性。(7)调用者对构件的调用,与构件的位置无关,无论构件位于什么位置,调用者调用构件(包括定位构件)的方法都相同。(8)自描述性。(9)构件是自描述的,调用者应该能够在调用构件之前,通过构件获取调用构件需要的构件信息(自描述),构件信息也是语言无关的。(10)安全性。(11)构件是安全的,不应该允许任何形式的未授权使用(调用)。(12)领域内的软件结构一致性好。 (13)软件设计人员要专注于对领域的了解,使需求分析更充分。(14)大粒度的重用使得平均开发费用降低,开发速度加快,开发人员减少,维护费用降低,而参数化框架使得适应性、灵活性增强。15. 基于构件的软件开发的优势包括:可以显著地改善软件的质量和可靠性;可以极大地提高软件开发的效率;节省软件开发的成本,避免不必要的重复劳动和人力、财力的浪费。16. 其主要研究内容包括:(1)构件获取:有目的的构件生产和从已有系统中挖掘提取构件。(2)构件模型:研究构件的本质特征及构件间的关系。(3)构件描述语言:以构件模型为基础,解决构件的精确描述、理解及组装问题。(4)构件分类与检索:研究构件分类策略、组织模式及检索策略,建立构件库系统,支持构件的有效管理。(5)构件复合组装:在构件模型的基础上研究构件组装机制,包括源代码级的组装和基于构件对象互操作性的运行级组装。(6)标准化:构件模型的标准化和构件库系统的标准化。17. 构件的获取手段有多种,既可以商业采购得到COTS构件,也可以利用项目承包商和合作伙伴开发的NDI构件,或者在领域工程和再工程的基础上从已有应用系统中发掘和提炼可复用构件,或者针对新需求和新技术从头自主开发新构件。不论以何种方式获得的构件,都必须经过严格的测试和认证,在构件库中统一管理。对于外来构件,除了要考察其质量和可用性,还必须考虑日后构件维护和版本升级的成本。18. 刻面分类方法将关键词(术语)置于一定的语境中,并从反映构件本质特性的不同视角(刻面)将构件分类。每个刻面中有一组术语(关键词),术语间由于有一般特殊关系和同义词关系而形成结构化的术语空间。构件的描述术语仅限在给定的刻面之中选取。在术语空间中游历可以帮助复用者理解相关领域。术语空间可以演变。19. 分布式软件总线、事件登记和回调、构架描述语言、脚本语言和代码生成技术都为构件组装指出了希望之路,DCOM、JavaBean等运行级的分布式构件模型的出现和ORB与Internet的引入,使构件之间的独立性和互操作性变得更强,这些技术为构件组装,尤其是运行级的构件组装提供了有力的支持。 20. 软件构架(又称软件体系结构)是对系统整体结构设计的刻画,包括全局组织与控制结构、构件间通信、同步和数据访问的协议、设计元素间的功能分配、物理分布、设计元素集成、伸缩性和性能、设计选择等。软件构架研究如何快速、可靠地从可复用构件构造系统的方式,着重于软件系统自身的整体结构和构件间的互联。其中主要包括:软件构架原理和风格,软件构架的描述和规约,特定领域软件构架,构件向软件构架的集成机制等。21. 研究软件构架对于进行高效的软件工程具有非常重要的意义:(1)通过对软件构架的研究,有利于发现不同系统在较高级别上的共同特性。(2)获得正确的构架对于进行正确的系统设计非常关键。(3)对各种软件构架的深入了解,使得软件工程师可以根据一些原则在不同的软件构架之间作出选择。(4)从构架的层次上表示系统,有利于系统较高级别性质的描述和分析。特别重要的是,在基于复用的软件开发中,为复用而开发的软件构架可以作为一种大粒度的、抽象级别较高的软件构件进行复用,而且软件构架还为构件的组装提供了基础和上下文,对于成功的复用具有非常重要的意义。22. 软件再工程是一个工程过程,它将逆向工程、重构和正向工程组合起来,将现存系统重新构造为新的形式。再工程的基础是系统理解,包括对运行系统、源代码、设计、分析、文档等的全面理解。但在很多情况下,由于各类文档的丢失,只能对源代码进行理解,即程序理解。23. 开放系统技术的基本原则是在系统的开发中使用接口标准,同时使用符合接口标准的实现。这些为系统开发中的设计决策,特别是对于系统的演化,提供了一个稳定的基础,同时,也为系统(子系统)间的互操作提供了保证。开放系统技术具有在保持(甚至是提高)系统效率的前提下降低开发成本、缩短开发周期的可能。对于稳定的接口标准的依赖,使得开发系统更容易适应技术的进步。当前,以解决异构环境中的互操作为目标的分布对象技术是开放系统技术中新的主流技术。24. CASE技术中与软件复用相关的主要研究内容包括:在面向复用的软件开发中,可复用构件的抽取、描述、分类和存储;在基于复用的软件开发中,可复用构件的检索、提取和组装;可复用构件的度量等等。25. 构件在进行复用的时候需要注意以下几点:(1)构件复用是依赖于业务架构,业务架构定义了客户的业务模型以及构件的接口方式;(2)构件复用是以项目实践为原则的,不一定是将构件A越完善越好,因为这样的构件不一定适合用户,所以正确的做法是合理判断是从构件A进行扩展好,还是基于构件A编写一个构件B,从而适合不同层次的用户使用。(3)构件复用不一定是IDE开发环境进行编译成相互引用的二进制代码,可以通过相对简单的部署方式进行复用。(4)构件不仅仅是包括人机交互接口,还包括程序交互接口,每一个构件不仅可以通过界面进行操作,还可以通过类库调用进行操作。(5)做好构件的设计和归档工作,使得构件更好复用。26. (1)中间件:构件存在的基础。 中间件,从本质上是对分布式应用的抽象,因而抛开了与应用相关的业务逻辑的细节,保留了典型的分布交互模式的关键特征。经过抽象,将纷繁复杂的分布式系统经过提炼和必要的隔离后,以统一的层面形式呈现给应用。应用在中间件提供的环境中可以更好地集中于业务逻辑上,并以构件化的形式存在,最终自然而然地在异构环境中实现良好的协同工作。 不难看出,中间件与构架实际是从两种不同的角度看待软件的中间层次,可以这样说:中间件就是构架,或构件模型的具体实现,是构件软件存在的基础,中间件促进了构件化软件。(2)构件思想对中间件的作用。 中间件作为分布式计算平台,涉及资源多样,包括各种操作系统、数据库、网络协议甚至语言,其目标是在分布的环境中统一使用这些资源。 中间件的一个重要的设计目标是互操作,而互操作的关键是有清晰而与实现无关的接口。因此在互操作的边界上,必须将构件的思想融入设计中。 中间件的应用范围越来越广,但应用有不同的需要,不同的业务特点,如果仅仅依靠固定的模式去套用,显然不合适。 中间件不是最终的应用,需要服务于应用开发,但可以面向典型业务的模型,以方便应用的开发,这些模型可以以构件的形式作为产品提供。例如,CORBA服务和设施就是一些典型应用的抽象体现,使用这些服务的构件,应用可以大大减少开发规模,并获得良好的效果。以构架化技术术语讲,就是领域建模。 成功的商业软件都是非常便于管理的,同样中间件也有可配置性的需要,管理整个系统是个复杂的行为,但如果转化为若干简单行为的统一,对开发就很简单而明确。第6章三、思考题1. 定义:软件Agent是运行于动态环境的、具有高度自治能力的实体,它能够接受其他实体的委托并为之服务。软件Agent的性质有:(1)自治性。(2)响应性。(3)主动性。(4)推理性。(5)角色。(6)通信/合作/协调。2. 它可以提供以下几种功能:(1)能与用户灵活的发生相互作用,在互相作用中智能地协助用户完成有关工作。(2)在进行分布式信息搜索时,能够快速建立智能搜索机制。(3)在动态的环境下,要求应用程序能够对周围的环境作出响应。(4)需要应用程序能自主处理错误或冲突,并能有效进行调度、计划或资源分配。(5)在实时性或安全性要求较高的应用程序中,保证快速的反应和应答时间。为在地理上或逻辑上分布式异构的节点提供应用服务或中间件服务。3. 依照软件Agent的性质,将软件Agent划分为慎思Agent、代理Agent、反应Agent、移动Agent、学习Agent和混合Agent等。4. 移动Agent,即一个能在异构网络环境中自主地从一台主机迁移到另一台主机,并可与其他Agent或资源交互的软件实体。移动Agent是一类特殊的软件Agent,它除了具有软件Agent的基本特性自治性、响应性、主动性和推理性外,还具有移动性,即它可以在网络上从一台主机自主地移动到另一台主机,代表用户完成指定的任务。5. 移动Agent与传统网络计算模式的本质区别可以从以下几个方面来考虑:(1)移动Agent不同于远程过程调用(RPC),这是因为移动Agent能够不断地从网络中的一个节点移动到另一个节点,而且这种移动是可以根据自身需要进行选
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- T/CI 555-2024水环氧沥青钢渣超薄抗滑表层技术规范
- 压力管道取证培训课件
- 2025年环保科技行业清洁能源技术研发前景报告
- 2025年汽车行业无人驾驶汽车发展前景研究报告
- 2025年医疗健康产业对老龄化社会的应对策略与发展前景研究报告
- 嵩县2025年河南嵩县引进研究生学历人才78人笔试历年参考题库附带答案详解
- 南昌市2025江西南昌航空大学科技学院图书管理员招聘1人笔试历年参考题库附带答案详解
- 2025重庆某国有企业招聘财务助理实习生2人笔试参考题库附带答案详解
- 2025江西吉安市青原区两山人力资源服务有限公司招聘5人笔试参考题库附带答案详解
- 2025新疆兵团可克达拉市广电网络有限责任公司招聘4人笔试参考题库附带答案详解
- 2025年领导干部任前廉政法规知识考试题库(含答案)
- 2025年四川基层法律服务工作者执业核准考试仿真试题及答案一
- 信息技术基础教程(WPS版)课件 第3章 Windows 10 操作系统的使用
- 小鹿斑比题目及答案
- 中学知识竞赛试题及答案
- 2024超声法检测混凝土缺陷技术规程
- 2025-2030中国建筑行业供应链金融发展现状与前景分析
- 2025-2026学年人教版(2024)初中物理八年级上册教学计划及进度表
- 《民间纠纷调解》全套教学课件
- 医院环境感染监测制度
- 医院一键式报警系统建设与实施
评论
0/150
提交评论