软件重用是按照预先构造好的,以重用复用为目的的软件构件进行组装软件系统的过程。
一个重用驱动的软件开发过程描述了如何组装可重用构件建立软件系统,以及如何建立和管理可重用构件。

应用者重用
生产者重用
3C模型
3C代表的是概念Concept,内容Content,语境Context
构件概念是对构件做什么描述,构件内容是构件如何被实现,构件语境是可重用构件应用的领域,3C主要用于形式化的描述方法
REBOOT模型
在描述函数型或者过程型软件构件,采用三元组Function、Object、Medium描述
在面向对象的软件构件来说,采用四元组Abstraction、Operation、OperatesOn、Dependencies刻画分类的模型,只允许按照给定的刻面架构描述已有的软件构件,适合非形式化方法
青鸟构件模型
外部接口和内部结构组成对应3C的概念和语境
外部接口,构件为外部世界提供的一组服务
内部结构,内部成员与内部成员之间的关系
构件分类法
将应用领域的概念按照抽象到具体,分解为树型或者有向无环图结构

组成,多面分类机制,同义词库,概念距离图

全文检索技术,所有构件附加以详细的功能说明或者行为说明文档,是一种非线性的网状信息组织方法,以节点为单位,链作为联想式关联
构件Component
构件是一组类的组合进行封装,代表完成一个或者一组功能,定义多个接口,对外提供服务,构件之间是相互独立的,隐藏具体实现,对外暴露接口提供服务
连接件Connector
用来建立构件间交互的模块,连接件和所连接的构件之间的一组交互点构成角色
约束Constrains
描述体系结构的配置和具体要求,确定体系结构构件与连接件之间的连接关系,是基于规则和参数配置的

B/S体系结构主要是利用不断成熟的WWW浏览器技术,是一种浏览器,服务器模型,结合浏览器的多种脚本语言,用通用浏览器就实现了原来需要复杂的专用软件才能实现的强大功能,并节约了开发成本。从某种程度上来说,B/S结构是一种全新的软件体系结构。
C/S是客户端与服务器模型产生的一种体系结构
背景:基于资源不对等,且为实现共享而提出来的
主要组成部分:数据库服务器、客户应用程序和网络。

MVC风格,模型-视图-控制器,三层架构,各个层次负责不同的部分
视图层View显示用户模型信息,视图从模型中获取数据,一个模型可以对应多个视图
控制层Controller给用户提供接口,每一个视图与控制器相关
模型层Model封装内核数据和状态,对模型的修改扩散到各个视图中

优点,简化系统设计,保证系统的可扩展性,隔离性好,可维护性好,易改变,良好的动态机制
层次系统风格
每一层为它的上一层提供服务,并作为下一层的客户,可以将一个复杂的问题分解成为一个增量序列的实现

正交软件体系结构组成,组织层和线索层的构件构成,是一种垂直线索构件族为基础的层次化结构。
如果线索之间是相互独立的,即所有线索中的构件之间没有相互调用那么这个结构就是完全正交的。
特点
n个线索或者子系统构成m个不同的抽象级别的层[最高层]和公共数据层[最底层]比如线索ABE

优点,结构清晰,方便理解,容易修改,可维护性强,可移植性强,重用粒度大
层次消息总线的风格
JB/HMB风格的消息总线是系统的连接件,构件向消息总线登记感兴趣的消息,构成构件-消息响应表
分为消息登记,消息分派和传递,消息过滤[转换和阻塞]

图形表达工具
模块内连接语言MIL
基于软构件的系统描述语言
软件体系结构描述语言ADL
软件体系结构描述框架标准IEEE
构件,连接件,系统,端口,角色,表述,表述映射

设计置标语言
数据交换
Web服务
组成,逻辑视图,开发视图,过程视图,物理视图+场景视图

逻辑视图,对象模型
过程视图,系统并发和同步的设计
物理视图,软硬件分布关联关系
开发视图,软件在开发环境下的静态组织结构
过程抽象
+数据抽象
封装原理
信息隐藏原理
模块化原理
注意点分离原理
耦合和内聚原理
接口和实现分离原理
分而治之原理
层次化原理
组成,模式名称+问题+解决方案+后果
制品驱动的方法
用例驱动的方法
领域驱动的方法
模式驱动的方法
可用性、可修改性、性能、安全性、可靠性、可测试性、易用性、可重用性、可集成性

开发环境决定适当的软件开发过程
基于调查问卷和检查表方式
基于场景的方式
基于度量的方式
SAAM方法的场景优先级投票和ATAM方法的质量属性用树
SAAM是精心设计形成文档的分析方法,主要是以评估报告的形式输出
场景分为直接场景 和 间接场景
直接场景是当前的体系结构不经过修改就支持的场景
间接场景是不能直接被当前的体系结构支持的场景
因为资源和时间有限,采取优先级的方法选取最关键的场景。CMU SEI建议在涉众范围内进行投票的方式决定哪些是关键的。
每个人拿到固定的选票,大概是场景的0.30,投票策略是每个人的投票总数不得超过手中的选票总数,可以为任何场景投任何数目的票。
ATAM方法是SAAM的增强版
ATAM的基础来自三个领域,体系结构风格,质量属性分析组,SAAM
生成质量属性效用树,QAUT,以树的形式表现质量属性的细化

Web Service的四种核心技术XML可扩展标记语言EXtensible Markup Language,被设计用来传输和存储数据。
SOAP简单对象访问协议Simple Object Access Protocol,提供标准的RPC远程访问控制的方法调用Web Service
WSDL Web 服务描述语言Web Service Description Language,基于XML的,用于描述Web Service 及其操作,参数,返回值的语言
UDDI 统一描述,发现和集成协议Universal Description Discovery and Integration,用于网上自动查找Web Service
UDDI 包含白页[地址和联系人],黄页[行业分类],绿页[服务描述]
单体架构,所有的业务模块编写在一个项目中,最终打成一个jar包,进行部署
优点,部署简单,技术单一,用人成本低
微服务架构,将单一的应用程序划分为一组小的服务,服务之间互相协调,互相配合,为用户提供最终价值
特点,小的服务,独立进程,轻量级的通信机制,松耦合的交付
微服务架构的本质,以缩短交付周期为核心,基于DevOps的理念和实践,持续构建演进式构架
domain-specific software architecture,特定域软件体系结构,就是在一个特定应用领域中为一组应用提供组织结构参考的标准软件体系结构
DSSA,DSSA是描述领域模型中表示需求的解决方案,不是单个系统的表示,而是能够适应领域中多个系统的需求的一个高层次的设计。DSSA来开发和组织可重用信息。