系统架构师秘籍(一)软件架构

当我们在讨论软件系统架构的一些概念的时候,经常会借助一些其他学科(如造船、建筑等)的概念进行描述。例如当我们讨论"架构"这个概念的时候,我们就会借助微处理器的内部结构、机器的内部结构、组织网络、软件架构和其他许多东西进行对比和理解。今天主要介绍一下软件架构、架构元素、架构描述和一些其他相关内容。

什么是软件架构

在现在社会中到处都可以看到计算机的身影,不仅仅是数据中心的桌面上,甚至在汽车、洗衣机和信用卡上。这些计算机无论体积大或小、结构简单或者复杂,所有的计算机都是由三个基本组成部分:硬件、软件和数据。

当我们研究计算机系统的时候,首先要了解的就是计算机的组成部分的功能,以及各个部分是如何在一起工作的,换句话讲就是研究计算机的架构。通常我们认可的对计算机架构的概念是由坐落在匹兹堡的卡耐基-梅隆大学的软件体系结构研究所定义的。

该组织定义:一个软件系统的体系结构,包括软件元素,软件元素之间的关系,以及这些元素的外部可见特性。接下来让我们具体了解一下定义中的两个关键部分,即系统的结构和其外部可见性。

系统结构

对软件架构师来讲,系统结构包括静态(设计时的组织结构)和动态(运行时的组织结构)两个方面。

静态的体系结构,定义了内部元素的设计和元素的排列。它告诉我们设计时的组织形式和软件元素是如何组织的。内部元素包括:

内部软件元素可以是模块、类或包、存储过程、服务或者其他独立的代码单元。

内部数据元素可以使类、关系数据库的实体或表、数据文件等。

内部硬件元素包括计算机或其他组成部分(如磁盘或者CPU)。

内部网络元素包括电缆、集线器、路由器等。

以上这些内部元素之间相关关联、相互依靠,共同构成了我们的软件体系结构。

动态的体系结构,定义了系统运行时的元素和他们之间的相互作用。它说明了系统是如何工作的,系统运行时发生了什么,如何响应外部请求等。元素之间的相互作用可以是信息在元素之间的流动,可以是并行或顺序执行的任务,也可以是元素对于数据的影响。

外部可见性

外部可见性主要包括两个方面,一个是外部可见的行为(系统做了什么),另一个是质量特性(系统如何做)。

外部可见的行为可以告诉我们一个软件系统从外部观察者的角度是什么,即告诉我们系统与环境之间相互作用的功能是什么。这些相互作用的功能包括系统内外信息的流动,系统对外部请求的响应,对外提供的约定和API等。外部行为即对待系统的方式,我们可以将系统的看做一个黑盒子,外部行为不需要考虑和知道内容的实现,仅仅需要知道系统内部完成了哪些功能和处理。

质量属性可以告诉我们一个系统的行为从外部观察者的角度是什么,即告诉我们系统的外部可见的非功能特性,如性能、安全和可伸缩性。质量属性所关注的范围包括系统如何在较低的负载下执行,特定硬件的吞吐量在峰值的是什么,如何防止系统的恶意使用,系统运行多长时间崩溃,系统的运行、维护、管理怎么更容易,更便于残疾人使用等等,这些特性都属于系统质量属性所需要优先考虑的范围。

到此为止,我们对系统架构的概念就介绍完毕了,接下来继续讲解软件系统架构的其他内容。

……

系统架构师秘籍(一)软件架构,布布扣,bubuko.com

时间: 2024-10-14 05:02:16

系统架构师秘籍(一)软件架构的相关文章

系统架构师秘籍(二)软件架构- 续

上次的文章中,我们简单描述了一下软件架构的概念,接下来我们描述一下软件架构中的具体细节. 软件架构 所谓软件元素,即指组成软件系统的一个最基本的模块.一个软件元素的特性在很大程度上取决于系统的类型,以及你考虑和选取软件元素的背景和关注点.程序Lib库,子系统,可部署的颗粒或者控件(如企业级Java Bean,ActiveX 控件等),可重用的软件产品(如数据库管理系统),全部的应用程序都可以称为一个软件系统的软件元素,它取决于软件系统的构建. 一个软件元素所拥有的特点如下: 一个明确的界定的责任

系统架构师秘籍(三)架构视角和关注点

上次的博文中,我们介绍了一下软件架构的基本概念,接下来我们介绍一下如何来架构一个软件系统. 当我们开始进行系统架构设计的时候,通常会考虑以下几点: 所设计的软件体系结构的主要功能要素是什么. 如何将这些要素与其他系统关联. 哪些信息需要存储.管理和展示. 要实现这些功能要素需要什么硬件和软件. 所设计的软件体系结构提供什么样的特性和能力. 开发.测试.支持.培训环境都需要做什么. 考虑上述问题的时候,我们从哪些层面来考虑呢?那就是架构视角和关注点两个层面. 架构视角 架构视角是从一个或多个角度对

10个重要部分,讲述从程序员到高级系统架构师该如何进阶?

1 前言 说到系统架构师,相信很多企业都有这样的高级人才.系统架构师已然成为国内一门十分紧俏的职业,一名优秀的系统架构师常常会吸引各方企业争抢. 系统架构师的职责是在项目开发过程中,制定这个项目的总体脚骨,指导整个开发团队完成这个计划,他必须对开发技术非常了解,并且需要良好的组织管理能力,可以这样说,一个架构师的好坏决定了整个项目的成败. 当前,我们国家经济形势热度不减,软件企业成长速度惊人.随着信息时代的来临,架构师在业务发展中扮演的角色越来越重要,如何做好整个IT架构的设计,已经成为企业信息

从程序员到高级系统架构师完美进阶

前言 说到系统架构师,相信很多企业都有这样的高级人才.系统架构师已然成为国内一门十分紧俏的职业,一名优秀的系统架构师常常会吸引各方企业争抢. 系统架构师的职责是在项目开发过程中,制定这个项目的总体脚骨,指导整个开发团队完成这个计划,他必须对开发技术非常了解,并且需要良好的组织管理能力,可以这样说,一个架构师的好坏决定了整个项目的成败. 当前,我们国家经济形势热度不减,软件企业成长速度惊人.随着信息时代的来临,架构师在业务发展中扮演的角色越来越重要,如何做好整个IT架构的设计,已经成为企业信息化建

系统架构师-基础到企业应用架构-单机软件架构

开篇 系统架构的文章系列,也是搁浅的太久了,最近也是整理了下思路,将目前未完成的内容,写完吧,也不能拖太久,就不太好了.所以就趁周末写一下,今天我 们要说的是单机应用,单击应用软件可以很复杂,也可以很简单.有些单机软件可以没有数据库,也可以有数据库,比如我们平时的一些工具类的软件,写字板,V S开发工具等,当然,目前很多的单机软件都有联网的功能,单机软件,估计大家有时候回想,单机软件不需要什么特殊的架构设计吧,其实不然,因为有的时候我 们的单机工具,可能是提供给不同的用户群体等,或者是面向不同的

系统架构师的职责和作用(转)

系统架构师的职责和作用(转) [职业名称] 系统架构师(System Architecture) [职业定位] 系统构架,是对已确定的需求的技术实现构架.作好规划,运用成套.完整的工具,在规划的步骤下去完成任务. 系统架构师(又称企业架构师或者系统设计师)是一个最终确认和评估系统需求,给出开发规范,搭 建系统实现的核心构架,并澄清技术细节.扫清主要难点的技术人员.他/她主要着眼于系统的“技术实现”.因此他/她应该是特定的开发平台.语言.工具的大 师,对常见应用场景能马上给出最恰当的解决方案,同时

为什么要报考系统架构师考试

最近一年多,很多朋友来信,问我什么要报考系统架构设计师考试.为什么参加这个考试,这个考试有用吗?对自己的职业会带来什么好处?我想有以下几个方面: 一.强迫自己,去系统学习软件架构设计的理论,追踪业界架构设计的发展动态.去学习的动力有很多,如为了兴趣,为了工作,为了职位升迁,为了大幅提升薪水等.其实,为了应付考试,通过考试,也是学习知识的一种很好的方法.尤其,对自律能力不是很好的同学: 二.系统架构师考试,作为计算机技术与软件专业技术资格(水平)考试系列的最高级别专业考试,是国家认可的.如果通过,

高级系统架构师培训笔记

前几天参加了中科院计算所培训中心谢老师的高级系统架构师培训课程,将其中的一些点做了下记录: 系统架构师的工作是复杂设计总体解决方案以及领域对象的逻辑和物理布局,这是一项在复杂环境中高风险.高影响力的活动. 1.软件架构的定义:软件架构(Software Architecture)也称之为软件体系结构,它是一组有关如下要素的重要决策:软件系统的组织,构成系统的结构化元素,接口和它们相互协作的行为的选择,结构化元素和行为元素组合成粒度更大的子系统方式的选择,以及指导这一组织(元素及其接口.协作和组合

系统架构师设计师考试范围

工作好多年了,在硬件,软件,通信等方面都有好几年历练了,近来准备考系统架构师了,一:有工作经验考这个更合适些,二:可以丰富下自己的理论知识.三:可以发现弥补自身存在的不足,没什么坏处.最近买了一本<系统架构师设计师教程>,发现要考的东西还是很多的,要学习的东西还是挺多的,有操作系统的,数据库,测试方面的,数据通信,开发,虚拟化方面的,下面拿其大致罗列下,准备朝这方面努力. =============================================================