软件体系结构考试复习

考完回忆

华科软院以后如果还在的话,同志们可以参考一下。

题目的结构和打印店买的卷子的结构是一样的。

填空题考了一个关于性能的战术好像,总之是一个战术,要求写它的几个方面。

然后简答题有一题比较深刻,就是问架构师应如何和项目经理相互合作。

还有一个,为什么说架构师的沟通也很重要?

大题就是自选项目,然后什么 ADD 啦,ATAM 啦,质量属性效用树啦等等分析。

最后一题是分析京东或者淘宝等购物网站针对双 11 采取的战术。

以上。

前言

参考:应该是学院某位前辈同志从老师的 PPT 中整理下来的非常详细的知识点提纲,同时也有结合教材

2014 年软件体系结构试卷

一、填空题

1. 系统的质量属性有多种,请列举其中六种?

  • 运行时可见属性
    • 可用性
    • 性能
    • 安全性
    • 易用性
  • 维护时可见属性
    • 可修改性
    • 可扩展性
    • 可移植性
    • 可集成性

2. 构架战术就是?

战术是对质量属性的控制产生影响的设计决策。

3. 什么称为构架策略?

架构策略是架构中所采用的战术的集合。

4. 构架驱动因素包括?

  • 比较重要的功能
  • 质量属性
  • 限制条件构成的某个子集

5. 构架评审的六个优点是?

优点就是收益。

  • 及早发现现有构架中存在的问题
  • 构架的改进
  • 财务收益
  • 强制为评审做准备
  • 捕获构架设计的基本思想
  • 验证需求的有效性

6. 架构结构可以分为 3 组?

  • 静态的角度
    • 模块结构
    • 分析类结构
    • 类结构
  • 动态的角度
    • 进程结构
    • 数据流
    • 控制流
    • 使用结构
    • 调用结构
    • 层次结构
  • 部署的角度
    • 物理结构

7. 构架的商业属性包括?

也叫商业限制。

  • 投放市场时间
  • 成本和收益
  • 预计的系统生命周期的长短
  • 目标市场
  • 推出计划
  • 遗留系统集成

8. 构架样式有多种,其中四种是?

  • 以数据为中心的样式
  • 数据流样式
  • 虚拟机样式
  • 调用-返回样式
  • 独立组件样式
  • 事件系统样式
  • 通讯进程样式
  • C/S 样式
  • C2 样式

二、名词解释

1. 软件架构

软件架构——在一定的设计原则基础上,从不同角度对组成系统的各部分进行搭配和安排,形成系统的多个结构而组成架构,它包括该系统的各个组件、组件的外部可见属性及组件之间的相互关系。

组件的外部可见属性是指其它组件可对该组件所做的假设,如该组件提供的服务、具备的质量特征、错误处理、共享资源的使用。

架构定义可以从下面六个方面来理解:

  • 架构应建立在一定的设计原则之上,否则很容易失败。
  • 系统可能由多个结构组成,其中任何一个结构都不能与构架等同。
  • 每个软件系统都有自己的构架。
  • 软件架构决定了各个组件。
  • 只要某个组件的行为可以从其它组件的角度观察到或区别开,这样的行为就是软件架构的内容。
  • 软件架构是抽象的,它不考虑实现、算法和数据表示的细节,而集中研究“黑盒”组件的行为和交互,是设计第一步。

2. 软件架构商业周期(用画图形式表示)?

该商业周期的运作:

  • 软件架构影响开发组织的内部结构和经营目标
  • 构架影响开发组织的目标
  • 软件架构可能会影响客户对下个系统的需求
  • 软件架构的过程丰富了整个开发团队的经验,从而影响设计师对后继系统的设计
  • 有些系统甚至会影响并实际改变软件工程的发展,以及开发人员学习和实践的技术环境

三、对错题

1. 软件架构可以由几名设计师共同完成。(错)
2. 设计师对系统的质量属性应平等看待,在系统设计中全部予以解决。(错)
3. 架构的文档应该完备,并使所有风险承担者都能看懂。(对)
4. 构架通常可以依靠某一特定产品或工具。(对)
5. 应将产生数据的模块和使用数据的模块分离开。(对)

四、简答题

1. 为什么要分析软件架构?

思想有多远,我们就能走多远。
高度决定思路,思路决定出路。

系统的建立是为了满足组织的需求(包括功能和质量),质量需求决定了系统必须达到的特征,包括性能、可靠性、互操作性以及生命周期等。随着软件系统的日益复杂,涉众对软件的要求已不局限于功能上的满足,而是更加注重质量。

很少有人注意到组织(开发组织、客户等)在系统设计和系统成败上扮演的角色。

系统的质量特征受到软件架构的限制,或者说构架设计的选择受到要达到的质量特征的影响。

2. 请说明模块结构和使用结构之间的联系和区别。

  • 模块结构——体现了任务的划分,每个模块都有其接口描述、代码和测试计划等,各模块通过父子关系联系起来,在开发和维护阶段用于分配任务和资源。模块结构是从静态的角度来分析的。

  • 使用结构——描述过程或模块之间的联系,这种联系是“假设正确存在”的关系,用于设计可轻松扩展的系统。如果过程 A 的运行必须以过程 B 的正确运行为前提,则说过程 A 使用过程 B

然后根据这个定义再分析分析就成。

五、构架分析与设计

针对一个网上购物系统或学生选课系统,请完成下面 4 个问题:

1. 说明系统的若干质量属性,并以场景图的形式分别描述一个可用性场景和一个安全性场景。
2. 使用 ADD 方法说明系统的初步设计。
3. 描述 ATAM 方法的九个步骤。
4. 选取两个质量属性以表格形式生成质量属性效用树。

1. 质量属性有以下几种

  • 运行时可见属性
    • 可用性
    • 性能
    • 安全性
    • 易用性
  • 维护时可见属性
    • 可修改性
    • 可扩展性
    • 可移植性
    • 可集成性

2. ADD 方法,

属性驱动的设计(Attribute Driven Design, ADD)把一组质量属性场景作为输入,利用对质量属性实现与构架设计之间的关系的了解,对构架进行设计。

ADD 构架设计的步骤如下:

  1. 样本输入。
  2. 选择要分解的模块。
  3. 根据下列步骤对模块进行求精:
    1. 从具体的质量场景和功能需求集合中选择构架驱动因素。
    2. 选择满足构架驱动因素的构架模式。
    3. 实例化模块并根据用例分配功能,使用多个视图进行表示。
    4. 定义子模块的接口。
    5. 验证用例和质量场景并对其进行求精,使它们成为子模块的限制。
  4. 对需要进一步分解的每个模块重复上述步骤。

对于本题,根据定义给出相关分析即可。

3. 九个步骤如下:

ATAM(Architecture Tradeoff Analysis Method)——构架权衡分析法。

  • 1. ATAM 方法的表述
  • 2. 商业动机的表述
  • 3. 构架的表述
  • 4. 对构架方法进行分类
  • 5. 生成质量属性效用树
  • 6. 分析架构方法
  • 7. 集体讨论并确定场景优先级
  • 8. 再次分析构架方法
  • 9. 结构的表述

4. 所谓质量属性效用树,

  • 效用树的作用是使质量属性需求具体化,从而迫使设计师和客户代表准确地定义出他们的质量需求。
  • “效用”是效用树的根节点,表示系统的总体适宜性。
  • 中间结点是质量属性及其求精。
  • 叶结点是与质量属性对应的场景。

针对 2015 年的卷子补充知识点

填空题

何为涉众?

涉众就是对系统构建感兴趣的人或组织。

如:客户、最终用户、开发人员、项目经理、维护人员、对系统进行市场营销活动的人。

安全性的战术有哪些?

  • 1、抵抗攻击
    • 对用户进行身份验证
    • 对用户进行授权
    • 维护数据的机密性
    • 维护完整性
    • 限制暴露的信息
    • 限制访问
    • 在外部用户和提供服务的系统之间设置认证服务器
    • 把要保护的系统置于通讯防火墙之后
    • 在某个可信内核的基础上构建内核,由该内核提供安全
  • 2、检测攻击
    • 误用情况的检测是把通信模式与已知攻击的历史模式进行比较
    • 异常情况的检测是把通信模式与其本身的历史基线(情况)进行比较
  • 3、从攻击中恢复
    • 恢复状态
    • 识别攻击者

构架编档的基本原则是什么?

构架文档写作的基本原则是:从读者的角度出发。

软件系统的质量属性是指?

软件系统的质量属性是指系统在整个生命周期中所具有的特征。

构架本身的质量属性包括?

  • 一致性(概念完整性)
  • 正确性和完整性
  • 可构建性

对错题

软件构架可以由几名设计师共同完成,每位设计师都可以决策。()
设计师对系统的质量属性应平等看待,在系统设计中全部予以解决。()
构架的文档应该完备,并使所有风险承担者都能看懂。()
构架的设计应有助于增量式实现。()
架构就是系统的总体结构。()

架构设计应尽量采用已知的设计模式。()

简答题

请说明构架、框架和设计模式之间的联系和区别。

  • 定义:软件框架使提取特定领域软件的共性部分形成的体系结构,不同领域的软件项目有着不同的框架类型
  • 作用:开发过程中代码不需要从头编写,提高软件的质量,降低成本,缩短开发时间,形成良性循环

1、框架和平台的关系:

  • 平台在应用层面主要指提供特定服务的系统软件
  • 框架更侧重设计和开发过程,框架可通过调用平台提供的服务而起作用

2、框架和类库的关系:

  • 框架构成了通用的、具有一般性的系统主体部分
  • 二次开发人员根据具体业务,完成特定应用系统中与众不同的特殊部分

3、框架和架构的关系:

  • 构架确定了系统整体结构、层次划分、不同部分之间的协作等设计考虑
  • 框架更偏重于技术,确定框架后,其所对应的架构也随之确定,但在一个系统架构中可以集成多种框架

4、框架和设计模式的关系:

  • 设计模式研究的是一个设计问题的解决方法,一个模式可应用于不同的框架和被不同的语言所实现
  • 框架则是一个应用的体系结构,是一种或多种设计模式和代码的混合体

共性:共同致力于使人们的设计可以被重用(设计模式的思想可以在框架设计中进行应用)

区别:

  • 从应用领域上分,框架给出的使整个应用的体系结构,而设计模式则给出了单一设计问题的解决方案
  • 从内容上分,设计模式仅是一个单纯的设计;而框架则是设计和代码的一个混合体
  • 设计模式比框架更容易移植

请说明架构师的主要职责,架构师与项目经理的职责区别。

架构师的职责如下:

  • 了解所在组织的业务目标,使架构更好地支持业务目标
  • 规划产品的开发与演进
  • 规划和建设架构级的重用,如产品线等
  • 领导并负责架构设计,定义系统的高层结构和接口
  • 为项目管理提供支持,如技术可行性、任务划分、人员招聘
  • 领导和协调项目组的主要技术活动,对主要技术产品负责实际参与架构原型的开发实现
  • 讲解架构、指导详细设计和开发、协调冲突以实现既定的构架目标
  • 规划和协助软件架构的评审
  • 评估新技术并提出采用建议

项目经理的职责如下:

  • 具有过程控制能力
  • 具备文档能力
  • 总结汇报
  • 擅长分解任务
  • 具有时间观念
  • 具有计划能力
  • 具有跨界思维
  • 有亲和力
  • 组织协调

然后根据他们的职责分析它们的区别即可。

请说明架构评审的主要方法。

评审的一般技巧有:

1、定性分析

是指凭分析者的直觉、经验,凭分析对象过去和现在的延续状况及最新的信息资料,对分析对象的性质、特点、发展变化规律作出判断的一种方法。

定性技巧——提问技巧:

  • 场景——描述风险承担者和系统之间的具体交互
  • 评审清单——对同一领域的若干系统进行评估后提出的一组详细的问题
  • 问卷——适用于所有构架的若干问题的清单

2、定量分析

是依据实际统计数据,建立数学模型,并用数学模型计算出分析对象的各项指标及其数值的一种方法。

定量技巧:

  • 指标——对构架可观察到的参数的量化解释
  • 模拟、原型与实验

请说明以架构为中心的软件过程。

暂时按下不表。

补充


软件体系结构考试复习
http://fanyfull.github.io/2021/11/10/软件体系结构考试复习/
作者
Fany Full
发布于
2021年11月10日
许可协议