软件体系结构Chap基本概念分析
- 格式:ppt
- 大小:317.50 KB
- 文档页数:43
软件体系结构概念和⼏种不同的定义
软件体系结构的概念:
(1)软件体系结构是具有⼀定形式的结构化元素,即构件的集合,包括处理构件,数据构件和连接构件。
(2)软件体系结构是软件设计过程中的⼀份层次,这⼀层次超越计算过程中的算法设计和数据结构设计。
(3)软件体系结构有四个⾓度,它们从不同⾓度对系统进⾏描述:
概念⾓度描述系统的主要构件及它们之间的关系
模块⾓度包含功能分解与层次结构
运⾏⾓度描述了⼀个系统的动态结构
代码⾓度描述了各种代码和库函数在开发环境中的组织
(4)软件体系结构是⼀个抽象的系统规范,主要包括⽤其⾏为来描述的功能构件和构件之间的相互连接,接⼝和关系。
(5)软件体系结构是⼀个程序/系统各构件的结构,它们之间的相互关系以及进⾏设计的原则和随时间演化的指导⽅针。
(6)⼀个软件体系结构包括⼀个软件和系统构件,互联及集合;⼀个系统说明的集合;⼀个基本原理⽤以说明这⼀构件,互联和约束能够满⾜系统需求。
(7)⼀个程序或计算机系统的软件体系结构包括⼀个或⼀组软件构件,软件构件外部的可见特性及其相互关系。
教材说的是:
软件体系结构为软件系统提供了⼀个结构,⾏为和属性的⾼级抽象,有构成系统的元素描述,这些元素的相互作⽤,指导元素集成的模式以及这些模式的约束组成。
软件体系结构综述计算机应用专业赵诚 070321169随着计算机应用的日益普及,人们对软件的需求量急剧增加。
起初,人们把软件设计的重点放在数据结构和算法的选择上。
随着软件系统规模越来越大,越来越复杂,新的问题也随之而来, 大量实践统计表明:系统软件开发中,70%的错误是由软件设计阶段引入的; 而且错误在系统中存在的时间越长则越难发现, 解决这些错误的代价也越高,于是整个系统的结构和规格说明逐渐占有了重要的位置,软件体系结构这一概念也应运而生。
它成为了沟通软件需求和软件设计的一座桥梁。
1、软件体系结构的定义对于软件体系结构的定义,至今还没有一个统一的、得到广泛认可的解释,很多软件体系结构学者都提出了各自对体系结构的概念与定义。
软件体系结构的最核心概念有构件、连接件、配置、端口和角色。
构件是具有某种功能可重用的软件基本单元,表示软件系统中主要的计算元素和数据存储单元。
连接件表示了构件之间的交互,是构件与构件之间建立和维持行为关联和消息传递的途径。
包括实现构件之间的交互机制和管理这些交互的原则(协议)。
配置表示了构件和连接件之间的拓扑结构和逻辑约束,它是构件和连接件的集合。
总之,软件体系结构为软件系统提供了一个结构、行为和属性的高级抽象,由构成系统的元素的描述、这些元素的相互作用、指导元素集成的模式以及这些模式的约束组成。
软件体系结构不仅定义了系统的组织结构和拓扑结构,而且表示了系统的需求和构成系统的元素之间的对应关系提供了设计决策的基本原理和约束条件。
2、软件体系结构的风格软件体系结构风格是描述某一特定应用领域中系统组织方式的惯用模式。
它反映了领域中众多系统所共有的结构和语义特性,并指导如何将各个模块和子系统有效地组织成一个完整的系统,按这种方式理解,软件体系结构风格定义了用于描述系统的术语表和一组指导构件系统的规则。
2.1数据流系统数据流是一种将数据从输入端显式的输送到输出端的体系结构风格。
数据流风格的构件是数据的处理单元,连接件是连接处理单元的通道。
软件架构知识点总结一、软件架构的概念与重要性1. 软件架构的概念软件架构是指软件系统的设计和结构,它包括系统的组织结构、组件的相互关系、数据流程等方面。
软件架构不仅仅是对软件系统结构的描述,还包括对系统功能和性能的要求以及设计原则和技术方案的选择。
软件架构是软件系统的基础,对系统的整体性能、可维护性、可扩展性等都有着至关重要的影响。
2. 软件架构的重要性软件架构对于软件系统的成功与否有着重要的影响,它决定了系统的灵活性、可维护性、可扩展性,以及系统的可靠性、安全性等方面。
一个好的软件架构可以使系统易于维护和扩展,能够满足未来的需求变化,提高软件系统的稳定性和效率,降低系统开发和维护的成本。
二、常见的软件架构模式1. 分层架构分层架构是将软件系统划分为若干个层次,在每个层次中实现特定的功能。
典型的分层架构包括三层架构(Presentation Layer、Business Layer、Data Access Layer)和四层架构(Presentation Layer、Application Layer、Business Layer、Data Access Layer)。
分层架构将系统的功能模块化,提供了良好的可扩展性和可维护性。
2. 客户端-服务器架构客户端-服务器架构是将软件系统划分为客户端和服务器两部分,客户端负责用户界面显示和用户输入,服务器负责业务逻辑处理和数据存储。
客户端和服务器之间通过网络通信进行数据交互。
客户端-服务器架构适用于需要远程访问和数据共享的系统。
3. MVC架构MVC是Model-View-Controller的缩写,它将软件系统划分为数据层(Model)、用户界面层(View)和控制层(Controller)。
Model负责数据的处理和存储,View负责用户界面的显示,Controller负责应用逻辑的处理。
MVC架构将数据、用户界面和应用逻辑分离,提高了系统的可维护性和可扩展性。
软件体系结构基本概念汇总这门课与UML建模,程序设计⽅法学⼀样。
都是站在⽐較⾼的⾓度来看整个软件结构。
并⾮对算法,或者语⾔的关注。
假设以后有志于成为软件架构师,就应该好好学这门课。
如今我把⾃⼰整理的这门课的资料与⼤家分享。
⼆、名词解释(每题2分,共20分)1、B/S(期中)答:浏览器/server风格,是三层应⽤结构的⼀种实现⽅式。
详细结构:浏览器/Webserver/数据库server。
2、C/S(期中)答:客户/server风格,是基于资源不正确等,且为共享⽽提出来的,定义了⼯作站怎样与server相连,以实现数据和应⽤分布到多个处理机上。
C/S体系结构有三个主要组成部分:数据库server、客户应⽤程序和⽹络。
3、HMB答:层次消息总线的软件体系结构风格(Hierarchical Message Bus—based Style)。
HMB风格基于层次消息总线。
⽀持构件的分布和并发,构件之间通过消息进⾏通信。
4、DSSA答:特定领域的软件体系结构(Domain Specific Software Architecture)就是在⼀个特定的领域中为⼀组应⽤提供组织结构參考的标准软件体系结构。
5、ADL(期中)答:软件体系结构描写叙述语⾔(Architecture Description Language)是⼀种形式化语⾔。
它在底层语义模型的⽀持下,为软件的概念体系结构建模提供了详细语法和框架。
6、XML答:可扩展标记语⾔(Extensible Markup Language),XML是W3C制定的作为Internet上数据交换和表⽰的标准语⾔,是⼀种同意⽤户定义⾃⼰的标记的元语⾔(Meta)。
7、ATAM答:体系结构权衡分析⽅法(Architecture Tradeoff Analysis Method),它是针对系统所使⽤或改动活动的⽀持程度,来推断该体系结构针对这⼀场景所代表的质量需求的满⾜程度的体系结构评估⽅法。
第一章:1、软件体系结构的定义国内普遍看法:体系结构=构件+连接件+约束2、软件体系结构涉及哪几种结构:1、模块结构(Module)系统如何被构造为一组代码或数据单元的决策2、构件和连接件结构(Component-And-Connector,C&C)系统如何被设计为一组具有运行时行为(构件)和交互(连接件)的元素3、分配结构(Allocation)展示如何将来自于模块结构或C&C结构的单元映射到非软件结构(硬件、开发组和文件系统)3、视图视点模型视点(View point)ISO/IEC 42010:2007 (IEEE-Std-1471-2000)中规定:视点是一个有关单个视图的规格说明。
视图是基于某一视点对整个系统的一种表达。
一个视图可由一个或多个架构模型组成架构模型架构意义上的图及其文字描述(如软件架构结构图)视图模型一个视图是关于整个系统某一方面的表达,一个视图模型则是指一组用来构建4、软件体系结构核心原模型1、构件是具有某种功能的可复用的软件结构单元,表示了系统中主要的计算元素和数据存储。
2.连接件(Connector):表示构件之间的交互并实现构件之间的连接特性:1)方向性2)角色3)激发性4)响应特征第二章1、软件功能需求、质量属性需求、约束分别对软件架构产生的影响功能性需求:系统必须实现的功能,以及系统在运行时接收外部激励时所做出的行为或响应。
质量属性需求:这些需求对功能或整个产品的质量描述。
约束:一种零度自由的设计决策,如使用特定的编程语言。
质量原意是指好的程度,与目标吻合的程度,在软件工程领域,目标自然就是需求。
对任何系统而言,能按照功能需求正确执行应是对其最基本的要求。
正确性是指软件按照需求正确执行任务的能力,这无疑是第一重要的软件质量属性。
质量属性的优劣程度反映了设计是否成功以及软件系统的整体质量。
系统或软件架构的相关视图的集合,这样一组从不同视角表达系统的视图组合在一起构成对系统比较完整的表达2、质量属性3、系统非功能性需求?包括哪些质量属性非功能性需求:用户对软件质量属性、运行环境、资源约束、外部接口等方面的要求或期望,包括:(1) 性能需求:用户在软件响应速度、结果精度、运行时资源消耗量等方面的要求。
软件架构详解(附图)软件架构(software architecture)软件架构(software architecture)是一系列相关的抽象模式,用于指导大型软件系统各个方面的设计。
软件架构是一个系统的草图。
软件架构描述的对象是直接构成系统的抽象组件。
各个组件之间的连接则明确和相对细致地描述组件之间的通讯。
在实现阶段,这些抽象组件被细化为实际的组件,比如具体某个类或者对象。
在面向对象领域中,组件之间的连接通常用接口_(计算机科学)来实现。
软件体系结构是构建计算机软件实践的基础。
与建筑师设定建筑项目的设计原则和目标,作为绘图员画图的基础一样,一个软件架构师或者系统架构师陈述软件构架以作为满足不同客户需求的实际系统设计方案的基础。
从和目的、主题、材料和结构的联系上来说,软件架构可以和建筑物的架构相比拟。
一个软件架构师需要有广泛的软件理论知识和相应的经验来实施和管理软件产品的高级设计。
软件架构师定义和设计软件的模块化,模块之间的交互,用户界面风格,对外接口方法,创新的设计特性,以及高层事物的对象操作、逻辑和流程。
架构是在组件,彼此间和与环境间的关系,引导设计发展原则中体现的系统的基本结构。
软件体系结构是构建计算机软件实践的基础。
与建筑师设定建筑项目的设计原则和目标,作为绘图员画图的基础一样,一个软件架构师或者系统架构师陈述软件构架以作为满足不同客户需求的实际系统设计方案的基础。
软件构架是一个容易理解的概念,多数工程师(尤其是经验不多的工程师)会从直觉上来认识它,但要给出精确的定义很困难。
特别是,很难明确地区分设计和构架:构架属于设计的一方面,它集中于某些具体的特征。
软件架构是指在一定的设计原则基础上,从不同角度对组成系统的各部分进行搭配和安排,形成系统的多个结构而组成架构,它包括该系统的各个组件,组件的外部可见属性及组件之间的相互关系。
组件的外部可见属性是指其他组件对该组件所做的假设。
在“软件构架简介”中,David GArlan和 Mary Shaw认为软件构架是有关如下问题的设计层次:“在计算的算法和数据结构之外,设计并确定系统整体结构成为了新的问题。
●什么是“软件体系结构”:架构是以组件、组件之间的关系、组件与环境之间的关系为内容的某一系统的基本组织结构,以及指导上述内容设计与演化的原理。
●SA概念两大流派:决策派是在一些重要方面所作出的决策集合组合派将系统描述为组件及组件之间的交互●软件体系结构核心模型:●构件的定义:构件是指语义完整、语法正确和有可重用价值的单位软件,是软件重用过程中可以明确辨识的系统;结构上,它是语义描述、通讯接口和实现代码的复合体。
●RUP 4+1视图:逻辑视图(Logical View):逻辑试图主要是用来描述系统的功能需求,即系统提供给最终用户的服务. 在逻辑视图中,系统分解成一系列的功能抽象、功能分解与功能分析,这些主要来自问题领域(Problem Definition)。
在面向对象技术中,通过抽象、封装、继承,可以用对象模型来代表逻辑视图,可以用类图(Class Diagram)来描述逻辑视图。
过程视图(Process View):进程试图侧重系统的运行特性,关注非功能性的需求(性能,可用性)。
服务于系统集成人员,方便后续性能测试。
强调并发性、分布性、集成性、鲁棒性(容错)、可扩充性、吞吐量等。
定义逻辑视图中的各个类的具体操作是在哪一个线程(Thread)中被执行。
物理视图(Physical View):物理试图主要描述硬件配置。
服务于系统工程人员,解决系统的拓扑结构、系统安装、通信等问题。
主要考虑如何把软件映射到硬件上,也要考虑系统性能、规模、可靠性等。
可以与进程视图一起映射。
开发视图(Development View):开发视图主要用来描述软件模块的组织与管理(通过程序库或子系统)。
服务于软件编程人员,方便后续的设计与实现。
它通过系统输入输出关系的模型图和子系统图来描述。
要考虑软件的内部需求:开发的难易程度、重用的可能性,通用性,局限性等等。
开发视图的风格通常是层次结构,层次越低,通用性越好(底层库:Java SDK,图像处理软件包)。