软件架构:基础概念总结


定义

软件架构是指:对于软件的各个方面做出的设计决定,包括行为上的和结构上的。

结构上:
表示产品如何划分多个部分,以及这些部分之间的关系。

行为上:
包括外部行为和内部行为。
外部行为描述了产品如何与用户、其他系统、外部设备进行交互。
内部行为描述了产品组件之间的交互接口。
注意:
架构可作为一个名词也可作为一个动词。
作为名词,表示一组抽象、规则,即产品的结构约束,像蓝图或构建规范的文档等,它描述了要构建的对象;
作为动词,表示制作这些抽象、规则的过程;

架构与设计的关系

架构是设计的一部分,通过抽象突出了一些细节,而忽略了另一些细节。

突出的细节:如结构、行为规则、组件如何装配、应用规则等;
忽略的细节:组件如何具体设计、开发等;

架构主要的关注点

功能性

软件向用户提供哪些功能?

可变性

软件将来可能需要哪些改变?哪些可能不需要改变?

性能

软件期望将来达到怎样的性能?

容量

多少用户使用?需要为多少用户保存数据?

可构建性

如何构建成一组组件?能够独立的实现、验证、复用等

模块化

如何将软件任务分解成独立的模块?支持独立开发等

安全性

数据安全如何保证?权限控制?抵挡攻击?等

生态系统

与其他系统、设备如何交互?

好的架构

对于一个软件进行架构,架构师通常的做法是折中。
他们除了考虑基本的功能需求和品质需求外,还需要考虑投入的成本(人力、财力、时间等等)。
所以架构设计是否最优,没有一个绝对的答案或正确答案。

从我们的经验来说,应该对架构进行评估,确定它是否满足我们的需求。
可以通过对架构师提出质询来评估架构,寻找架构不能满足品质关注点的风险,架构师解释如何支持各个场景。
也可以确定架构的属性,通过建模或模拟系统的一个或多个方面,判断架构是否满足。

类库、框架、设计模式、架构概念区别

在一些常规项目的开发过程中,多少都会提到上面几个词汇,
那么,他们之间具体的区别是什么呢?

类库

也可称为工具库,是为解决某一问题而进行的封装。
作用:使开发者摆脱底层编码(不必重复制造轮子),专注特定问题和业务逻辑,给程序员带来了方便。

框架

相对工具库更宏观,是一组协同工作的类,在某种程度上控制整体的结构和流程,是服务于业务的。
作用:使设计者在特定领域重用整体设计(不必重复制造轮子),也是为程序员带来编码约束的。

设计模式

是针对一类问题提出的行之有效的解决方案。
作用:对开发者而言,是思想上(问题解决方案)的重用,但只是针对局部。

架构

是一个软件的最高层次的整体结构和规划。
相对设计模式而言,是针对软件整体的“解决方案”。

一个架构可能包含多个(0 ~ n)框架和多个(0 ~ n)工具库,
一个框架可能包含多个(0 ~ n)设计模式。

1. 一个架构可能包含多个(0 ~ n)框架和多个(0 ~ n)工具库
例如:
一个java web项目,可包含spring/springmvc + hibernate/mybatis + ......等多个框架;
工具库就更多了,如:JSON库、XML库、日期库、图片库等;

2. 一个框架可能包含多个(0 ~ n)设计模式。
普通开发中,常见的框架模式有很多种,如MVC/MVVM/MVP/MTV/CBD等。
以MVC为例,通常,MVC可看做3个设计模式:即观察者模式、策略模式和组合模式的合体。
-- 框架是大智慧,用来对软件设计进行分工;
-- 设计模式是小技巧,对具体问题提出解决方案,以提高代码复用率,减低耦合度。

参考:
《架构之美》
《企业架构应用》
......

本文参考了多份资料,比较概念化,如有问题的地方,请及时指正。

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

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 171,431评论 25 707
  • 原文出处:http://www.apkbus.com/blog-875309-62984.html 前言架构设计,...
    zzj丶阅读 1,589评论 1 24
  • 每次夜幕降临,总会有莫名的悲伤涌上心头。 紧张,焦虑,愤怒的小情绪交织在一起,侵蚀着我的身体。 感觉很累。 却找不...
    泡沫伊然阅读 160评论 3 0
  • 此时岱山路上大雨滂沱,看不清车前的路,见附近有所养老院,曲筱绡的车便开了进去 话说今天也是够衰的了,来这盯工程路上...
    野生根号三阅读 292评论 0 1
  • 没有你的梦,醒来总是有些失望,有你的梦,醒来却又总是有些失落。 些许日子没有梦到你了,不知你还好吗? 我可以肯定的...
    你看有只螃蟹阅读 135评论 0 0