免费智能真题库 > 历年试卷 > 系统集成项目管理工程师 > 2011年上半年 系统集成项目管理工程师 上午试卷 综合知识
  第7题      
  知识点:   软件设计   架构设计   软件架构   软件架构设计   软件详细设计   详细设计
  关键词:   软件架构   软件设计   详细设计   信息系统开发   开发   信息系统        章/节:   信息系统建设与开发       

 
软件设计包括软件架构设计软件详细设计架构设计属于高层设计,主要描述软件的结构和组织,标识各种不同的组件。由此可知,在信息系统开发中,(7)属于软件架构设计师要完成的主要任务之一。
 
 
  A.  软件复用
 
  B.  模式设计
 
  C.  需求获取
 
  D.  需求分配
 
 
 

 
  第10题    2014年下半年  
   40%
以下关于软件测试的叙述中,( )是不正确的。
  第6题    2011年上半年  
   66%
模糊测试(Fuzz testing)是一种通过向目标系统提供非预期的输入并监视异常结果来发现软件漏洞的方法,是用于系统安全漏洞发掘的..
  第10题    2011年上半年  
   80%
为了改进应用软件的可靠性和可维护性, 并适应未来软硬件环境的变化,应主动增加新的功能以使应用系统适应各类变化而不被淘汰。 ..
   知识点讲解    
   · 软件设计    · 架构设计    · 软件架构    · 软件架构设计    · 软件详细设计    · 详细设计
 
       软件设计
        软件设计是根据软件需求,产生一个软件内部结构的描述,并将其作为软件构造的基础。
        通过软件设计得到要实现的各种不同模型,并确定最终方案,软件设计可划分为两个阶段:
        .软件架构设计(也叫概要设计):描述软件架构及相关组件之间的接口,标识各种不同的组件。
        .软件详细设计:详细地描述各个组件,以便能构造这些组件。
 
       架构设计
        WebApp描述了使WebApp达到其业务目标的基础结构,典型使用多层架构来构造,包括用户界面或展示层、基于一组业务规则来指导与客户端浏览器进行信息交互的控制器,以及可以包含WebApp的业务规则的内容层或模型层,描述将以什么方式来管理用户交互、操作内部处理任务、实现导航及展示内容。模型-视图-控制器(Model-View-Controller,MVC)结构是WebApp基础结构模型之一,它将WebApp功能及信息内容分离。
 
       软件架构
        随着嵌入式技术的发展,特别是在后PC时代,嵌入式软件系统得到了极大的丰富和发展,形成了一个完整的软件体系,如下图所示。这个体系自底向上由3部分组成,分别是嵌入式操作系统、支撑软件和应用软件。
        
        嵌入式系统的软件架构
        嵌入式操作系统(Embedded Operating System,EOS)由操作系统内核、应用程序接口、设备驱动程序接口等几部分组成。嵌入式操作一般采用微内核结构。操作系统只负责进程的调度、进程间的通信、内存分配及异常与中断管理最基本的任务,其他大部分的功能则由支撑软件完成。
        嵌入式系统中的支撑软件由窗口系统、网络系统、数据库管理系统及Java虚拟机等几部分组成。对于嵌入式系统来讲,软件的开发环境大部分在通用台式计算机和工作站上运行,但从逻辑上讲,它仍然被认为是嵌入式系统支撑软件的一部分。支撑软件一般用于一些浅度嵌入的系统中,如智能手机、个人数字助理等。
        嵌入式系统中的应用软件是系统整体功能的集中体现。系统的能力总是通过应用软件表现出来的。
 
       软件架构设计
        软件架构也称为软件体系结构,需要考虑如何对系统进行分解,对分解后的组件及其之间的关系进行设计,满足系统的功能和非功能需求。软件架构形成过程如下图所示。
        
        架构的形成过程概要
        软件架构设计需要从用户业务需求、未来应用环境、需求分析、硬件基础、接口输入、数据处理、运算或控制规律、用户使用等方面进行综合、权衡和分析基础上产生。面向某种问题的架构一旦确定就很难改变,随后的架构设计需要通过一系列的迭代开发完善,使得软件架构日趋成熟、稳定。
        软件架构的重要作用也在于控制一个软件系统的使用、成本和风险。好的架构要求是和谐的软件架构,包括与上一级系统架构相互和谐、与系统中同一级的其他组件架构互相和谐,确保系统满足性能、可靠性、安全性、信息安全性和互操作性等方面的关键要求,也具有可扩展、可移植性,从而为一个软件带来长久的生命力。
        在大量开发实践中,有很多广泛使用并被普遍接受的软件架构设计原则,这些原则独立于具体的软件开发方法,主要包括抽象、信息隐藏、强内聚和松耦合、关注点分离等。
        (1)抽象:这是软件架构的核心原则,也是人们认识复杂客观世界的基本方法。抽象的实质是提取主要特征和属性,从具体的事务中通过封装来忽略细节,并且运用这些特征和属性,描述一个具有普遍意义的客观世界。软件架构设计中需要对流程、数据、行为等进行抽象。复杂系统含有多层抽象,从而有多个不同层次架构。
        (2)信息隐藏:包括局部化设计和封装设计。局部化设计就是将一个处理所涉及到的信息和操作尽可能地限制在局部的一个组件中,减少与其他组件的接口。而封装设计是将组件的外部访问形式尽可能简单、统一。
        (3)强内聚和松耦合:强内聚是指软件组件内的特性,即组件内所有处理都高度相关,所有处理组合在一起才能组成一个相对完整的功能。而松耦合是指软件组件之间的特性,软件组件之间应尽量做到没有或极少的直接关系,使其保持相对独立,这样使得未来的修改、复用简单,修改之后带来的影响最小。
        (4)关注点分离:所谓关注点是软件系统中可能会遇到的多变的部分。如为适应不同运行接口条件,需要进行适应性的参数调整和驱动配置。关注点分离设计是将这部分组件设计成为相对独立的部分,使未来的系统容易配置和修改。而核心的部分可以保持一个相对独立的稳定状态。如果功能分配使得单独的关注点组件足够简单,那么就更容易理解和实现。但“展示某些关注点得到满足时,可能会影响到其他方面的关注点,但架构师必须能够说明所有关注点都已得到满足”。
        以上的原则中,删除需求细节或对细节进行抽象是最重要的工作,为用户的需求创建抽象模型,通过抽象将特殊问题映射为更普遍的问题类别,并识别各种模式。
        软件架构设计使用纵向分解和横向分解两种方式。纵向分解就是分层,横向分解就是将每一个层面分成相对独立的部分。经过分解之后,可以将一个完整的问题分解成多个模块来解决。模块是其中可分解、可组装,功能独立、功能高度内聚、之间低耦合的一个组件。
        类似于建筑架构,软件架构也决定了软件产品的好用、易用、可靠、信息安全、可扩展、可重用等特性,好的软件架构也给人完整、明确、清晰等赏心悦目的感觉,具有较长的生命力。
        架构设计是围绕业务需求带来的问题空间到系统解决空间第一个顶层设计方案。按照抽象原则,在这个阶段进行的架构设计关注软件设计环节抽象出来的重要元素,而不是所有的设计元素。在架构设计时将软件这些要素看作是黑盒,架构设计需要满足黑盒的外部功能和非功能需求的目标。一个软件的架构设计首先为软件产品的后续开发过程提供基础,在此基础上可将一个大规模的软件分解为若干子问题和公共子问题。而一般意义的软件设计是软件的底层设计,开发人员需要关注各子问题或要素的进一步分解和实现,是根据架构设计所定义的每个要素的功能、接口,进一步实现要素组件内部的配置、处理和结构。在遵守组件外部属性前提下,考虑实现组件内部的细节及其实现方法。对于其中的公共子问题,形成公共类和工具类,从而可以达到重用的目的。
        一般的软件构架是根据需求自上而下方式来设计,即首先掌握和研究利益相关方的关键需求,基本思路是首先进行系统级的软件架构设计,需要将软件组件与其外部环境属性绑定在一起,关注软件系统与外部环境的交联设计;其次将一个大的系统划分成各组成部分,这些部分可以按照架构设计的不同方法,分为层次或成为模块;之后再开始研究所涉及到的要素,再实现这些要素以及定义这些要素之间的关系。
        在实际工作中,软件构架也可采用自底向上的方法,前提是已经建立了一个成熟稳定的软件架构,也可以称之为“模式”。模式是组织一级设计某一类具体问题的顶层思路,是为了解决共有问题解的方案模板,但并不是一个问题的设计或设计算法。
        模式常常整合在一起使用,提供解决更大、更复杂问题的解决方案,而组成一个解决问题的通用框架。框架往往提供统一平台和开发工具,而且已经高效地利用了已经经过验证的模式、技术和组件。在新软件系统的设计中指定沿用或重用这种架构框架,这时其他重要元素可以在这个架构基础上针对新的需求进行扩展,有时是针对性地进行参数化设计。所以在架构设计中可以借用模式的概念进行设计,采用成熟的先进的设计框架和工具提高开发的效率,保证设计正确性。
        下图所示是针对架构设计中非功能需求的多维度分析,从中可知任何一个因素的变化都会带来对其他因素的影响。实际上软件架构设计属于软件设计过程的一部分,但超越了系统内部的算法和数据结构的详细设计。
        
        架构的多维度分析
        在架构设计阶段,需要定义边界条件、描述系统组织结构、对系统的定量属性进行约束、帮助对模型进行描述并基本构造早期的原型、更准确地描述费用和时间的评估。
 
       软件详细设计
        软件详细设计主要确定每个模块的具体执行过程,因此也称为过程设计。
               详细设计的基本任务
               详细设计的基本任务如下。
               (1)为每个模块进行详细的算法设计。
               (2)为模块内的数据结构进行设计。
               (3)对数据库进行物理设计。
               (4)其他设计,例如代码设计、输入/输出设计、人机界面设计等。
               (5)编写详细设计说明书。
               (6)评审。
               结构化程序设计方法
               结构化程序设计的要点如下。
               (1)采用自顶向下、逐步求精的程序设计方法。
               (2)使用顺序、选择、重复3种基本控制结构构造。
               (3)主程序员组的组织形式。
               处理过程设计
               处理过程设计的关键是用一种合适的表达方法来描述每个模块的执行过程。常用的描述方式有图形、语言和表格3类,如传统的框图、各种程序语言和判定表等。
               1)程序流程图
               程序流程图是开发人员最熟悉也是用得最广泛的一种图形描述工具,其特点是简单、直观、易学。程序流程图的符号并不统一,下图所示是几种常用的符号。
               
               流程图的基本符号
               2)盒图
               盒图(也称N-S图)是由Nassi和Shneiderman提出的一种符合结构化程序设计原则的图形描述工具,盒图的缺点是修改比较困难,另外当分支嵌套层次多时往往在一张纸上难以画下。
               3)问题分析图
               问题分析图(Problem Analysis Diagram, PAD)是日立公司提出的图形描述工具。PAD符合自顶向下、逐步求精的原则,也符合结构化程序设计的思想,同时能够方便地从PAD转换成程序语言的源程序代码。
               4)形式语言
               形式语言是用来描述模块具体算法的非正式的、比较灵活的语言。其外层语法是确定的,而内层语法不确定。外层语法用类似一般编程语言的保留字描述控制结构,所以是确定的。内层语法故意不确定,可以按系统的具体情况和不同层次灵活选用,实际上可用自然语言来描述具体操作。
               5)决策树
               如果一个决策或判断的步骤较多,在使用形式语言时,语句的嵌套层次也较多,不便于基本加工的逻辑功能的清晰描述。决策树是一种图形工具,适合于描述加工中具有多个策略且每个策略和若干条件有关的逻辑功能。
               6)决策表
               在基本加工中,如果判断的条件较多,各条件又相互组合、相应的决策方案也较多,可用决策树来描述。如果树的结构比较复杂,就可以采用决策表。决策表也是一种图形工具,它可以将比较复杂的决策问题简洁、明确地描述出来。
               Jackson方法
               Jackson方法是面向数据结构的设计方法,用于开发规模较小的数据处理程序的设计。
               用户界面设计
               用户界面设计应坚持友好、简便、实用的原则。例如,在设计菜单时应尽量避免菜单嵌套层次过多,在设计大批数据输入屏幕界面时,应避免颜色过于鲜艳和多变。
               界面设计包括菜单方式、会话方式、操作提示方式以及操作权限管理方式等。
               1)菜单方式
               菜单是信息系统功能选择操作的最常用方式。按目前软件所提供的菜单设计工具,菜单的形式可以是下拉式、弹出式的,也可以是按钮选择方式的。
               2)会话管理方式
               一般会话系统是面向企业领导的。会话系统设计必须满足会话的基本要求,如画面清晰,形象直观,简洁明了,具有容错和纠错能力,提供信息汉字化、图形化、表格化等功能。因此,会话设计的重点是设计会话方式、容错能力和系统的模块结构。
               会话的基本工具是键盘、屏幕和打印机,常用的方式是回答式、菜单式、表格式和图形式。纠错、容错的目的是保证会话的正确性,提高会话的效率,在系统中可采用下列方法。
               .提示法:分简单提示和重复提示法。
               .确认回答法:为用户误操作提供改错机会。
               .无效处理法:系统拒绝接收错误操作。
               .返回处理法:拒绝不熟悉系统的用户使用操作。
               .延时处理法:让用户有足够的时间理解系统的提问内容,防止错误回答。
               .帮助处理法:给用户提供帮助信息,并给予重新操作的机会。
               3)提示方式与权限管理
               为了操作和使用方便,在设计系统时,常常把操作提示和要点同时显示在屏幕的旁边,以使用户操作方便,这是当前比较流行的用户界面设计方式。另一种操作提示设计方式则是将整个系统操作说明书全送入到系统文件中,并设置系统运行状态指针。当系统运行时,指针随着系统运行状态改变。当用户按"帮助"键时,系统则立刻根据当前指针调出相应的操作说明。
               与操作方式有关的另一个内容就是对数据操作权限的管理。权限管理一般是通过入网口令和建网时定义该节点级别,将这两点结合起来实现的。
 
       详细设计
        总体设计只是为整个信息系统提供了一个设计思路和框架,框架内的血肉需要系统的设计人员在详细设计这个阶段充实。总体设计完成后,设计人员要向用户和有关部门提交一份详细的报告,说明设计方案的可行程度和更改情况,得到批准后转入系统详细设计。详细设计阶段主要是在总体设计的基础上,将设计方案进一步详细化、条理化和规范化,为各个具体任务选择适当的技术手段和处理方法。系统的详细设计一般包括如下。
        (1)代码设计。
        代码设计就是信息分类和编码的工作,是将系统中有某些共同属性或特征的信息归并在一起,并利用便于计算机和人识别和处理的符号来表示这些信息的设计工作。
        (2)数据库设计。
        数据库设计就是构建既能客观、准确地反映外部世界,又便于人类大脑认识的概念模型,并在此基础上对数据进行建模,转化为数据库管理系统所支持的数据模型;选择合适的存储结构和存储方法,最终完成数据库的设计工作。
        (3)输入/输出设计。
        输入/输出设计主要是对以记录为单位的各种输入输出报表格式的描述。另外,对人机对话格式的设计和输入输出装置的选择也在这一步完成。
        (4)用户界面设计。
        用户界面设计是指在用户与系统之间架起一座桥梁。主要内容包括:定义界面形式;定义基本的交互控制形式;定义图形和符号;定义通用的功能键和组合键的含义及其操作内容;定义帮助策略,等等。
        (5)处理过程设计。
        总体设计将系统分解为许多模块,并基本决定了每个模块的功能和界面。处理过程设计则定义每个模块的内部执行过程,包括数据的组织、控制流、每一步的具体加工要求和实施细节。通过处理过程设计,为编写程序制定一个周密的计划。一般来说,每一个功能模块都应设计一个处理流程。
   题号导航      2011年上半年 系统集成项目管理工程师 上午试卷 综合知识   本试卷我的完整做题情况  
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 /
 
第7题    在手机中做本题