1.1 软件架构概念的分类
Martin Fowler 写道
软件业的人乐于做这样的事--找一些词汇, 并将它们引申到大量微妙而又相互矛盾的含义中. 一个最大的受害者就是"架构"这个词. ...... 很多人都试图给"架构"下定义, 而这些定义本身却很难统一.
鉴于软件架构概念的混乱, 应该采取分类的方法(好处: 包容细节差异, 明确本质共性, 促成概念总体上的清晰).
1.1.1 组成派
Mary Shaw 写道
软件系统的架构将系统描述为计算组件及组件之间的交互(The architecture of a software system defines that system in terms of computational components and interactions among those components.).
"计算组件"是泛指, 分为: 处理组件, 数据组件, 连接组件等. "组件"是广泛意义上的元素之意. 可以指: 子系统, 框架(Framework), 模块, 类等不同粒度的软件单元, 它们可以担负不同的计算职责.
组成派特点:
1.关注架构实践中的客体--软件.
2.分析了软件的组成, 即软件由承担不同计算任务的组件组成, 这些组件通过相互交互完成更高层次的计算.
1.1.2 决策派
Rational Unified Process 写道
软件架构包含了关于以下问题的重要决策:
1.软件系统的组织;
2.选择组成系统的结构元素和它们之间的接口, 以及当这些元素相互协作时所体现的行为;
3.如何组合这些元素, 使它们逐渐合成为更大的子系统;
4.用于指导这个系统组织的架构风格: 这些元素以及它们的接口, 协作和组合;
软件架构并不仅仅注重软件本身的结构和行为, 还注重其他特性: 使用, 功能性, 性能, 弹性, 重用, 可理解性, 经济和技术的限制及权衡, 以及美学等.
决策派特点:
1.关注架构实践中的主体--人.
2.归纳了架构决策的类型, 指出架构决策不仅包括关于软件系统的组织, 元素, 子系统和架构风格等几类决策, 还包括关于众多非功能需求的决策.
1.2 软件架构概念大观
来自SEI的Bass等人的相对比较新的定义, 它将架构的多视图"本性"体现到了架构的定义当中.
SEI的Bass等人 写道
某个软件或计算机系统的软件架构是该系统的一个或多个结构, 每个结构均由软件元素, 这些元素的外部可见属性, 这些元素之间的关系组成(The software architecture of a program or computing system is the structure or structures of the system, which comprise software elements, the externally visible properties of those elements, and the relationships among them.)
1.3 软件架构关注分割与交互
1.4 软件架构是一系列有层次的决策
架构决策是分层次依次展开的.
1.伴随着对软件系统的依次分解, 软件架构师应当不断作出决策.
2.决策制定的顺序往往是先制定技术无关的决策, 后制定技术相关的决策, 后者在前者的指导下进行.
分享到:
相关推荐
《软件设计师个人学习笔记》是一份详实的学习资料,涵盖了软件设计师考试的重要知识点。这份笔记以照片形式呈现,便于读者更直观地理解和记忆。以下是对笔记内容的详细解析: 第一章 计算机网络概论 在这一章中,...
系统分析是软件设计的第一步,要求深入理解业务流程,识别关键功能和数据。UML(统一建模语言)是系统设计中的重要工具,包括用例图、类图、序列图、状态图等,能有效地描绘系统的静态结构和动态行为。此外,了解...
**Spring MVC 学习笔记 一 创建项目** 在IT领域,Spring MVC是Java Web开发中的一个强大框架,它简化了构建交互式Web应用程序的过程。本笔记将深入探讨如何创建一个基本的Spring MVC项目,让我们开始吧。 首先,...
1. 需求分析:理解用户需求,编写需求规格说明书,是软件设计的第一步。有效的分析技巧包括用户访谈、问卷调查、场景建模等。 2. 系统设计:包括架构设计、模块划分、接口设计等,要求设计师能够合理分配系统功能,...
- **架构设计**: 学习如何设计合理的软件架构,包括微服务架构、SOA架构等。 #### 3. 软件测试 - **基础知识**: 包括黑盒测试、白盒测试、灰盒测试等基本概念。 - **自动化测试工具**: 如Selenium、JUnit等。 - **...
本学习笔记集合了多个方面的内容,旨在帮助学习者全面理解并掌握系统架构设计的核心理念和实践技巧。 首先,Spring Cloud微服务实战.pdf是关于微服务架构的深度探讨。Spring Cloud是Java生态系统中实现微服务的主流...
**第一章 基本概念** 1. **软件的概念和特点**:软件是计算机系统中的程序、相关数据以及文档的集合,它具有无形性、复杂性、易变性、依赖性和不可见性等特点。 2. **软件危机的概念和产生的原因**:软件危机是指在...
《2023软考软件设计师全套资料》是一份全面且综合的学习资源,旨在帮助考生在一个月内高效备考并通过软件设计师这一专业资格考试。这份资料集合了历年来的真题及答案解析,最新的教材、大纲、笔记以及考试经验分享,...
1.2.5 安装 mysql 软件...................................................................................................11 1.2.6 创建存放两个 mysql 实例的数据目录.........................................
### 《设计模式解析》第2版学习笔记关键知识点总结 #### 第一部分 面向对象软件开发简介 ##### 第一章 面向对象范型 - **面向对象范型概览**: - 本章通过对比结构化程序设计来引入面向对象的概念。 - 强调了...
《MPC8272RM学习笔记》是针对PowerPC架构中的MPC8272RM芯片进行深入解析的一份技术文档。这份文档旨在为读者提供一个全面了解该芯片各个模块的基础,无论读者是对芯片有初步认识还是深度研究,都能从中获取有价值的...
SpringBoot经典学习笔记详细记录了这些知识点,包括概念解析、代码示例和实践案例,是初学者和进阶开发者深入理解SpringBoot的宝贵资料。通过阅读并实践这些笔记,开发者将能够熟练掌握SpringBoot,高效地开发Java...
通过以上内容,我们可以看到韩顺平老师的Java设计模式笔记涵盖了设计模式的基础概念、常见面试题解析、设计原则等内容,并通过具体案例来阐述设计模式的实际应用价值,旨在帮助学习者深刻理解并掌握设计模式,从而在...
### MyBatis狂神说最全笔记解析 #### 一、MyBatis简介 ##### 1.1 什么是MyBatis? MyBatis是一款优秀的持久层框架,它支持自定义SQL查询、存储过程以及高级映射功能。通过使用MyBatis,开发人员可以避免手动编写...
第一章通常会作为基础,介绍计算机系统的整体架构和基本概念,帮助读者建立起对计算机系统宏观的认识。下面将根据章节标题和描述,详细解析这一章可能涉及的重要知识点。 1. 计算机系统的层次结构 - 计算机系统由...
IPv6(Internet Protocol version 6)是互联网协议的第六版,它被设计为IPv4的后继者,旨在解决IPv4地址耗尽的问题,提高网络的安全性和效率。IPv6拥有128位的地址空间,与IPv4的32位地址空间相比,它提供了近乎无限...
本篇文章基于李运华老师所著《从0开始学架构》的学习笔记,重点解析架构设计模板中所提及的核心概念与技术实现细节。该笔记不仅适用于初学者,对于有一定经验的技术人员也有很好的参考价值。下面我们将深入探讨其中...
在深入探讨《hibernate笔记.txt》所提及的关键知识点前,我们先来解析一下标题和描述中的核心概念。“自上而下的依赖,单向依赖,层与层之间最好依赖抽象”,这一描述实际上触及了软件架构设计中的关键原则,特别是...
在本压缩包“第二章笔记和案例.rar”中,我们可以推测其内容主要围绕某一教材或课程的第二章展开,可能包含课堂笔记、讲解案例、练习题解答等多种学习资源。由于没有具体的标签信息,我们将根据一般的学习资料组织...