管理信息系统系统分析师-系统分析与建模.ppt
管理信息系统案例分析,第2部分 系统分析师考试案例分析与设计,题2:2002年试题4,系统分析与建模,2,试题,某软件公司准备研发大型客户服务中心(Call Center)平台,为构建电话服务业务系统提供支持。在讨论方案时,许多工程师认为可以使用创痛方法利用操作系统的分时技术实现业务流程的并行化。即:根据业务流程设计处理程序,当一个电话呼入时,为这个呼入服务分配一个进程知道服务完成。但是梁工提出了不同意见,他说:当有1000个电话同时呼入时,难道系统要有1000个进程同时运行吗?因为作为大型客户服务中心,同时处理上千个呼入应当是很平常的事情。于是,梁工提出:可以使用有限状态自动机来处理业务流程,而业务流程的描述则用状态图表示。当一条线路上有时间发生时,自动机根据这条线路的私有工作区中所保存的状态,查找出状态图中对应状态的描述,从而选择有关服务,并且再根据服务的结果确定下一个状态。梁工通过回答下属3个问题,解决了大家的疑虑,使开发组接接受了这个方案。请回答如下三个问题。,3,问题,【问题1】状态图在计算机中如何表达?每个节点都要包含哪些内容?请你用100字以内文字提出一种方案。【问题2】系统中响应外部事件的所有服务应当有什么约束?为什么?请你用200字以内文字,简要说明系统启动与处理服务的基本方式。【问题3】在本系统中,如何实现业务生成工具?,4,分析,有限状态机是一个抽象的概念,可以用两种直观的方式来表示,分别是状态转换图和状态转换矩阵。状态转换图是一个有向图,有限状态机种的每一个状态对应状态转换图中的一个节点,状态之间的转移对应状态转化图中的一条边。状态转换矩阵可以用一个数组表达,数组的下表代表状态的编号,数组元素代表对应的状态。在这种方式中,每个数组元素应该包含该状态所对应的操作、状态转移的条件,以及不同的转移条件下状态转移的方向(即下一个状态)。,5,答案,【问题1】状态图在计算机中用一张表(数组)表达,下表代表状态号,每个元素包含该状态下每种时间对应的操作、转移条件,以及对应条件的下一个状态。【问题2】系统中响应外部事件所有服务必须都是非阻塞的,也就是启动一个服务(例如:调用函数)后系统并不等待服务的完成而立即返回,并根据条件修改状态。当服务完成后,发出相应的事件,系统再次响应,根据下次的状态决定需要启动的服务。【问题3】本系统中,业务流程的设计实际上是状态图的设计。而状态图式一种有向图,可采用专门设计的流程编辑器用“所见即所得”的方式生成。,6,题1:2003年试题2,系统分析与建模,7,试题,阅读以下关于网络通信的Object Server技术的叙述,回答问题1、问题2和问题3。在一次交通管制系统的招标会上,某公司提出的“Object Server”解决方案引起了专家们的广泛关注。对经典设计模式MVC的创新,是“Object Server”的亮点。对于“Object Server”的软件体系结构,专家们并无争议,但有专家就“Object Server”的实现技术提出了质疑,假定你是该方案的设计人员,请回答以下问题。,8,9,问题,问题1 请用100字以内的文字,解释“Object Server”解决方案中“View”的功能。问题2 在图2-1的“Push Protocol”的实现中,应当采用TCP还是UDP?为什么?请用100字以内文字简要说明。问题3 为了使得每个GUI呈现的事件序列是一致的,图2-1的“Push Protocol”必须满足的消息次序是FIFO序、因果序(Causal Order)、全序(Total Order)中的那一种?为什么?请用100字以内文字简要说明。,10,分析,这是一道有关设计模式和软件架构的试题。MVC架构是Model-View-Controller的缩写,中文翻译为模型-视图-控制器。MVC应用程序总是由这三个部分组成。Event(事件)导致Controller改变Model或View,或者同时改变两者。只要Controller改变了Models的数据或者属性,所有依赖的View都会自动更新。类似的,只要Controller改变了View,View会从潜在的Model中获取数据来刷新自己。,11,问题3分析,(1)FIFO序:先进先出序列,即按照先到先服务的原则对消息进行排序。这种序列会产生消息的失序,即不是所期望的序列。(2)因果序:因果序用于辨认模型变量间的因果依赖关系。模型的因果序可用有向图来表示,其中节点表示模型中的变量,边表示变量的因果关系。如果存在一条由变量X到变量Y的途径,则表明变量Y因果依赖变量X。,12,(3)全序:集合X上的关系R,如果是自反的、反对称的和传递的,则R称为一个偏序。设R是集合X上的一个偏序。如果x,yX且xy或yx成立,我们说x和y是可比的,如果x,yX且xy或yx,就是说x和y不可比。如果X中的元素都可比,那么我们称R为全序。根据全序的定义,给定任意一个全序集合,按照某种关系(例如从小到大)把该集合元素进行排列后,其结果是唯一的。在本题中,可以把消息序列按时间顺序编码,要“使得每个GUI呈现的事件序列是一致的”,“Push protocol”必须满足全序。因为全序只需要给多播消息分配一个唯一的序列编号,就可使每个GUI所呈现的时间按序列是一致的。,13,参考答案,【问题1】“View”的功能是把表示“datasource”的信息以特定的形式在各GUI上显示,它从“datasource”获得显示信息,对于相同的信息可以有多个不同的显示形式或试图。【问题2】采用UDP。因为UDP提供了无连接数据报服务,不必考虑连接的建立于撤销,比TCP有更好的性能和效率。【问题3】“Push protocol”必须满足全序。因为全序指需要给多播消息分配一个唯一的序列编号,就可使每个GUI所呈现的时间序列是一致的。,14,题3:1998年试题2,系统设计,15,试题,阅读以下关于客户机服务器应用系统方面的叙述,回答问题和问题2 某机电产品集团的总公司三年前已采用了Client/Server(以下简称)结构开发了数据库应用系统。该应用系统基于局域网采用了2 数据库与Sybase数据库两种系统(必要时可通过数据库信关转换);在应用程序中共采用了三种不同的语言编制程序;应用系统的使用效率相当高,并发用户数在高峰时会超过个以上,企业内部的通信任务也十分繁重。,16,该系统在开发时所采用的方式是所谓两层的软件设计体系结构。即应用系统在逻辑上分布在两级实体上,在客户机上的软件设计包含了所有的用户接口逻辑操作和各类业务逻辑模块的集成在数据库服务器上则驻留有数据库管理系统模块,完成有关数据库管理的细节任务。客户机方直接以语句向数据库服务器发出相应的数据请求,由数据库服务器方响应客户机方的请求,执行这些语句,并将相应的数据返回至客户机方。,17,总公司的顾工程师分析了近三年来的实际运行情况,指出:()随着应用系统处理的内容越来越多,客户端应用程序不断地扩充而变得相对庞大,客户机本身的处理能力已显得跟不上要求。()更新每台客户机上的应用程序越来越困难,应用程序的分发与版本控制十分麻烦。()因为客户机的授权用户需要拥有连接数据库的口令,个别授权用户有可能绕过系统中的客户端应用程序,利用自己安装在客户机上的其它数据库访问工具去直接操作数据库,从而可能访问到某些未授权的数据。,18,问题,问题顾工程师建议改造系统,采用三层(或更多层)软件设计的方案来规划与实现系统,即客户机一功能服务器一数据库服务器。这时,应用系统的软件将被设计成为逻辑上相对独立的三层:()表示层,也称为用户界面层。通常只需把该层软件模块放置在客户机实体内,承担着用户与应用之间进行对话的功能。如:接受用户输人数据,检查用户从键盘或鼠标器等提供的输入信息,显示应用输出的信息与数据等。采用的是GUI界面(或者可进一步采用浏览器界面)。,19,()功能层,也称为业务处理逻辑层。比如可以把该层软件模块放置入新增的“功能服务器”实体内(也可以置入数据库服务器内)。客户机上的用户需要从事于业务计算或进行数据访问时,通过客户机向驻留在功能服务器中的“功能层”发出请求。由功能层响应客户机的请求,去完成相应的业务处理或复杂计算,或者进一步向数据库服务器发送语句,以完成相应的数据库查询或更新等工作。然后,由功能层把计算或操作结果逐层地返回给客户机。,20,()数据层,也称为数据库服务层。该层软件模块驻留在数据库服务器实体内。负责管理对数据库数据的读写(如通过语句)。也可以进一步把功能层细分为几层,当然也可以设置多级功能服务器等。请用字以内文字,以提纲方式列出采用三层软件设计方式可能带来的主要优点。,21,问题 总公司信息部的负责人李总十分赏识顾工程师的分析与建议,但是李总认为改造必须循序渐进,因为会有相当大的工作量,希望进一步采用一些相对成熟的系统开发工具。请你列出某一种能支持三层软件开发的工具,并以字以内文字简要说明其功能实现的方式。,22,分析,这是一道有关三层C/S结构的试题,主要考查三层结构的优点及开发工具。三层C/S结构的优点是相对于二层C/S结构的缺点而言的。下面介绍三层C/S的基础知识。1、三层C/S结构C/S体系结构具有强大的数据操作和实物处理能力,模型思想简单,易于人们理解和接受。但随着企业规模的日益扩大,软件的复杂度不断提高,传统的二层C/S结构存在以下几个局限:,23,(1)由于二层C/S结构是单一服务器且以局域网为中心的,所以难以扩展至大型企业广域网或Internet。(2)软、硬件的组合及集成能力有限。(3)客户机的负荷太重,难以管理大量的客户机,系统的性能容易下降。(4)数据安全性不好。因为客户端程序可以直接访问数据库服务器,那么,在客户端计算机上的其他程序也可想办法访问数据库服务器,从而使数据库的安全性受到威胁。正是因为二层C/S体系结构有这么多缺点,因此,三层C/S体系结构应运而生。其结构如图:,24,三层C/S体系结构,25,与二层C/S结构相比,在三层C/S体系结构中,增加了一个应用服务器。可以将整个应用逻辑驻留在应用服务器上,而只有表示层存在于客户机上。这种结构被称为“瘦客户机”(thin client)。三层C/S体系结构是将应用功能分成表示层、功能层和数据层三个部分,(1)表示层。表示层是应用的用户接口部分,它负担着用户与应用间的对话功能。它用于检查用户从键盘等输入的数据,显示应用输出的数据。为使用户能直观地进行操作,一般要使用图形用户界面(graphic user interface,简称GUI),操作简单、易学易用。在变更用户界面时,只需改写显示控制和数据检查程序,而不影响其他两层。检查的内容也只限于数据的形式和取值范围,不包括有关业务本身的处理逻辑。,26,(2)功能层。功能层相当于应用的本体,它将具体的业务处理逻辑编入程序中。例如,在制作订购合同时要计算合同金额,按照规定的格式配置数据、打印订购合同,而处理所需的数据则要从表示层或数据层取得。表示层和功能层之间的数据交往要尽可能简洁。例如,用户检索数据时,要设法将有关检索要求的信息一次性地传送给功能层,而由功能层处理过的检索结果数据也一次性地传送给表示层。通常,在功能层中包含确认用户对应用和数据库存取权限的功能,以及记录系统处理日志的功能。功能层的程序多半是用可视化编程工具开发的,也有使用Cobol和C语言的。,27,(3)数据层。数据层就是数据库管理系统,负责管理对数据库数据的读写。数据库管理系统必须能迅速执行大量数据的更新和检索。因为现在的主流是关系型数据库管理系统(RDBMS),因此,一般从功能层传送到数据层的要求大都使用SQL语言。三层C/S的解决方案是:对这三层进行明确分割,并在逻辑上使其独立。由于原来的数据层作为数据库管理系统已经独立出来,所以,关键是要将表示层和功能层分离成各自独立的程序,并且还要使这两层的接口简洁明了。,28,一般情况是只将表示层配置在客户机中,如图(1)(2)所示。如果如图(3)所示的那样连功能层也放在客户机中,与二层C/S体系结构相比,其程序的可维护性要好的多,但是其他问题并未得到解决。由于客户机的负荷太重,其业务处理所需的数据要从服务器传给客户机,所以系统的性能容易变坏。,29,如果将功能层和数据层分别放在不同的服务器中,如图(2)所示,则服务器和服务器之间也要进行数据传送。但是,由于在这种形态中三层是分别放在各自不同的硬件系统上的,所以灵活性很高,能够适应客户机数目的增加和处理负荷的变动。例如在追加新业务处理时,可以相应增加装载功能层的服务器。因此,系统规模越大这种形态的优点就越显著。与传统的二层结构相比,三层C/S结构具有以下优点:,30,(1)允许合理地划分三层结构的功能,使之在逻辑上保持相对独立性,从而使整个系统的逻辑结构更为清晰,能提高系统和软件的可维护性和可扩展性。(2)允许更灵活有效地选用相应的平台和硬件系统,使之在处理负荷能力上与处理特性上分别适应于结构清晰的三层,并且这些平台和各个组成部分可以具有良好的可升级性和开发性。例如,最初用一台UNIX工作站作为服务器,将数据层和功能层都配置在这台服务器上。随着业务的发展,用户数和数据量逐渐增加,这时,就可以将UNIX工作站作为功能层的专用服务器,另外追加一台专用于数据层的服务器。若业务进一步扩大,用户数进一步增加,则可以继续增加功能的服务器数目,用以分割数据库。清晰、合理地分割三层结构并使其独立,可以使系统构成的变更非常简单。因此,被分成三层的应用基本上不需要修正。,31,(3)三层C/S结构中,应用的各层可以并行开发,各层也可以选择各自最适合的开发语言,使之能并行地而且高效地进行开发,达到较高的性能价格比。对每一层的处理逻辑的开发和维护也会更容易些。(4)允许充分利用功能层有效地隔离表示层与数据层,未授权的用户难以绕过功能层而利用数据库工具或黑客手段去非法地访问数据层。这就为严格的安全管理奠定坚实的基础。真个系统的管理层次也更加合理和可控制。,32,值得注意的是:三层C/S结构各层间的通信效率若不高,即使分配给各层的硬件能力很强,其作为整体来说也达不到所要求的性能。此外,设计时必须慎重考虑三层的通信方法、通信频度及数据量。这和提高各层的独立性一样是三层C/S结构的关键问题。在三层C/S体积结构中,表示层负责处理用户的输入和向客户的输出(关于效率的考虑,它可能在向上传输用户的输入前进行合法性验证)。功能层负责建立数据库的连接,根据用户的请求生成访问数据库的SQL语句,并将结果返回给客户端。数据层负责实际的数据库存储和检索,响应功能层的数据处理请求,并将结果返回给功能层。浏览器/服务器风格就是上述三层应用结构的一种实现方式,其具体结构为:浏览器/WEB服务器/数据库服务器。,33,参考答案,【问题1】(1)系统和软件的可维护性和可扩展性强。(2)应用程序的分发与版本控制简单,开发和维护效率高。(3)系统构成简单,能灵活有效地选用相应的平台和硬件系统。(4)比二层结构具有更高的安全性。,34,【问题2】(1)在Delphi中三层结构的基础是MIDAS技术。客户端应用程序通过标准数据控制构件与用户交互,通过应用程序服务器提供的IAppServer接口获得数据,应用程序服务器的关键部件是远程数据模块。在远程数据模块上BDE数据集构件访问数据库,DataSetProvider构件输出IAppServer接口,通过DataSet属性与数据集构件相连,客户端通过IAppServer接口就可以访问数据。,35,(2)ASP.NET可以使用.NET平台快速方便地部署三层架构,.NET中可以方便地实现构件的装配,后台代码通过命名空间可以方便的使用自己定义的构件,显示层放在ASP页面中,数据库操作和逻辑层用构件来实现。(3)在Java中,表示层采用JSP实现页面输出,接受来自网络浏览器的HTTP请求,然后返回给客户端浏览器可以显示的HTML页面;中间件层用Java实现对数据库的访问,可使用数据连接池技术;数据层用DRBMS实现数据库的管理和存储过程。,36,