软件架构对于每一个人的理解都是不同的,通过分类可以在包容细节差异的小基础上明确共性,达到“概念总体上的清晰”。
将软件架构概念分派别:
1.组成派
软件系统的架构将系统描述为计算组件及组件之间的交互。
计算组件是泛指的,可以进一步细分为处理组件,数据组件,连接组件可以是子系统,框架,模块,类等不同粒度的软件单元
特征:
(1.关注架构实践中的客体--软件,以软件本身为描述对象;
(2.分析了软件的组成,即软件由承担不同计算任务的组件组成,这些组件通过相互交互完成更高层次的计算。
2.决策派
软件架构包含了关于一下问题的重要决策,对关键问题进行决策:
×软件系统的组织
×选择组成系统的结构元素和他们之间的接口,以及当这些元素相互协作时所体现的行为;
×如何组成这些元素,使他们逐渐合成为更大的子系统
*用于指导这个系统组织的架构风格,这些元素以及他们的接口,协作和组合。
软件架构并不仅仅注重软件本身的结构和行为,还组中其他特性,使用,功能性,性能,弹性,重用,可理解性,经济和技术的限制的权衡。
特征:
(1关注架构实践中的主体--人,一人为决策为描述的对象;
(2归纳了架构决策的类型,指出架构决策不仅包括关于软件系统的组织,元素,子系统和架构风格等几类决策,还包括非功能性决策。
参考阅读:
《软件架构设计》
分享到:
相关推荐
软件架构风格是设计大型复杂软件系统时所采用的组织结构或模式,它们为软件开发提供指导原则和可重用的设计模式。以下是对5大经典软件架构风格的详细说明: 1. 数据流风格:这种风格主要关注数据的处理流程,分为...
2.1 软件架构师的定义、分类和职责 2.2 软件架构师具备的素质 2.3 架构师与职能经理 2.4 架构师与开发人员 第3章 工作中的架构师 3.1 解决商业问题 3.2 解决架构问题 3.3 解决设计问题 3.4 ...
本章节将介绍软件架构的概念、原则、模式以及如何进行有效的架构决策等关键技能。通过学习,学员能够掌握构建可扩展、可维护和高性能软件系统的方法论。 ### 八、基于构件的开发 随着软件复用需求的增加,基于构件...
以上内容涵盖了《软件架构》中的一些核心概念,包括架构定义、重要性、影响因素、模式的构成和目的,以及两种常见架构模式的比较与特点。理解这些知识点有助于在软件开发中做出明智的架构决策。
架构风格和基于网络的软件架构设计中,还会涉及软件架构的基本概念和元素。软件架构是指系统的基本组织结构,它由运行时抽象、元素(组件、连接器和数据)、配置、属性、风格、模式和模式语言、视图等构成。运行时...
总之,IEEE 1471是软件架构描述的基石,它不仅提出了架构描述的基本概念和框架,还为架构师提供了一套工具和语言来表达和沟通软件系统的架构。对架构师而言,深入理解IEEE 1471标准中的概念,能够帮助他们更有效地...
本文将详细介绍软件架构评估的基本概念、评估方法及其分类,并探讨评估过程中涉及的关键术语和技术。 #### 二、相关术语 ##### 1. 软件架构 (SA) 软件架构是指软件系统的一个或多个结构,包括软件组件、这些组件...
- **风格分类与定义**:架构风格提供了一种分类和定义软件架构共同特征的方法。它封装了关于架构元素的重要决策,并强调了元素及其关系的关键约束。 - **实例化**:每种架构风格都定义了可以使用的组件和连接器的...
- **软件架构定义与问题**:软件架构是系统的高层次概念设计,它描述了系统的组成部分、这些部分之间的关系以及指导其实施的原则。 - **在信息技术战略规划中的角色**:软件架构在IT战略规划中起着核心作用,确保...
《系统架构设计师教程》中的第五章,深入探讨了软件架构设计的核心概念、原则与实践,为读者提供了全面而深入的理解。 ### 一、软件架构设计的重要性 软件架构设计是软件开发过程中的关键环节,它决定了软件系统的...
2. 软件架构设计的特点、层次和分类:架构设计涵盖了从高层概念到具体实现的各个层面,如基础设施层、应用层、业务层等。常见的架构风格有分层架构、微服务架构、事件驱动架构等,选择合适的架构类型对系统的可扩展...
本篇内容将深入探讨软件架构的基础概念、重要性及其在实际开发中的应用。 一、软件架构定义与分类 软件架构是软件系统的高级结构,它包括主要组件、组件间的关系以及指导这些组件如何协同工作的原则。常见的软件...
### 面向模式的软件架构卷5:...通过以上分析可以看出,《面向模式的软件架构卷5:模式与模式语言》这本书为读者提供了一个深入了解软件架构设计原则的机会,并通过模式和模式语言的概念为软件开发带来了更多的可能性。
### 高级软件架构设计知识点概述 #### 一、软件生命周期与软件架构介绍 ##### 1.1 软件架构师的定位与...通过这些内容的学习,可以深入了解软件架构设计的核心概念和技术,从而更好地应对复杂软件系统的开发挑战。