【IDA-3D 解读】基于实例深度感知的自动驾驶立体视觉三维目标检测(ID/IDA)
617
2022-05-30
2.2 组成派的主要定义
组成派定义的主要依据是软件架构主要反映系统由哪些部分组成,以及这些部分是如何组成的,强调软件系统的整体结构和配置。这里介绍几种有代表性的组成派定义。
1992年Dewayne和Alexander给出了软件架构最早的定义之一[1],他们认为软件是由架构元素(element)、架构形式(form)和架构原理(rationale)组成的集合,也就是,软件架构={元素,组成,原理},其中元素是指具有一定形式的结构化元素,包括处理元素(processing element)、数据元素(data element)和连接元素(connecting element)。处理元素负责对数据进行加工,数据元素是被加工的信息,连接元素把架构的不同部分组合连接起来。架构组成由加权的属性(weighted property)和关系(weighted relationship)构成,其中加权是指下列两种情况之一:①属性或关系的重要性;②在多个候选项之间选择的必要性,因为某些候选项相比其他的可能更受青睐。属性用来约束架构元素的选择,关系用来约束架构元素的放置(placement)。架构原理是软件架构的基础理论部分,用于指导在定义架构时面临的多种选择。架构原理指导如何准确捕获架构风格、架构元素和架构形式的选择动机。在构建软件架构时,架构原理解释了基本的哲学和美学思想,对架构师有很好的启发作用。
1993年David和Mary定义的软件架构包括组件(component)、连接件(connector)和约束(constraint)三大要素[2],认为软件架构是软件设计过程的层次之一,该层次超越计算过程中的算法设计和数据结构设计。组件可以是一组代码,也可以是独立的程序;连接件可以是过程调用、管道和消息等,用于表示组件之间的相互关系;约束一般为组件连接时的条件。
1994年Jones认为软件架构是组件以及组件之间交互规则的集合[3]。
1994年波音公司(The Boeing Company)和DSG(Defense and Space Group)给出了一个CFRP模型[4]:软件系统由一组元素(element)构成。这组元素分成处理元素和数据元素。每个元素有一个接口(interface),一组元素的互连(connection)构成系统的拓扑结构。元素互连的语义包括静态互连语义(如数据元素的互连)、描述动态连接的信息转换协议(如过程调用、管道等)。
1995年Hayes认为软件架构是一个抽象的系统规范,主要包括由其行为和接口来描述的功能组件以及组件之间的相互连接关系[5]。
1995年David和Dewayne认为软件架构即一个程序或系统各组件的结构、它们之间的相互关系以及进行设计的原则和随时间演化的指导方针等[6]。该定义与系统的整体结构定义没有太大的区别,更加抽象,就是一种哲学思想而已。
1995年Cristina等人认为一个软件架构包括软件系统的组件、互联和约束的集合,系统需求说明的集合,以及说明组件的基本原理等[7]。
1997年Bass等人认为一个程序或计算机系统的软件架构包括软件组件、软件组件外部的可见特性及其相互关系[8]。其中,软件组件外部的可见特性是指软件组件提供的服务、性能、错误处理、共享资源使用等。
2003年Fowler在《Patterns of Enterprise Application Architecture》中对软件架构的定义如下[9]:在较高的层次上将系统分解,其中的决策稳定不变,同一系统的架构可以多种多样,架构上的主要内容会影响整个系统的生命周期,架构归结为所有重要之物。
2004年张友生在《软件体系结构》一书中将软件架构定义为[10]:为软件系统提供了一个结构、行为和属性的高级抽象,由构成系统的元素的描述、这些元素的相互作用、指导元素集成的模式以及这些模式的约束组成。软件架构不仅指定了系统的组织结构和拓扑结构,而且显示了系统需求和构成系统的元素之间的对应关系,并提供了一些设计决策的基本原理。
2011年ISO/IEC/IEEE标准中[11]定义软件架构为某一系统的基本组织结构,其内容包括软件组件、组件间的联系、组件与其环境间的联系,以及指导上述内容设计与演化的原理。
软件开发 架构设计 软件
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。