免费智能真题库 > 历年试卷 > 系统架构设计师 > 2012年下半年 系统架构设计师 上午试卷 综合知识
  第32题      
  知识点:   软件开发环境   开发环境   一致性
  关键词:   软件开发环境   开发   软件开发        章/节:   软件开发环境与工具       

 
软件开发环境应支持多种集成机制。根据功能不同,可以将集成机制分为三个部分:(32),用以存储与系统开发有关的信息,并支持信息的交流与共享;(33),是实现过程集成和控制集成的基础;(34),它的统一性和一致性软件开发环境的重要特征。
 
 
  A.  算法模型库
 
  B.  环境信息库
 
  C.  信息模型库
 
  D.  用户界面库
 
 
 

 
  第33题    2012年下半年  
   43%
软件开发环境应支持多种集成机制。根据功能不同,可以将集成机制分为三个部分:(32),用以存储与系统开发有关的信息,并支持信息的..
  第29题    2017年下半年  
   48%
软件系统工具的种类繁多,通常可以按照软件过程活动将软件工具分为( ) 。
  第29题    2018年下半年  
   58%
软件开发环境应支持多种集成机制。其中,(29)用于存储与系统开发有关的信息,并支持信息的交流与共享;(30)是实现过程集成和..
   知识点讲解    
   · 软件开发环境    · 开发环境    · 一致性
 
       软件开发环境
        软件开发环境把一组相关的工具集成在环境中,通常,软件开发环境可由环境机制和工具集构成。
        环境机制提供工具集成(数据集成、控制集成、界面集成)和方法集成等机制。数据集成机制为工具提供统一的数据接口;控制集成机制实现工具间的通信和协同工作;界面集成机制使这些工具具有统一的界面风格,从而为软件开发、维护、管理等过程中的各项活动提供连续的、一致的全方位支持;方法集成机制把软件开发过程中的各种方法进行集成。按照功能划分,环境机制又可分为环境信息库、过程控制和消息服务、用户界面规范。其中环境信息库存储软件工程项目在生存周期中的全部信息,是软件开发环境的核心。
        工具集包括事务系统规划工具、项目管理工具、支撑工具、分析设计工具、程序设计工具、测试工具、原型建造工具、维护工具和框架工具等,所有这些工具可分为贯穿整个开发过程的工具(例如,软件项目管理工具)和解决软件生命周期中某一阶段问题的工具(例如,软件价格模型及估算工具)。
        软件开发环境具有集成性、开放性、可裁减性、数据格式一致性、风格统一的用户界面等特性,因而能大幅度提高软件生产率。其中开放性是指允许其他的软件工具加入到软件开发环境之中。
        随着软件开发工具的积累与自动化工具的增多,软件开发环境进入了第三代ICASE(Integrated Computer-Aided Software Engineering,集成化计算机辅助软件工程)。系统集成方式经历了从数据交换(早期CASE采用的集成方式:点到点的数据转换),到公共用户界面(第二代CASE:在一致的界面下调用众多不同的工具),再到目前的信息中心库方式,这是ICASE的主要集成方式。
        ICASE信息库是一组实现“数据-工具”以及“数据-数据”集成的机制和数据结构,它提供了明显的DBMS的功能。此外,中心库还完成以下功能:
        (1)数据完整性:包括确认中心库的数据项,保证相关对象间的一致性,以及当对一个对象的修改需要对其相关对象进行某些修改时,自动完成级联修改等功能。
        (2)信息共享:提供在多个开发者和多个开发工具间共享信息的机制,管理和控制对数据及加锁/解锁对象的多用户访问,以使得修改不会被相互间不经意地覆盖。
        (3)数据-工具集成:建立可以被环境中所有工具访问的数据模型,控制对数据的访问,实现了配置管理功能。
        (4)数据-数据集成:数据库管理系统建立数据对象间的关系,使得可以完成其他功能。
        (5)方法学实施:存储在中心库中的数据的E-R模型可能蕴含了特定的软件工程范型。至少,关系和对象定义了一系列为了建立中心库的内容而必须进行的步骤。
        (6)文档标准化:在数据库中对象的定义直接导致了创建软件工程文档的标准方法。
        :ICASE的最终目标是实现应用软件的全自动开发,即开发人员只要写好软件的需求规格说明书,软件开发环境就自动完成从需求分析开始的所有的软件开发工作,自动生成用户直接使用的软件及有关文档。
 
       开发环境
        下图是一个典型的CPD环境,通常包含三个高度集成的部分:
        (1)运行在宿主机和目标机上的强有力的交叉开发工具和实用程序。
        (2)运行在目标机上的高性能、可裁剪的RTOS。
        (3)连接宿主机和目标机的多种通信方式。例如,以太网、串口线、ICE(In-Circuit Emulator,在线仿真器)、ROM仿真器等。
        宿主机提供的基本开发工具有交叉编译器、交叉链接器和源代码调试器等,作为目标机的嵌入式系统则可能提供一个动态装载器、链接装载器、监视器和一个调试代理等。在目标机和宿主机之间有一组连接,通过这组连接程序代码,映像从宿主机下载到目标机,这组连接同时也用来传输宿主机和目标机调试代理之间的信息。
        
        典型交叉平台开发环境
        目前,嵌入式系统中常用的目标文件格式是COFF(Common Object File Format)和ELF(Executable Linking Format)。另外,一些系统还需要有一些专门工具将上述格式转换成二进制代码格式才可使用。典型地,一个目标文件包含:
        (1)关于目标文件的通用信息,如文件尺寸、启动地址、代码段和数据段等具体信息。
        (2)机器体系结构特定的二进制指令和数据。
        (3)符号表和重定位表。
        (4)调试信息。
 
       一致性
        在讨论一致性之前,先看一下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的对比表
   题号导航      2012年下半年 系统架构设计师 上午试卷 综合知识   本试卷我的完整做题情况  
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 /
 
第32题    在手机中做本题