免费智能真题库 > 历年试卷 > 软件设计师 > 2023年上半年 软件设计师 下午试卷 案例
  第3题      
  知识点:   类图   面向对象分析   数据库   用例图   来源   面向对象分析与设计   认证   身份认证

 
某高校图书馆购买了若干学术资源的镜像数据库(MinorDBMino)资源,现要求开发一套数字图书馆(Digitallibrary)系统,面向校内用户(User)提供学术资源(Resoure)浏览,检索和下载服务系统的主要要求描述如下:
(1)系统中存储了每个镜像数据库的基本信息,包括:数据库名称,访问地址,数据库属性以及数据库简介等信息,用户进入某个镜像数据降后,可以浏览检索以及下载其中的学术资源。
(2)学术资源包括会议论文(ConferencePaper)、期刑论文(JounalArticle)以及学位(Thesis)等:系统中存储了每个学术资源的题名、作者、发表时间、来源(哪个镜像数据库)、被引次数、下载次数等信息。对于会议论文,还需记录会议名称,召开时间以及召开地点;同一次会议的论文被收录在会议集(Proceeding)中。对于期刊论文,还需记录期刊名称,出版月份,期号以及主办单位;同一期号的论文被收录在一本期刊(Edition)中。对于学位论文,记录了学位类别(博士/硕士):毕业学校,专业及指导教师。会议集包含发表在该会议(在某个特定时间段,特定地点召开)上的所有文章。期刊的每一期在特定时间发行,其中包含若干篇文章。
(3)系统用户(User)包括在校学生(Student),教师(Teacher)以及其他在职人员(Staff)。用户使用学校的统一身份认证登录系统后,使用系统提供的各项服务。
(4)系统提供多种资源检索的方式,主要包括:按照资源的题名检索(SearchbyTite),按照作者名称检票(SearchByAathor),按照来源检索(SearchBySource)等。
(5)用户可以下载资源,系统记录每个资源被下载的次数。现采用面向对象分析与设计方法开发该系统,得到如图3-1所示的用例图以及图3-2所示的初始类图


 
问题:3.1   根据说明中的描述,给出图2中C1-C8对应项类名。
 
问题:3.2   根据说明中的描述,给出图2的类C1-C4的关键属性
 
问题:3.3   在该系统的开发过程中遇到了新的要求;用户能够在系统中对其所关注的数字资源注册他引通知,若该资源的他引次数发生变化,系候可以及时通知该用户,为了实现这个新的要求,可以在图3-2所示的类图中增加哪种设计模式?用150字以内文字解释选择该模式的原因。
 
 
 

   知识点讲解    
   · 类图    · 面向对象分析    · 数据库    · 用例图    · 来源    · 面向对象分析与设计    · 认证    · 身份认证
 
       类图
        类图(Class Diagram)展现了一组对象、接口、协作及其之间的关系。在面向对象系统的建模中所建立的最常见的图就是类图。
        类图给出了系统的静态设计视图,包含主动类的类图给出了系统的静态进程视图。作为模型管理视图还可以含有包或子系统,二者都用于把模型元素聚集成更大的组块。类图用于对系统的静态视图建模。这种视图主要支持系统的功能需求,即系统要提供给最终用户的服务。当对系统的静态设计建模时,通常以下述3种方式之一使用类图:对系统的词汇建模;对简单的协作建模;对逻辑数据库模式建模。
        作为静态视图的类图可以包含依赖、关联、泛化、组合、实现关系以及注解和约束等。
        (1)依赖关系是两个事物之间的语义关系,其中一个事物发生变化会影响另一个事物的语义。
        (2)关联关系是一种结构关系,它描述了一组对象之间的链接关系。其中有一种特殊类型的关联关系,即聚集关系,它描述了整体与部分的结构关系。
        (3)泛化关系是一种一般—特殊关系,利用这种关系,子类可以共享父类的结构和行为。
        (4)实现关系是类之间的语义关系,其中的一个类制订了另一个类保证执行的契约。实现关系用于两种情况:在接口和实现它们的类或构件之间;在用例和它们的协作之间。
        (5)组合是聚集关系的变种,表示元素间更强的组合关系。各种关系图例如下图所示。
        
        各种关系图例
 
       面向对象分析
        面向对象分析的目的是为了获得对应用问题的理解。理解的目的是确定系统的功能、性能要求。
        面向对象分析包含5个活动,即认定对象、组织对象、描述对象间的相互作用、定义对象的操作和定义对象的内部信息。
               认定对象
               在应用领域中,按自然存在的实体确立对象。在定义域中,首先将自然存在的"名词"作为一个对象,这通常是研究问题、定义域实体的良好开始。通过实体间的关系寻找对象常常没有问题,而困难在于寻找(选择)系统关心的实质性对象,实质性对象是系统稳定性的基础。
               组织对象
               分析对象间的关系,将相关对象抽象成类,其目的是为了简化关联对象,利用类的继承性建立具有继承性层次的类结构。抽象类时可从对象间的操作或一个对象是另一个对象的一部分来考虑,如房子由门和窗构成,门和窗是房子类的子类。由对象抽象类,通过相关类的继承构造类层次,所以说系统的行为和信息间的分析过程是一种迭代表征过程。
               描述对象间的相互作用
               描述出各对象在应用系统中的关系,如一个对象是另一个对象的一部分、一个对象与其他对象间的通信关系等。这样可以完整地描述每个对象的环境,由一个对象解释另一个对象,以及一个对象如何生成另一个对象,最后得到对象的界面描述。
               定义对象的操作
               当考虑对象的界面时,自然要考虑对象的操作。其操作有从对象直接标识的简单操作,如创建、增加和删除等;也有更复杂的操作,如将几个对象的信息连接起来。一般而言,应避免对象太复杂,当连接的对象很复杂时,可将其标识为新对象。当确定对象的操作后,再定义对象的内部。对象内部定义包括其内部数据信息、信息存储方法、继承关系以及可能生成的实例数等属性。
 
       数据库
        数据库(DataBase,DB)是指长期存储在计算机内的、有组织的、可共享的数据集合。数据库中的数据按一定的数据模型组织、描述和存储,具有较小的冗余度、较高的数据独立性和易扩展性,并可为各种用户共享。
        系统使用的所有数据存储在一个或几个数据库中。
 
       用例图
        用例图(Use Case Diagram)展现了一组用例、参与者(Actor)以及两者之间的关系。用例图通常包括用例、参与者、扩展关系、包含关系。用例图用于对系统的静态用例视图进行建模,主要支持系统的行为,即该系统在它的周边环境的语境中所提供的外部可见服务。当对系统的静态用例视图建模时,可以用下列两种方式来使用用例图:对系统的语境建模;对系统的需求建模。
 
       来源
        (1)由信息技术支持工程师提供。召集有经验的信息技术支持工程师,要求他们提供知识库的内容,知识库的建立并不是某个人智慧的积累,毕竟一个人的知识和经验有限,我们需要在企业中营造这样一种乐意共享自身知识的氛围,能够提供有效知识条目的工程师能够获得奖励。发布一系列奖惩和鼓励措施。
        (2)从过往的事件和问题的处理日志中提炼。事件与问题的处理过程需要详细记录,能为下一次处理相同事件提供指导和参考。知识库内容可以从这些处理日志中提炼后获得,事件处理步骤的详细记录对于知识库内容的建立有着重要的帮助。
 
       面向对象分析与设计
               面向对象分析
               面向对象分析(Object-Oriented Analysis,OOA)的目标是完成对所解问题的分析,确定待开发软件系统要做什么,建立系统模型。为了达到这一目标,必须完成以下任务:
               (1)在客户和软件工程师之间沟通基本的用户需求。
               (2)标识类(包括定义其属性和操作)。
               (3)刻画类的层次结构。
               (4)表示类(对象)之间的关系。
               (5)为对象行为建模。
               (6)递进地重复任务(1)至任务(5),直至完成建模。
               其中任务(2)至任务(4)刻画了待开发软件系统的静态结构,任务(5)刻画了系统的动态行为。
               面向对象分析的一般步骤如下:
               (1)获取客户对系统的需求,包括标识场景和用例,以及构建需求模型。
               (2)用基本的需求为指南来选择类和对象(包括属性和操作)。
               (3)定义类的结构和层次。
               (4)建造对象-关系模型。
               (5)建造对象-行为模型。
               (6)利用用例/场景来复审分析模型。
               面向对象设计
               面向对象设计(Object-Oriented Design,OOD)是将OOA所创建的分析模型转化为设计模型,其目标是定义系统构造蓝图。OOA与OOD之间不存在鸿沟,采用一致的概念和一致的表示法,OOD同样应遵循抽象、信息隐蔽、功能独立、模块化等设计准则。
               OOD在复用OOA模型的基础上,包含与OOA对应如下五个活动:
               (1)识别类及对象。
               (2)定义属性。
               (3)定义服务。
               (4)识别关系。
               (5)识别包。
               OOD需要考虑实现问题,如根据所用编程语言是否支持多继承或继承,而调整类结构。
               面向对象程序设计
               面向对象程序设计(Object Oriented Programming,OOP)是采用面向对象程序设计语言,采用对象、类及其相关概念所进行的程序设计,将设计模型转化为在特定的环境中系统,即实现系统。通过面向对象的分析与设计所得到的系统模型可以由不同的编程语言实现。一般采用如Java、C++、Smalltalk等面向对象语言,也可以用非面向对象语言实现,如C语言中的结构。
               面向对象方法中的五大原则
               (1)单一责任原则(Single Responsibility Principle,SRP)。当需要修改某个类的时候原因有且只有一个,让一个类只做一种类型责任。
               (2)开关原则(Open&Close Principle,OCP)。软件实体应该是可扩展,即开放的;而不可修改的,即封闭的。
               (3)里氏替换原则(Liskov Substitution Principle,LSP)。在任何父类可以出现的地方,都可以用子类的实例来赋值给父类型的引用。当一个子类的实例应该能够替换任何其超类的实例时,它们之间才具有是一个(is-a)关系。
               (4)依赖倒置原则(Interface Segregation Principle,ISP)。高层模块不应该依赖于低层模块,二者都应该依赖于抽象;抽象不应该依赖于细节,细节应该依赖于抽象。
               (5)接口分离原则(Dependence Inversion Principle,DIP)。依赖于抽象,不要依赖于具体,同时在抽象级别不应该有对于细节的依赖。这样做的好处就在于可以最大限度地应对可能的变化,即:使用多个专门的接口比使用单一的总接口总要好。
 
       认证
        认证又分为实体认证和消息认证两种。实体认证是识别通信对方的身份,防止假冒,可以使用数字签名的方法。消息认证是验证消息在传送或存储过程中有没有被篡改,通常使用报文摘要的方法。
               基于共享密钥的认证
               如果通信双方有一个共享的密钥,则可以确认对方的真实身份。这种算法依赖于一个双方都信赖的密钥分发中心(Key Distribution Center,KDC),如下图所示,其中的A和B分别代表发送者和接收者,KAKB分别表示A、B与KDC之间的共享密钥。
               
               基于共享密钥的认证协议
               认证过程如下:A向KDC发出消息{A,KA(B,KS)},说明自己要与B通信,并指定了与B会话的密钥KS。注意,这个消息中的一部分(B,KS)是用KA加密的,所以第三者不能了解消息的内容。KDC知道了A的意图后就构造了一个消息{KB(A,KS)}发给B。B用KB解密后就得到了A和KS,然后就可以与A用KS会话了。
               然而,主动攻击者对这种认证方式可能进行重放攻击。例如A代表雇主,B代表银行。第三者C为A工作,通过银行转账取得报酬。如果C为A工作了一次,得到了一次报酬,并偷听和复制了A和B之间就转账问题交换的报文,那么贪婪的C就可以按照原来的次序向银行重发报文2,冒充A与B之间的会话,以便得到第二次、第三次……报酬。在重放攻击中攻击者不需要知道会话密钥KS,只要能猜测密文的内容对自己有利或是无利就可以达到攻击的目的。
               基于公钥的认证
               这种认证协议如下图所示。A向B发出EB(A,RA),该报文用B的公钥加密。B返回EARARBKS),用A的公钥加密。这两个报文中分别有A和B指定的随机数RARB,因此能排除重放的可能性。通信双方都用对方的公钥加密,用各自的私钥解密,所以应答比较简单。其中的KS是B指定的会话键。这个协议的缺陷是假定双方都知道对方的公钥。
               
               基于公钥的认证协议
 
       身份认证
        身份认证的主要目标是检验身份,即确定合法用户的身份和权限,识别假冒他人身份的用户。认证系统可以与授权系统配合使用,在用户的身份通过认证后,根据其具有的授权来限制、其操作行为。常见的系统身份认证方式主要有入网访问控制和权限控制。
               入网访问控制
               入网访问控制为网络访问提供了第一层访问控制,限制未经授权的用户访问部分或整个信息系统。用户要访问信息系统,首先要获得授权,然后接受认证。对信息系统进行访问包含三个步骤:第一步,能够使用终端;第二步,进入系统;第三步,访问系统中的具体命令、交易、权限、程序和数据。目前,从市场上可以买到针对计算机、局域网、移动设备和拨号通信网的访问控制软件。访问控制规程要求为每个有效用户分配一个唯一的用户身份标识(UID),使用这个UID对要求访问信息系统用户的真实身份进行验证。可以使用数字证书、智能卡、硬件令牌、手机令牌、签名、语音、指纹及虹膜扫描等生物特征鉴别。
               其中,数字证书就是互联网通信中标志通信各方身份信息的一系列数据,提供了一种在Internet上验证身份的方式,其作用类似于司机的驾驶执照或日常生活中的身份证。它是由一个权威机构——CA机构,又称证书授权(Certificate Authority)中心发行的,人们可以在网上用它来识别对方的身份。数字证书有两种形式,即文件证书和移动证书USBKEY。其中移动证书USBKEY是一种应用了智能芯片技术的数据加密和数字签名工具,其中存储了每个用户唯一、不可复制的数字证书,在安全性上更胜一筹,是现在电子政务和电子商务领域最流行的身份认证方式。其原理是通过USB接口与计算机相连,用户个人信息存放在存储芯片中,可由系统进行读/写,当需要对用户进行身份认证时,系统提请用户插入USBKEY并读出上面记录的信息,信息经加密处理送往认证服务器,在服务器端完成解密和认证工作,结果返回给用户所请求的应用服务。
               生物特征鉴别通过自动验证用户的生理特征或行为特征来识别身份。多数生物学测定系统的工作原理是将一个人的某些特征与预存的资料(在模板中)进行对比,然后根据对比结果进行评价。常见的测定方法如下。
               (1)脸部照片。计算机对脸部进行照相并将其与预存的照片进行对比。这种方法能够成功地完成对用户的识别,只是在识别双胞胎时不够准确。
               (2)指纹扫描。当用户登录时,可扫描用户的指纹并将其与预存的指纹进行对比,确定是否匹配。
               (3)手型识别。这种方法与指纹扫描非常类似,不同之处在于验证人员使用类似于电视的照相机对用户的手进行拍照,然后将手的某些特征(如手指长度和厚度等)与计算机中存储的信息进行对比。
               (4)虹膜扫描。这种技术是使用眼睛中有颜色的一部分来确定个人身份的方法,通过对眼睛进行拍照并对照片进行分析来确定用户身份,结果非常准确。
               (5)视网膜扫描。这种方法对视网膜上的血管进行扫描,将扫描结果与预存的照片进行对比。
               (6)语音扫描。这种方法通过对比用户的语音与计算机中预存的语音来验证用户身份。
               (7)签名。将签名与预存的有效签名进行对比。
               (8)击键动态。将用户键盘压力和速度与预存的信息进行对比。
               (9)还有脸部温度测定等方法。
               网络的权限控制
               网络权限控制是针对网络非法操作所提出的一种安全保护措施。用户和用户组被赋予一定的权限。网络控制用户和用户组可以访问哪些目录、子目录、文件和其他资源;可以指定用户对这些文件、目录、设备能够执行哪些操作;可以根据访问权限将用户分为特殊用户(系统管理员)和一般用户,系统管理员根据用户的实际需要为他们分配操作权限。网络应允许控制用户对目录、文件、设备的访问。用户在目录一级指定的权限对所有文件和子目录均有效,用户还可进一步指定目录下子目录和文件的权限。对目录和文件的访问权限一般有八种:系统管理员权限、读权限、写权限、创建权限、删除权限、修改权限、文件查找权限、存取控制权限。
   题号导航      2023年上半年 软件设计师 下午试卷 案例   本试卷我的完整做题情况  
1 /
2 /
3 /
4 /
5 /
6 /
 
第3题    在手机中做本题