免费智能真题库 > 历年试卷 > 软件设计师 > 2022年上半年 软件设计师 下午试卷 案例
  第3题      
  知识点:   类图   图形用户界面   用户界面   用例图   编码   面向对象方法   排序   图形   维护

 
[说明]
某公司的人事能门拥有一个地址博(AddressBookSystem),管理系统(ddressBookSystem),用于管理公司所有员工的地址记录(PersonAddress)。员工的地址记录包括:姓名、住址、城市、省份、邮政编码以及联系电话等等信息。
管理员可以完成对地址簿中地址记录的管理操作,包括:
(1)维护地址记录。根据司的人员变动情况,对地址记录进行添加、修改、删除等操作;
(2)排序。按照员工姓氏的字典顺序或邮政编码对址领中的所有记录。
(3)打印地址记录。以邮件标签的格式打印一个地址单独的地址簿。
系统会记录管理为便于管理,管理员在系统中为公可的不同部门建立员对每个地址簿的修改操作,包括:
(1)创建地址簿。新建个地址簿并保存。
(2)打开地址簿。打开一一个已有的地址簿。
(3)修改地址簿。对打开的地址簿进行修改并保存
系统将提供一个GUI(图形用户界面)实现对地址簿的各种操作。
现采用面向对象方法分析并设计该地址簿管理系统,得到如图3-1所示的用例图和图3-2所示的类图

 
问题:3.1   (6分)
根据说明中的描述,给出图3-1中U1~U6所对应的用例名。
 
问题:3.2   (5分)
根据说明中的描述,给出图3-2中类Adresk的主要属性和方法以及类Pernoddress的主要属性(可以使用说明中的文字)。
 
问题:3.3   (4分)
根据说明中的描述以及图31所示的用例图,请阅enedecx系cxe关的含义是什么?
 
 
 

   知识点讲解    
   · 类图    · 图形用户界面    · 用户界面    · 用例图    · 编码    · 面向对象方法    · 排序    · 图形    · 维护
 
       类图
        类图(Class Diagram)展现了一组对象、接口、协作及其之间的关系。在面向对象系统的建模中所建立的最常见的图就是类图。
        类图给出了系统的静态设计视图,包含主动类的类图给出了系统的静态进程视图。作为模型管理视图还可以含有包或子系统,二者都用于把模型元素聚集成更大的组块。类图用于对系统的静态视图建模。这种视图主要支持系统的功能需求,即系统要提供给最终用户的服务。当对系统的静态设计建模时,通常以下述3种方式之一使用类图:对系统的词汇建模;对简单的协作建模;对逻辑数据库模式建模。
        作为静态视图的类图可以包含依赖、关联、泛化、组合、实现关系以及注解和约束等。
        (1)依赖关系是两个事物之间的语义关系,其中一个事物发生变化会影响另一个事物的语义。
        (2)关联关系是一种结构关系,它描述了一组对象之间的链接关系。其中有一种特殊类型的关联关系,即聚集关系,它描述了整体与部分的结构关系。
        (3)泛化关系是一种一般—特殊关系,利用这种关系,子类可以共享父类的结构和行为。
        (4)实现关系是类之间的语义关系,其中的一个类制订了另一个类保证执行的契约。实现关系用于两种情况:在接口和实现它们的类或构件之间;在用例和它们的协作之间。
        (5)组合是聚集关系的变种,表示元素间更强的组合关系。各种关系图例如下图所示。
        
        各种关系图例
 
       图形用户界面
        随着文字、图形、声音、图像等多媒体技术的出现,各种图形用户界面应运而生,用户既可使用传统的字符,也可以使用图形、图像和声音同计算机进行交互,操作更为自然、更加方便,多媒体技术进一步推广、发展与完善。现代界面的关键技术是超文本。超文本的"超"体现在它不仅包括文本,还包括图像、音频、视频等多媒体信息,即将文本的概念扩充到超文本,超文本的最大特点是具有指向性。
 
       用户界面
        用户界面是计算机中实现用户与计算机通信的软件和硬件部分的总称。用户界面也称为用户接口或人机界面。
               控制面板式用户界面
               计算机发展早期,用户通过控制台开关、板键或穿孔纸带向计算机送入命令或数据,而计算机通过指示灯及打印机输出运行情况或结果。这种界面的特点是人去适应计算机,现在看来是十分笨拙的。
               字符用户界面
               字符用户界面是基于字符型的。用户通过键盘或其他输入设备输入字符,由显示器或打印机输出字符。字符用户界面的优点是功能强、灵活性好、屏幕开销少;缺点是操作步骤繁琐,学会操作较费时。
               图形用户界面
               随着文字、图形、声音、图像等多媒体技术的出现,各种图形用户界面应运而生,用户既可使用传统的字符,也可以使用图形、图像和声音同计算机进行交互,操作更为自然、更加方便,多媒体技术进一步推广、发展与完善。现代界面的关键技术是超文本。超文本的"超"体现在它不仅包括文本,还包括图像、音频、视频等多媒体信息,即将文本的概念扩充到超文本,超文本的最大特点是具有指向性。
               新一代用户界面
               多媒体、多通道及智能化是新一代用户界面的技术支持。新的、更加自然的交互技术,将为用户提供更方便的输入技术。计算机将通过多种感知通道来理解用户的意图,实现用户的要求;计算机不仅以二维屏幕向用户输出,而且能以真实感的计算机仿真环境向用户提供真实的体验。
 
       用例图
        用例图(Use Case Diagram)展现了一组用例、参与者(Actor)以及两者之间的关系。用例图通常包括用例、参与者、扩展关系、包含关系。用例图用于对系统的静态用例视图进行建模,主要支持系统的行为,即该系统在它的周边环境的语境中所提供的外部可见服务。当对系统的静态用例视图建模时,可以用下列两种方式来使用用例图:对系统的语境建模;对系统的需求建模。
 
       编码
               编码过程
               在给定了软件设计规格说明书后,下一步的工作就是编写代码。一般来说,编码工作可以分为四个步骤:
               (1)确定源程序的标准格式,制订编程规范。
               (2)准备编程环境,包括软硬件平台的选择,包括操作系统、编程语言、集成开发环境等。
               (3)编写代码。
               (4)进行代码审查,以提高编码质量。为提高审查的效率,在代码审查前需要准备一份检查清单,并设定此次审查须找到的bug数量。在审查时,要检查软件规格说明书与编码内容是否一致;代码对硬件和操作系统资源的访问是否正确;中断控制模块是否正确等。
               编码准则
               在嵌入式系统中,由于资源有限,且实时性和可靠性要求较高,因此,在开发嵌入式软件时,要注意对执行时间、存储空间和开发/维护时间这三种资源的使用进行优化。也就是说,代码的执行速度要越快越好,系统占用的存储空间要越小越好,软件开发和维护的时间要越少越好。
               具体来说,在编写代码时,需要做到以下几点:
               .保持函数短小精悍。一个函数应该只实现一个功能,如果函数的代码过于复杂,将多个功能混杂在一起,就很难具备可靠性和可维护性。另外,要限制函数的长度,一般来说,一个函数的长度最好不要超过100行。
               .封装代码。将数据以及对其进行操作的代码封装在一个实体中,其他代码不能直接访问这些数据。例如,全局变量必须在使用该变量的函数或模块内定义。对代码进行封装的结果就是消除了代码之间的依赖性,提高了对象的内聚性,使封装后的代码对其他行为的依赖性较小。
               .消除冗余代码。例如,将一个变量赋给它自己,初始化或设置一个变量后却从不使用它,等等。研究表明,即使是无害的冗余也往往和程序的缺陷高度关联。
               .减少实时代码。实时代码不但容易出错、编写成本较高,而且调试成本可能更高。如果可能,最好将对执行时间要求严格的代码转移到一个单独的任务或者程序段中。
               .编写优雅流畅的代码。
               .遵守代码编写标准并借助检查工具。用自动检验工具寻找缺陷比人工调试便宜,而且能捕捉到通过传统测试检查不到的各种问题。
               编码技术
                      编程规范
                      在嵌入式软件开发过程中,遵守编程规范,养成良好的编程习惯,这是非常重要的,将直接影响到所编写代码的质量。
                      编程规范主要涉及的三方面内容:
                      .命名规则。从编译器的角度,一个合法的变量名由字母、数字和下画线三种字符组成,且第一个字符必须为字母或下画线。但是从程序员的角度,一个好的名字不仅要合法,还要载有足够的信息,做到“见名知意”,并且在语意清晰、不含歧义的前提下,尽可能地简短。
                      .编码格式。在程序布局时,要使用缩进规则,例如变量的定义和可执行语句要缩进一级,当函数的参数过长时,也要缩进。另外,括弧的使用要整齐配对,要善于使用空格和空行来美化代码。例如,在二元运算符与其运算对象之间,要留有空格;在变量定义和代码之间要留有空行;在不同功能的代码段之间也要用空行隔开。
                      .注释的书写。注释的典型内容包括:函数的功能描述;设计过程中的决策,如数据结构和算法的选择;错误的处理方式;复杂代码的设计思想等。在书写注释时要注意,注释的内容应该与相应的代码保持一致,同时要避免不必要的注释,过犹不及。
                      性能优化
                      由于嵌入式系统对实时性的要求较高,因此一般要求对代码的性能进行优化,使代码的执行速度越快越好。以算术运算为例,在编写代码时,需要仔细地选择和使用算术运算符。一般来说,整数的算术运算最快,其次是带有硬件支持的浮点运算,而用软件来实现的浮点运算是非常慢的。因此,在编码时要遵守以下准则:
                      .尽量使用整数(char、short、int和long)的加法和减法。
                      .如果没有硬件支持,尽量避免使用乘法。
                      .尽量避免使用除法。
                      .如果没有硬件支持,尽量避免使用浮点数。
                      下图是一个例子,其中两段代码的功能完全一样,都是对一个结构体数组的各个元素进行初始化,但采用两种不同的方法来实现。下图(a)采用数组下标的方法,在定位第i个数组元素时,需要将i乘以结构体元素的大小,再加上数组的起始地址。下图(b)采用的是指针访问的方法,先把指针fp初始化为数组的起始地址,然后每访问完一个数组元素,就把fp加1,指向下一个元素。在一个奔腾4的PC上,将这两段代码分别重复10 700次,右边这段代码需要1ms,而左边这段代码需要2.13ms。
                      
                      算术运算性能优化的例子
 
       面向对象方法
        面向对象方法是当前的主流开发方法,拥有大量不同的方法,主要包括OMT(Object Model Technology,对象建模技术)方法、Coad/Yourdon方法、OOSE(Object-Oriented Software Engineering,面向对象的软件工程)及Booch方法等,而OMT、OOSE及Booch最后统一成为UML(United Model Language,统一建模语言)。
               Coad/Yourdon方法
               Coad/Yourdon方法主要由面向对象的分析(Object-Oriented Analysis, OOA)和面向对象的设计(Object-Oriented Design, OOD)构成,特别强调OOA和OOD采用完全一致的概念和表示法,使分析和设计之间不需要表示法的转换。该方法的特点是表示简炼、易学,对于对象、结构、服务的认定较系统和完整,可操作性强。
               在Coda/Yourdon方法中,OOA的任务主要是建立问题域的分析模型。分析过程和构造OOA概念模型的顺序由5个层次组成,分别是类与对象层、属性层、服务层、结构层和主题层,它们表示分析的不同侧面。OOA需要经过5个步骤来完成整个分析工作,即标识对象类、标识结构与关联(包括继承、聚合、组合及实例化等)、划分主题、定义属性和定义服务。
               OOD中将继续贯穿OOA中的5个层次和5个活动,它由4个部分组成,分别是人机交互部件、问题域部件、任务管理部件和数据管理部件,其主要的活动就是这4个部件的设计工作。
               Booch方法
               Booch认为软件开发是一个螺旋上升的过程,每个周期包括4个步骤,分别是标识类和对象、确定类和对象的含义、标识关系、说明每个类的接口和实现。Booch方法的开发模型包括静态模型和动态模型,静态模型分为逻辑模型(类图、对象图)和物理模型(模块图、进程图),描述了系统的构成和结构。动态模型包括状态图和顺序图。该方法对每一步都做了详细的描述,描述手段丰富而灵活。
               Booch不仅建立了开发方法,还提出了设计人员的技术要求,以及不同开发阶段的人力资源配置。Booch方法的基本模型包括类图与对象图,主张在分析和设计中既使用类图,也使用对象图。
               OMT方法
               OMT作为一种软件工程方法学,支持整个软件生存周期,覆盖了问题构成分析、设计和实现等阶段。OMT方法使用了建模的思想,讨论如何建立一个实际的应用模型。从3个不同而又相关的角度建立了3类模型,分别是对象模型、动态模型和函数模型,OMT为每一个模型提供了图形表示。
               (1)对象模型。描述系统中对象的静态结构、对象之间的关系、属性和操作。它表示静态的、结构上的、系统的“数据”特征。主要用对象图来实现对象模型。
               (2)动态模型。描述与时间和操作顺序有关的系统特征,如激发事件、事件序列、确定事件先后关系的状态。它表示瞬时、行为上的和系统的“控制”特征。主要用状态图来实现动态模型。
               (3)函数模型。描述与值的变换有关的系统特征,包括功能、映射、约束和函数依赖。主要用数据流图来实现功能模型。
               在进行OMT建模时,通常包括4个活动,分别是分析、系统设计、对象设计和实现。
               (1)分析:建立可理解的现实世界模型。通常从问题陈述入手,通过与客户的不断交互及对现实世界背景知识的了解,对能够反映系统的3个本质特征(对象类及它们之间的关系,动态的控制流,受约束的数据的函数变换)进行分析,构造出现实世界的模型。
               (2)系统设计:确定整个系统的体系结构,形成求解问题和建立解答的高层策略。
               (3)对象设计:在分析的基础上,建立基于分析模型的设计模型,并考虑实现细节。其焦点是实现每个类的数据结构及所需的算法。
               (4)实现:将对象设计阶段开发的对象类及其关系转换为程序设计语言、数据库或硬件的实现。
               OOSE
               OOSE在OMT的基础上,对功能模型进行了补充,提出了用例(use case)的概念,最终取代了数据流图来进行需求分析和建立功能模型。
               OOSE方法采用5类模型来建立目标系统。
               (1)需求模型:获取用户的需求,识别对象,主要的描述手段有用例图、问题域对象模型及用户界面。
               (2)分析模型:定义系统的基本结构。将分析模型中的对象分别识别到分析模型中的实体对象、界面对象和控制对象三类对象中。每类对象都有自己的任务、目标并模拟系统的某个方面。实体对象模拟那些在系统中需要长期保存并加以处理的信息。实体对象由使用事件确定,通常与现实生活中的一些概念相符合。界面对象的任务是提供用户与系统之间的双向通信,在使用事件中所指定的所有功能都直接依赖于系统环境,它们都放在界面对象中。控制对象的典型作用是将另外一些对象组合形成一个事件。
               (3)设计模型:分析模型只注重系统的逻辑构造,而设计模型需要考虑具体的运行环境,即将分析模型中的对象定义为模块。
               (4)实现模型:用面向对象的语言来实现。
               (5)测试模型:测试的重要依据是需求模型和分析模型,测试的方法与9.8节所介绍的方法类似,而底层是对类(对象)的测试。测试模型实际上是一个测试报告。
               OOSE的开发活动主要分为3类,分别是分析、构造和测试。其中分析过程分为需求分析和健壮性分析两个子过程,分析活动分别产生需求模型和分析模型。构造活动包括设计和实现两个子过程,分别产生设计模型和实现模型。测试过程包括单元测试、集成测试和系统测试三个过程,共同产生测试模型。
               用例是OOSE中的重要概念,在开发各种模型时,它是贯穿OOSE活动的核心,描述了系统的需求及功能。用例实际上是描述系统用户(使用者、执行者)对于系统的使用情况,是从使用者的角度来确定系统的功能。因此,首先必须分析确定系统的使用者,然后进一步考虑使用者的主要任务、使用的方式、识别所使用的事件,即用例。
 
       排序
        假设含n个记录的文件内容为{R1R2,…,Rn},其相应的关键字为{k1k2,…,kn}。经过排序确定一种排列{Rj1Rj2,…,Rjn},使得它们的关键字满足如下递增(或递减)关系:kj1≤kj2≤…≤kjn(或kj1kj2≥…≥kjn)。
 
       图形
               表示与存储
               图形是指能在人的视觉系统中产生视觉印象的客观对象,它包括人眼观察到的自然景物、拍摄到的图片、绘图工具得到的工程图、用数学方法描述的图像等。图形是客观对象的一种抽象表示,它带有形状和颜色信息。构成图形的要素有几何要素(刻画对象轮廓形状的点、线、面、体等)和非几何要素(刻画对象表面属性或材质的颜色、灰度等)。图形可用形状参数和属性参数表示,即参数表示法;也可用带有灰度或色彩的点阵图表示,简称像素图、图像(数字图像),即点阵表示法。
               图形是计算机图形学(Computer Graphics, CG)研究的对象。ISO给计算机图形学的定义为:研究用计算机进行数据和图形之间相互转换的方法和技术。还有定义为:计算机图形学是运用计算机描述、输入、表示、存储、处理(检索/变换/图形运算)、显示、输出图形的一门学科。计算机图形技术主要研究如何在计算机中表示图形,以及利用计算机进行图形的计算、处理和显示的相关原理和算法,其核心是将客观世界对象以图形的形式在计算机内表示出来,主要包括模型生成和图形显示,如下图所示。模型生成是获取、存储和管理客观世界物体的计算机模型,以在计算机上建立客观世界的模拟环境。图形显示是生成、处理和操纵客观世界物体模型的可视化结果,以在输出设备上呈现客观世界物体的图像。
               
               计算机图形生成模型
               计算机图形技术所涉及的研究内容非常广泛,如图形硬件、图形标准、图形交互技术、光栅图形生成算法、曲线曲面造型、实体造型、真实感图形计算与显示算法、风格化绘制、科学计算可视化、计算机动画、自然景物仿真、虚拟现实等。
               图形的文件格式
               ① TIF。
               TIF格式是平面设计中最常用的一种图形格式,因为其属于跨平台的格式,而且支持CMYK色,所以经常被用于印刷输出的场合。此外还有一个特色就是其支持LZW压缩,即不失真压缩,也就是说不管如何压缩,图档的品质都还能保持原来的水准。
               ②TGA。
               TGA图形格式的最大特点就是可以制作出不规则形状的图档,一般图档都为四方形,若需要圆形、菱形甚至镂空的图档时,TGA格式可能就会派上用场了。TGA格式同样支持压缩,也属于不失真压缩。
               ③ PSD。
               PSD格式是Photoshop专用的图形文件格式,该格式包含图形中的色层、遮罩、色频、选取区等Photoshop可以处理的属性,这样全方位的存储如果运用得当,几乎可以将创作的过程完整地记录,以便日后的修改。
               ④UFO。
               UFO格式是另一个著名制图软件Ulead Photoimapct的专用图形格式,其是致力于追赶Adobe的有力科技,同样也发展出了与PSD格式类似的图档格式,能够完整记录所有处理过的属性,不过在记录原理上却有些不同,UFO以物件代替图层,这一点并无大碍,因为Photoimapct与Photoshop本身就有很多的不同之处。
               ⑤RIF。
               RIF是著名制图软件Painter的专用图形格式,处理方式和前面两种大同小异,都可以存储相当多的属性资料。另外,Painter可以打开PSD文件,而且经过Painter处理的PSD文件可以在Photoshop中通用,这样就可以使同一文件在Photoshop和Painter中交换使用了。
               ⑥ CDR。
               CDR是著名制图软件CorelDRAW的专用图形格式,由于CorelDRAW是向量软件,所以CDR可以记录的资料可以说是千奇百怪,各物件的属性、位置、分页通通可以存储,以便日后修改。在兼容度上,目前基本没有其他软件可以打开CDR文件,这是向量软件的通病。
               ⑦EPS。
               EPS是印刷时经常用到的格式,向量图可以转换成EPS格式,点阵图也可以转成EPS格式。EPS文件可以同时存储点阵以及向量,故专门用于印前操作,如排版等,所以一般在印刷时都使用EPS文件。
               图形处理技术
               图形处理技术的范围很广,这里以真实感图形绘制和非真实感图形绘制为例简单介绍图形处理技术。
               真实感图形绘制是指借助数学、物理、计算机等学科知识使用计算机生成三维场景中真实逼真的图形、图像的过程。真实感图像绘制主要包括两个方面:表面特性的精确表示和场景中光照效果的物理描述。真实感图形绘制的应用非常广泛,例如计算机动画制作、影视特效仿真、计算机游戏、多媒体教育和虚拟现实等。真实感图形绘制所涉及的技术主要有消隐技术、表面细节绘制技术、纹理贴图技术、高级光照与着色技术等。
               非真实感图形绘制是指利用计算机生成不具有照片般真实感而具有手绘风格的图形的技术,其目标不在于表现图形的真实性,而是在于表现图形的艺术特质、模拟艺术作品(甚至包括作品中的缺陷)或作为真实感图形的有效补充。非真实感图形绘制的应用领域也非常广泛,其中一个重要的应用领域就是对绘画进行模拟,主要模拟的画种有油画、水彩画、钢笔画、铅笔画、水墨画和卡通动画。非真实感图形绘制所涉及的技术主要有基于像素的绘制,基于线条、曲线和笔画的绘制,模拟绘画绘制等。
               如下图所示,树和天空是采用真实感图形绘制技术绘制出来的,国画是采用非真实感图形绘制技术绘制出来的。
               
               真实感图形绘制和非真实感图形绘制
 
       维护
        维护阶段是软件生存期中时间最长的阶段。软件一旦交付正式投入运行后便进入软件维护阶段。该阶段的关键任务是通过各种必要的维护活动使系统持久地满足用户的需要。每一项维护活动都应该准确地记录下来,作为正式的文档资料加以保存。
   题号导航      2022年上半年 软件设计师 下午试卷 案例   本试卷我的完整做题情况  
1 /
2 /
3 /
4 /
5 /
6 /
 
第3题    在手机中做本题