软件架构与设计复习资料
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
软件架构与设计复习资料
1.组成派和决策派两种流派的软件架构概念的相同和区别
相同:1)组成派和决策派是站在不同角度的软件架构概念
2)在具体的软件架构实践中,总是同时体现两派的架构概念区别:组成派的观点更关注软件,倾向于“组件+交互”的思想;决策派的观点更关注人,倾向于重大决策集合的思想,除了结构和行为,还关
注一些非功能的因素。
2.分离关注点的三种方法
1)通过职责划分来分离关注点
2)利用软件系统各部分的通用性不同进行关注点的分离
3)通过不同粒度级别分离关注点
3.框架和架构的联系和区别
联系:
1)框架和架构的出现,都是为了解决软件系统日益复杂所带来的困难而采
取“分而治之”思维的结果。先大局后局部,就出现了架构;先通用后
专用,就出现了框架。
2)为了尽早验证架构设计,可以将关键的通用机制甚至整个架构以框架的
方式进行实现。
3)软件架构可以借助框架来构造。
区别:
1)框架是软件,架构不是软件。
2)引入软件框架之后,整个开发过程变成了“分两步走”,而架构决策往
往会体现在框架之中。
3)架构是问题的抽象解决方案,他关注大局而忽略细节;而框架是通用半
成品,必须根据具体需求进一步定制开发才能变成应用系统。
4.简述软件架构的作用
软件架构的作用包括以下几个方面:
1)对新产品开发的作用:完成从面向业务到面向技术的转换,在鸿沟上架
起一座桥梁,具体包括:上承业务目标,下接技术决策,控制复杂性,
组织开发,利用迭代开发和增量交付,提高质量。
2)对产品线开发的作用:固化核心知识,提供可重用资源,缩短推出产品
的周期,降低开发和维护总成本,提高产品质量,支持批量定制。
3)对软件维护的作用:软件架构是软件维护的基础。
4)对软件升级的作用:软件架构会限制软件的升级力度。
5.理解视图的概念以及多种视图多种角度进行架构设计的意义
视图概念:一个架构视图是对于从某一视角或某一点上看到的系统所作的简化描述,描述中涵盖了系统的某一特定方面,而省略了与此方面无关的实体。
多视图多角度架构设计的意义:基于多视图的架构设计方法在一定程度上将各类需求分别对待,通过不同的架构设计视图分别满足它们,从而确保重要的需求一一被满足。
6.概念性架构和实际架构的区别和共同点
接口:在实际架构中,借口占据非常核心的地位;而概念性架构中没有接口的概念。
子系统:实际交媾忠实通过子系统和模块来分割整个系统;并且子系统往往有明确的接口;而概念性架构中只有抽象的组件,这些组件没有接口只有职责,一般是处理组件、数据组件或连接组件中的一种。
交互机制:实际架构中的交互机制是“实在”的,如基于接口编程、消息机制或远程方法调用等等;而概念性构架中的交互机制是“概念化”的。
共同点:该娘型架构和实际架构都满足软件架构的该娘,无论是“架构=组件+交互”,还是“架构=重要决策集”。
7.软件架构设计四条策略的策略内容、针对问题和关键点
策略一:全面认识需求。内容:弥补非功能需求的缺失。关键点:是否遗漏了至关重要的非功能需求。针对问题:对需求的理解不系统、不全面,对非功能需求不够重视。
策略二:关键需求界定架构。内容:“需求入架构出”的理解过于简单粗糙不能适应实践要求。关键点:能否驯服数量巨大且频繁变化的需求。针对问题:对于时间和质量的矛盾,颁发不足,处理草率。
策略三:多视图探寻架构。内容:架构是开展系统化团队开发的基础,应当为不同涉众提供指导和限制。关键点:能否从容地设计软件架构的不同方面。针对问题:架构设计方案覆盖范围严重不足许多关键决定被延迟,由实现人员仓促决定。
策略四:尽早验证架构。内容:架构设计方案应解决重大技术风险,并尽早验证架构。关键点:是否及早验证架构方案并做出了调整。针对问题:假设架构方案是颗星的,知道后期才发现问题,造成大规模返工。
8.理解按问题深度和问题广度两个角度解决问题的方法在软件架构设计中的
具体体现
一方面,软件架构从大局着手,就技术方面的重大问题作出决策,构造一个具有一定抽象层次的解决方案,而不是将所有熙街统统展开,从而有效地控制了“技术复杂性”,属于“按问题深度分而治之”。
另一方面,有了软件架构设计后,从而可以把不同模块分配给不同小组分头开发,独立地并行工作。对“人尽其才”也有好处,不同小组成员需要精通的技术各不相同。软件架构为开展系统化的团队开发奠定了基础,解决了“管理复杂性”问题,属于“按问题广度分而治之”。
9.软件架构要设计到什么程度
由于项目、开发团队情况的不同,软件架构设计的成都会有不同;
软件架构应当为开发人员提供足够的指导和限制。
10.常见的高来高去式架构设计三种症状和对应决策
11. 能够简要描述软件架构设过程的每个步骤
12. 需求捕获、需求分析和系统分析三个活动的区别
需求捕获 需求分析 系统分析
A. 理解用户所从事的工作
B. 了解软件系统要在哪方面帮助用户工作 A. 挖掘、整理软件系统要“做什么” B. 在变更不可避免的,涉及意愿不明朗的情况下,UP 更推崇通过迭代进行需求分析—进化式需求
A. 解决“怎么做”的问
题
B. 提出可行的逻辑方
案
C. 研究并抽象地表现
软件系统
各阶段的制品:
需求捕获:需求采集卡,《需求调查报告》
需求分析:《软件需求规格说明书》(SRS),SRS一般规格
系统分析:结构化分析,数据流图
面向对象分析:分析类图、鲁棒图、顺序图
13.软件需求的类型以及每种类型的含义
功能需求:描述要开发的软件系统应该做什么,既包括为用户提供的服务,又包括本系统为其他系统提供的服务。
非公能需求:又分为质量属性和约束。软件质量属性又分为运行期质量属性和开发期质量属性,运行期质量属性是软件系统在运行期间,最终用户可以直接感受到的一类属性,这些质量属性直接影响这用户会软件产品的满意度;开发期质量属性是开发人员、开发管理人员和维护人员都非常关心的,队最终用户而言,这些质量属性只是间接地促进用户需求的满足;约束需求规定了开发软件系统时必须遵守的限制条件。
14.理解约束需求和功能需求、质量属性需求之间的关系
软件需求分为功能需求和非功能需求,分功能需求又分为质量属性和约束。
各类需求的易变更性不同。
约束需求规定了开发软件系统时必须遵守的限制条件。
功能需求描述要开发的软件系统要做什么,既包括为用户提供的服务,又包括本系统为其他系统提供的服务。
质量属性分为运行期质量属性和开发期质量属性。
15.理解各类需求的易变更性不同
软件系统的各类需求的“易变更性”并不相同。
功能需求最易变,而质量属性需求最稳定
功能需求的易变性中潜藏着两类不易变性:
功能需求集中存在少量长期稳定的功能
功能点本身趋于稳定
约束性需求的稳定性则稍差,技术趋势发生变化、法律规范重新界定和用户组织调整改组,都有可能是约束行需求变更。