架构之美读书笔记(待续)

去架构设计一个系统的时候,首先考虑的不是这个系统有多少个功能点,而应该是:
1.运行在windows还是linux上,选择的是tomcat还是jetty
2.你想支持的多少并发用户的请求
3.是构建于内网还是外部易可访问,需要怎么样的安全性要求
4.是吞吐量优先还是要求高响应性
等等方面。

架构是设计的一部分,它突出某些细节,并通过抽象忽略掉另一些细节,架构是设计的子集。它是最高层面的抽象和分解,关注组件的划分及各个组件之间的关系及暴露给外部的属性。
平衡:
这个是两个角度的平衡,一个是高层次的平衡,平衡以下角色的需求
投资人:能够在给定的资源下完成项目
项目经理:组织计划、指定迭代计划
市场人员:需要有同竞争者差异化的品质
用户,包含系统管理员:安装、部署、准备、配置人员
以上不同人员有不同的需求,架构需要在以上做一个平衡。另一个是设计层面的平衡,平衡技术选型,在响应性及吞吐量之间的选择。
架构师的第一任务是于以上的利益相关人协作,理解他们的关注点和约束,并给出优先级!为什么不从功能入手的原因是,因为有很多种可能的系统分解方式,例如用数据模型开始得到一种架构,从业务处理模型得到另一种架构。

架构中还需要关注的一点是保证架构概念完整性,系统中反映的是一组设计思想,而不是许多中独立而不协调的设计思想,这个在《设计原本》也被反复提到!概要完整性延伸的就是处理问题的一致性。

架构应该考虑的几个点
功能性:产品为用户提供什么功能
可变性:软件将来可能需要哪些改变,哪些改变不可能发生,架构其实决定的是不易改变的东西
性能:吞吐量,响应时间,响应性等等方面
容量:能够支持多大的并发,系统为用户保存多少数据
生态系统:系统如何同外部系统进行交互
模块化:如何合理的划分各个模块之间的职责
可构件化:如何将软件构建为组件,并独立实现和验证这些组件
产品化:如果将来会演化为多个产品,如何选择和决策
安全性:是否需要用户认证,如何处理敏感数据

发表评论?

0 条评论。

发表评论


注意 - 你可以用以下 HTML tags and attributes:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>