高级软件体系结构——期末篇

第一章

根据自己的经验,谈谈对软件危机的看法。

软件危机的表现:

  • 软件成本日益增长
  • 开发进度难以控制
  • 软件质量差
  • 软件维护困难

软件危机的原因:

  • 用户需求不明确
  • 缺乏正确的理论指导
  • 软件规模越来越大
  • 软件复杂度越来越高

人们面临的不光是技术问题,更重要的是管理问题。管理不善必然导致失败 。

要提高软件开发效率,提高软件产品质量,必须采用工程化的开发方法与工业化的生产技术

在技术上,应该采用基于重用的软件生产技术

管理上,应该采用多维的工程管理模式

就项目管理方面而言,软件重用项目与非重用项目有哪些不同之处。

软件重用项目需要考虑生产可重用软部件的机制。同时,软件重用项目可以减少开发活动中大量的重复性工作,能提高软件生产率,降低开发成本,缩短开发周期。
同时由于大量使用软构件,软件的灵活性和标准化程度也可望得到提高。因此,软件重用项目在管理是比非重用项目更节约管理资源,同时管理起来更方便。

实际参与/组织一个软件重用项目的开发,然后总结你是如何组织该项目的开发的。

参加了一个网页管理系统的开发,该项目重复使用已有的软件产品用于开发新的软件系统,以达到提高软件系统的开发质量与效率,降低开发成本的目的。在过程中使用了代码的复用、设计结果的复用、分析结果的复用、测试信息的复用等。

为什么要研究软件体系结构/h3>

软件体系结构为软件系统提供了一个结构行为和属性的高级抽象,由构成系统的元素的描述。这些元素的相互作用指导元素成的模式以及这些模式的约束组成。不仅指定了系统的组织结构和拓扑结构,而且显示了系统需求和构成系统的元素之间的对应关系,提供了些设计决策的基本原理

根据软件体系结构的定义,你认为软件体系结构的模型应该由哪些部分组成/h3>

构件( component):可以是一组代码,如程序的模块;也可以是一个独立的程序(如数据库的SQL服务器);

连接件( connector):是关系的抽象,用以表示构件之间的相互作用。如过程调用、管道、远程过程调用等

限制( constrain):用于对构件和连接件的语义说明

在软件体系结构的研究和应用中,你认为还有哪些不足之处

  1. 缺乏同意的软件体系结构的概念,导致体系结构的硏究范畴模糊
  2. ADL繁多,缺乏同意的ADL的支持
  3. 软件体系结构研究缺乏统一的理论模型支持
  4. 在体系结构描述方便,尽管出现了多种标准规范或建议标准,但仍很难操作
  5. 有关软件体系结构性质的研究尚不充分,不能明确给出一个良体系结构的属性或判定标准,没有给岀良体系结构的设计指导原则,因而对于软件开发实践缺乏有力的促进作用。
  6. 缺乏有效的支持环境软件体系结构理论研究与环境支持不同步,缺乏有效的体系结构分析、设计、方针和验证工具支持,导致体系结构应用上的困难。
  7. 缺乏有效的体系结构复用方案
  8. 体系结构发现方法研究相对欠缺

详细了解什么面向服务体系结构/h3>

面向服务的体系结构(service-oriented architecture,SOA)是一个组件模型,它将应用程序的不同功能单元(称为服务)通过这些服务之间定义良好的接口和契约联系起来。接口是采用中立的方式进行定义的,它应该独立于实现服务的硬件平台、操作系统和编程语言。这使得构建在各种这样的系统中的服务可以以一种统一和通用的方式进行交互。

第二章

选择一个规模合适的系统,为其建立“4+1”模型。

  • 逻辑视图( Logical view),设计的对象模型(使用面向对象的设计方法时)
  • 过程视图( Process view),捕捉设计的并发和同步特征
  • 物理视图( Physical View),描述了软件到硬件的映射,反映了分布式特性
  • 开发视图( Development view),描述了在开发环境中软件的静态组织结构

架构的描述,即所做的各种决定,可以围绕着这四个视图来组织,然后由一些用例( use cases)或场景( scenarios)来说明,从而形成了第五个视图。

引入了软件体系结构以后,传统软件过程发生了哪些变化种变化有什么好处/h3>

软件体系结构的引入使软件设计开发更加具体和形象,它的模型更使得软件过程更加方便和多样化。

其好处在于:包括程序员在内的绝大多数系统的利益相关人员都借助软件体系结构来进行彼此理解、协商、达成共识或者相互沟通的基础,软件体系机构的模型可以应用到具有相似质量属性和功能需求的系统中,并能够促进大规模软件的系统级复用,在很多方面使得软件开发更加人性化。

软件体系结构的生命周期模型与软件生命周期模型有什么关系/h3>

软件体系结构是贯穿于软件研发的整个生命周期的系统开发、运行、维护所实施的全部工作和任务的结构框架,给出了软件开发活动各阶段之间的关系,软件体系结构的生命周期模型为软件生命周期模型提供了很好的结构依据和参考,也为其构建了很好的开发方式

详细了解4+1视图。

所谓「4+1视图」,是从5个不同视角来描述软件体系结构,包括场景视图、逻辑视图、开发视图、过程视图、物理视图,每个视图只关系系统的一个侧面,5个视图结合起来,才能反映系统的全部内容。

第三章

试分析和比较B/S,二层C/S和三层C/S,指出各自的优点和缺点。

二层CS体系结构将应用一分为二,服务器负责数据管理,客户机完成与用户的交互任务。

优点

  1. C/S体系结构具有强大的数据操作的事务处理能力,模型思想简单,易于人们理解和接受。
  2. 对软硬件的变化有极大的适应性和灵活性,易于对系统进行扩充和缩小。
  3. 系统中的功能构建充分隔离,节约大量费用。

缺点

  1. 开发成本较高。
  2. 客户端程序设计复杂
  3. 信息内容和形式单一
  4. 用户界面风格不一,使用繁杂不易推广。
  5. 软件移植困难
  6. 软件维护和升级困难
  7. 新技术不能轻易应用。

三层CS在上面的基础上进行了改造并增加了一个服务器

其优点

  1. 允许合理的划分三层结构的功能,能提高系统和软件的可维护性和可扩展性。
  2. 具有良好的可升级性和开放性。
  3. 应用的各层可以并行开发,可以选择各自最适合的开发语言。
  4. 为严格的安全管理奠定了坚实的基础

B/S风格就是上述三层应用结构的一种实现方式,其具体结构为:浏览器/web服务器/数据库服务器。

优点

  1. 基于B/S体系结构的软件系统安装,修改和维护全在服务器端解决。
  2. 提供了异种机,异种网,异种应用服务的联机,联网,同意服务的最现实的开放性基础。

缺点

  1. 缺乏对动态页面的支持能力,没有集成有效的数据库处理能力。
  2. 在数据查询等响应速度上,要远远低于C/S体系结构。
  3. 数据提交一般以页面为单位,数据的动态交互性不强,不利于在线事务处理应用

在软件开发中,采用异构结构有什么好处,其负面影响有哪些/h3>
  1. 结构有不同的处理能力的强项和弱点,一个系统的体系结构应该根据实际需要进行选择,以解决实际问题
  2. 软件包,框架,通信以及其他一些体系机构上的问题,目前存在者多中标准。即使再某一段时间内某一标准占据着统治地位,但变动最终是绝
    对的
  3. 工作中,我们总会遇到一些遗留下的代码,它们仍有效用,但是却与新系统有某种程度上的不协调。然而在很多场合,将技术与经济综合进行
    考虑时,总是决定不重写它们
  4. 在某一单位中,规定了共享共同的软件包或相互关系的一些标准,仍会存在解释或表示习惯上的不同

负面影响:

大多数应用程序只使用10%的代码实现系统的公开功能,剩下90%的代码完成系统管理功能:输入和输出,用户界面,文本编辑基本图表,标准对话框,通信,数据确认和旁听追踪域的基本定义等

至少详细了解一种体系结构风格.

管道过滤器风格

第四章

体系结构描述有哪些方法哪些标准和规范/h3>

体系结构描述方法

  • 图形表达工具:由矩形框和有向线段组合而成。
  • 模块内连接语言:将一种或几种传统程序设计语言的模块连接起来的语言
  • 基于软构件的系统描述语言:将软件系统描述成一种是由许多以特定形式相互作用的特殊软件实体构造组成的组织或系统。
  • 软件体系结构描述语言:是参照传统程序设计语言的设计和开发经验,针对软件体系结构特点重新设计、开发和使用的专门的软件体系结构描述语言。

体系结构描述的标准和规范

IEEE P1471:于2000年9月21日通过 EEE-SA标准委员会评审。

体系结构描述语言与程序设计语言有什么区别/h3>

体系结构描述语言(ADL)在充分继承和吸收传统程序设计语言的精确性和严格性特点的同时,还应该具有构造、抽象、重用、组合、异构、分析和推理等能力和特性

  • 构造能力:ADL能够使用较小的独立体系结构元素来建造大型软件系统
  • 抽象能力:ADL使得软件体系结构中的构件和连接件描述可以只关注它们的抽象特性,而不管其具体的实现细节
  • 重用能力:ADL使得组成软件系统的构件、连接件甚至是软件体系结构都成为软件系统开发和设计的可重用部件
  • 组合能力:ADL使得其描述的每一系统元素都有其自己的局部结构,这种描述局部结构的特点使得ADL支持软件系统的动态变化组合
  • 异构能力:ADL允许多个不同的体系结构描述关联存在
  • 分析和推理能力:ADL允许对其描述的体系结构进行多种不同的性能和功能

选择一个规模适中的系统,使用UML为其建模。

详细了解一种设计模式

设计模式是指在软件开发中,经过验证的、用于解决在特定环境下、重复出现的、 特定问题的解决方案;
经典的设计模式有较多的种类,如状态模式,中介者模式,策略模式,装饰模式 等等。下面详细介绍下装饰模式。

装饰模式即为动态地给一个对象添加一些额外的职责。 这样就可以把类中的装饰功能从类中搬移出去,这样可以简化原有的类。有效地把类的核心功能和装饰功能区分开了。

适用场合:

  1. 程序希望动态地增强类的某个对象的功能,而又不影响该类的其他对象;
  2. 采用继承来增强对象的功能不利于系统的扩展和维护;

第五章

什么是动态软件体系结构态软件体系结构与静态软件体系结构有什么区别/h3>

动态软件体系结构的动态性包括:

  • 交互性动态性
  • 结构化动态性
  • 体系结构动态性

由于系统需求,技术,环境,分布等因素的变化而最终造成软件体系结构的变动,称之为软件体系结构演化。软件系统在运行时刻的体系结构变化称之为软件体系结构的动态性,

基于构件的动态软件体系结构模型的层次结构是什么/h3>

如何使用πADL进行动态体系结构建模使用一种动态描述语言对一个简单系统的体系结构进行描述

πADL Architechture Specification::=System System_name [1 Type_Specification]
[1 Configuration_Specification]
[0 + Constraint_Specification]
[End System_Name]

第六章

1、什么是Web服务体系结构传统的结构相比,使用Web服务有哪些好处/h3>

Web服务体系结构:

◎ Web服务作为一种新兴的Web应用模式,是一种崭新的分布式计算模型,是Web上数据和信息集成的有效机制。

◎ Web服务就像Web上的构件编程,开发人员通过调用Web应用编程接口,将Web服务集成进他们的应用程序,就像调用本地服务一样。

优势:

◎ 高度的通用性和易用性

◎ 完全的平台、语言独立性

◎ 高度的集成性

◎ 容易部署和发布

2、在Web服务中,如何实现其松散耦合的特点/h3>

3、试分析服务提供者、服务请求者和服务代理三者的作用,以及它们之间的工作流程。

4、试解释Web服务栈的层次结构。

5、Web服务有哪些核心技术,这些技术是如何在Web服务中发挥作用的。

核心技术:

  • 作为Web服务基础的XML
  • 简单对象访问协议
    • SOAP信封
    • SOAP编码规则
    • SOAP RPC表示
    • SOAP绑定
  • Web服务描述语言
  • 统一描述、发现和集成协议

如何发挥作用

6、从管理的角度看,SOA有什么优点/h3>
  • 集成现有系统,不必另起炉灶

    面向服务的体系结构可以基于现有的系统投资来发展,而不需要彻底重新创建系统。通过使用适当的SOA框架并使其用于整个企业,可以将业务服务构造成现有组件的集合。使用这种新的服务只需要知道它的接口和名称。服务的内部细节以及在组成服务的组件之间传送的数据的复杂性都对外界隐藏了。这种组件的匿名性使组织能够利用现有的投资,从而可以通过合并构建在不同的机器上、运行在不同的操作系统中、用不同的编程语言开发的组件来创建服务。遗留系统可以通过Web 服务接口来封装和访问

  • 服务设计松耦合,带来多方面优点

    服务是位置透明的,服务不必与特定的系统和特定的网络相连接。服务是协议独立的,服务间的通信框架使得服务重用成为可能。对于业务需求变化,SOA能够方便组合松耦合的服务,以提供更为优质和快速的响应,允许服务使用者自动发现和连接可用的服务。松耦合系统架构使得服务更容易被应用所集成,或组成其他服务,同时提供了良好的应用开发、运行时服务部属和服务管理能力。提供对服务使用者的验证(authentication)授权(authorization),来加强安全性保障,这一点也优于其他紧耦合架构。

  • 统一了业务架构,可扩展性强

    在所有不同的企业应用程序之间,基础架构的开发和部署将变得更加一致。现有的组件、新开发的组件和从厂商购买的组件可以合并在一个定义良好的SOA框架内。这样的组件集合将被作为服务部署在现有的基础构架中,从而使得可以更多地将基础架构作为一种商品化元素来加以考虑,增强了可扩展性。又由于面向服务的敏捷设计,在应对业务变更时,有了更强的“容变性”

  • 加快了开发速度,减少了开发成本

    SOA允许清晰地表示流程流,这些流程流通过在特定业务服务中使用的组件的顺序来标识。这给商业用户提供了监视业务操作的理想环境。业务建模反映在业务服务中。流程操纵是以一定的模式重组部件(构成业务服务的组件)来实现的。这将进一步允许更改流程流,而同时监视产生的结果,因此促进了持续改进。重用现有的组件降低了在增强或创建新的业务服务过程中带来的风险,也减少了维护和管理支持服务基础架构的风险。

7、在实际开发中,如何实现Web服务和SOA结构/h3>

第七章

1、请把基于体系结构的软件开发模型与其他软件开发模型进行比较。

2、请把基于体系结构的软件设计方法与其他软件设计方法进行比较。

3、如何才能提高软件系统的可演化性。

第八章

1、什么是软件体系结构的可靠性什么要研究软件体系结构的可靠性/h4>

2、如何模型化系统的可靠性/h4>

◎ 通过系统的详细说明书,确定系统所采用的体系结构风格。

◎ 把每一种体系结构风格转换成状态视图,并计算状态视图中每一个状态的可靠性及其相应的迁移概率。

◎ 通过整个系统的体系结构视图,把所有的状态视图集成为一个整体状态视图。

◎ 通过整体状态视图构造系统的迁移矩阵,并计算系统的可靠性。

3、软件体系结构风险分析有哪些基本步骤/h4>

◎ 采用体系结构描述语言ADL对体系结构进行建模

◎ 通过模拟方法执行复杂性分析

◎ 通过FMEA和模拟运行执行严重性分析

◎ 为构件和连接件开发其启发式风险因子

◎ 建立用于风险评估的CDG

◎ 通过图论中的算法执行风险评估和分析

4、软件体系结构测试是什么悉使用抽象化学机进行测试的方法。

? 软件体系结构测试与程序测试不同,它是检查软件设计的适用性,这种测试不考 虑软件的实现代码。与传统的软件测试一样,基于体系的软件测试也需要研究测试内容、测试准则、测试用例、测试充分性及测试方法。在传统测试方法中,测试准则是基于实现和规 约得到的,基于实现的测试准则是结构化的,它是利用软件的内部结构来定义测试数据以覆盖系统。实现完整测试的典型方法是利用测试准则定义测试需求,进而生成测试用例。

? 抽象化学机:

第九章

1、为什么要评估软件体系结构/h4>

2、从哪些方面评估软件体系结构/h4>
  • 性能
  • 可靠性(容错,健壮性)
  • 可用性
  • 安全性
  • 可修改性
  • 功能性
  • 可变性
  • 集成性
  • 互操作性

3、ATAM评估方法的基本步骤是什么/h4>

(1)描述 ATAM 方法
(2)描述业务动机
(3)描述体系结构
(4)确定体系结构方法
(5)生成质量属性效用树
(6)分析体系结构方法
(7)讨论和分级场景
(8)分析体系结构方法
(9)描述评估结果

4、详细了解一种体系结构风险分析方法。

来源:SCUT_JQ

声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2020年7月6日
下一篇 2020年7月6日

相关推荐