免费智能真题库 > 历年试卷 > 系统架构设计师 > 2010年下半年 系统架构设计师 下午试卷 案例
  第1题      
  知识点:   Linux   管道   需求分析   Linux操作系统   Word   操作系统   评估   数据表示

 
【说明】
某公司欲针对Linux操作系统开发一个KWIC (KeyWord in Context)检索系统。该系统接收用户输入的査询关键字,依据字母顺序给出相关帮助文档并根据帮助内容进行循环滚动阅读。在对KWIC系统进行需求分析时,公司的业务专家发现用户后续还有可能采用其他方式展示帮助内容。根据目前需求,公司的技术人员决定通过重复剪切帮助文档中的第一个单词并将其插入到行尾的方式实现帮助文档内容的循环滚动,后续还将采用其他的方法实现这一功能。
在对KWIC系统的架构进行设计时,公司的架构师王工提出采用共享数据的主程序-子程序的架构风格,而李工则主张采用管道-过滤器的架构风格。在架构评估会议上, 大家从系统的算法变更、功能变更、数据表示变更和性能等方面对这两种方案进行评价, 最终采用了李工的方案。
 
问题:1.1   在实际的软件项目开发中,采用恰当的架构风格是项目成功的保证。请用200字以内的文字说明什么是软件架构风格,并对主程序-子程序和管道-过滤器这两种架构风格的特点进行描述。
 
问题:1.2   请完成表1-1中的空白部分(用+表示优、一表示差),对王工和李工提出的架构风格进行评价,并指出采用李工方案的原因。
 
问题:1.3   图1-1是李工给出的架构设计示意图,请将恰当的功能描述填入图中的(1)〜(4)。
 
 
 

   知识点讲解    
   · Linux    · 管道    · 需求分析    · Linux操作系统    · Word    · 操作系统    · 评估    · 数据表示
 
       Linux
        Linux是一个类似于UNIX的操作系统,Linux系统不仅能够运行于PC平台,还在嵌入式系统方面大放光芒,在各种嵌入式Linux迅速发展的状况下,Linux逐渐形成了可与Windows CE等嵌入式操作系统进行抗衡的局面。嵌入式Linux的特点如下:
        (1)精简的内核,性能高,稳定,多任务。
        (2)适用于不同的CPU,支持多种架构,如x86、ARM、ALPHA、SPARC等。
        (3)能够提供完善的嵌入式图形用户界面以及嵌入式X-Windows。
        (4)提供嵌入式浏览器、邮件程序、音频和视频播放器、记事本等应用程序。
        (5)提供完整的开发工具和软件开发包,同时提供PC上的开发版本。
        (6)用户可定制,可提供图形化的定制和配置工具。
        (7)常用嵌入式芯片的驱动集,支持大量的周边硬件设备,驱动丰富。
        (8)针对嵌入式的存储方案,提供实时版本和完善的嵌入式解决方案。
        (9)完善的中文支持,强大的技术支持,完整的文档。
        (10)开放源码,丰富的软件资源,广泛的软件开发者的支持,价格低廉,结构灵活,适用面广。
 
       管道
        管道是提供非结构化数据交换和实现任务同步的内核对象。每个管道有两个端口,一端用来读,另一端用来写。数据在管道中就像一个非结构的字节流,数据按照FIFO方式从管道中读出。一般EOS内核支持两类管道对象:
        (1)命名管道。具有一个类似于文件名的名字,像文件或设备一样,出现在文件系统中,需要使用命名管道的任何任务或ISR都可以用该名字对其进行引用。
        (2)无名管道。一般动态创建,且必须使用创建时返回的描述符才可引用此类型的管道。
        通常,管道支持以下几种操作:创建和删除一个管道、读、写管道、管道控制、管道上的轮询。
 
       需求分析
        需求分析的方法种类繁多,不过如果按照分解的方式不同,可以很容易地划分出几种大类型:
        (1)结构化分析方法。本节后续内容将详细讨论SA的内容。
        (2)面向对象分析方法。将在9.4节中进行详细介绍。
        (3)面向问题域的分析(Problem Domain Oriented Analysis,PDOA)方法。PDOA更多地强调描述,而少强调建模。它的描述大致分为关注问题域和关注解系统的待求行为这两个方面。问题框架是PDOA的核心元素,是将问题域建模成为一系列相互关联的子域。也可以把问题框架看作是开发上下文图,但不同的是上下文图的建模对象是针对解系统,而问题框架则是针对问题域。也就是说,问题框架的目标就是大量地捕获更多有关问题域的信息。PDOA方法现在还在研究阶段,并未广泛应用。
               业务流程分析
               业务流程分析的目的是了解各个业务流程的过程,明确各个部门之间的业务关系和每个业务处理的意义,为业务流程的合理化改造提供建议,为系统的数据流程变化提供依据。
               业务流程分析的步骤如下:
               (1)通过调查掌握基本情况。
               (2)描述现有业务流程(绘制业务流程图)。
               (3)确认现有业务流程。
               (4)对业务流程进行分析。
               (5)发现问题,提出解决方案。
               (6)提出优化后的业务流程。
               在业务流程图中使用的基本符号如下图所示。
               
               业务流程图符号
               数据流图
               DFD是结构化分析中的重要方法和工具,是表达系统内数据的流动并通过数据流描述系统功能的一种方法。DFD还可被认为是一个系统模型,在信息系统开发中,一般将它作为需求说明书的组成部分。
               DFD从数据传递和加工的角度,利用图形符号通过逐层细分描述系统内各个部件的功能和数据在它们之间传递的情况,来说明系统所完成的功能。具体来说,DFD的主要作用如下:
               (1)DFD是理解和表达用户需求的工具,是系统分析的手段。由于DFD简明易懂,理解它不需要任何计算机专业知识,因此通过它同客户交流很方便。
               (2)DFD概括地描述了系统的内部逻辑过程,是系统分析结果的表达工具,因而也是系统设计的重要参考资料,是系统设计的起点。
               (3)DFD作为一个存档的文字材料,是进一步修改和充实开发计划的依据。
               在DFD中,通常会出现4种基本符号,分别是数据流、加工、数据存储和外部实体(数据源及数据终点)。数据流是具有名字和流向的数据,在DFD中用标有名字的箭头表示。加工是对数据流的变换,一般用圆圈表示。数据存储是可访问的存储信息,一般用直线段表示。外部实体是位于被建模的系统之外的信息生产者或消费者,是不能由计算机处理的成分,它们分别表明数据处理过程的数据来源及数据去向,用标有名字的方框表示。下图是一个典型的DFD示例。
               
               办理取款手续的DFD
               为了表达数据处理过程中的数据加工情况,用一个DFD是不够的。稍微复杂的实际问题,在DFD中常常出现十几个甚至几十个加工。这样的DFD看起来很不清楚。层次结构的DFD能很好地解决这一问题。按照系统的层次结构进行逐步分解,并以分层的DFD反映这种结构关系,能清楚地表达整个系统。
               下图给出分层DFD的示例。数据处理S包括三个子系统1、2、3。顶层下面的第一层DFD为DFD/L1,第二层的DFD/L2.1、DFD/L2.2及DFD/L2.3分别是子系统1、2和3的细化。对任何一层数据流图来说,我们称它的上层图为父图,在它下一层的图则称为子图。
               
               分层数据流图
               概括地说,画DFD的基本步骤,就是“自顶向下,逐层分解”。检查和修改的原则如下:
               (1)DFD中的所有图形符号只限于前述4种基本图形元素。
               (2)顶层DFD必须包括前述4种基本元素,缺一不可。
               (3)顶层DFD中的数据流必须封闭在外部实体之间。
               (4)每个加工至少有一个输入数据流和一个输出数据流。
               (5)在DFD中,需按层给加工框编号。编号表明了该加工处在哪一层,以及上下层的父图与子图的对应关系。
               (6)规定任何一个数据流子图必须与它上一层的一个加工对应,两者的输入数据流和输出数据流必须一致。此即父图与子图的平衡。
               (7)可以在DFD中加入物质流,帮助用户理解DFD。
               (8)图上每个元素都必须有名字。
               (9)DFD中不可夹带控制流。
               数据字典
               数据字典是关于数据的信息的集合,也就是对DFD中包含的所有元素的定义的集合。DFD和数据字典共同构成系统的逻辑模型。没有DFD,数据字典难以发挥作用;没有数据字典,DFD就不严格。只有把DFD和对DFD中每个元素的精确定义放在一起,才能共同构成系统的规格说明。
               数据字典的设计包括:数据流设计、数据元素字典设计、数据处理字典设计、数据结构字典设计和数据存储设计。这些设计涵盖了数据的采集和范围的确定等信息。在数据字典的每一个词条中应包含以下信息名称、别名或编号、分类、描述、何处使用。
               对加工的描述是数据字典的组成内容之一,常用的加工描述方法有结构化语言、判定树及判定表。
               (1)结构化语言:介于自然语言和形式语言之间的一种半形式语言,在自然语言基础之上加了一些限度,使用有限的词汇和有限的语句来描述加工逻辑。结构化语言是受结构化程序设计思想启发而扩展出来的。结构化程序设计只允许3种基本结构。结构化语言也只允许3种基本语句,即简单的祈使语句、判断语句和循环语句。与程序设计语言的差别在于结构化语言没有严格的语法规定,与自然语言的不同在于它只有极其有限的词汇和语句。结构化语言使用三类词汇:祈使句中的动词、数据字典中定义的名词及某些逻辑表达式中的保留字。
               (2)判定树:若一个动作的执行不只依赖一个条件,而与多个条件有关,那么这项策略的表达就比较复杂。如果用结构化语言的判断语句,就有多重嵌套,层次一多,可读性就会下降。用判定树来表示,可以更直观一些。
               (3)判定表:一些条件较多、在每个条件下取值也较多的判定问题,可以用判定表表示。判定表能清晰地表达复杂的条件组合与应做动作之间的对应关系,判定表的优点是能够简洁、无二义性地描述所有的处理规则。但判定表表示的是静态逻辑,是在某种条件取值组合情况下可能的结果,它不能表达加工的顺序,也不能表达循环结构,因此判定表不能成为一种通用的设计工具。
 
       Linux操作系统
        Linux是一个支持多用户、多任务、多进程和实时性较好的功能强大而稳定的操作系统,也是目前运行硬件平台最广泛的操作系统。Linux最大的特点在于它是GNU的一员,遵循公共版权许可证(GPL)及开放源代码的原则,从而使其成为发展最快、拥有用户最多的操作系统之一。
        Red Hat Linux是目前世界上使用最多的Linux操作系统家族成员,提供了丰富的软件包,具有强大的网络服务和管理功能。Red Hat Enterprise Linux 7(有时简写为RHEL 7)是Red Hat Linux的一个最新版本,内核为Kernel3.10,它在原有的基础上又有了很大的改进,集成了应用程序虚拟化技术Docker,对systemd进程管理器的支持,XFS成为RHEL默认的文件系统以及能监控系统PCP等新功能特性,使之较RHEL 6在功能和性能方面有很大提升。
 
       Word
        Word是微软公司开发的最流行的文字处理程序。Word提供了许多易于使用的文档创建工具,同时也提供了丰富的功能集供创建复杂文档使用。
 
       操作系统
        编写嵌入式软件有两种选择:一是自己编写内核;二是使用现成的操作系统。如果嵌入式软件只需要完成一项非常小的工作,例如在电动玩具、空调中,就不需要一个功能完整的操作系统。但如果系统的规模较大、功能较复杂,那么最好还是使用一个现成的操作系统。可用于嵌入式系统软件开发的操作系统有很多,但关键是如何选择一个适合开发项目的操作系统,可以从以下几点进行考虑:
        (1)操作系统提供的开发工具。有些实时操作系统只支持该系统供应商的开发工具,因此,还必须从操作系统供应商处获得编译器、调试器等;而有的操作系统应用广泛,且有第三方工具可用,因此选择的余地比较大。
        (2)操作系统向硬件接口移植的难度。操作系统到硬件的移植是一个重要的问题,是关系到整个系统能否按期完工的一个关键因素。因此,要选择那些可移植性程度高的操作系统,以避免因移植带来的种种困难。
        (3)操作系统的内存要求,有些操作系统对内存有较大要求。
        (4)操作系统的可剪裁性、实时性能等。
 
       评估
        评估测试不只针对物理设备,更重要的是要评估、比较各种网络技术。通常使用模拟测试配置和模拟负载进行子系统(如路由器)和网络技术(如ATM或FDDI等)的评估。评估测试不适用于全局网络,因为全局网络拓扑负载、网络设备太多,不好准确定位引起问题的原因和位置,不能进行有效的比较。多数评估测试在专用的子网测试环境中进行。
        很多公司都有其固定合作的网络设备供应商,如路由器、集线器或交换机的供应商,通常很少再做设备比较测试,但网络技术的比较测试需要经常进行。企业经常面对选择哪种技术以及怎样比较不同技术的问题,所以技术评估是评估测试中很重要的一项。
        在比较设备与技术时,除了使用专用于待测设备或技术的工程负载外,有经验的程序员也使用真实负载,使用真实负载可以了解待测设备或技术在特定环境下的运行性能。通过两种负载模式检测结果的比较,可以获知待测设备还有多少多余容量。
        评估测试与设备或技术的功能/特征测试一样,用于比较待测设备或技术的性能、稳定性、特性、易用性配置和管理等方面的功能。
        评估测试实质是衰减测试的基础,评估测试中对几种设备或技术进行比较;衰减测试中对同一设备的不同版本进行比较。测试中选择设备的标准也完全可作为验证升级版本工作正常与否的标准。尽可能多地集成在计划/设计阶段进行测试是非常好的方法,最初的产品评估测试可以被开发阶段的可接受性测试和升级阶段的衰减性测试所借鉴。
        评估测试是最常进行的测试,在设备选型、技术选型,以及网络系统升级过程中都要进行或多或少的评估测试。
        用于评估测试的负载模式和测试脚本要能有效覆盖被检测的设备和技术。常使用最好情形(工程负载)和真实负载模式进行测试,两种方式都提供了唯一的、重要的检测结果,测试人员要能够理解、解释测试结果间的不同。
        工程检测结果是被测设备和技术在最理想的情形下测试得到的结果,因此不能在真实运行环境里显示它们的运行性能;真实检测结果能很好地显示待测设备或技术在运行网络环境中的性能,但无法预测设备的总容量。如果时间允许,两种测试都要做。通常测试人员只有时间进行一种测试,一般进行最好情形的测试。许多公开发行的测试报告都是基于最好情形(工程负载)下的测试结果。
        所有的测试配置都是模拟的。用于设备比较的测试配置不一定要代表运行网络的典型配置,任何有效、公正的测试配置都能对被测产品进行很好的比较。然而,测试配置和负载越接近运行网络的配置和负载,测试的结果越能反映被测设备在运行网络中的运行情况。
        在安装和配置测试网络时必须注意:要确保配置中所有测试组件都是最新版本,使测试尽可能地公正和统一,以取得最好的测试结果。在测试非正式版时一定要小心,因为发布日期经常有错误。测试配置中安装了非正式版后,它还可能会变,所以非正式版的测试结果和正式版的测试结果经常不一致,分析非正式版的设备经常会延误项目的进行。
        进行评估测试时,除了被测设备,测试配置中的所有网络组件都要保持不变。这一点非常重要,只有这样才能保证被测设备可以进行公平比较。对于子网,这一点很容易做到(一个网络设备很容易被另一个设备所替代)。
        网络技术评估要比较各种网络技术,因而测试配置中的几个网络组件都需要更换。重要的是不要改变源或目标配置。在配置中不仅通信线路需要更换,路由器也需要更换。传输负载和端点的配置要保持不变。
        需要评估测试计划中的各个测试任务,逐步完成测试、数据收集和数据解释。在评估测试中,各测试进行的先后次序没有关系,因为它们不是线性关系,而是多次重复进行的。当在测试中发现了新的信息时,以前所做的测试可能要重新进行以确定它的测试结果,或要对以前的测试稍作改变以检验网络运行的其他方面。此外,在评估期间设备提供商经常发布新的版本或非正式的版本,所以各种基于这种设备的测试都要重新进行。
        制定网络设备、技术比较或取舍标准时,不仅要参考评估测试所得的测试结果数据,还要综合考虑其他一些信息,如各设备的性能价格比,但由于没有运行网络的持续和峰值负载要求,所以缺少比较基准,往往将产品评估测试引入歧途。
        最后要根据评估测试所得的数据和图表对网络系统作出总结性评估,并撰写网络系统评估报告。
 
       数据表示
        各种数据在计算机中表示的形式称为机器数,其特点是数的符号用0、1表示。机器数对应的实际数值称为该数的真值。机器数又分为无符号数和带符号数两种。无符号数表示正数,在机器数中没有符号位。对于带符号数,机器数的最高位是表示正、负的符号位,其余二进制位表示数值。带符号的机器数可采用原码、反码、补码、移码等编码方法。机器数的这些编码方法称为码制。
               原码、反码、补码和移码
               1)原码
               在原码表示中,机器数的最高位是符号位,0代表正号,1代表负号,余下各位是数的绝对值。零有两个编码,即[+0]=00000000、[-0]=10000000。原码表示方法的优点在于数的真值和它的原码表示之间的对应关系简单,相互转换容易,用原码实现乘、除运算的规则简单。缺点是用原码实现加、减运算很不方便。
               2)反码
               在反码表示中,机器数的最高一位是符号位,0代表正号,1代表负号。当符号位为0时,其余几位即为此数的二进制值;但若符号位为1时,则要把其余几位按位取反,才是它的二进制值。零有两个编码,即[+0]=00000000、[-0]=11111111。
               3)补码
               在补码表示中,机器数的最高一位是符号位,0代表正号,1代表负号。当符号位为0(即正数)时,其余几位即为此数的二进制值;但若符号位为1(即负数)时,其余几位不是此数的二进制值,需把它们按位取反,且最低位加1,才是它的二进制值。零有唯一的编码,即[+0]=[-0]=00000000。补码表示的两个数在进行加法运算时,只要结果不超出机器所能表示的数值范围,可以把符号位与数值位同等处理,运算后的结果按2取模后,得到的新结果就是本次加法运算的结果。
               4)移码
               移码表示法是在数X上增加一个偏移量来定义的,常用于表示浮点数中的阶码。如果机器字长为n,规定偏移量为2n-1,则移码定义为:若X是纯整数,则[X]=2n-1+X(-2n-1X<2n-1);若X是纯小数,则[X]=1+X(-1≤X<1)。
               定点数和浮点数
               1)定点数
               定点数是指小数点的位置固定不变的数。小数点的位置通常有两种约定方式:定点整数(纯整数,小数点在最低有效数值位之后)和定点小数(纯小数,小数点在最高有效数值位之前)。
               2)浮点数
               浮点数是小数点位置不固定的数,它能表示更大范围的数。在浮点表示法中,阶码通常为带符号的纯整数,尾数为带符号的纯小数。浮点数的表示格式如下图所示。
               
               浮点数的表示格式
               浮点数通常表示成
               N=MRE
               式中:M为尾数;R为基数;E为阶码。因此,若表示一个浮点数,要给出尾数M,它决定了浮点数的表示精度;同时要给出阶码E,它指出了小数点在数据中的位置,决定了浮点数的表示范围(若表示范围超出了计算机的表达范围时,就称为溢出)。
               3)工业标准IEEE 754
               IEEE 754是由IEEE制定的有关浮点数的工业标准,被广泛采用。该标准的表示形式为:
               P=(-1)S2E(b0b1b2b3bp-1)
               式中:(-1)S为该浮点数的数符,当S为0时表示正数,当S为1时表示负数;E为指数(阶码),用移码表示;(b0b1b2b3bp-1)为尾数,其长度为p位,用原码表示。
   题号导航      2010年下半年 系统架构设计师 下午试卷 案例   本试卷我的完整做题情况  
1 /
2 /
3 /
4 /
5 /
 
第1题    在手机中做本题