context.executeFecthRequest(request, error: nil)
在Swift3中改为:
context.fecth(request)
且要处理异常,即:
try! context.fetch(request)
你可不可以
成为我的main函数
做我此生必须有
且只能有一个的入口
——————————
我愿为自己加上private
在你的class中只有
你能调用
——————————————代 码 如 诗 。
context.executeFecthRequest(request, error: nil)
在Swift3中改为:
context.fecth(request)
且要处理异常,即:
try! context.fetch(request)
当执行var f = NSFetchRequest(entityName: “Users”)时候
报错:Generic parameter ‘ResultType’ could not be inferred
解决方法:
改为——
var f = NSFetchRequest<NSFetchRequestResult>(entityName: “Users”)
报错:Call can throw, but it is not marked with ‘try’ and the error is not handled。
因为没有使用try catch语句处理异常。解决方案有三种:
第一种:使用do / catch语句处理异常:
1 2 3 4 5 |
do { try context.save() } catch { } |
第二种:如果你想调用一个被声明为可能抛出的函数,但是你知道它不会抛出异常,因为你会给它正确的输入,这个时候可以使用try! 也能解决问题 :
1 |
try! context.save() |
第三种:在函数声明中使用 throws 将异常抛出,并在方法前加上try:
1 2 3 |
func foo(value: Bool) throws { try context.save() } |
在Swift 3里面,需要通过viewContext访问managedObjectContext,且sharedApplication方法改为shared方法:
1 |
var context = (UIApplication.shared.delegate as! AppDelegate).persistentContainer.viewContext |
以前是这样写的:
1 |
var context = (UIApplication.sharedApplication.delegate as AppDelegate).managedObjectContext |
Web服务是使用标准技术在Internet上运行的商务流程,它可以使用标准的Internet协议,将功能纲领性地体现在Internet和Intranet上
一个完整的Web服务包括三种逻辑构件:服务提供者、服务代理和服务请求
Web服务开发生命周期可分为构建、部署、运行和管理四个阶段
发现服务 | UDDI、DISCO |
---|---|
描述服务 | WSDL、XML、Schema |
消息格式层 | SOAP |
编码格式层 | XML |
传输协议层 | HTTP、TCP/IP、SMTP等 |
将设计面向对象软件的经验记录成“设计模式”。简单的理解,就是一些设计面向对象的软件开发的经验总结。
目前最常用的描述设计模式的格式:
判断模式取得成功的一个重要准则是它们在多大程度上达到了软件工程的目标
创建性模式
设计模式 | 简要说明 | 可改变的方面 |
---|---|---|
Abstract Factory | 提供创建相关的或相互依赖的一组对象的接口,使我们不需要指定类 | 产品对象族 |
Builder | 将一个复杂对象的结构和它的描述隔离开来,使我们使用相同的结构可以得到不同的描述 | 如何建立一种组合对象 |
Factory Method* | 定义一个创建对象的结构,但由子类决定需要实例化哪一个类 | 实例化子类的对象 |
Prototype | 使用一个原型来限制要创建的类的类型,通过拷贝这个原型得到新的类 | 实例化类的对象 |
Singleton | 保证一个类只有一个实例,并提供一个全局性的访问点 | 类的单个实例 |
结构性模式
设计模式 | 简要说明 | 可改变的方面 |
---|---|---|
Adapter* | 将一个类的接口转换成用户希望得到的另一种接口。它使原来本不相容的接口得以协同工作 | 与对象的结构 |
Bridge | 将类的抽象概念和它的实现分离开来,使它们可以相互独立地变化 | 对象的实现 |
Composite | 将对象组成树结构来表示局部和整体的层次关系。客户可以统一处理单个对象和对象组合 | 对象的结构和组合 |
Decorator | 给对象动态地加入新的职责。它提供了用子类扩展功能的一个灵活的替代 | 无子类对象的责任 |
Facade | 给一个子系统的所有结构提供一个统一的接口。它定义了更高层的接口,使该子系统更便于使用 | 与子系统的接口 |
Flyweight | 提供支持大量细粒度对象共享的有效方法 | 对象的存储代价 |
Proxy | 给另一个对象提供一个代理或定位符号,以控制对它的访问 | 如何访问对象,对象位置 |
行为性模式
设计模式 | 简要说明 | 可改变的方面 |
---|---|---|
Chain of Responsibility | 通过给多个对象处理请求的机会,减少请求的发送者与接收者之间的耦合。将接收对象链接起来,在链中传递请求,直到有一个对象处理这个请求 | 可满足请求的对象 |
Command | 将一个请求封装为一个对象,从而将不同的请求对数化并进行排队或登记,以支持撤销操作 | 何时及如何满足一个请求 |
Interpreter* | 给定一种语言,给出它的语法的一种描述方法和一个解释器,该解释器用这种描述方法解释语言中的句子 | 语言的语法和解释 |
Iterator | 提供一种顺序性访问一个聚集对象中元素的方法,而不需要暴露它的底层描述 | 如何访问、遍历聚集的元素 |
Mediator | 定义一个对象来封装一系列对象的交互。它保持对象间避免显式地互相联系,而消除它们间的耦合,还可以独立地改变对象间的交互 | 对象之间如何交互以及哪些对象交互 |
Memento | 在不破坏封装的条件下,获得一个内部状态并将它外部化,从而可以在以后使对象恢复到这个状态 | 何时及哪些私有信息存储在对象之外 |
Observer | 定义一个对象间一对多的信赖关系,当一个对象改变状态时,所有与它由信赖关系的对象都得到通知并自动更新 | 信赖于另一个对象的对象数量,信赖对象如何保持最新数据 |
State | 允许一个对象在内部状态改变时的行为,对象看起来似乎能改变自己的类 | 对象的状态 |
Strategy | 定义一族算法,对每一个都进行封装,使他们互相可交换。它使算法可以独立于它的用户而变化 | 算法 |
Template Method* | 定义一个操作的算法骨架,使某些步骤决定于子类。它使子类重定义一个算法的某些步骤,但不改变整个算法的结构 | 算法的步骤 |
Visitor | 描述在一个对象结构中对某个元素需要执行的一个操作。它使我们在不改变被操作的元素类的条件下定义新操作 | 无需改变其类可应用于对象的操作 |
其中带*为关于类的,其他是关于对象的
基于体系结构的软件开发过程可以分为独立的两个阶段,这两个阶段分别是实验原型阶段和演化开发阶段
实验原型阶段的第一个开发周期没有具体的、明确的目标。
实验原型阶段的第二个开发周期的任务是设计和建立一个正交软件体系结构,该结构具有的特征有:
整个第二个开发周期又可细分为六个小阶段:
体系结构需求获取过程如图:
体系结构设计过程如图
文档是系统演化的每一个阶段,系统设计与开发人员的通信媒介,是为验证体系结构设计和提炼或修改这些设计所执行预先分析的基础
体系结构文档化过程的主要输出结果是体系结构需求规格说明和测试体系结构需求的质量设计说明书这两个文档
复审的目的是标识潜在的风险,及早发现体系结构设计中的缺陷和错误,包括体系结构能否满足需求、质量需求是否在设计中得到体现、层次是否清晰、构件的划分是否合理、文档表达是否明确、构件的设计是否满足功能与性能的要求等
“实现”就是要用实体来显示出一个软件体系结构,即要符合体系结构所描述的结构性设计决策,分割成规定的构件,按规定方式互相交互。实现过程如图:
体系结构演化过程如图:
在基于构件的可靠性模型中,通过状态图来描述系统的行为。一个状态表示一个构件的执行,从一个状态到另一个状态的迁移概率通过系统的操作剖面而获得。软件系统的可靠性依赖状态的执行顺序和每一个状态的可靠性
四种常用的结构风格模型:顺序结构风格、并行/管道-过滤器结构风格、容错结构风格、调用-返回结构风格
在顺序结构风格中,系统的运行按构件的顺序依次执行,顺序结构风格广泛应用于银行系统的日常数据更新。该风格的模型图如图:
在顺序执行环境中,某一时刻只有一个构件执行,然而在当前执行环境中构件通常是同时运行的,把这种行为成为并行/管道-过滤器结构风格,主要用来提高系统性能
在并行/管道-过滤器体系结构风格中,多个构件可以同时执行,结构如图
容错体系结构风格是由一个原始构件和一系列的备份构件组成,包括原始构件和备份构件都被放置在一个并行结构下,使得当一个构件出现错误时,其他构件能够继续提供服务
在调用返回结构风格中,一个构件在完成一次迁移之前,在执行过程可能需要调用其他构件提供的服务,因此必须在该调用完成之后并返回调用构件后,才执行当前构件剩下的下一个状态。在调用-返回结构风格中,被调用构件可能被多次调用,而调用构件只执行一次。
风险评估过程通常是用于验证需要详细检测的复杂模型,来估计潜在的模型问题和测试效果,在不同的开发阶段都可以执行分析评估
体系结构分析方法的主要步骤如下:
软件体系结构测试与程序测试有所不同,它是检查软件设计的适用性,这种测试不考虑软件的实现代码,所以基于实现和说明的程序测试方法对软件体系结构并不适用
与传统的软件测试一样,基于体系结构的软件测试也需要研究测试内容、测试准则、测试用例、测试充分性及测试方法等问题
测试应覆盖所有的构件及各个构件的接口、各个连接件的接口、构件之间的直接连接、构件之间的间接连接
几种测试路径:
软件体系结构测试过程可分为单元测试、集成测试和系统测试
敏感点和权衡点是关键的体系结构决策
风险承担者在向上管理领域中通常翻译为“项目干系人”或“涉众”
从风险承担者的角度对与系统的交互的简短描述
这一评估方式比较灵活,可评估多种质量属性,也可在软件体系结构设计的多个阶段进行
这一评估方式考虑到了包括系统的开发人员、维护人员、最终用户、管理人员、测试人员等在内的所有与系统相关的人员对质量的要求
这一评估方式提供更为客观和量化的质量评估,需要在软件体系结构的设计基本完成以后才能进行
评估方式 | 调查问卷 | 检查表 | 场景 | 度量 |
---|---|---|---|---|
通用性 | 通用 | 特定领域 | 特定系统 | 通用或特定领域 |
评估者对体系结构的了解程度 | 粗略了解 | 无限制 | 中等了解 | 精确了解 |
实施阶段 | 早 | 中 | 中 | 中 |
客观性 | 主观 | 主观 | 较主观 | 较客观 |
使用ATAM方法对软件体系结构进行评估的目标是理解体系结构关于软件系统的质量属性需求决策的结果
整个ATAM评估过程包括九个步骤,按其编号顺序分别是描述ATAM方法、描述商业动机、描述体系结构、确定体系结构方法、生成质量属性效用树、分析体系结构方法、讨论和分级场景、分析体系结构方法、描述评估结果
产品线是一个产品集合,这些产品共享一个公共的、可管理的特征集,这个特征集能满足选定的市场货任务领域的特定需求。这些系统遵循一个预描述的方式,在公共的核心资源基础上开发
最初的和最简单的软件产品线开发过程式双声明周期模型,来自STARS,分成两个重叠的声明周期:领域工程和应用工程。两个周期内部都分成分析、设计和实现三个阶段,如图
邻域工程阶段的主要任务如下:
应用工程经过以下阶段,生成新产品:
STARS的双生命周期模型定义了典型的产品线开发过程的基本活动、各活动内容和结果以及产品线的演化方式。这种产品线方法综合了软件体系结构和软件重用的概念,在模型中定义了一个软件工程化的开发过程,目的是提高软件生产率、可靠性和质量,降低开发成本,缩短开发时间
SEI将产品的基本活动分为三部分,分别是核心资源开发、产品开发和管理。主要特点如下:
Fred针对大型软件企业的软件产品线开发对双生命周期模型进行了改进,提出了三生命周期软件工程模型,如图
软件开发的组织结构分为两个基本组成部分:负责核心资源的小组、负责产品的小组
软件产品线的建立需要希望使用软件产品线方法的软件组织有意识地、明显地努力才有可能成功
软件产品线的建立通常有四种方式,其划分依据有两个:
演化方式 | 革命方式 | |
---|---|---|
基于现有产品集 | 基于现有产品体系结构开发产品线的体系结构,经演化现有构件的文件一次开发一个产品线构件 | 产品线核心资源的开发基于现有产品集的需求和可预测的、将来需求的超集 |
全新产品线 | 产品线核心资源随产品新成员的需求而演化 | 开发满足所有预期产品线成员的需求的产品线核心资源 |
在基于现有产品体系结构设计的产品线体系结构的基础上,将特定产品的构件逐步地、越来越多地转化为产品线的共用构件,从基于产品的方法“慢慢地”转化为基于产品线的软件开发。主要优点是通过对投资回报周期的分解,对现有系统演化的维持,使产品线方法的实施风险降到最小,但完成产品线核心资源的总周期和总投资都比使用革命方式要大
基本停止现有产品的开发,所有努力直接针对软件产品线的核心资源开发。这种方法的目标是开发一个不受现有产品集存在问题的限制的、全新的平台,总周期和总投资演化方法要少,但因重要需求的变化导致的初始投资报废的风险加大。另外,基于核心资源的第一个产品面世的时间将会推后
当一个软件组织进入一个全新的领域要开发该领域的一系列产品时,同样也有演化和革命两种方式。
体系结构设计师和工程师首先要得到产品线所有可能的需求,基于这个需求超集来设计和开发产品线核心资源
产品线的演化包括产品线核心资源的演化、产品的演化和产品的版本升级
应用框架的描述:
框架技术的基本特定:
一般框架有三种建立方式:自顶向下,自底向上和混合方式
框架的使用和扩展方式,可以将框架分为两大类:黑盒框架和白盒框架:
白盒重用需要对框架有很好的理解,生成紧耦合系统。黑盒重用不需要对框架的内部结构有太多的了解,产生松耦合系统。具体的框架实际上都是“灰色”的,是可继承和可组合方式的结合。
产品线分析是产品线的需求工程,是商业机遇的确认和产品线体系结构的设计之间的桥梁。产品线分析强调:
产品开发活动取决于产品线范围、核心资源库、产品计划和需求的输出
产品开发的输入如下
从本质上说,产品线是一组相关产品的集合。但是,怎么实现却有很大的不同,这取决于资源、产品计划和组织环境
软件体系结构设计的主要目的是满足对软件的质量需求。软件体系结构的应用方式有三种:用于独立软件体系、软件产品体系结构、用户公共构件市场的标准软件体系结构
产品线体系结构的设计目的就是尽量扩展产品线中所有产品共享的共性部分,同时提供一个尽量灵活的体系结构变化机制
产品线体系结构主要需考虑一下因产品线的特殊性而出现的变化需求:
产品线体系结构设计面临的主要困难和问题如下:
软件体系结构是产品线所有可重用的核心资源中最重要的部分,是软件产品线成功的关键技术性资源
产品线体系结构的设计有两种方式:使用标准体系结构和体系结构定制
产品线的演化可分为两个部分,一是企业如何组织其产品线结构的变化,另一个是实际的演化,该演化作为一个需求通过静态组织进行传播
产品线体系结构的演化史一个复杂的、难以管理的问题。增加人们对产品线体系结构演化的理解,改进在产品线体系结构及其构件中引入新的需求的方式是十分重要的。
需求大致分为6类:
以上需求分类的关系如图:
把新的需求引入到所有产品中,将对产品线体系结构产生影响。产品线体系结构演化的8种情况:
上述8类产品体系结构演化的关系如图:
产品线体系结构构件的修改细分为5类:
上述5类产品线体系结构演化的关系如图:
在很多情况下,演化类型并不是由需求变化直接引起的,而是需求变化的间接结果,一种类型的变化引起另一种类型的变化,后者与前者往往处于同一个级别,即在产品线体系结构中的变化会引起另一个产品线体系结构类型的变化
软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题
采用工程的方法进行软件生产可以克服软件危机,于是诞生了软件工程
软件工程是用工程、科学和数学的原则与方法研制、维护计算机软件的有关技术及管理方法
软件工程包括三个要素:方法、工具和过程
软件重用是指在两次或多次不同的软件开发过程中重复使用相同或相近软件元素的过程。
软件元素包括程序代码、测试用例、设计文档、设计过程、需求分析文档甚至领域知识。这些可重用的元素称做软构件,简称构件
由于构件大都经过严格的质量认证,并在实际运行环境中得到检验,因此,重用构件有助于改善软件质量
构件是指语义完整、语法正确和有可重用价值的单位软件,是软件重用过程中可以明确辨识的系统;结构上,它是语义描述、通信接口和实现代码的复合体。简单地说,构件是具有一定的功能,能够独立工作或能同其它构件装配起来协调工作的程序体。
构件模型是对构件本质特征的抽象描述
在建立基于构件的软件开发(component-based software development, CBSD)中,构件获取可以有多种不同的途径:
一个组织在进行以上决策时,必须考虑到不同方式获得构件的一次性成本和以后的维护成本,然后做出最优的选择
对大量的构件进行有效的管理,以方便构件的存储、检索和提取,是成功重用构件的必要保证。构件管理的内容包括构建描述、构建分类、构件库组织、人员及权限管理和用户意见反馈等
软件体系结构为软件系统提供了一个结构,行为和属性的高级抽象,由构成系统的元素的描述,这些元素的相互作用,知道元素集成的模式以及这些模式的约束组成
可以将软件体系结构的模型分为5种:结构模型、框架模型、动态模型、过程模型和功能模型。最常用的是结构模型和动态模型
“4+1”视图模型从5个不同的视角,包括逻辑视图、进程视图、物理视图、开发视图和场景视图来描述软件体系结构。每一个视图只关心一个侧面,5个视图结合在一起才能反映系统的软件体系结构的全部内容
逻辑视图主要支持系统的功能需求,即系统提供给最终用户的服务。在逻辑视图中,系统分解成一系列的功能抽象,这些抽象主要来自问题领域。逻辑视图中使用的符号集合如下
开发视图也称模块视图,主要侧重于软件模块的组织和管理。软件可通过程序库或子系统进行组织,这样,对于一个软件系统,就可以由不同的人进行开发。下图是用来表示开发视图的符号
进程视图侧重于系统的运行特性,主要关注一些非功能性的需求。进程视图强调并发性、分布性、系统集成性和容错能力,以及从逻辑视图中的主要抽象如何适合进程结构。如下是进程视图使用的标记符号
物理视图主要考虑如何把软件映射到硬件上,它通常要考虑系统性能、规模、可靠性等。下图是物理视图的标记元素集合
体系结构的核心模型由5种元素组成:构件、连接件、配置、端口和角色。其中构件、连接件和配置是最基本的元素
构件是具有某种功能的可重用的软件模块单元,表示系统中主要的计算元素和数据存储。构件有两种:复合构件和原子构件
连接件表示构件之间的交互,简单的连接件如:管道、过程调用、事件广播等,更为复杂的交互如:客户-服务器通信协议,数据库和应用之间的SQL链接等
配置表示构件和连接件的拓扑逻辑和约束
软件体系结构风格是描述某一特定应用领域中系统组织方式的管用模式。体系结构风格定义一个系统家族,即一个体系结构定义一个词汇表和一组约束
在管道/过滤器风格的软件体系结构中,每个构件都有一组输入和输出,构件读输入的数据流,经过内部处理,然后产生输出数据流。
管道/过滤器风格的软件体系结构具有许多很好的特点:
这样的系统也存在着若干不利因素:
这种风格建立在数据抽象和面向对象的基础上,数据的表示方法和他们的相应操作封装在一个抽象数据类型或对象中
面向对象的系统有许多的优点:
但是,面向对象的系统也存在着某些问题
基于事件的隐式调用风格的思想是构件不直接调用一个过程,而是触发或广播一个或多个事件。系统中的其他构件中的过程在一个或多个事件中注册,当一个事件被触发,系统自动调用在这个事件中注册的所有过程,这样,一个事件的触发就导致了另一个模块中的过程的调用
基于事件的隐式调用风格的主要特点是事件的触发者并不知道哪些构件会被这些事件影响
隐式调用系统的主要优点如下:
隐式调用系统的主要缺点如下:
层次系统组成成一个层次结构,每一层为上层服务,并作为下层客户。
层次系统的许多可取属性如下:
但是,层次系统也有不足之处,如下:
在仓库风格中,有两种不同的构件:中央数据结构说明当前状态,独立构件在中央数据存储上执行,仓库与外构件间的相互作用在系统中会有大的变化
黑板系统主要由一下三部分组成:
C2体系结构风格可以概括为:通过连接件绑定在一起按照一组规则运作的并行构件网络
C2风格中的系统组织规则如下:
C2风格具有以下特点:
C/S体系结构有三个主要组成部分:数据库服务器、客户应用程序和网络
服务器的主要任务是:
客户应用程序的主要任务是:
网络通信软件的主要作用是完成数据库服务器和客户应用程序之间的数据传输
C/S体系结构的优点主要在于系统的客户应用程序和服务器构件分别运行在不同的计算机上,系统中每台服务器都可以适合各构件的要求,这对于硬件和软件的变化显示出极大的适应性和灵活性,而且易于对系统进行扩充和缩小
C/S体系结构的缺点如下:
传统的二层C/S结构存在以下几个局限:
三层C/S结构如图
三层C/S体系结构是讲应用功能分成表示层、功能层和数据层三个部分
表示层是应用的用户接口部分,担负着用户与应用间的对话功能。它用于检查用户从键盘等输入的数据,显示应用输出的数据
功能层相当于应用的本体,它是将具体的业务处理逻辑编入程序中。通常,在功能层中包含确认用户对应用和数据库存取权限的功能以及记录系统处理日志的功能
数据层就是数据库管理系统,负责管理对数据库数据的读写
浏览器/服务器风格就是三层C/S结构的一种实现方式,具体结构为浏览器/Web服务器/数据库服务器
B/S体系结构的不足之处:
公共对象请求代理(common object request broker architecture, CORBA)是由对象管理组织OMG制定的一个工业标准,其主要目标是提供一种机制,使得对象可以透明地发出请求和获得应答,从而建立起一个异质的分布式应用环境
正交软件体系结构由组织层和线索的构件构成。组织层是一组有相同抽象级别的构件构成。线索是子系统的特定,它是由完成不同层次功能的构件组成,每一条线索完成整个系统中相对独立的一部分功能。简单来讲,就是不同线索中的构件之间没有相互调用,那么这个结构就是完全正交的
正交软件体系结构的主要特征如下:
正交软件体系结构的优点如下:
层次消息总线(hierarchy message bus, HMB)的风格的各个组成要素:构件模型、构件接口
HMB风格的构件模型包括接口、静态接口和动态行为三个部分,如图
在体系结构设计层次上,构件通过接口定义了同外界的信息传递和承担的系统责任,构建接口代表了构件同环境的全部交互内容,也是唯一的交互途径
HMB风格的消息总线是系统的连接件,构件向消息总线等级感兴趣的消息,形成构件消息响应登记表
HMB风格方便地支持运行时刻的系统演化,主要体现在以下三个方面:
互联系统构成的系统(system of interconnected system, SIS)是指系统可以分成若干个不同的部分,每个部分作为单独的系统独立开发。整个系统通过一组互联系统实现,而互联系统之间相互通信,履行系统的职责
软件过程:系统分解,用例建模,分析和设计,实现,测试,演化和维护
将上级系统分解成几个从属系统
为每个系统在SIS系统中建立一个用例
分析和设计的目的是为了获得一个健壮的系统体系结构
实现过程主要完成构件的开发和测试工作
组装不同从属系统时的集成测试,并测试每个上机用例是否根据其规约通过互联系统协作获得执行
当某从属系统的需求发生变化时,不必开发新版本的上级系统,只需对该从属系统内部结构进行变更,不会影响其他从属系统
特定领域软件体系结构(domain specific software architecture, DSSA)的必备特征:
从功能覆盖的范围角度有两种理解DSSA中领域的含义的方式:
这个阶段的主要目标是获得领域模型。领域模型描述系统之间的共同的需求
这个阶段的目标是获得DSSA。DSSA描述在领域模型中表示的需求的解决方案,它不是单个系统的表示,而是能够适应领域中多个系统的需求的一个高层次的设计
这个阶段的主要目标是依据领域模型和DSSA开发和组织可重用信息。这些可重用信息可能是从现有系统中提取得到,也可能需要通过新的开发得到
DSSA的建立过程分为五个阶段:
DSSA的建立过程是并发的、递归的和反复进行的。该过程的目的是将用户的需求映射为基于实现限制集合的软件需求,这些需求定义了DSSA
ADL是这样的一种形式化语言,它在底层语义模型的支持下,为软件系统的概念体系结构建模提供了具体语法和概念框架
UniCon及其支持工具的主要目的有:
Wright支持对构件之间交互的形式化和分析。
Wright的主要特点为:对体系结构和抽象行为的精确描述、定义体系结构风格的能力和一组对体系结构描述进行一致性和完整性的插件
Rapide是一种可执行的ADL,其目的在于通过定义并模拟基于事件的行为对分布式并发系统建模
Rapide由五种子语言构成:
Rapide的优点在于能够提供多种分析工具
Aesop的目的是建立一个工具包,为领域特定的体系结构快速构件软件体系结构设计环境,每个这样的环境都支持一下五个方面:
ACME最初目的是为了创建一门简单的、具有一般性的ADL,该ADL能用来为体系结构设计工具转换形式,和/或为开发新的设计和分析工具提供基础
ACME支持从四个不同的方面对软件体系结构进行描述,分别是结构、属性、约束、类型和风格
在ACME中定义了七种体系结构实体,分别是构件、连接件、系统、端口、角色、表述和表述映射
设计约束是体系结构描述的关键成分,它们决定体系结构设计使如何演化的。设计约束可以当做一种特殊的属性,但因为在体系结构中,设计约束起着核心作用,所以,ACME提供了特定的语法来描述设计约束
统一建模语言(UML)是一个通用的可视化建模语言,用于对软件进行描述、可视化处理、构造和建立软件系统的文档。它记录了对必须构造的系统的决定和理解,可用于对系统的理解、设计、浏览、配置、维护和信息控制
体系结构的动态性主要分为三类:
允许在系统运行时发生更新的软件体系结构称为动态软件体系结构,动态体系结构在系统被创建后可以被动态地更新
一般来说更新描述包括以下几个部分: