1、引言
建筑师、音乐家、作家、计算机设计者、网络设计者、软件开发者都在使用架构一词,在其他地方也可能会听到这个词,但是他们产生的结果是不同的。建筑和交响乐有很大的区别,但是它们都有架构。进一步说,所有的架构师都在谈论他们工作的美妙,以及结果的美妙。一名建筑架构师可能会说一个建筑应该提供舒适的工作、生活环境,看起来应该是美丽的;音乐家可能会说音乐应该可以可以演奏的,有一个可以识别的主题,听起来应该是美丽的;软件架构师可能会说一个系统对于用户来说,应该是有好的、响应快速的,可维护的,没有致命性的错误,容易安装,可靠地,和其他系统之间的通信应该是标准方式,而且它也应该是美丽的。
2、什么是架构
一个好的系统架构应该显示出概念的完整;话句话说,它会伴随一系列的设计规则,这些规则的目标是减少复杂性,这些规则是进行详细设计和系统验证的指导。规则可能会代表一种模式,例如管道和过滤器。
在现在的架构师看来,架构应该包括下面的一些内容:
- 它包括用户要求的功能。
- 它在用户要求的日程上是可完成的。
- 它的功能是适当的。
- 它是可靠地。
- 对用户来说,它是可用的、安全的。
- 它是牢固的。
- 它不是太贵。
- 它符合法律的标准。
- 它应该比前辈和竞争对手存活更长的时间。
当然了,我们没有见过完美的满足上述特性的复杂系统。架构是一个权衡的结果,改进了这个特性,可能就会消弱另外一个特性。架构师一定要通过发现特定系统的重要关注点,已经满足这些关注点高效运行的条件,来决定那些是需要满足的。
3、架构师角色
在设计,建设或者是重建一个建筑的时候,我们会指定关键的设计者作为“架构师”,给他们更多的职责。一名架构师会绘制建筑的初始草图,用来显示建筑的外观和内部格局。拿草图和用户进行讨论,直到所有的关注点都被满足,以及草图显示的内容就是用户想要的结果。草图是抽象的。
在用户和架构师对这些抽象达成一致之后,架构师回去准备更加详细的图纸,可能包含详细的文档。这些详细的图纸会包括建筑的细节,例如:水管道,建筑原料,窗户的配置,电线的走线等等。
架构师很少会简单的把详细图纸交给建筑工人就完事的。对于一些重大的工程,架构师会跟踪项目,定期检查工作,可能会提出一些改进意见,或者是接受一些建筑工人和客户的建议。在架构师管理项目的时候,直到他确定大体上满足计划和详细设计为止,才认为是完成。
4、软件架构师角色
软件开发项目在进行软件架构的时候也需要同样的角色,就像建筑行业的传统架构师一样的角色。但是,对于软件系统,不可能有一个完全清晰的架构让你去实现。在软件项目中定义一个架构要做什么是非常困难的,要不建筑行业的定义架构要难,主要因为三个因素:
- 缺乏惯例,建筑业的历史有上千年,可以参考更多的历史建筑;软件业只有几十年的历史,而且设计都不是公开的。
- 无法确定的产品特性,建筑是物理存在的,可以有确切的定义。软件是一中抽象的产品,无法定义确切的摸样。
- 系统的复杂性
一个大点的软件项目,通常包括多个架构师,很多都是在一个领域有特长,例如:数据库、网络,他们会组成一个团队进行工作。
5、如何建立软件架构
第一个关注点不是系统的功能。
说对了,进行架构的第一个关注点不是系统的功能。
假设,我们雇佣你设计一个web应用。你是先问我们一些关于页面布局和导航树,还是问我们下面的这些问题呢?
- 主机放在那里?主机环境有什么技术限制吗?
- 你希望运行在Windows Server上还是LAMP上呢?
- 需要支持多少的并发用户?
- 应用需要什么样的安全?数据是否需要保护?应用是内网用还是外网用?
- 下面的这些如何区分优先级?例如:用户量重要还是响应时间更重要?
依据这些问题的回答,以及一些其他的问题回答,你可以构建一张系统的架构草图。到现在为止我们还没有开始讨论系统的功能。
每个系统都有它自己的质量关注点。例如:性能、安全等。
功能:产品给用户提供什么样的功能。
改变性:软件将来会发生什么样的变化,那些变化是不可能的。
性能:性能有什么要求。。
容量:有多少并发用户?系统需要存储多少数据?
分享到:
相关推荐
《阿里中台战略思想与架构实战》这本书讲述了阿里巴巴在面对业务快速发展和变化时,如何从组织架构和系统架构上进行创新,以实现高效运营和快速响应市场的战略思想。以下是书中的核心知识点: 1. 中台战略起源:...
同时,配合Android操作系统,它们的存储容量和用户体验也得到了改善,使得ARM架构的笔记本有可能成为一种长时间运行、低功耗的新选择。 【标签】中的"ARM处理器"是关键,ARM是一种精简指令集(RISC)架构的处理器,...
### Python基础笔记知识点详解 #### 一、Python简介与计算机基础知识 ##### 1.1 课程目标 - **理解计算机的基本组成**:了解计算机硬件与软件系统的构成。 - **掌握Python语言特点**:认识Python语言的优势及局限...
这个压缩包包含了NS2的使用必备资源,包括详细的英文版和中文版的手册,以及一份实用的学习笔记,对于深入理解和掌握NS2的操作与应用具有极大的帮助。 1. **NS2英文版手册**: 英文版手册是NS2的官方文档,提供了...
例如,发布与创造101孟美岐相关的微博,利用明星效应引发大规模的互动,进一步提升微博的曝光量和阅读量。 此外,微博的运营团队结构也值得借鉴。内容运营人员负责日常内容创作,确保内容的质量和吸引力;渠道推广...
对于那些希望通过GPU来实现并行计算启蒙的读者,大卫·柯克(David Kirk)和吴闻美(Wen-mei Hwu)撰写的这本书提供了一个宝贵的资源,它不仅介绍了CUDA语言和当前一代NVIDIA GPU的架构,而且还定义了在异构CPU-GPU...
在硬件配置上,IdeaPad Yoga 3 Pro采用了英特尔最新的Core M-70处理器,这是Broadwell架构的产品,带来了更长的电池续航时间,达到9小时。内存最高可达8GB,存储空间最高为256GB闪存,同时支持802.11ac规格的WiFi,...
这一现象凸显了投资者在阅读和分析公司财务报告时,对于业绩的超预期和基本面的改善所带来的股价走强。 其次,报告还关注到“缺芯”问题对手机供应链的影响。全球晶圆代工产能紧缺,尤其是高通等厂商的芯片交期延长...
#### 二十五、《代码之美(精选版)》 这本书收录了多位顶级程序员撰写的关于代码编写的文章,对于提高代码质量和编程美感很有帮助。 #### 二十六、【JAVA】spring经典教程合集 这份资料包含了多个关于Spring框架...
第二阶段的目标是欣赏诗词,体会水的美丽,感悟语言之美;第三阶段的目标是关注水资源现状,编写宣传手册,开展实践活动,提升社会责任感。 以第三学时学习《生命与水》为例,教学过程设计包括激趣导入、谈话开启...
对于大楼建筑、工厂或是农场以至于如欧美之家庭之安全需求是一大需求,对于此类安防之系统架构一般都是使用实体有线、FSK(频率偏移调变)、Zigbee、Bluetooth或是Wifi等传输模式来做为通讯方式。但这些通讯方式...
深度学习是神经网络的一个分支,其核心是多层非线性变换的架构,这使得模型可以自动从原始数据中提取高层次的特征。深度学习的成功在很大程度上得益于大数据和计算能力的提升,例如深度卷积神经网络(CNN)在图像...
1. 软性电子的发展潜力:台湾地区经济部已经将软性电子确定为重点发展的科技之一。软性电子设备包括了可弯曲、可折叠的电子设备,这类设备在市场上具有极高的潜力。软性电子的全球市场规模预计到2015年将达到237亿...
为避免这些问题,白皮书建议出版社在进行电子书排版时,在将文本转化为EPUB格式之前,应套用文档格式(Word或InDesign格式),并在文本制作之初就创建一个单独的XML文档。这些操作可以减少格式转换中出现的错误。 ...
软性电子技术,包括可弯曲和可折叠的电子设备,如柔性显示器和电路,是电子产品未来的发展方向之一。台湾地区已开始推动相关设备厂商开发软性电子设备,涉及的技术包括软性显示器连续喷涂、真空镀膜、自动光学检测...
通过这些章节,用户可以更全面地理解Linux的架构和运作机制,从而成为一名更熟练的Linux使用者。 总之,《Linux扫描式教程》为那些希望逐步深入了解Linux的用户提供了丰富的知识库,无论是对于初学者还是有一定基础...
功能模块按需定制,操作配置简便,高效协同办公,拓展企业邮箱系统功能的灵活性和稳定性,使之成为政府部门、大专院校、中小学校、企事业集团和从事销售企业邮箱软件的网络服务商、集成商理想的企业邮局系统架设软件...
6. **服务容器与依赖注入**:Laravel 的服务容器是其核心功能之一,它管理类的依赖关系,有助于实现松耦合的设计。 ### Laravel-Bjyblog 特性: 1. **用户管理**:Bjyblog 包含用户注册、登录、密码找回等功能,...
由于MiniLED背光技术的应用,LCD性能提升,缩小了与OLED的性能差距,加之韩国企业退出LCD市场的进度延缓,导致面板供需紧张和价格上涨的趋势将持续。 8. 行业投资评级及分析师建议:中航证券研究所给出的行业投资...
这一市场变动与北美电视出货量的增长以及电视型号的缺货现象密切相关。 2. 下游需求复苏情况:北美地区的电视需求复苏超出预期,表现为电视型号缺货和出货量的环比改善。例如,据Omdia数据,20Q2北美电视出货约931...