软件架构设计之基础概念

架构定义

软件架构的概念分组成派和决策派两类,组成派以软件本身为描述对象,分析软件组成,决策派以人的决策为描述对象,归纳架构决策的类型。

组成派定义示例:

软件架构将系统描述为计算组件及组件之间的交互。计算组件是泛指,可进一步划分为处理组件、数据组件、连接组件等,可以指子系统、框架、模块以及类等不同粒度的软件单元。

决策派定义示例:

软件架构包括以下一系列问题的重要决策:(1)软件系统的组织;(2)选择组成软件系统的结构元素和它们之间的接口;(3)如何组合这些元素,使它们合成为更大的子系统;(4)架构风格[j1] ;(5)软件系统的其他特性,例如使用、功能性、性能、弹性、重用、可理解性、经济和技术的限制及权衡以及美学等。

一个更通俗易懂的决策列举:模块如何划分;各模块的职责为何;每个模块的接口如何定义;模块之间采用何种交互机制;开发技术如何选型;如何满足约束和质量属性需求;如何适应可能发生的变化。

架构设计视图

为何要架构视图?

(1)架构涉众多,关注方面不同:用户关注功能性及性能、易使用性等运行期质量属性;客户关注业务目标、上线时间、预算限制、集成需要等;开发人员关注可扩展性、可重用性、可移植性、易测试性等开发期质量属性;管理人员关注架构如何支持项目分工、项目计划等。

(2)架构设计需要涵盖的内容和决策太多,超过人脑一蹴而就的能力范围,需要采用分而治之的方法来从不同视角分别设计

(3)为软件架构的理解、交流和归档提供方便。

最常用的架构视图是逻辑视图和物理视图。

逻辑视图规定了组成软件系统的逻辑元素及这些元素之间的关系,逻辑元素可以是逻辑层Layer、功能子系统、模块。逻辑视图的核心人物是全面的识别模块、规划接口,并基于此进一步的明确模块之间的使用关系和使用机制。

物理视图规定了组成软件系统的物理元素及它们之间的关系,以及它们部署到硬件上的策略。物理视图反映的是系统动态运行时的组织情况,物理元素指进程、线程、对象,关系则指进程调度、线程同步、进程或线程通信等,一般使用物理层Tier来指定部署策略。

参考文献

温昱,《软件架构设计第2版》


时间: 2024-10-27 16:53:08

软件架构设计之基础概念的相关文章

领域驱动设计系列:澄清一些基础概念

要研究DDD,必须认清DDD的核心是通用语言和模型驱动设计.即使是DDDLite(技术上的DDD),也必须清楚DDD在架构中的位置和必须的架构知识,否则一路跑到哪里能否回来都是未知了.我们先了解常用架构分层,再了解DDD的所在层次和范畴,然后强调DDD的核心.包括从架构到领域模型设计方面的决策和自己的些许实践. 1.三层作为基础:表示层.业务逻辑层.数据访问层是所有讨论的基础.有2个最重要的决策和实践等待你应用和发现: (1)在假设存在多个表示层的基础上,你可以据此将分散在表示层中的业务逻辑代码

软件架构设计系列总结

架构引用维基百科:软件体系结构是构建计算机软件实践的基础.与建筑师设定建筑项目的设计原则和目标,作为绘图员画图的基础一样,一个软件架构师或者系统架构师陈述软件构架以作为满足不同客户需求的实际系统设计方案的基础.从和目的.主题.材料和结构的联系上来说,软件架构可以和建筑物的架构相比拟.一个软件架构师需要有广泛的软件理论知识和相应的经验来实施和管理软件产品的高级设计.软件架构师定义和设计软件的模块化,模块之间的交互,用户界面风格,对外接口方法,创新的设计特性,以及高层事物的对象操作.逻辑和流程.软件

(转)软件架构设计

[一]-软件架构设计过程 软件架构设计尚没有万灵的方法论支持,还是个非常新兴的行业,给出个人理解的行业软件架构设计过程,受个人水平有限,仅供参考: 1.业务分析:针对目标行业的业务战略.蓝图.业务功能及流程进行分析,提出其中部分功能可以使用信息化进行处理,通过分析可以得出信息化要解决的问题. 2.解决方案设计:根据业务战略,形成行业信息化解决方案.他是一个系统组,同时明确各系统间的支撑关系. 3.系统功能设计:明确信息化系统功能列表及功能层次(层次,例如经验决策层工,管理层功能,业务操作功能等)

小议软件架构设计要点

如何更好地进行软件架构设计,这是软件工程领域中一个永恒的重点话题.过去几十年来,国际软件工程界在软件架构设计方面已经获得了长足发展,大量图书.文章和文献记载了这方面的成熟经验与成果.软件架构设计往往是一件非常复杂的工作,涉及到很多细节和方方面面,可探讨的话题也非常之多.囿于篇幅限制,以下只能根据笔者个人理解,遴选出软件架构设计的个别要点,结合当前流行的敏捷软件工程思想,与大家分享一下自己在软件架构设计方面的心得和体会. 架构决定成败 软件架构是软件产品.软件系统设计当中的主体结构和主要矛盾.任何

SoC嵌入式软件架构设计II:否MMU的CPU虚拟内存管理的设计与实现方法

大多数的程序代码是必要的时,它可以被加载到内存中运行.手术后,可直接丢弃或覆盖其他代码.我们PC然在同一时间大量的应用,能够整个线性地址空间(除了部分留给操作系统或者预留它用),能够觉得每一个应用程序都独占了整个虚拟地址空间(字长是32的CPU是4G的虚拟地址空间),但我们的物理内存仅仅是1G或者2G.即多个应用程序在同一时候竞争使用这块物理内存.其必定会导致某个时刻仅仅存在程序的某个片段在运行,也即是全部程序代码和数据分时复用物理内存空间-这就是内存管理单元(MMU)工作核心作用所在. 处理器

浅谈企业应用软件架构设计过程

1.引言 本文不是学术性文章,也不是某些标准化理论的阐述,而是根据所从事J2EE应用软件架构设计工作的经验,谈谈自己对软件架构设计过程的理解,希望能让一些徘徊于门口的同学能对企业应用软件架构设计的目标.价值与方法有个大致概念.文中所举例子及分析方法受个人经验背景约束,可能在一定程度上会存在误导性,软件架构设计过程大同小异,例子主要还是用于辅助说明设计过程. 对于架构设计,如果用建筑来比拟的话,有点类似这样:这是我们将修建一座大教堂,甲方有这样的一些特殊要求,比如大堂要能容纳5000人,中间不能有

SoC嵌入式软件架构设计之二:虚拟内存管理原理、MMU硬件设计及代码分块管理

程序的大部分代码都可以在必要的时候才加载到内存去执行,运行完后可以被直接丢弃或者被其他代码覆盖.我们PC上同时跑着很多的应用程序,每个应用程序使用的虚拟地址空间几乎可以整个线性地址空间(除了部分留给操作系统或者预留它用),可以认为每个应用程序都独占了整个虚拟地址空间(字长是32的CPU是4G的虚拟地址空间),但我们的物理内存只是1G或者2G.即多个应用程序在同时竞争使用这块物理内存,其必然会导致某个时刻只存在程序的某个片段在执行,也即是所有程序代码和数据分时复用物理内存空间—这就是内存管理单元(

SoC软件架构设计之二:内存管理单元的硬件设计实现

程序的大部分代码都可以在必要的时候才加载到内存去执行,运行完后可以被直接丢弃或者被其他代码覆盖.我们PC上同时跑着很多的应用程序,每个应用程序使用的虚拟地址空间几乎可以整个线性地址空间(除了部分留给操作系统或者预留它用),可以认为每个应用程序都独占了整个虚拟地址空间(字长是32的CPU是4G的虚拟地址空间),但我们的物理内存只是1G或者2G.即多个应用程序在同时竞争使用这块物理内存,其必然会导致某个时刻只存在程序的某个片段在执行,也即是所有程序代码和数据分时复用物理内存空间-这就是内存管理单元(

系统架构设计师第七章 软件架构设计

第七章 软件架构设计 考试大纲: 软件架构的概念 软件架构风格 特定领域软件架构 基于架构的软件开发方法 软件架构评估 软件产品线 软件架构设计就是软件系统的"布局谋篇", 软件架构的研究内容主要涉及: 软件架构描述.软件架构设计.软件架构风格.软件架构评价和软件架构的形成方法. 软件设计人员学习软件架构知识旨在站在较高的层面上整体地解决好软件的设计.复用.质量和维护等方面的实际问题. 一.软件架构的概念- (一)软件架构的定义 软件架构为软件系统提供了一个架构.行为和属性的高级抽象,