1、引言
建筑师、音乐家、作家、计算机设计者、网络设计者、软件开发者都在使用架构一词,在其他地方也可能会听到这个词,但是他们产生的结果是不同的。建筑和交响乐有很大的区别,但是它们都有架构。进一步说,所有的架构师都在谈论他们工作的美妙,以及结果的美妙。一名建筑架构师可能会说一个建筑应该提供舒适的工作、生活环境,看起来应该是美丽的;音乐家可能会说音乐应该可以可以演奏的,有一个可以识别的主题,听起来应该是美丽的;软件架构师可能会说一个系统对于用户来说,应该是有好的、响应快速的,可维护的,没有致命性的错误,容易安装,可靠地,和其他系统之间的通信应该是标准方式,而且它也应该是美丽的。
2、什么是架构
一个好的系统架构应该显示出概念的完整;话句话说,它会伴随一系列的设计规则,这些规则的目标是减少复杂性,这些规则是进行详细设计和系统验证的指导。规则可能会代表一种模式,例如管道和过滤器。
在现在的架构师看来,架构应该包括下面的一些内容:
- 它包括用户要求的功能。
- 它在用户要求的日程上是可完成的。
- 它的功能是适当的。
- 它是可靠地。
- 对用户来说,它是可用的、安全的。
- 它是牢固的。
- 它不是太贵。
- 它符合法律的标准。
- 它应该比前辈和竞争对手存活更长的时间。
当然了,我们没有见过完美的满足上述特性的复杂系统。架构是一个权衡的结果,改进了这个特性,可能就会消弱另外一个特性。架构师一定要通过发现特定系统的重要关注点,已经满足这些关注点高效运行的条件,来决定那些是需要满足的。
3、架构师角色
在设计,建设或者是重建一个建筑的时候,我们会指定关键的设计者作为“架构师”,给他们更多的职责。一名架构师会绘制建筑的初始草图,用来显示建筑的外观和内部格局。拿草图和用户进行讨论,直到所有的关注点都被满足,以及草图显示的内容就是用户想要的结果。草图是抽象的。
在用户和架构师对这些抽象达成一致之后,架构师回去准备更加详细的图纸,可能包含详细的文档。这些详细的图纸会包括建筑的细节,例如:水管道,建筑原料,窗户的配置,电线的走线等等。
架构师很少会简单的把详细图纸交给建筑工人就完事的。对于一些重大的工程,架构师会跟踪项目,定期检查工作,可能会提出一些改进意见,或者是接受一些建筑工人和客户的建议。在架构师管理项目的时候,直到他确定大体上满足计划和详细设计为止,才认为是完成。
4、软件架构师角色
软件开发项目在进行软件架构的时候也需要同样的角色,就像建筑行业的传统架构师一样的角色。但是,对于软件系统,不可能有一个完全清晰的架构让你去实现。在软件项目中定义一个架构要做什么是非常困难的,要不建筑行业的定义架构要难,主要因为三个因素:
- 缺乏惯例,建筑业的历史有上千年,可以参考更多的历史建筑;软件业只有几十年的历史,而且设计都不是公开的。
- 无法确定的产品特性,建筑是物理存在的,可以有确切的定义。软件是一中抽象的产品,无法定义确切的摸样。
- 系统的复杂性
一个大点的软件项目,通常包括多个架构师,很多都是在一个领域有特长,例如:数据库、网络,他们会组成一个团队进行工作。
5、如何建立软件架构
第一个关注点不是系统的功能。
说对了,进行架构的第一个关注点不是系统的功能。
假设,我们雇佣你设计一个web应用。你是先问我们一些关于页面布局和导航树,还是问我们下面的这些问题呢?
- 主机放在那里?主机环境有什么技术限制吗?
- 你希望运行在Windows Server上还是LAMP上呢?
- 需要支持多少的并发用户?
- 应用需要什么样的安全?数据是否需要保护?应用是内网用还是外网用?
- 下面的这些如何区分优先级?例如:用户量重要还是响应时间更重要?
依据这些问题的回答,以及一些其他的问题回答,你可以构建一张系统的架构草图。到现在为止我们还没有开始讨论系统的功能。
每个系统都有它自己的质量关注点。例如:性能、安全等。
功能:产品给用户提供什么样的功能。
改变性:软件将来会发生什么样的变化,那些变化是不可能的。
性能:性能有什么要求。。
容量:有多少并发用户?系统需要存储多少数据?
分享到:
相关推荐
2019年软考系统架构设计师学习笔记.pdf2019年软考系统架构设计师学习笔记.pdf2019年软考系统架构设计师学习笔记.pdf2019年软考系统架构设计师学习笔记.pdf2019年软考系统架构设计师学习笔记.pdf2019年软考系统架构...
《从零开始学架构》读书笔记,以思维导图的方式进行归纳总结知识要点。
作者 Robert C. Martin 是 cleancoders.com 联合创始人,Uncle Bob Consulting LLC 创始人, 为全球大型公司提供软件开发咨询、培训以及技能培训服务。
《软件架构设计》没找到电子版。这个笔记只记录了框架要点,仍感觉到对实践的准确总结。 望拥原版者不吝赐予。
系统架构师学习笔记,很好的架构师学习资料,十分详细。
软考高级系统架构师经验复习笔记仅供个人学习使用
《大型网站技术架构》读书笔记思维导图,初始架构、服务数据分离、缓存改善性能、服务器集群化、数据库读写分离、反向代理CDN、分布式FS/DBS、NOSQL和搜索引擎、业务切分
一份设计非常精美的读书笔记PPT作品,采用非常流行的毛玻璃虚化背景的设计,扁平化风格,给人高大上的感觉。使用字体:Broadway。
软件架构师考试总结笔记,包括很多考试常见的内容
系统架构师复习笔记.docx
Java架构师笔记知识点记录一
58、《阿里中台战略思想与架构实战》读书笔记.docx
系统架构设计师复习笔记,复习精华,值得参考。。。。。。。。。。。。
《从零开始学架构》精华笔记 《从零开始学架构》这本书的内容主要包含以下几部分:1) 架构设计基础,包括架构设计相关概念、历史、原则、基本方法,让架构设计不再神秘;2) 架构设计流程,通过一个虚拟的案例,...
《架构师》读书笔记模板.pptx
USB读书笔记 USB读书笔记 USB读书笔记 USB读书笔记
大型网站技术架构_核心原理与案例分析_李智慧 pdf
李智慧老师的大型网站技术架构的读书笔记
系统架构设计师属于高级工程师的范畴,本学习笔记内容系统全面,要考系统架构设计师的可以参考学习,有帮助的可以来下载学习。
复习笔记涵盖了近10年架构师考试历年真题所有知识点,并补充了XS培训班辅导资料内容,适合有一定基础但没有太多时间去翻阅教材、总结归纳的同学,帮你快速获得通过考试所需的知识储备。