软件体系结构考试复习
考完回忆
华科软院以后如果还在的话,同志们可以参考一下。
题目的结构和打印店买的卷子的结构是一样的。
填空题考了一个关于性能的战术好像,总之是一个战术,要求写它的几个方面。
然后简答题有一题比较深刻,就是问架构师应如何和项目经理相互合作。
还有一个,为什么说架构师的沟通也很重要?
大题就是自选项目,然后什么 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 构架设计的步骤如下:
- 样本输入。
- 选择要分解的模块。
- 根据下列步骤对模块进行求精:
- 从具体的质量场景和功能需求集合中选择构架驱动因素。
- 选择满足构架驱动因素的构架模式。
- 实例化模块并根据用例分配功能,使用多个视图进行表示。
- 定义子模块的接口。
- 验证用例和质量场景并对其进行求精,使它们成为子模块的限制。
- 从具体的质量场景和功能需求集合中选择构架驱动因素。
- 对需要进一步分解的每个模块重复上述步骤。
对于本题,根据定义给出相关分析即可。
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、定量分析
是依据实际统计数据,建立数学模型,并用数学模型计算出分析对象的各项指标及其数值的一种方法。
定量技巧:
- 指标——对构架可观察到的参数的量化解释
- 模拟、原型与实验
请说明以架构为中心的软件过程。
暂时按下不表。