1.1 哪些是软件架构,哪些不是

一.什么是软件架构

在这一章我们主要从一个软件工程师的角度出发,来看软件架构对一个正在进行的工程有什么影响。

哪些是软件架构,哪些不是

对于有关软件架构的概念,我们推崇如下定义:

一个系统的软件架构(Software-Architecture)是指,在构建这个系统的过程中使用的一系列结构(Structure)的集合,包括软件中的元素,元素之间的关系以及元素和关系拥有的属性。

有些定义宽泛的认为软件架构就是系统"最初"或者"最主要"的设计决定,这是不对的,尽管对于大多数的架构决定的制定确实在系统开发的早期,但是在敏捷和螺旋增量开发的项目中,许多在系统初期做的决定并不是有关架构方面的。同时我们也很难有一个判断标准去衡量一个决定是否是最主要的,通常对重要与否的判断在时间而不是我们。鉴于,架构是结构的集合,对结构进行设计,会相对简单一些。

下面是对软件架构定义的一些推论


架构是一系列软件结构的集合

结构,是由一系列的元素和它们之间的关系组成,而软件系统就是由许多这样的结构组成,一个单独的结构不能被称为是一个架构,毕竟架构是一系列结构的集合,那么也可以这么理解,一个软件系统对应一个架构,而一个架构对应的是软件结构的集合,以下三种结构在对软件架构的设计,记录和分析中起到重要的作用。

  • 第一类结构:把系统按照功能分为不同的实现单元,在这本书中,我们把这些实现单元称为"模块"(module),模块有各自的任务并被分配给不同的任务团队去实现,同时,对于那些比较复杂的模块,还可以继续对模块进行划分,在模块内部产生划分结构,比如以类图,层等,并分配给子团队去实现。

  • 第二类结构:这些结构被称为是动态的,它们更多的关注于元素在交互过程中产生的系统功能,在这本书中我们把这样的结构称为"组件-联系结构(component-and-connector,C&C)",术语"组件(component)"理解为一个实体。

  • 第三类结构:描述了软件结构和系统之间的映射,比如模块和系统硬件方面的映射,这些映射通常也被称为是分配结构(allocation structure)

尽管组成软件的结构有很多,但不是任何一个结构的组合都可以被称为是架构的,当且仅当它们支持了系统的某些功能(重要干系人的需求)或者体现了系统的某些属性的时候才被称为是架构。

综上,组成架构的结构集合并不是固定或者被限制的,这个取决于你的系统真正需要的是什么。

架构是一种抽象

在前面我们有说,架构是结构的集合,而结构又是由元素和元素之间的关系组成。所以可以推出,架构是由软件元素和元素之间的的关系组成。架构站在系统的功能角度,只会关心元素中那些有用的细节而不会去关心那些对实现系统功能没有什么贡献的元素或者可有可无的元素信息。所以,架构就是对系统的抽象,选择一些细节和忽略另一些。在现代的模型中,元素之间依靠接口进行交互,接口把实现细节分为公有和私有部分,架构更多的关注公有部分,而不会去关注那些元素内部的实现,所以私有部分不属于架构。总的来说,抽象对于简化问题的复杂性来说非常重要。

每一个软件系统都存在一个软件架构

每一个软件系统都可以通过展示元素和元素之间的关系来说明系统支持的功能。

尽管每一个软件系统都有软件架构,但是没必要所有人都知道它,有可能当初设计架构的人已经离开了,但是文档和实现代码可能依旧存在,或者干脆当初就没有记录文档,代码也丢失了,只有一个可以运行的结果存在,但这都没有关系,架构可以不依赖他具体的描述和实现存在。

架构包含行为

行为(behavior)可以体现出元素之间是如何交互的达到说明系统的目的,从我们对架构的定义可以看出,行为是属于架构的。
对元素的行为的定义不能单纯的依靠专有名词,比如database...,虽然有些用户看到这个名词马上就可以联想到对应的功能,但是依靠用户的想象去定义是不科学的。相反,也不是说所有元素的功能和行为都需要被详细记录,而是那些会对其他元素产生影响的行为或者对整个系统产生影响的行为需要被记录,并作为软件架构的一部分存在。

不是所有的架构都是好的架构

当然,选择一个最好的架构,并用它来构建系统是我们需要做的,这就体现了在架构设计的重要性。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 159,290评论 4 363
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,399评论 1 294
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 109,021评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,034评论 0 207
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,412评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,651评论 1 219
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,902评论 2 313
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,605评论 0 199
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,339评论 1 246
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,586评论 2 246
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,076评论 1 261
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,400评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,060评论 3 236
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,083评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,851评论 0 195
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,685评论 2 274
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,595评论 2 270

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 170,569评论 25 707
  • 我上次去杭州学习,姑姑来照顾的儿子,回来后儿子跟我说他九点要回家,十点前要睡觉,我特别高兴,这孩子被姑姑调...
    楠兀喔弥阅读 158评论 0 0
  • 物是人非,人事已非,我最喜欢你,这是我。
    島民Massi阅读 78评论 0 0
  • 今天和小乐一起去参加奥赛组织的亲子制作月饼活动还有亲子比赛项目。 月饼做好之后,趁着烤制的空档举行了亲子运动项目。...
    一瓶花开阅读 326评论 0 5
  • 我尝试在行进的列车前喊停, 站在月台上的都只是观众, 在呼啸而过的人群中,你 笑了,我依旧感到易碎的冰冷 我转过身...
    马叮阅读 412评论 0 0