[软考高级-系统架构设计师-2019年下半年]下午考试-论文真题

选题一(论软件设计方法及其应用)

软件设计(Software Design,SD)根据软件需求规格说明书设计软件系统的整体结构、划分功能模块、确定每个模块的实现算法以及程序流程等,形成软件的具体设计方案。软件设计把许多事物和问题按不同的层次和角度进行抽象,将问题或事物进行模块化分解,以便更容易解决问题。分解得越细,模块数量也就越多,设计者需要考虑模块之间的耦合度。

请围绕“论软件设计方法及其应用”论题,依次从以下三个方面进行论述。
1.概要叙述你所参与管理或开发的软件项目,以及你在其中所承担的主要工作。
2.详细阐述有哪些不同的软件设计方法,并说明每种方法的适用场景。
3.详细说明你所参与的软件开发项目中,使用了哪种软件设计方法,具体实施效果如何。

一、应结合自己参与的信息系统项目,说明在其中所承担的工作。

二、详细阐述有哪些不同的软件设计方法,并说明每种方法的适用场景。软件设计方法包括:
(1)模型驱动设计。
模型驱动设计是一种系统设计方法,强调通过绘制图形化系统模型描述系统的技术和实现。通常从模型驱动分析中开发的逻辑模型导出系统设计模型, 最终,系统设计模型将作为构造和实现新系统的蓝图。
(2)结构化设计 。
结构化设计是一种面向过程的系统设计技术 ,它将系统过程分解成一个容易实现和维护的计算机程序模块。把一个程序设计成一个自顶向下的模块层次,一个模块就是一组指令:一个程序片段 、程序块、子程序或者子过程,这些模块自顶向下按照各种设计规则和设计指南进行开发,模块需要满足高度内聚和松散耦合的特征。
(3)信息工程。
信息工程是一种用来计划、分析和设计信息系统的模型驱动的、以数据为中心的但对过程敏感的技术。信息工程模型是一些说明和同步系统的数据和过程的图形。信息工程的主要工具是数据模型图(物理实体关系图)。
(4)原型设计。
原型化方法是一种反复迭代过程,它需要设计人员和用户之间保持紧密的工作关系,通过构造一个预期系统的小规模的、不完整的但可工作的示例来与用户交互设计结果。原型设计方法鼓励并要求最终用户主动参与,这增加了最终用户对项目的信心和支持。原型更好地适应最终用户总是想改变想法的自然情况。原型是主动的模型,最终用户可以看到并与之交互。
(5) 面向对象设计。
面向对象设计是一种新的设计策略,用于精炼早期面向对象分析阶段确定的对象需求定义,并定义新的与设计相关的对象。面向对象设计是面向对象分析的延伸,有利于消除“数据”和“过程”的分离。
(6)快速应用开发。

1.简要描述所参与设计的软件系统,并明确指出在系统设计过程种承担的主要工作。
2.分析系统设计的主要方法,并详细阐述每种设计方法。
1) 净室方法
净室软件工程(净室方法)是软件开发的一种形式化方法,它可以生成高质量的软件。它使用盒结构规约进行分析和设计建模,并且强调将正确性验证(而不是测试)作为发现和消除错误的主要机制,使用统计的测试来获取认证被交付的软件的可靠性所必需的出错率信息。

净室方法从使用盒结构表示的分析和设计模型入手,一个“盒”在某特定的抽象层次上封装系统(或系统的某些方面)。通过逐步求精的过程,盒被精化为层次,其中每个盒具有引用透明性:每个盒规约的信息内容对定义其精华是足够的,不需要信赖于任何其他盒的实现。这使得分析人员能够层次地划分一个系统,从在顶层的本质表示转移向在底层的实现特定的细节。净室方法主要使用三种盒类型:黑盒、状态盒和清晰盒。
净室方法是一种严格的软件工程方法,它是一种强调正确性的数学验证和软件可靠性认证的软件过程模型,其目标和结果是非常低的出错率,这是使用非形式化方法难于或不可能达到的。
2)结构化设计
结构化方法由结构化分析、结构化设计、结构化程序设计构成,它是一种面向数据流的开发方法。结构化分析是根据分解与抽象的原则,按照系统中数据处理的流程,用数据流图来建立系统的功能模型,从而完成需求分析工作。
①结构化设计原则
②结构化设计步骤
③结构化缺点
在结构化设计中,模块和模块之间的关系局限于信息流,限制了对模块之间众多关系的表达,也无法体现模块和模块之间其他的众多关系,包含各种各样的结构、行为、依赖、包含(在结构化设计中这种关系隐含在分层中)、继承、关联关系等等。结构化设计仅解决了模块在封装和信息隐藏方面的问题。
④结构化设计适合场景
3)面向对象设计
面向对象的设计模型包含以包图表示的软件体系结构图、以交互图表示的用例实现图、完整精确的类图、针对复杂对象的状态图和用以描述流程化处理过程的活动图等。
①UML与4+1视图
②设计原则
③设计模式
④面向对象设计适合场景
4)原型法
结构化方法和面向对象方法有一个共同点:在系统开发初期必须明确系统的功能要求,确定系统边界。从工程学角度来看,这是十分自然的:解决问题之前必须明确要解决的问题是什么,然而对于信息系统建设而言,明确问题本身不是一件轻松的事情。
①原型分类
水平原型和垂直原型,抛弃原型、演进原型和递增原型
②原型类型的选择
③ 原型法适合场景
3.结合项目实践。针对实际参与的软件设计过程,说明所采用的设计方法,并描述其具体实施过程和效果。

选题二(论软件系统架构评估及其应用)

对于软件系统,尤其是大规模复杂软件系统而言,软件系统架构对于确保最终系统的质量具有十分重要的意义。在系统架构设计结束后,为保证架构设计的合理性、完整性和针对性,保证系统质量,降低成本及投资风险,需要对设计好的系统架构进行评估。架构评估是软件开发过程中的重要环节。

请围绕“软件系统架构评估及其应用”论题,依次从以下三个方面进行论述。
1.概要叙述你所参与管理或开发的软件项目,以及你在其中所承担的主要工作。
2.详细阐述有哪些不同的软件系统架构评估方法,并从评估目标、质量属性和评估活动等方面论述其区别。
3.详细说明你所参与的软件开发项目中,使用了哪种评估方法,具体实施过程和效果如何。

一、应结合自己参与的信息系统项目,说明在其中所承担的工作。
二、详细阐述有哪些不同的软件系统架构评估方法,并从评估目标、质量属性和评估活动等方面论述其区别。
常见的系统体系架构分析方法有 SAAM 和 ATAM。
SAAM (Scenarios-based Architecture Analysis Method) 是一种非功能质量属性的体系架构分析方法,最初用于比较不同的体系架构,分析架构的可修改性,后来也用于其他的质量属性,如可移植性、可扩充性等。
(1)特定目标:对描述应用程序属性的文档,验证基本体系结构假设和原则。SAAM不仅能够评估体系结构对于特定系统需求的适用能力,也能被用来比较不同的体系结构。
(2)评估活动: SAAM 的过程包括五个步骤,即场景开发、体系结构描述、单个场景评估、场景交互和总体评估。
ATAM ( Architecture Tradeoff Analysis Method) 是在 SAAM 的基础上发展起来的,主要针对性能、实用性、安全性和可修改性,在系统开发之前,对这些质量属性进行评价和折中。
(1)特定目标:在考虑多个相互影响的质量属性的情况下,从原则上提供一种理解软件体系结构的能力的方法,使用该方法确定在多个质量属性之间折中的必要性。
(2) 评估活动:分为四个主要的活动领域,分别是场景和需求收集、体系结构视图和场景实现、属性模型构造和分析、折中。
三、第三个问题要根据项目的实际情况来写自己是怎么做的,遇到什么样的问题,如何解决的。同时文章收尾要对效果进行评价。

1.简要描述所参与架构评估的软件系统,并明确指出在评估过程中承担的主要工作。
2.分析软件系统架构评估中所普遍关注的质量属性,并详细阐述每种质量属性的具体含义。
系统架构评估中普遍关注的质量属性包括:
1)性能
性能是指系统的响应能力,即需要多长时间才能对某个事件做出响应,或者在某段事件内系统所能处理的事件个数。经常用单位事件内所处理事务的数量或系统完成某个事务处理所需的时间来对性能进行定量表示。
2)可靠性
可靠性是软件系统在应用或者系统错误面前,在意外或者错误使用的情况下维持软件系统的功能特性的基本能力。
3)可用性
可用性是系统能够正常运行的时间比例。经常用两次故障之间的时间长度或在出现故障时系统能够恢复正常的速度来表示。
4)安全性
安全性是指系统在向合法用户提供服务的同时能够阻止非授权用户使用的企图或拒绝服务的能力。
5)可修改性
可修改性是指能够快速地以较高的性能价格比对系统进行变更的能力,包括可维护性、可扩展性、结构重构、可移植性。
6)功能性
功能性是系统所能完成所期望的工作的能力。一项任务的完成需要系统中许多或大多数构件的相互协作。
7)可变性
可变性是指体系结构经扩充或变更而成为新体系结构的能力。
8)互操作性
互操作性是指作为系统组成部分的软件不是独立存在的,经常与其他系统或自身环境相互作用。如程序和用其他编程语言编写的软件系统的交互作用就是互操作性的问题。
3.分析软件系统架构评估种现阶段主要评估方法
业界已开发出多种软件架构评估的方法,按基于的技术手段来看,可以分为三类:基于调查问卷或检查表的方式、基于场景的方式和基于度量的方式。
1)基于调查问卷或检查表的方式:该方式的关键是要设计好问卷或检查表,它充分利用系统相关人员的经验和知识,获得对架构的评估。其缺点是在很大程度上依赖于评估人员的主观推断。
2)基于场景的方式:基于场景的方式由SEI首先提出并应用在架构权衡分析法(Architecture Tradeoff Analysis Method, ATAM)和软件架构分析方法(SoftwareArchitecture Analysis Method, SAAM)中。它是通过分析软件架构对场景(也就是对系统的使用或修改活动)的支持程度,从而判断该架构对这一场景所代表的质量需求的满足程度。
(1)架构权衡分析方法ATAM是一种系统架构评估方法,主要在系统开发之前,针对性能、可用性、安全性和可修改性等质量属性进行评价和折中。ATAM可以分为4个主要的活动阶段,包括需求收集、架构视图描述、属性模型构造和分析、架构决策与折中,整个评估过程强调以属性作为架构评估的核心概念。
(2)SAAM是最早形成文档并得到广泛应用的软件架构分析方法。SAAM的主要输入是问题描述、需求说明和架构描述,其分析过程主要包括场景开发、架构描述、单个场景评估、场景交互和总体评估。
3)基于度量的方式:制定一些定量值来度量架构,如代码行数等。要制定质量属性和度量结果之间的映射。
4.针对实际参与的软件系统架构评估,说明所采用的评估方法,并描述其具体实施过程和效果。

选题三(论数据湖技术及其应用)

近年来,随着移动互联网、物联网、工业互联网等技术的不断发展,企业级应用面临的数据规模不断增大,数据类型异常复杂。针对这一问题,业界提出“数据湖(Data Lake) ”这一新型的企业数据管理技术。数据湖是一个存储企业各种原始数据的大型仓库, 支持对任意规模的结构化、半结构化和非结构化数据进行集中式存储,数据按照原有结构进行存储,无须进行结构化处理;数据湖中的数据可供存取、处理、分析及传输,支撑大数据处理 、实时分析、机器学习、数据可视化等多种应用,最终支持企业的智能决策过程。

请围绕“数据湖技术及其应用”论题,依次从以下三个方面进行论述。
1.概要叙述你所参与管理或开发的软件项目,以及你在其中所承担的主要工作。
2.详细阐述数据湖技术,并从主要数据来源、数据模式(Schema)转换时机、数据存储成本、数据质量、面对用户和主要支撑应用类型等5个方面详细论述数据湖技术与数据仓库技术的差异。
3.详细说明你所参与的软件开发项目中,如何采用数据湖技术进行企业数据管理,并说明具体实施过程以及应用效果。

一、应结合自己参与的信息系统项目,说明在其中所承担的工作。
二、数据仓库是一个优化的数据库,用于分析来自事务系统和业务线应用程序的关系数据。数据仓库技术需要事先定义数据结构和数据模式(Schema)以优化快速SQL查询 ,其中结果通常用于操作报告和分析。数据经过了清理、丰富和转换,因此可以充当用户可信任的“单一信息源”。与数据仓库不同,数据湖能够同时存储来自业务线应用程序的关系数据,以及来自移动应用程序、物联网设备和社交媒体的非关系数据 。在进行数据捕获时,无须定义数据结构或数据模式(Schema)。数据湖支持用户对数据使用不同类型的分析(如 SQL 查询、大数据分析、全文搜索、实时分析和机器学习等),为企业智能决策提供支撑。
下面从主要数据来源、数据模式转换时机、数据存储成本、数据质量、面对用户和主要支撑应用类型等六个方面对数据湖技术和数据仓库技术进行比较:

图片[1]-[软考高级-系统架构设计师-2019年下半年]下午考试-论文真题-IT谷

三、第三个问题要根据项目的实际情况来写自己是怎么做的,指出其参与管理和开发的项目是如何采用数据湖技术进行数据管理的,详细说明所采用的数据湖架构、主要的数据来源和质量、 数据模式转换方式和时机、数据存储基础设施、系统主要用户和支撑的上层应用等,同时文章收尾要对效果进行评价。

1.简要叙述所参与的大数据或数据湖系统项目,并明确指出在其中承担的职务和主要工作。
2.分析并阐述数据湖技术:
1)大数据的由来和表现。
2)大数据5V特性
3)大数据与数据仓库
4)数据仓库的4个特性
3.分析并阐述数据湖技术:
1)数据仓库的缺点
2)数据湖的技术特点
3)数据湖的概念
4)数据库的特性
4.分析并对比数据湖(DataLake,DL)与数据仓库(DataWarehouse,DW)
1)数据来源
DW:从外部数据源获取
DL:既可从外部数据源获取,也可从外部应用或外部存储获取
2)数据模式(Schema)转换时机
DW:采用ETL
DL:既支持ETL,也支持ELT
3)数据存储成本
DW:通常采用ODS-DWD-DW-DM-ST五层架构,存储成本高
DL:通常采用原始数据和流计算,存储成本低
4)数据质量
DW:依赖数据治理规范,ELT过程损失数据准确度和精度,质量较低
DL:存储原始数据,不损失数据准确度和精度,质量高
5)面对用户和主要支撑应用类型
DW:联机分析(OLAP)和决策支持(DSS)
DL:物联网、人工智能和以智能制造、智慧城市等为代表的智能赋能应用
5.结合自身参与项目的实际状况,阐述数据湖技术在实际项目中的实施过程和应用效果。

选题四(论负载均衡技术在Web系统中的应用)

负载均衡技术是提升Web系统性能的重要方法。利用负载均衡技术,可将负载(工作任务)进行平衡、分摊到多个操作单元上执行,从而协同完成工作任务,达到提升Web系统性能的目的。

请围绕“负载均衡技术在Web系统中的应用”论题,依次从以下三个方面进行论述:
1.概要叙述你参与管理和开发的软件项目,以及你在其中所承担的主要工作。
2.详细阐述常见的三种负载均衡算法,说明算法的基本原理。
3.详细说明你所参与的软件开发项目中,如何基于负载均衡算法实现Web应用系统的负载均衡。

一、应结合自己参与的信息系统项目,说明在其中所承担的工作。
二、现有的负载均衡算法主要分为静态和动态两类。静态负载均衡算法以固定的概率分配任务,不考虑服务器的状态信息,如轮转算法、随机法等;动态负载均衡算法以服务器的实时负载状态信息来决定任务的分配,如最小连接法等。
(1)轮询法
轮询法就是将用户的请求轮流分配给服务器,就像是挨个数数,轮流分配。这种算法比较简单,具有绝对均衡的优点,但是也正是因为绝对均衡,它必须付出很大的代价,例如它无法保证分配任务的合理性,无法根据服务器承受能力来分配任务。
(2)随机法
随机法是随机选择一台服务器来分配任务 。它保证了请求的分散性达到了均衡的目的。同时它是没有状态的,不需要维持上次的选择状态和均衡因子。但是随着任务量的增大,它的效果趋向轮询后也会具有轮询法的部分缺点。
(3)最小连接法
最小连接法将任务分配给此时具有最小连接数的节点,因此它是动态负载均衡算法。一个节点收到一个任务后连接数就会加1,当节点发生故障时就将节点权值设置为0,不再给节点分配任务 。最小连接法适用于各个节点处理的性能相似的情形。任务分发单元会将任务平滑分配给服务器。但当服务器性能差距较大时,就无法达到预期的效果。因为此时连接数并不能准确表明处理能力,连接数小而自身性能很差的服务器可能不及连接数大而自身性能极好的服务器。所以在这个时候就会导致任务无法准确地分配到剩余处理能力强的机器上。
三、第三个问题要根据项目的实际情况来写自己是怎么做的,详细论述在项目中是如何基于负载均衡算法实现Web系统负载均衡的。

1.简要叙述所参与管理和开发的Web系统项目,并明确指出在其中承担的主要任务和开展的主要工作。
2.分析并描述负载均衡在Web应用项目高并发、高性能、高可用三高架构中的意义和作用
3.选择三种常见的通用负载均衡算法,详细阐述负载均衡中的算法和每种算法的基本原理
1)轮询算法
2)随机算法
3)比率算法
4)优先级算法
5)最少连接数算法
6)最快响应时间算法
4.结合实际项目,详细阐述实际参与项目中采用了哪个或哪几个负载均衡算法实现,说明如何在项目中实践应用的负载均衡,并阐述负载均衡技术在项目中的应用效果。

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容