免费智能真题库 > 历年试卷 > 数据库系统工程师 > 2012年上半年 数据库系统工程师 下午试卷 案例
  第1题      
  知识点:   数据流图   维护   消息   结构化方法   数据库   数据流   损坏

 
某学校欲开发图书管理系统,以记录图书馆所藏图书及其借出和归还情况,提供给借阅者借阅图书功能,提供给图书馆管理员管理和定期更新图书表功能。主要功能的具体描述如下:
(1) 处理借阅。借阅者要借阅图书时,系统必须对其身份(借阅者ID)进行检查。通过与教务处维护的学生数据库、人事处维护的职工数据库中的数据进行比对,以验证借阅者ID是否合法。若合法,则检查借阅者在逾期未还图书表中是否有逾期未还图书,以及罚金表中的罚金是否超过限额。如果没有逾期未还图书并且罚金未超过限额,则允许借阅图书,更新图书表,并将借阅的图书存入借出图书表。借阅者归还所借图书时,先由图书馆管理员检查图书是否缺失或损坏,若是,则对借阅者处以相应罚金并存入罚金表;然后,检查所还图书是否逾期,若是,执行“处理逾期”操作;最后,更新图书表,删除借出图书表中的相应记录。
(2) 维护图书。图书馆管理员查询图书信息;在新进图书时录入图书信息,存入图书表;在图书丢失或损坏严重时,从图书表中删除该图书记录。
(3) 处理逾期。系统在每周一统计逾期未还图书,逾期未还的图书按规则计算罚金,并记入罚金表,并给有逾期未还图书的借阅者发送提醒消息。借阅者在借阅和归还图书时,若罚金超过限额,管理员收取罚金,并更新罚金表中的罚金额度。
现采用结构化方法对该图书管理系统进行分析与设计,获得如图1-1所示的顶层数据流和如图1-2所示的0层数据流

 
问题:1.1   使用说明中的词语,给出图1-1中的实体E1〜E4的名称。
 
问题:1.2   使用说明中的词语,给出图1-2中的数据存储D1〜D4的名称。
 
问题:1.3   在DFD建模时,需要对有些复杂加工(处理)进行进.一步精化,绘制下层数据流图。针对图1-2中的加工“处理借阅”,在1层数据流图中应分解为哪些加丁?(使用说明中的术语)
 
问题:1.4   说明【问题3】中绘制1层数据流图时要注意的问题。
 
 
 

   知识点讲解    
   · 数据流图    · 维护    · 消息    · 结构化方法    · 数据库    · 数据流    · 损坏
 
       数据流图
        数据流图或称数据流程图(Data Flow Diagram,DFD),是一种便于用户理解、分析系统数据流程的图形工具。它摆脱了系统的物理内容,精确地在逻辑上描述系统的功能、输入、输出和数据存储等,是系统逻辑模型的重要组成部分。
               DFD的基本成分
               DFD的基本成分包括数据流、加工、数据存储和外部实体,可分别用下图(a)~(d)表示。
               
               DFD的基本成分
               (1)数据流。数据流由一组固定成分的数据组成,表示数据的流向。值得注意的是,DFD中描述的是数据流,而不是控制流。除了流向数据存储或从数据存储流出的数据流不必命名外,每个数据流都必须有一个合适的名字,以反映该数据流的含义。
               (2)加工。加工描述了输入数据流到输出数据流之间的变换,也就是输入数据流经过什么处理后变成了输出数据流。每个加工有一个名字和编号。编号能反映出该加工位于分层DFD中的哪个层次和哪张图中,也能够看出它是哪个加工分解出来的子加工。
               (3)数据存储。数据存储用来表示存储的数据,每个数据存储都有一个名字。
               (4)外部实体。外部实体是指存在于软件系统之外的人员或组织,它指出系统所需数据的发源地和系统所产生的数据的归宿地。
               分层数据流图的画法
               (1)画系统的输入和输出。把整个软件系统看作一个大的加工,然后根据系统从哪些外部实体接收数据流,以及系统发送数据流到哪些外部实体,就可以画出系统的输入和输出图,这张图称为顶层图。
               (2)画系统的内部。将顶层图的加工分解成若干个加工,并用数据流将这些加工连接起来,使得顶层图中的输入数据经过若干个加工处理后变换成顶层图的输出数据流。这张图称为0层图。从一个加工画出一张数据流图的过程实际上就是对这个加工的分解。
               可以用下述的方法来确定加工:在数据流的组成或值发生变化的地方应画一个加工,这个加工的功能就是实现这一变化;也可根据系统的功能确定加工。
               确定数据流的方法:当用户把若干个数据看作一个单位来处理(这些数据一起到达,一起加工)时,可把这些数据看成一个数据流。
               对于一些以后某个时间要使用的数据可以组织成一个数据存储来表示。
               (3)画加工的内部。把每个加工看作一个小系统,该加工的输入输出数据流看成小系统的输入输出数据流。于是可以用与画0层图同样的方法画出每个加工的DFD子图。
               (4)对第(3)步分解出来的DFD子图中的每个加工,重复第(3)步的分解,直至图中尚未分解的加工都足够简单(也就是说这种加工不必再分解)为止。至此,得到了一套分层数据流图。
               对图和加工进行编号
               对于一个软件系统,其数据流图可能有许多层,每一层又有许多张图。为了区分不同的加工和不同的DFD子图,应该对每张图和每个加工进行编号,以利于管理。
               (1)父图与子图。
               假设分层数据流图里的某张图(记为图A)中的某个加工可用另一张图(记为图B)来分解,称图A是图B的父图,图B是图A的子图。在一张图中,有些加工需要进一步分解,有些加工则不必分解。因此,如果父图中有n个加工,那么它可以有0~n张子图(这些子图位于同一层),但每张子图都只对应于一张父图。
               (2)编号。
               ①顶层图只有一张,图中的加工也只有一个,所以不必编号。
               ②0层图只有一张,图中的加工号可以分别是0.1,0.2,……或者是1,2,……。
               ③子图号就是父图中被分解的加工号。
               ④图的加工号由图号、圆点和序号组成。
               实例
               某考务处理系统有如下功能:
               (1)对考生送来的报名单进行检查。
               (2)对合格的报名单进行检查。
               (3)对阅卷站送来的成绩清单进行检查,并根据考试中心指定的合格标准审定合格者。
               (4)制作考生通知单(内含成绩合格/不合格标志)送给考生。
               (5)按地区、年龄、文化程度、职业和考试级别等进行成绩分类统计和试题难度分析,产生统计分析表。
               该考务处理系统的分层数据流图如下图所示。
               
               考务处理系统分层数据流图
               应注意的问题
               (1)适当地为数据流、加工、数据存储、外部实体命名,名字应反映该成分的实际含义,避免空洞的名字。
               (2)画数据流而不要画控制流。
               (3)每条数据流的输入或者输出是加工。
               (4)一个加工的输出数据流不应与输入数据流同名,即使它们的组成成分相同。
               (5)允许一个加工有多条数据流流向另一个加工,也允许一个加工有两个相同的输出数据流流向两个不同的加工。
               (6)保持父图与子图平衡。也就是说,父图中某加工的输入输出数据流必须与它的子图的输入输出数据流在数量和名字上相同。值得注意的是,如果父图的一个输入(或输出)数据流对应于子图中几个输入(或输出)数据流,而子图中组成这些数据流的数据项全体正好是父图中的这一个数据流,那么它们仍然算是平衡的。
               (7)在自顶向下的分解过程中,若一个数据存储首次出现时只与一个加工有关,那么这个数据存储应作为这个加工的内部文件而不必画出。
               (8)保持数据守恒。也就是说,一个加工所有输出数据流中的数据必须能从该加工的输入数据流中直接获得,或者是通过该加工能产生的数据。
               (9)每个加工必须既有输入数据流,又有输出数据流。
               (10)在整套数据流图中,每个数据存储必须既有读的数据流,又有写的数据流。但在某一张子图中可能只有读没有写,或者只有写没有读。
 
       维护
        维护阶段是软件生存期中时间最长的阶段。软件一旦交付正式投入运行后便进入软件维护阶段。该阶段的关键任务是通过各种必要的维护活动使系统持久地满足用户的需要。每一项维护活动都应该准确地记录下来,作为正式的文档资料加以保存。
 
       消息
        对象之间进行通信的一种构造叫作消息。当一个消息发送给某个对象时,包含要求接收对象去执行某些活动的信息。接收到信息的对象经过解释,然后予以响应。这种通信机制叫作消息传递。发送消息的对象不需要知道接收消息的对象如何对请求予以响应。
 
       结构化方法
        结构化方法属于自顶向下的开发方法,其基本思想是“自顶向下,逐步求精”,强调开发方法的结构合理性及所开发软件的结构合理性。结构是指系统内各个组成要素之间的相互联系、相互作用的框架。结构化开发方法提出了一组提高软件结构合理性的准则,如分解与抽象、模块独立性、信息隐蔽等。针对软件生存周期各个不同的阶段,它包括了结构化分析(Structured Analysis, SA)、结构化设计(Structured Design, SD)和结构化程序设计(Structured Programing, SP)等方法。本章后续介绍的分析、设计、测试等内容,都是以结构化方法为基础的。
               结构化方法的基本原则
               为保证系统开发的顺利进行,结构化方法强调遵循以下几个基本原则:
               (1)面向用户的观点。在开发过程中,开发人员应该始终与用户保持联系,从调查研究入手,充分理解用户的信息需求和业务活动,不断地让用户了解工作的进展情况,校准工作方向。
               (2)严格区分工作阶段,每个阶段有明确的任务和应得的成果。
               (3)按照系统的观点,自顶向下地完成系统的开发工作。
               (4)充分考虑变化的情况。在系统设计中,把系统的可变更性放在首位。
               (5)工作成果文献化、文档化。
               结构化分析
               SA方法使用抽象模型的概念,按照软件内部数据传递、变换的关系,自顶向下、逐层分解,直至找到满足功能要求的所有可实现的软件为止。SA方法给出一组帮助系统分析人员产生功能规约的原理与技术。它一般利用图形表达用户需求,使用的手段主要有数据流图、数据字典、结构化语言、判定表及判定树等。
               SA方法的步骤如下:
               (1)分析当前的情况,做出反映当前物理模型的数据流图(Data Flow Diagram, DFD)。
               (2)推导出等价的逻辑模型的DFD。
               (3)设计新的逻辑系统,生成数据字典和基元描述。
               (4)建立人机接口,提出可供选择的目标系统物理模型的DFD。
               (5)确定各种方案的成本和风险等级,据此对各种方案进行分析。
               (6)选择一种方案。
               (7)建立完整的需求规约。
               结构化设计
               SD方法给出一组帮助设计人员在模块层次上区分设计质量的原理与技术。它通常与SA方法衔接起来使用,以数据流图为基础得到软件的模块结构。SD方法尤其适用于变换型结构和事务型结构的目标系统。在设计过程中,它从整个程序的结构出发,利用模块结构图表述程序模块之间的关系。
               SD方法的步骤如下:
               (1)评审和细化数据流图。
               (2)确定数据流图的类型。
               (3)把数据流图映射到软件模块结构上,设计出模块结构的上层。
               (4)基于数据流图逐步分解高层模块,设计中下层模块。
               (5)对模块结构进行优化,得到更为合理的软件结构。
               (6)描述模块接口。
               SD方法的设计原则是:
               (1)使每个模块执行一个功能(坚持功能性内聚)。
               (2)每个模块使用过程语句(或函数方式等)调用其他模块。
               (3)模块间传送的参数作为数据使用。
               (4)模块间共用的信息(如参数等)尽量少。
               结构化方法的缺点
               结构化方法是目前最成熟、应用较广泛的一种工程化方法。当然,这种方法也有不足和局限性:
               (1)开发周期长。一方面使用户在较长的时间内不能得到一个可实际运行的物理系统,另一方面难以适应环境变化。
               (2)早期的结构化方法注重系统功能,兼顾数据结构的方面不多。
               (3)结构化程度较低的系统,在开发初期难于锁定功能要求。
               这些问题在应用中有的已经解决,同时也产生了其他一些方法,例如原型法、面向对象方法等。
 
       数据库
        数据库(DataBase,DB)是指长期存储在计算机内的、有组织的、可共享的数据集合。数据库中的数据按一定的数据模型组织、描述和存储,具有较小的冗余度、较高的数据独立性和易扩展性,并可为各种用户共享。
        系统使用的所有数据存储在一个或几个数据库中。
 
       数据流
        数据流由一组固定成分的数据组成,表示数据的流向。在DFD中,数据流的流向可以有以下几种:从一个加工流向另一个加工;从加工流向数据存储(写);从数据存储流向加工(读);从外部实体流向加工(输入);从加工流向外部实体(输出)。
        DFD中的每个数据流用一个定义明确的名字表示。除了流向数据存储或从数据存储流出的数据流不必命名外,每个数据流都必须有一个合适的名字,以反映该数据流的含义。
        数据流或者由具体的数据属性(也称为数据结构)构成,或者由其他数据流构成。组合数据流是由其他数据流构成的数据流,它们用于在高层的数据流图中组合相似的数据流,以使数据流图更便于阅读。
        控制流是对数据流图的补充,采用虚线表示,是对由触发系统功能的事件进行描述。
        另外,一个加工可以有多个输入数据流和多个输出数据流,此时可以加上一些扩充字符符号或图形元素来描述多个数据流之间的关系。如:
        (1)星号(*)。星号表示数据流之间存在“与”关系。如果是输入流则表示所有输入数据流全部到达后才能进行加工处理;如果是输出流则表示加工结束将同时产生所有的输出数据流。
        (2)加号(+)。加号表示数据流之间存在“或”关系。如果是输入流则表示其中任何一个输入数据流到达后就能进行加工处理;如果是输出流则表示加工处理的结果是至少产生其中一个输出数据流。
        (3)异或(⊕)。异或表示数据流之间存在“互斥”关系。如果是输入流则表示当且仅当其中一个输入流到达后才能进行加工处理;如果是输出流则表示加工处理的结果是仅产生这些输出数据流中的一个。
 
       损坏
        损坏包括:自然灾害(比如,地震、火灾、洪灾)、物理损坏(比如,硬盘损坏、设备使用寿命到期、外力破损等)、设备故障(比如,停电断电、电磁干扰等),等等。
        介质库必须符合防火、防水、防震、防潮、防腐蚀、防鼠害、防虫蛀、防静电何妨电磁辐射的安全要求。一、二、三类介质应有多份备份和进行异地存储。介质库应设立库管理员,负责库的管理工作,并将核查使用人员的身份与权限。介质库内的所有介质应当被统一编目、集中分类管理。
        解决由于自然的或人为的灾难(包括系统硬件、网络故障以及机房断电甚至火灾、地震等情况)导致的计算机系统数据灾难,避免单点故障的出现,这主要是利用冗余硬件设备保护用户I T环境内的某个服务器或是网络设备,备份中心应该考虑到应用、数据和操作系统各级的保护。
        常规采用的数据备份容易造成备份的数据与数据库中的数据不一致,使数据库很难恢复。而且,恢复通过磁带备份的数据,需要三天到一个星期的时间,在这阶段,业务将处在停滞状态。同时,由于备份介质与生产系统之间的在线交易在物理上不好分开,所以在机房发生危险(如火灾、水灾以及其他的灾难性事件)时,数据丢失可能会导致业务瘫痪。因而迫切需要解决的问题是:对关键应用来说,如何能保证数据的安全性,以产生抵御灾难性的能力。随着环境的变化,灾难事件的增多,不能将对数据的依赖建立在可能不会出现灾难这样的赌注上,关键业务需要容灾。
        因此异地容灾已成为数据可用性解决方案的重要组成部分。异地容灾系统提供了一个远程的应用备份现场,能防止因本地毁灭性灾难(地震、火灾、水灾等)引起的数据丢失。容灾方案的核心是两个关键技术:数据容灾(即数据复制)和应用的远程切换(即发生灾难时,应用可以很快地在异地切换)。其中,数据容灾与应用切换不能截然分开,应用切换应该以数据容灾为基础。我们建议在以后的日子中可以考虑异地容灾。
   题号导航      2012年上半年 数据库系统工程师 下午试卷 案例   本试卷我的完整做题情况  
1 /
2 /
3 /
4 /
5 /
 
第1题    在手机中做本题