软件体系结构概述
软件体系结构概述
1.软件的本质特征、软件⼯程与软件体系结构之间的关系
如何设计、描述、评价软件的结构是软件开发过程中的重要内容,也是软件体系结构研究的核⼼内容。
软件 = 程序 + 数据 + ⽂档
程序:计算机可以接受的⼀系列指令,运⾏时可以提 供所要求的功能和性能。
数据:使得程序能够适当地操作信息的数据结构。
⽂档:描述程序的研制过程、⽅法和使⽤的图⽂资料
2.软件危机的表现及原因
软件的本质特性:复杂性、⼀致性、可变性、不可见性等特性,其结果导致在60年代软件开发过程变得难以控制,开发团队如同在焦油坑中挣扎的巨兽,即所谓的软件危机。
为了解决软件危机,两⼤主流思想应运⽽⽣:
形式化的⽅法
软件⼯程的思想:这个思想的引⼊曾经极⼤地缓解了软件危机。(1968年NATO会议)
**软件危机(software crisis) *软件开发和维护过程中遇到的⼀系列严重问题。
软件危机的表现:{⼤括号⾥⾯是原因}
软件成本⽇益增加
开发进度难以控制{没有系统的设计,软件需求需求管理混乱}
软件质量差{开发⼈员的不专业,技术不成熟}
软件维护困难{未遵循软件开发规范,设计随意⾼耦合性,牵⼀发动全⾝}
软件⼯程:较低的开发成本;按时完成开发任务并及时交付
实现客户要求的功能
具有良好的性能、可靠性、可扩展性、可移植性;
软件维护费⽤低
3.软件体系结构的核⼼设计内容、定义、基本组成要素、软件体系结构的发展史
1. 软件系统设计的5个核⼼内容:
体系结构设计
模块设计(对象或类设计)
⽤户界⾯设计
数据库设计
数据结构和算法设计(详细设计)
2. 定义
软件体系结构是具有⼀定形式的结构化元素,即构件的集合,包括处理构件、数据构件和连接构件。处理构件负责对数据进⾏加⼯,数据构件是被加⼯的信息,连接构件把体系结构的不同部分组合连接起来。
3. 基本组成要素
构件、连接件、约束
4. 软件体系结构发展史
问题定义——需求开发——软件设计——软件构造——软件测试
⾯向服务:在应⽤表现层次上将软件构件化,即应⽤业务过程由服务组成,⽽服务由构件组装⽽成。
⾯向构件:寻求⽐类的梨度更⼤的且易于复⽤的构件,期望实现软件的再⼯程。
⾯向对象:以类为基本程序单元,对象是类的实例化,对象之间以消息传递为基本⼿段。
⾯向过程:以算法作为基本构造单元,强调⾃顶向下的功能分解,将功能和数据进⾏⼀定程度的分离。
4.软件体系结构和软件需求的关系:
体系结构实意软件需求的实现为设计蓝图,软件需求,尤其是⾮功能需求,对软件体系结构具有关键性的塑性作⽤。
5.软件体系结构和详细设计的关系:
详细设计是针对 未展开模块的局部设计 只能实现,不能更改体系结构中规定的模块的对外接⼝和外部⾏为;
其必须为详细设计提供可操作的指导和充分的约束
6.软件体系结构的设计⽬标:
可重⽤性:复⽤已经实现了的体系结构,或提供可重⽤资产
可扩展性:增加新的功能
可改变性:降低耦合性,适应于需求变更
简单性:复杂问题简单化,让⼯程易于开发⼈员理解和实现
有效性:体现早期设计决策,展现系统满⾜需求的能⼒
7.构件复⽤
**1.**传统⼯业的标准件的复⽤;{螺丝钉,钢材等}是很好的复⽤提⾼了效率
2.软件的复⽤ ——可重⽤构件**
指两次或多次不同软件开发过程中重复使⽤相同或相近软件元素的过程。
**软件元素:**程序代码、测试⽤例、设计⽂档、设计过程、需求分析⽂档和领域分析知识。
软件重⽤不仅是对程序的重⽤,它包括对软件⽣产过程中任何活动所产⽣的成品的重⽤。如:项⽬ 计划、可⾏性报告、需求定义、分析模型、详细说明、源程序和测试⽤例等等。(聪明的抄抄改改)
能复⽤的构件也叫可重⽤构建
构件具有多种形态:类、函数、功能模块、⽂档、框架、设计模式、测试⽤例等
构件具有多种层次:分析件、设计件、代码件、运⾏件等
构件需要多⽅⾯描述:名称、属性、对外接⼝、所需接⼝等
构件的特点:接⼝与实现分离,通过接⼝提供服务或进⾏彼此交互,接⼝不依赖于具体实现
3.软件重⽤的级别:
代码的重⽤<<<<<<<<<<<;设计结果的重⽤<<<<<<<<<<<<<<<;分析结果的重⽤(低到⾼)
代码的重⽤:⽬标代码和源代码的复⽤.连接和绑定,OLE(对象链接及嵌⼊)
设计结果的重⽤:受实际环境影响⼩,可重⽤机会多,所需修改少
分析结果的重⽤:可被重⽤的分析结果是针对问题域的某些事物或某些问题的抽象程度更⾼的解法。受设计技术及实现条件的影响很少4.软件重⽤的优点
(1)提⾼软件⽣产率,降低软件⽣产代价;
(2)提⾼软件质量;
(3)互操作性好;
(4)推动标准化;
(5)⽀持原型开发。
5.软件系统典型的复⽤设计思路
⾸先确定系统的体系结构,定义系统中的构件及构件间的交互。
然后细化构件的接⼝和内部结构,形成条件规约。
最后根据构件规约查可复⽤构件资产或新开发构件组装形成系统。
6.构件的开发与构件库
开发构件:当⼀个构件通⽤性很⾼的时候,也不能满⾜不同需求和不同的运⾏环境,那么就得改,所以在开发构件的时候就应该为构件的修改和调整埋下伏笔。这样构件的灵活,重⽤,扩展,改变性机会显著提⾼,这也是软件体系结构的设计⽬标啊
构件库(Component Library):对可重⽤构件的存储和管理
构件库系统:构建的存储、管理、检索、以及库的浏览和维护{分类⽅法和检索⽅法}
7.构件的分类⽅法-构件库的管理
1. 关键字分类法
将应⽤领域的概念按照从抽象到具体的顺序逐次分解为树状或有向⽆回路图结构,每个概念⽤⼀个描述性的关键字表⽰
2. 刻⾯分类法
⼀个刻⾯描述构件某⼀个⽅⾯的特征。刻⾯分类则是从不同的侧⾯对构件进⾏分类,每⼀种分类⽅式称为⼀个刻⾯。不同的刻⾯根据其重要性可以设置不同的优先级。
3. 超⽂本组织法
所有构件必须辅以详尽的功能或⾏为说明⽂档,说明中出现的重要概念以⽹状链接⽅式相互连接。
8.构件的检索⽅法-构件库的管理
构件库中检索⼀个构件和在数据库中检索⼀个记录是不同的。
构件库检索的不确定性带来两种相互⽭盾的结果:
检索的结果可能是⼀个较⼤的构件集合,要从中到所需的构件仍然很费⼒;
检索得到的集合没有把真正需要的构件包括在内。
解决⽅法:
(⼀)⼀般构件库系统能对提出的检索条件作⼴义解释。
 建⽴同义词对照表,例如“商品销售”、“售货”、“卖货”看作⼀组同义词;
建⽴近意词对照表,例如把“商业”、“商场”、“连锁店”看作⼀组近意词。
系统⾸先匹配同义词,再匹配近意词,都可以被包括到⼴义结果集合中。
(⼆)使检索得到的构件集合尽可能不包括对⽤户⽆⽤的构件。
  增加更多的刻⾯与构件属性:较多的刻⾯和属性值,将得到更⼩的⼦集合⽂集,减轻最终发现和确认所需构件的难度;
建⽴构件关键词:根据构件内容提炼关键词,如同学术论⽂的关键词,反映有关构件内容的⼀些主要信息。
例如,功能构件的关键词有“压⼊”、“弹出”、“后进先出”等等。如果通过刻⾯和构件属性得到的构件⼦集较⼤,可⽤关键词作进⼀步的检索,以缩⼩搜索范围。
9.基于构件的开发
⽤这种组装技术时,开发⼈员⾸先应对⽬标软件系统进⾏功能分解,将系统分解为强内聚、松耦合的功能模块。然后根据各模块的功能需求提取构件,对它进⾏适应性修改后再挂接在上述功能分解框架中。
库中的构件以⼦程序/过程/函数的形式出现,并且接⼝说明必须清晰。
采⽤⼦程序调⽤和参数传递的⽅式将构件组装起来。
method同义词
先根据当前软件问题的核⼼数据结构设计出⼀个框架。
再根据框架中各结点的需求提取构件并进⾏适应性修改,
最后将构件逐个分配⾄框架中的适当位置。
构件的组装⽅式仍然是传统的⼦程序调⽤与参数传递。这种组装技术也要求库中构件以⼦程序形式出现,但它所依赖的软件设计⽅法不再是功能分解,⽽是⾯向数据的设计⽅法,例如Jackson系统开发⽅法。
10.构件模型与实现
构件模型:
是为开发者定义软件构件⽽建⽴的体系结构和API集,使开发者可通过软件构件的动态组合来建⽴应⽤系统。
以形式化⽅式描述了构件的结构、语义和⾮功能特性,是分析和评价构件⾏为和性能的依据。
构件模型 = 构件+容器
构件:具有可重⽤特性的基本软件部件
容器:⽤于存放、管理构件,⽀持构件的执⾏和构件间的 交互
开发构件模型的⽬的:
重⽤,⾼层开发,通过⼯具进⾏⾃动化开发,简化开发过程。
11.⼯业界成熟的构件实现模型
CORBA(公共对象请求代理体系结构)  OMG
为解决分布式环境下不同硬件设备和软件系统互联,增强⽹络间软件的互操作性⽽提出的。
是最完整、最清晰,跨平台最多的构件模型(⼤⽽全,互操作性和开放性⾮常好)
缺点: 庞⼤⽽复杂,并且技术和标准的更新相对较慢
EJB(Enterprise javaBean):⼀种基于Java的构件标准
⽤于开发和部署多层结构的、分布式的、⾯向对象的Java应⽤系统的跨平台的构件体系结构
RMI(Remote Method Invocation)
远程⽅法调⽤——>JavaBean——>J2EE(EJB)
能在开发⼯具中被可视化操作的、可重⽤的软件构件
COM/COM+/DCOM模型
- 微软开发构件对象模型,提供了运⾏于Windows操作系统之上的单个应⽤中使⽤不同⼚商⽣产的对象的规约。
- 包括规范和实现两部分。规范部分定义了构件和构件之间通信的机制,不依赖于任何语⾔和操作系统;COM库是实现部分。
- COM平台效率⽐较⾼,有⼀系列相应的开发⼯具⽀持,应⽤开发相对简单
--COM的跨平台性较差
Web Service模型
- 以HTTP协议和XML语⾔为基础,类似于CORBA或RPC的⼀种新的分布式应⽤模型。- Web Service具
有通⽤、可交互的优势。
微服务
构件、构件模型、基于构件软件开发过程的理解

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。