软件体系结构大作业Word下载.docx
- 文档编号:16501671
- 上传时间:2022-11-24
- 格式:DOCX
- 页数:14
- 大小:32.16KB
软件体系结构大作业Word下载.docx
《软件体系结构大作业Word下载.docx》由会员分享,可在线阅读,更多相关《软件体系结构大作业Word下载.docx(14页珍藏版)》请在冰豆网上搜索。
对于用户,结构是软件系统功能的组合。
对于设计者,结构是为特定目标而设立的软件成分以及成分之间的关系。
研究意义:
软件体系结构是软件工程的重要研究领域,通过对基本软件结构和经典设计风格的学习和研究,掌握软件体系结构设计的基本原则和技术途径;
能够拓宽软件方法和技术的知识面,提高软件的设计能力;
软件体系结构的重要作用体现在以下三个方面:
1.体系结构是风险承担者进行交流的手段,软件系统的各个风险承担者都关心着系统的各个不同的方面,这些方面都受体系结构的影响。
2.体系结构是早期设计决策的体现,软件体系结构体现的这些早期的约束比起后续的开发、设计、编码、运行服务以及维护工作更为重要。
3.软件体系结构是可传递和可重用的模型。
目标:
软件体系结构是一系列决策和基本原理的集合,这些决策的目标在于开发高效的软件体系结构。
在体系结构设计中所强调的基本原理是系统的可理解性、可维护性和可扩展性。
以一些恰当的形式汇集一定数量的体系结构元素满足系统的主要功能和性能的需求,另外还能同时表示出一些非功能性需求。
开发出合理的、高效的、高质量的软件体系结构,重点解决系统开发过程中的总体结构问题。
二、简述软件设计风格、软件应用框架和软件设计模式的特征和区别?
(不少于300字)
软件体系结构风格
风格是表达特定系统元素和组织方式的通用范例。
软件体系结构风格,反映众多系统共有结构的习惯用法和语义,表述系统的静态结构方式,强调软件元素的组织形式和通常用法。
下面将介绍几种主要和经典的体系结构风格和它们的优缺点。
1.C2风格。
C2体系结构风格可以概括为:
通过连接件绑定在一起的按照一组规则运作的并行构件网络。
图1中构件与连接件之间的连接体现了C2风格中构建系统的规则。
2.数据抽象和面向对象风格。
目前软件界已普遍转向使用面向对象系统,抽象数据类型概念对软件系统有着重要作用。
这种风格的构件是对象,或者说是抽象数据类型的实例。
对象是一种被称作管理者的构件,因为它负责保持资源的完整性。
对象是通过函数和过程的调用来交互的。
图2是数据抽象和面向对象风格的示意图。
3.基于事件的隐式调用风格。
基于事件的隐式调用风格的思想是构件不直接调用一个过程,而是触发或广播一个或多个事件。
系统中的其他构件中的过程在一个或多个事件中注册,当一个事件被触发,系统自动调用在这个事件中注册的所有过程,这样,一个事件的触发就导致了另一模块中的过程的调用。
4.管道/过滤器风格。
在管道/过滤器风格的软件体系结构中,每个构件都有一组输入和输出,构件读输入的数据流,经过内部处理,然后产生输出数据流。
这个过程通常通过对输入流的变换及增量计算来完成,所以在输入被完全消费之前,输出便产生了。
因此,这里的构件被称为过滤器,这种风格的连接件就象是数据流传输的管道,将一个过滤器的输出传到另一过滤器的输入。
5.批处理风格。
批处理风格的每一步处理都是独立的,并且每一步是顺序执行的,只有当前一步处理完后,后一步处理才能开始,数据传送在步与步之间作为一个整体。
批处理的典型应用是经典数据处理和程序开发。
软件设计模式
设计模式是软件问题高效和成熟的设计模板,模板包含了固有的问题的处理逻辑,强调处理逻辑采用方式的直接复用。
设计模式/软件设计模式(Designpattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。
使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。
软件应用框架
框架是待实例化的、可复用的大粒度部件结构。
框架面向不同规模的应用问题,是通用的结构。
强调针对实际问题和通用结构。
应用框架有如下优点:
模块化把应用分割成多个组件或模块.模块化的开发互不影响,效率提高.可重用性代码的可重用性.可扩展性客制化,开发者可在框架中插入自定义的业务逻辑。
三、A公司是一家相对较大的软件和硬件企业,专业从事网络设备的开发。
从单一的产品开始,现在,已经延伸到包括摄相服务器、扫描服务器、光盘服务器以及其他的存储服务器在内的产品。
公司原来的产品都是一个一个地开发,每个软件组织一个项目组。
为了适应快速变化的市场,降低开发成本,公司想引入产品线方法。
然而,软件产品线开发涉及了一个软件开发组织的多个产品,选择了软件产品线意味着要承担由此带来的许多风险。
所以,公司的CTO王总决定在弄清三个问题之后再做决定,首先就是本公司的业务范围是否适合使用产品线方法,其次是如何在原有产品的基础上建立产品线,最后是成功实施产品线的主要因素是什么?
[问题1]
请用100字以内文字说明A公司是否适合采用产品线方法?
为什么?
产品线是指密切相关的一组产品,因为这些产品以类似的方式发挥作用,售给同类客户群,通过同一种类的渠道销售出去产品线可以是密切相关的一组产品,也可以是多个系列产品的集合,面向不同客户群,通过不同销售渠道销售出去;
从规模来看,可以是几百万、几千万的小产品线,也可以是几十亿、几百亿的大产品线。
A公司的产品符合产品线的要求。
所以适合。
[问题2]
请用200字以内文字说明如何在原有产品的基础上建立产品线?
建立产品线首先要明确市场需求和企业资源,企业到底能支撑自身做什么样的产品,同时要想清楚未来市场上需要什么样的产品;
其次是要策划比较好的产品线,要有两个策划,一个是产品策划,即基于特定目标客群划分的产品组合,另一个是营销策划;
第三是标准化,标准化包括设计标准和实施标准。
(1)演化方式,即将现有产品演化为产品线:
在基于现有产品体系结构设计的基础上,将特定产品的构件逐步转化为产品线的共用构件,从基于产品的方法逐步转化为基于产品线的软件开发。
主要优点是通过对投资回报周期的分解、对现有系统演化的维持使产品线方法的实施风险降到了最小,与革命方式相比,完成核心资源的总周期和总投资较大。
(2)革命方式,即用软件产品线替代现有产品集:
基本停止现有产品的开发,所有工作直接针对软件产品线的核心资源开发。
遗留系统只有在符合体系结构和构件需求的情况下,才可以和新的构件协作。
因重要需求的变化导致的初始投资报废的风险加大,与演化方式相比,完成核心资源的总周期和总投资较小。
由于无法满足产品线方法对软硬件同步的需求,这种方法适用于软硬件结合密切且硬件需求差异大的现有产品集。
[问题3]
请用150字以内文字说明成功实施产品线的主要因素是什么?
(1)对该领域的产品开发已具备长期积累的经验。
(2)一个用于构建产品的好的核心资源库。
(3)好的产品线体系结构。
(4)好的管理(软件资源、人员组织、过程)支持。
四、简述SOA软件体系结构的基本概念,简述WebService的主要协议。
SOA软件体系结构基本概念:
面向服务的体系结构(service-orientedarchitecture)是一个组件模型,它将应用程序的不同功能单元(称为服务)通过这些服务之间定义良好的接口和契约联系起来。
接口是采用中立的方式进行定义的,它应该独立于实现服务的硬件平台、操作系统和编程语言。
这使得构建在各种这样的系统中的服务可以以一种统一和通用的方式进行交互。
WebService技术,能使得运行在不同机器上的不同应用无须借助附加的、专门的第三方软件或硬件,就可相互交换数据或集成。
依据WebService规范实施的应用之间,无论它们所使用的语言、平台或内部协议是什么,都可以相互交换数据。
WebService是自描述、自包含的可用网络模块,可以执行具体的业务功能。
WebService也很容易部署,因为它们基于一些常规的产业标准以及已有的一些技术,诸如XML和HTTP。
WebService减少了应用接口的花费。
WebService为整个企业甚至多个组织之间的业务流程的集成提供了一个通用机制。
XML和XSD
可扩展的标记语言XML是WebService平台中表示数据的基本格式。
除了易于建立和易于分析外,XML主要的优点在于它既与平台无关,又与厂商无关。
XML是由万维网协会(W3C)创建,W3C制定的XMLSchemaXSD定义了一套标准的数据类型,并给出了一种语言来扩展这套数据类型。
WebService平台是用XSD来作为数据类型系统的。
当你用某种语言如VB.NET或C#来构造一个WebService时,为了符合WebService标准,所有你使用的数据类型都必须被转换为XSD类型。
如想让它使用在不同平台和不同软件的不同组织间传递,还需要用某种东西将它包装起来。
这种东西就是一种协议。
WebService的主要协议
SOAP
SOAP即简单对象访问协议(SimpleObjectAccessProtocol),它是用于交换XML编码信息的轻量级协议。
它有三个主要方面:
XML-envelope为描述信息内容和如何处理内容定义了框架,将程序对象编码成为XML对象的规则,执行远程过程调用(RPC)的约定。
SOAP可以运行在任何其他传输协议上。
例如,你可以使用SMTP,即因特网电子邮件协议来传递SOAP消息,这可是很有诱惑力的。
在传输层之间的头是不同的,但XML有效负载保持相同。
WebService希望实现不同的系统之间能够用“软件-软件对话”的方式相互调用,打破了软件应用、网站和各种设备之间的格格不入的状态,实现“基于Web无缝集成”的目标。
WSDL
WebService描述语言WSDL就是用机器能阅读的方式提供的一个正式描述文档而基于XML的语言,用于描述WebService及其函数、参数和返回值。
因为是基于XML的,所以WSDL既是机器可阅读的,又是人可阅读的。
UDDI
UDDI的目的是为电子商务建立标准;
UDDI是一套基于Web的、分布式的、为WebService提供的、信息注册中心的实现标准规范,同时也包含一组使企业能将自身提供的WebService注册,以使别的企业能够发现的访问协议的实现标准。
调用RPC与消息传递
WebService本身其实是在实现应用程序间的通信。
我们现在有两种应用程序通信的方法:
RPC远程过程调用和消息传递。
使用RPC的时候,客户端的概念是调用服务器上的远程过程,通常方式为实例化一个远程对象并调用其方法和属性。
RPC系统试图达到一种位置上的透明性:
服务器暴露出远程对象的接口,而客户端就好像在本地使用的这些对象的接口一样,这样就隐藏了底层的信息,客户端也就根本不需要知道对象是在哪台机器上。
论软件体系结构
软件体系结构:
软件总体结构的抽象表示,或以此为研究对象的学科。
软件体系结构具有如下几种含义。
规定性含义软件体系结构由结构元集、结构形以及结构理三部分组成,即软件体系结构≡(结构元集,结构形,结构理)其中,结构元集为一组构成软件的结构元。
结构元有三类,即处理元、信息元和连接元。
处理元为对信息元施行处理的构件,信息元为处理元的处理对象,连接元负责构件间的连接。
结构形包括特性、联系以及权重。
特性用以约束结构元的选取,联系则约束结构元间的交互与组织,权重表示特性及联系的重要程度。
结构理刻画体系结构人员选取体系结构风格、结构元、结构形的动因与根据。
体系结构风格是各种特定体系结构中结构元与结构形的抽象,它不如特定体系结构约束严格,亦不如特定体系结构完备。
例如,有分布式风格,多进程风格等,它们强调的只是特定体系结构的某些方面。
描述性含义软件体系结构由构件集、连件集、模式以及约束集四部分组成,即软件体系结构(构件集,连件集,模式,约束集)其中,构件集表示构成软件的一组组成元素,连件集为一组连件,用以刻画各构件间的交互,模式为软件设计风格的描述,反映由构件及连件构成软件的构成原则,约束集中的约束表示对模式所加的限制条件。
例如,在客户一服务器系统中,客户与服务器均为构件,构件间交互的描述(如过程调用、事件广播等)为连件,客户一服务器模式为模式,具体系统中对模式所加条件为约束。
多视面含义软件体系结构为软件的一个或多个结构,每一结构反映一种视面,即软件体系结构;
结构集结构≡(构件集,外部可见特性集,联系集)其中,构件集表示构成软件的一组组成元素,外部可见特性反映为其他构件可利用该构件所作的假定,联系用以沟通相关构件。
由于软件体系结构可有多个结构,从而可有多类构件、多种联系,故在定义中并不指明何类构件与何种联系。
常用的结构类型有模块结构、进程结构和概念结构等。
常用的视面有代码视面、模块视面、执行视面以及概念视面。
其中惯常理解的软件体系结构反映了概念视面。
学科含义以前述各种含义的软件体系结构为研究对象的学科或谓在研究与开发前述各种含义的软件体系结构中所涉及的理论、原则、方法、技术所形成的学科。
软件体系结构发展不久,迄今未见被普遍接受的单一定义,然而,它对软件的后续开发过程以及品质量的影响举足轻重,已成为软件工程的重要研究方面,且其重要性将与日俱增。
软件设计自从计算机诞生之日起,就存在着显式或是隐式的危机。
而1968年,在Garmish召开的国际软件工程会议上人们迫切地感到了软件危机给计算机软件产业的发展带来的巨大阻力。
软件危机的两个最大的问题便是:
随着计算机软件技术的日新月异,软件的规模越来越大,软件复杂度越来越高。
伴随着这两个问题的日益突出,整个软件系统结构的设计与规格说明便显得比在早期软件开发中占有重要地位的算法选择和计算问题的数据结构更为重要。
代码级别的软件复用已经远远不能满足大型软件开发的需求。
由此便引入了软件体系结构这一概念。
软件产品线体系结构的研究软件体系结构的开发是大型软件系统开发的关键环节。
体系结构在软件生产线的开发中具有至关重要的作用,在这种开发生产中,基于同一个软件体系结构,可以创建具有不同功能的多个系统。
在软件产品族之间共享体系结构和一组可重用的构件,可以增加软件工程和降低开发和维护成本。
一个产品线代表着一组具有公共的系统需求集的软件系统,它们都是根据基本的用户需求对标准的产品线构架进行定制,将可重用构件与系统独有的部分集成而得到的。
采用软件生产线式模式进行软件生产,将产生巨型编程企业。
但目前生产的软件产品族大部分是处于同一领域的。
软件体系结构的形式化方法研究
软件体系结构研究如果仅仅停留在非形式化的框图阶段,已经难以适应进一步发展的需要。
为支持基于体系结构的开发,需要有形式化建模符号、体系结构说明的分析与开发工具。
从软件体系结构研究的现状来看,在这一领域近来已经有不少进展,其中比较有代表性的是美国卡耐基梅隆大学(CarnegieMellonUniversity)的RobertJ.A11en于l997年提出的Wright系统。
Wright是-种结构描述语言,该语言基于一种形式化的、抽象的系统模型,为描述和分析软件体系结构和结构化方法提供了一种实用的工具。
Wright主要侧重于描述系统的软件构件和连接的结构、配置和方法。
它使用显式的、独立的连接模型来作为交互的方式,这使得该系统可以用逻辑谓词符号系统,而不依赖特定的系统实例来描述系统的抽象行为。
该系统还可以通过一组静态检查来判断系统结构规格说明的一致性和完整性。
从这些特性的分析来说,Wright系统的确适用于对大型系统的描述和分析。
软件体系结构的定义:
从抽象角度来说,软件体系结构包含对于用于构建系统的元素,元素之间的互操作,指导系统构成的模式以及模式上的约束的描述。
大体上说来,一个特定系统风格就是由组件集以及各个组件集之间的交互定义的。
这些软件系统风格便可以用在大型系统设计中。
虽然人们在很多年前就认识到了软件体系结构的设计使整个软件开发中的关键元素,但是对于软件体系结构的定义直至今日也没有达成一个共识。
以下是在软件体系结构理论发展的若干年中比较有影响力的定义:
软件体系结构是具有一定形式的结构化元素,即组件的集合,包括处理组件、数据组件和连接组件。
处理组件负责对数据进行加工,数据组件是被加工的信息,连接组件把体系结构的不同部分组组合连接起来。
这一定义注重区分处理组件、数据组件和连接组件,这一方法在其他的定义和方法中基本上得到保持。
软件体系结构是软件设计过程中的一个层次,这一层次超越计算过程中的算法设计和数据结构设计。
体系结构问题包括总体组织和全局控制、通讯协议、同步、数据存取,给设计元素分配特定功能,设计元素的组织,规模和性能,在各设计方案间进行选择等。
软件体系结构处理算法与数据结构之上关于整体系统结构设计和描述方面的一些问题,如全局组织和全局控制结构、关于通讯、同步与数据存取的协议,设计组件功能定义,物理分布与合成,设计方案的选择、评估与实现等。
一个程序或计算机系统的软件体系结构包括一个或一组软件组件、软件组件的外部的可见特性及其相互关系。
其中,“软件外部的可见特性”是指软件组件提供的服务、性能、特性、错误处理、共享资源使用等。
通过对若干定义的学习和研究,我将为软件体系结构下一个这样的定义:
软件体系结构为软件系统提供了结构、行为和属性的高级抽象,由构成系统的元素描述、这些元素的相互作用、指导元素集成的模式以及这些模式的约束组成。
软件体系结构不仅指定了系统的组织结构和拓扑结构,并且显示了系统需求和构成系统的元素之间的对应关系,提供了一些设计决策的基本原理,是构建于软件系统之上的系统级复用。
软件体系结构的影响【DefinitionofSoftwareArchitecture】
软件体系结构贯穿于软件研发的整个生命周期内,具有重要的影响。
这主要从以下三个方面来进行考察:
(1)利益相关人员之间的交流:
软件体系结构是一种常见的对系统的抽象,代
码级别的系统抽象仅仅可以成为程序员的交流工具,而包括程序员在内的绝大多数系统的利益相关人员都借助软件体系结构来进行彼此理解、协商、达成共识或者相互沟通的基础。
(2)系统设计的前期决策:
软件体系结构是我们所开发的软件系统最早期设计
决策的体现,而这些早期决策对软件系统的后续开发、部署和维护具有相当重要的影响。
这也是能够对所开发系统进行分析的最早时间点。
(3)可传递的系统级抽象:
软件体系结构是关于系统构造以及系统各个元素工
作机制的相对较小、却又能够突出反映问题的模型。
由于软件系统具有的一些共通特性,这种模型可以在多个系统之间传递,特别是可以应用到具有相似质量属性和功能需求的系统中,并能够促进大规模软件的系统级复用。
常用软件体系结构
一个小型的软件可能具有一种软件体系结构,而大型的软件一般由多种软件体系结构组成,软件体系结构没有定性的说只有几种风格,但是经过长期的大型软件设计与分析,人们总结出了一些最为常用的软件体系结构风格,总共有五种,分别是:
◆数据流风格【DataFlowStyle】
数据流风格的体系结构中,我们可以在系统中找到非常明显的数据流,处理过程通常在数据流的路线上“自顶向下、逐步求精”,并且,处理过程依赖于执行过程,而不是数据到来的顺序。
比较有代表性的是批作业序列风格、管道/过滤器风格。
在管道/过滤器风格的软件体系结构中,每个组件都有一组输入和输出,组件读输入的数据流,经过内部处理,然后产生输出数据流。
因此,这里的组件被称为过滤器,这种风格的连接器就象是数据流传输的管道,将一个过滤器的输出传到另一过滤器的输入。
此风格特别重要的过滤器必须是独立的实体,它不能与其它的过滤器共享数据,而且一个过滤器不知道它上游和下游的标识。
一个管道/过滤器网络输出的正确性并不依赖于过滤器进行增量计算过程的顺序。
编译器系统就具备典型的管道系统风格的体系结构。
在该系统中,一个阶段(包括词法分析、语法分析、语义分析和代码生成)的输出是另一个阶段的输入。
管道/过滤器风格的软件体系结构具有许多很好的特点:
(1)使得软组件具有良好的隐蔽性和高内聚、低耦合的特点;
(2)允许设计者将整个系统的输入/输出行为看成是多个过滤器的行为
的简单合成;
(3)支持软件复用。
(4)系统维护和增强系统性能简单。
新的过滤器可以添加到现有系统
中来;
旧的可以被改进的过滤器替换掉;
(5)允许对一些如吞吐量、死锁等属性的分析;
(6)支持并行执行。
每个过滤器是作为一个单独的任务完成,因此可
与其它任务并行执行。
这比下面将要阐述的一种“主-子程序风格”
的单线程操作要灵活得多。
这种系统结构的弱点是:
(1)通常导致进程成为批处理的结构。
这是因为虽然过滤器可增量式地处理数据,但它们是独立的,所以设计者必须将每个过滤器看成一个完整的从输入到输出的转换。
(2)不适合处理交互的应用。
当需要增量地显示改变时,这个问题尤
为严重。
(3)因为在数据传输上没有通用的标准,每个过滤器都增加了解析和
合成数据的工作,这样就导致了系统性能下降,并增加了编写过滤器的复杂性。
◆调用/返回风格的体系结构【Call-and-ReturnStyle】
调用/返回风格的体系结构在过去的30年之间占有重要的地位,是大型软件开发中的主流风格的体系结构。
这类系统中呈现出比较明显的调用/返回的关系。
调用/返回风格在常用软件体系结构风格中内涵是比较丰富的,分为:
主-子程序风格,面向对象概念中的对象体系结构风格,以及层次型系统风格三种子风格。
主-子程序风格的体系结构是一种经典的编程范型,主要应用在结构化程序设计当中。
这种风格的主要目的是将程序划分为若干个小片段,从而使程序的可更改性大大提高。
主-子程序体系结构风格有一定的层次性,主程序位于一层,下面可以再划分一级子程序,二级子程序甚至更多。
需要特别注意的是主-子程序体系结构风格是单线程控制的。
同一时刻只有一个孩子结点的子程序可以得到父亲结点的控制。
总结一下主-子程序体系结构风格的特点:
(1)由于单线程控制,计算的顺序得以保障。
(2)并且有用的计算结果在同一时刻只会产生一个。
(3)单线程的控制可以直接由程序设计语言来支持
(4)分层推理机制:
子程序的正确性与它调用的子程序的正确性有关。
对象风格的体系结构:
抽象数据类型概念对软件系统有着重要作用,目前软件界已普遍转向使用面向对象系统。
这种风格建立在数据抽象和面向对象的基础上,数据的表示方法和它们的相应操作封装在一个抽象数据类型或对象中。
这种风格的组件是对象,或者说是抽象数据类型的实例。
对象是一种被称作管理者(Manager)的组件,因为它负责保持资源的完整性(例如实现对属性,方法的封装)。
对象是通过函数和过程调用来交互的。
对象风格的体系结构具有以下的特点:
(1)对象抽象使得组件和组件之间的操作以黑箱的方式进行。
(2)封装性使得细节内容对外部环境得以良好的隐藏。
对象之
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 软件 体系结构 作业