免费智能真题库 > 历年试卷 > 系统架构设计师 > 2014年下半年 系统架构设计师 上午试卷 综合知识
  第47题      
  知识点:   软件架构   特定领域软件架构   角色   软件体系结构   体系结构   一致性   应用领域   准确性   组织结构
  关键词:   DSS   SA   开发   软件架构   软件体系结构   组织结构        章/节:   特定领域软件架构       

 
特定领域软件架构(Domain Specific Software Architecture, DSSA)是在一个特定应用领域中,为一组应用提供组织结构参考的标准软件体系结构。参加DSSA的人员可以划分为多种角色,其中(47)的任务是控制整个领域分析过程,进行知识获取,将获取的知识组织到领域模型中;(48)的任务是根据领域模型和现有系统开发出DSSA,并对DSSA的准确性一致性进行验证。
 
 
  A.  领域专家
 
  B.  领域分析者
 
  C.  领域设计者
 
  D.  领域实现者
 
 
 

 
  第53题    2015年下半年  
   60%
特定领域软件架构(Domain Specific Software Architecture, DSSA)以一个特定问题领域为对象,形成由领域参考模型,参考需求,(..
  第45题    2018年下半年  
   55%
特定领域软件架构(Domain Specific Software Architecture, DSSA)的基本活动包括领域分析、领域设计和领域实现。其中,领域分析..
  第53题    2010年下半年  
   60%
特定领域软件架构(DSSA)是在一个特定应用领域为一组应用提供组织结构参考的标准软件架构。实施DSSA的过程中包括一系列基本的活动..
   知识点讲解    
   · 软件架构    · 特定领域软件架构    · 角色    · 软件体系结构    · 体系结构    · 一致性    · 应用领域    · 准确性    · 组织结构
 
       软件架构
        随着嵌入式技术的发展,特别是在后PC时代,嵌入式软件系统得到了极大的丰富和发展,形成了一个完整的软件体系,如下图所示。这个体系自底向上由3部分组成,分别是嵌入式操作系统、支撑软件和应用软件。
        
        嵌入式系统的软件架构
        嵌入式操作系统(Embedded Operating System,EOS)由操作系统内核、应用程序接口、设备驱动程序接口等几部分组成。嵌入式操作一般采用微内核结构。操作系统只负责进程的调度、进程间的通信、内存分配及异常与中断管理最基本的任务,其他大部分的功能则由支撑软件完成。
        嵌入式系统中的支撑软件由窗口系统、网络系统、数据库管理系统及Java虚拟机等几部分组成。对于嵌入式系统来讲,软件的开发环境大部分在通用台式计算机和工作站上运行,但从逻辑上讲,它仍然被认为是嵌入式系统支撑软件的一部分。支撑软件一般用于一些浅度嵌入的系统中,如智能手机、个人数字助理等。
        嵌入式系统中的应用软件是系统整体功能的集中体现。系统的能力总是通过应用软件表现出来的。
 
       特定领域软件架构
        特定领域软件架构(Domain Specific Software Architecture,DSSA)是在一个特定应用领域中为一组应用提供组织结构参考的标准软件架构,是一个特定的问题领域中支持一组应用的领域模型、参考需求、参考架构等组成的开发基础,其目标是支持在一个特定领域中多个应用的生成。
        关于DSSA中“领域”的含义,从功能覆盖的范围角度可以有两种理解方式:
        (1)垂直域:定义了一个特定的系统族,包含整个系统族内的多个系统,结果是在该领域中可作为系统的可行解决方案的一个通用软件架构。
        (2)水平域:定义了在多个系统和多个系统族中功能区域的共有部分,在子系统级上涵盖多个系统族的特定部分功能,但无法为系统提供完整的通用架构。
        :在垂直域上定义的DSSA只能应用于一个成熟的、稳定的领域,但这个条件比较难以满足;若将领域分割成较小的范围,则更相对容易,也容易得到一个一致的解决方案。
                      DSSA的基本活动
                      实施DSSA的过程中包含了一些基本的活动。虽然具体的DSSA方法可能定义不同的概念、步骤、产品等,但这些基本活动是大体上一致的。以下将分3个阶段介绍这些活动。
                      (1)领域分析。这个阶段的主要目标是获得领域模型。领域模型描述领域中系统之间的共同的需求。我们称领域模型所描述的需求为领域需求。在这个阶段中首先要进行一些准备性的活动,包括定义领域的边界,从而明确分析的对象;识别信息源,即领域分析和整个领域工程过程中信息的来源。在此基础上,就可以分析领域中系统的需求,确定哪些需求是被领域中的系统广泛共享的,从而建立领域模型。领域分析的机制如下图所示。
                      
                      领域分析机制
                      (2)领域设计。这个阶段的目标是获得DSSA。DSSA描述在领域模型中表示的需求的解决方案,它不是单个系统的表示,而是能够适应领域中多个系统的需求的一个高层次的设计。建立了领域模型之后,就可以派生出满足这些被建模的领域需求的DSSA。由于领域模型中的领域需求具有一定的变化性,DSSA也要相应地具有变化性。它可以通过表示多选一的、可选的解决方案等来做到这一点。由于重用基础设施是依据领域模型和DSSA来组织的,因此在这个阶段通过获得DSSA,也就同时形成了重用基础设施的规约。
                      (3)领域实现。这个阶段的主要目标是依据领域模型和DSSA开发和组织可重用信息。这些可重用信息可能是从现有系统中提取得到,也可能需要通过新的开发得到。
                      :以上过程是一个反复的、逐渐求精的过程。在实施领域工程的每个阶段中,都可能返回到以前的步骤,对以前的步骤得到的结果进行修改和完善,再回到当前步骤,在新的基础上进行本阶段的活动。
                      如上图所示,参与DSSA的人员可以划分为4种角色:领域专家、领域分析师、领域设计人员和领域实现人员。
                      DSSA的建立过程
                      因所在的领域不同,DSSA的创建和使用过程也各有差异,Tracz曾提出了一个通用的DSSA应用过程,这些过程也需要根据所应用到的领域来进行调整。DSSA的建立过程分为5个阶段,每个阶段可以进一步划分为一些步骤或子阶段。每个阶段包括一组需要回答的问题,一组需要的输入,一组将产生的输出和验证标准。DSSA的建立过程是并发的、递归的、反复的,或者可以说,它是螺旋型的。
                      (1)定义领域范围:确定什么在感兴趣的领域中以及本过程到何时结束。这个阶段的一个主要输出是领域中的应用需要满足一系列用户的需求。
                      (2)定义领域特定的元素:编译领域字典和领域术语的同义词词典。在领域工程过程的前一个阶段产生的高层块图将被增加更多的细节,特别是识别领域中应用间的共同性和差异性。
                      (3)定义领域特定的设计和实现需求约束:描述解空间中有差别的特性。不仅要识别出约束,并且要记录约束对设计和实现决定造成的后果,还要记录对处理这些问题时产生的所有问题的讨论。
                      (4)定义领域模型和架构:产生一般的架构,并说明构成它们的模块或构件的语法和语义。
                      (5)产生、搜集可重用的产品单元:为DSSA增加构件使得它可以被用来产生问题域中的新应用。
                      DSSA的建立过程的目的是将用户的需要映射为基于实现限制集合的软件需求,这些需求定义了DSSA。下图是DSSA的一个三层次系统模型。
                      
                      DSSA的三层次的系统模型
                      DSSA的建立需要架构设计师对所在特定应用领域(包括问题域和解决域)必须精通,他们要找到合适的抽象方式来实现DSSA的通用性和可重用性。通常DSSA以一种逐渐演化的方式发展。
                      DSSA与架构风格的比较
                      在软件架构的发展过程中,因为研究者的出发点不同,出现了两个互相正交的方法和学科分支:以问题域为出发点的DSSA和以解决域为出发点的软件架构风格。因为两者侧重点不同,它们在软件开发中具有不同的应用特点。
                      DSSA只对某一个领域进行设计专家知识的提取、存储和组织,但可以同时使用多种架构风格;而在某个架构风格中进行架构设计专家知识的组织时,可以将提取的公共结构和设计方法扩展到多个应用领域。
                      DSSA的特定领域参考架构通常选用一个或多个适合所研究领域的架构风格,并设计一个该领域专用的架构分析设计工具。但该方法提取的专家知识只能用于一个较小的范围(所在领域中)。不同参考架构之间基础和概念的共同点较少,所以为一个领域开发DSSA及其工具在另一个领域中是不适应的或不可重用的,而工具的开发成本是相当高的。
                      架构风格的定义和该风格应用的领域是正交的,提取的设计知识比用DSSA提取的设计专家知识的应用范围要广。一般的、可调整的系统基础可以避免涉及特定的领域背景,所以建立一个特定风格的架构设计环境的成本比建立一个DSSA参考架构和工具库的成本要低得很多。因为对特定领域内的专家知识和经验的忽略,使其在一个具体的应用开发中所起的作用并不比DSSA要大。
                      DSSA和架构风格是互为补充的两种技术。在大型软件开发项目中基于领域的设计专家知识和以风格为中心的架构设计专家知识都扮演着重要的角色。
 
       角色
        考虑一个有很多出纳的银行。每一个出纳必须对同一组关系具有同种类型的权限。无论何时指定一个新的出纳,他都必须被单独授予所有这些授权。
        一个更好的机制是指明所有出纳应该有的授权,并单独标示出哪些数据库用户是出纳。系统可以用这两条信息来确定每一个有出纳身份的人的权限。当一个人被新雇佣为出纳时,必须给他分配一个用户标识符,并且必须将他标示为一个出纳,而不需要重新单独给予出纳权限。
        角色(role)的概念可用于该机制。在数据库中建立一个角色集,和授予每一个单个用户一样,可将权限授予角色。分配给每个数据库用户一些他(或她)有权扮演的角色(也可能是空的)。
        事实上,在银行的数据库里,角色的例子可以包括system-administrator、branch-manager、teller和auditor。一个不是很合适的方法是建立一个teller用户号,允许每一个出纳用这个出纳用户号来连接数据库。该机制的问题是它无法鉴别出到底哪个出纳执行了事务,从而导致安全隐患。应用角色的好处是需要每个用户用自己的用户号连接数据库。
        任何可以授予一个用户的权限都可以授予一个角色。给用户分配角色就跟给用户授权一样。与其他授权一样,一个用户也可以被授予给他人分配角色的权限。这样,可以授予支行经理(branch-manager)分配出纳角色的权限。
 
       软件体系结构
        随着嵌入式技术的发展,特别是在后PC时代,嵌入式软件系统得到了极大的丰富和发展,形成了一个完整的软件体系。如下图所示,这个体系自底向上由3部分组成,分别是嵌入式操作系统、支撑软件和应用软件。
        
        嵌入式系统的软件体系结构
        嵌入式操作系统(Embedded Operating System, EOS)由操作系统内核、应用程序接口、设备驱动程序接口等几部分组成。嵌入式操作一般采用微内核结构。操作系统只负责进程的调度、进程间的通信、内存分配及异常与中断管理最基本的任务,其他大部分的功能则由支撑软件完成。
        嵌入式系统中的支撑软件由窗口系统、网络系统、数据库管理系统及Java虚拟机等几部分组成。对于嵌入式系统来讲,软件的开发环境大部分在通用台式计算机和工作站上运行,但从逻辑上讲,它仍然被认为是嵌入式系统支撑软件的一部分。支撑软件一般用于一些浅度嵌入的系统中,如智能手机、个人数字助理等。
        嵌入式系统中的应用软件是系统整体功能的集中体现。系统的能力总是通过应用软件表现出来的。
 
       体系结构
        RPR的体系结构如下图所示。RPR采用了双环结构,由内层的环1和外层的环0组成,每个环都是单方向传送。相邻工作站之间的跨距包含传送方向相反的两条链路。RPR支持多达255个工作站,最大环周长为2000km。
        
        RPR体系结构
 
       一致性
        在讨论一致性之前,先看一下CAP理论。它作为一种理论依据,使得在不同应用中,对一致性也有了不同的要求。CAP理论:简单地说,就是对于一个分布式系统,一致性(Consistency)、可用性(Availablity)和分区容忍性(Partition tolerance)三个特点最多只能三选二。
        一致性意味着系统在执行了某些操作后仍处在一个一致的状态,这点在分布式的系统中尤其明显。比如某用户在一处对共享的数据进行了修改,那么所有有权使用这些数据的用户都可以看到这一改变。简言之,就是所有的结点在同一时刻有相同的数据。
        可用性指对数据的所有操作都应有成功的返回。高可用性则是在系统升级(软件或硬件)或在网络系统中的某些结点发生故障的时候,仍可以正常返回。简言之,就是任何请求不管成功或失败都有响应。
        分区容忍性这一概念的前提是在网络发生故障的时候。在网络连接上,一些结点出现故障,使得原本连通的网络变成了一块一块的分区,若允许系统继续工作,那么就是分区可容忍的。
        在数据库系统中,事务的ACID属性保证了数据库的一致性。比如银行系统中,转账就是一个事务,从原账户扣除金额,以及向目标账户添加金额,这两个数据库操作的总和构成一个完整的逻辑过程,具有原子的不可拆分特性,从而保证了整个系统中的总金额没有变化。
        然而,这些ACID特性对于大型的分布式系统来说,是和高性能不兼容的。比如,你在网上书店买书,任何一个人买书这个过程都会锁住数据库直到买书行为彻底完成(否则书本库存数可能不一致),买书完成的那一瞬间,世界上所有的人都可以看到书的库存减少了一本(这也意味着两个人不能同时买书)。这在小的网上书城也许可以运行得很好,可是对Amazon这种网上书城却并不是很好。
        而对于Amazon这种系统,它也许会用Cache系统,剩余的库存数也许是几秒甚至几个小时前的快照,而不是实时的库存数,这就舍弃了一致性。并且,Amazon可能也舍弃了独立性,当只剩下最后一本书时,也许它会允许两个人同时下单,宁愿最后给那个下单成功却没货的人道歉,而不是整个系统性能的下降。
        由于CAP理论的存在,为了提高性能,出现了ACID的一种变种BASE(这四个字母分别是Basically Available,Soft—state,Eventual consistency的开头字母,是一个弱一致性的理论,只要求最终一致性):
        .Basically Available:基本可用。
        .Soft state:软状态,可以理解为“无连接”的,而与之相对应的Hard state就是“面向连接”的。
        .Eventual consistency:最终一致性,最终整个系统(时间和系统的要求有关)看到的数据是一致的。
        在BASE中,强调可用性的同时,引入了最终一致性这个概念,不像ACID,其并不需要每个事务都是一致的,只需要整个系统经过一定时间后最终达到一致。比如Amazon的卖书系统,也许在卖的过程中,每个用户看到的库存数是不一样的,但最终卖完后,库存数都为0。再比如SNS网络中,C更新状态,A也许可以1分钟就看到,而B甚至5分钟后才看到,但最终大家都可以看到这个更新。
        具体地说,如果选择了CP(一致性和分区容忍性),那么就要考虑ACID理论(传统关系型数据库的基石,事务的四个特点)。如果选择了AP(可用性和分区容忍性),那么就要考虑BASE系统。如果选择了CA(一致性和可用性),如Google的bigtable,那么在网络发生分区的时候,将不能进行完整的操作。
        ACID理论和BASE的具体对比如下表所示。
        
        ACID和BASE的对比表
 
       应用领域
        Java目前主要应用于服务器端的企业级应用(Servlet、JSP)、手持设备(J2ME、K-Java、无线Java)、普通网页(Applet)、普通应用程序。
 
       准确性
        准确性是指入侵检测系统能正确地检测出系统入侵活动的能力。当一个入侵检测系统的检测不准确时,它就可能把系统中的合法活动当作入侵行为,或者把入侵行为作为正常行为,这时就出现误报警和漏报警现象,实用的入侵检测系统应具有低的误警率和漏警率。
 
       组织结构
        实施项目的组织结构对能否获得项目所需资源和以何种条件获取资源起着制约作用。组织结构一般有三种类型:职能型、矩阵型和项目型。矩阵型可进一步划分为弱矩阵、平衡矩阵和强矩阵。不同组织结构的区别如下表所示。
        
        组织结构的三种类型
        各种组织结构都有其优缺点,如下表所示。
        
        组织结构的优缺点
        很多组织在不同的组织层级上用到上述所有的结构,这种组织通常被称为复合型组织。例如,在典型的职能型组织中建立专门的项目团队来实施重要的项目;又如,组织采用强矩阵结构管理其大多数项目,而小项目则采用职能型结构管理。
   题号导航      2014年下半年 系统架构设计师 上午试卷 综合知识   本试卷我的完整做题情况  
1 /
2 /
3 /
4 /
5 /
6 /
7 /
8 /
9 /
10 /
11 /
12 /
13 /
14 /
15 /
 
16 /
17 /
18 /
19 /
20 /
21 /
22 /
23 /
24 /
25 /
26 /
27 /
28 /
29 /
30 /
 
31 /
32 /
33 /
34 /
35 /
36 /
37 /
38 /
39 /
40 /
41 /
42 /
43 /
44 /
45 /
 
46 /
47 /
48 /
49 /
50 /
51 /
52 /
53 /
54 /
55 /
56 /
57 /
58 /
59 /
60 /
 
61 /
62 /
63 /
64 /
65 /
66 /
67 /
68 /
69 /
70 /
71 /
72 /
73 /
74 /
75 /
 
第47题    在手机中做本题