《系统架构:复杂系统的产品设计与开发》——第1章,第1.2节良好架构的优势-阿里云开发者社区

开发者社区> 华章计算机> 正文

《系统架构:复杂系统的产品设计与开发》——第1章,第1.2节良好架构的优势

简介:
+关注继续查看

本节书摘来自华章出版社《系统架构:复杂系统的产品设计与开发》一书中的第1章,第1.2节良好架构的优势,作者[美]布鲁斯·卡梅隆,更多章节内容可以访问云栖社区“华章计算机”公众号查看。

1.2良好架构的优势
这些复杂的系统能否满足利益相关者的需求并体现出价值?它们是否能够轻松地整合、灵活地进化?它们操作起来是不是很简单,运作得是不是很可靠?架构良好的系统确实是如此。


9f0dc962ed48eb34312d779a9b2881fe3979feac

用最简单的方式来说,架构就是对系统中的实体以及实体之间的关系所进行的抽象描述。在由人类所构建的系统中,架构可以表述为一系列的决策。
本书基于这样一个前提:如果我们能够找出使系统架构得以确立的决策点,并谨慎地做出决策,那么系统更有可能取得成功。本书想要把与早期的系统决策有关的经验与分析方式总结出来,并指出这些决策之间的共性。在过去30年间,分析与计算能力的提升使得我们拥有更多的选项以及更加广阔的权衡空间(trade space)。在很多领域,权衡空间的增长速度已经超越了我们理解它的速度。系统架构领域的发展,得益于一些从业者的努力,他们试着把在过去的设计工作中所得到的专业经验总结起来,并加以推广,使我们可以借此来解决以后可能出现的设计问题。
产品和系统所处的竞争环境是残酷的。波音公司(Boeing)对787客机及其复合材料的研发,就是一项“以公司的前途作为赌注”的行动。波音是全球两个大型客机制造商之一,它的核心业务模式,并不是把风险分散到许多小的项目中,而是把成功的希望寄托在一件产品上。与客机市场相比,移动设备的市场要更大一些,而且目前的竞争还是比较激烈的。尽管移动产品的研发风险显得更加分散(也就是说,某一件产品的研发投入额,在公司的总资金中所占的比例更小),但依然有黑莓(BlackBerry)及爱立信(Ericsson)这样的巨头在竞争中衰落。为了占领市场份额,系统必须要能够提供创新的产品、融合新鲜的技术,并满足多样的市场需求。为了在紧张的市场竞争中占得优势,设计系统时要优化它的生产成本,而且要通过多层次的供应链来进行生产。良好的架构决策可以使公司在艰难的市场环境中取得竞争优势,而不良的架构决策则会使大型的研发活动从刚一开始就变得难以推行。
由人类构建的每个系统,都有其架构。手机软件、汽车、半导体生产设备等产品,都是由早期研发环节中的几个关键决策所确定的。比如,在汽车的研发工作中,像发动机的安装方式等早期技术决策,会影响后续的很多其他决策。如果选择将发动机横置,那么发动机的模组设计、变速箱、传动系统、悬架系统及乘客舱都要受影响。系统的架构在很大程度上影响着产品的结构。
在设计复杂系统时,有许多早期的架构决策都是在不了解系统最终样貌的情况下做出的。这些早期决策对最终的设计有重大的影响。它们限定了性能的范围及可供考虑的生产地点,也决定了供应商是否能够分得配件市场(aftermarket)的收入份额。有时需要收集下游的信息以供上游使用,例如John Deere的农作物喷洒车,其宽度就必须小于生产基地两个柱子之间的距离。在这种情况下,开发团队能够明确地知道宽度的限制,因为它并不是一个未确定的或隐藏的因素,然而在农作物喷洒车的产能方程中,宽度却是一个主要的变量,因此,开发团队还是需要收集此信息。
本书的核心观点是认为这些早期决策可以加以分析和处理。尽管充满着不确定的因素,有时甚至不知道各个组件的详细设计情况,但是我们所做的系统架构依然要能经得起检验。架构系统的过程是柔性的,它是科学与艺术的结合。我们并不指望此过程能够成为或应该成为可以产生最优方案的线性过程,而是想在本书中把我们在系统架构工作中的一些核心理念及做法总结出来。我们的核心观点是:结构良好的创造活动要优于毫无结构的创造活动。
对决策的关注,使得系统架构师可以直接权衡每个决策的各种选项,而不用深入它们所对应的底层设计,这能够促使我们去评估更多的概念。同时,这套决策语言也使得系统架构师可以根据每个决策对系统效能的影响力来调整决策之间的顺序,很少有哪个系统的架构是一次就定好的,它们一般都是在逐步评估一系列决策之后才定出来的。
美国国家极轨环境卫星系统(National Polar-Orbiting Environmental Satellite System,NPOESS)的失败,就是架构决策妨碍系统发展的例子。NPOESS项目创立于1994年,旨在把原有的两个气象卫星项目合并起来,一个是民用的天气预报项目,另一个是军用的天气与云量图像项目。这次合并不是完全没有道理的,因为原有那两套相关数据的收集系统,展现出了13亿美元的合并机会[9]。合并之后的项目,在早期阶段就决定把原先那两个项目的设备所具有的能力都涵盖进来。比如,要把原有的三台设备所具有的功能,都集成到可见红外光影像辐射仪(Visible Infrared Image Radiometer Suite,VIIRS)中。
这项合并计划有一个假设,认为新项目的功能复杂度与原有那两个项目的复杂度之和呈线性比例。假如这个项目的需求和概念是从原先那些设备中得出的,那么这个假设或许能够成立。然而接下来还有一项决策,却令系统的架构完全无法发挥其效能,这项决策列出了一些脱离系统概念的新功能。比如,它要把原有的三台设备所应完成的任务,全都交给VIIRS这一台设备来完成,可是VIIRS的重量和体积,比原先那三台设备中的任何一台都小。
早期的一系列架构决策,导致NPOESS项目进展得漫长而艰辛,这些决策想要创建的那些详细设计方案,忽视了系统中的一些基本问题。而且,由于项目早期并没有指定一位架构师来负责对这些决策进行权衡,因此后面会遇到种种障碍。该项目于2010年取消,原来估计耗资65亿美元,实际上花了85亿美元。
本书并不会给出一套开发产品所用的公式,也不打算编成一本产品开发手册。我们不能保证按照本书的做法一定可以成功。经验告诉我们:错误的架构可能会毁掉整个项目,而“正确的”架构仅仅是创建了一个产品开发平台,产品可以依赖这个平台而取得成功,但也依然有可能失败。
本书的内容在许多方面是可以适用于各种系统的,这些系统有的是由人类构建的,还有的是经过社会发展或自然进化而形成的。无论是构建出来的系统,还是演化而成的系统,我们都可以分析它的架构。比如,研究脑部的学者,想要展开脑部的架构;城市的规划者,要处理城市的架构;政治学者与社会学者要理解政府及社会的架构,等等。本书所关注的系统,主要是由人类所构建的系统。

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
《Kinect应用开发实战:用最自然的方式与机器对话》一3.1 Kinect for Xbox 360的产品设计
本节书摘来自华章出版社《Kinect应用开发实战:用最自然的方式与机器对话》一书中的第3章,第3.1节,作者 余涛,更多章节内容可以访问云栖社区“华章计算机”公众号查看
1146 0
一起谈.NET技术,Microsoft NLayerApp案例理论与实践 - 多层架构与应用系统设计原则
  在对NLayerApp实际项目进行讨论之前,让我们首先学习一下(或者应该说重温一下)分层/多层架构与应用系统设计原则。很多朋友会认为这些都是老掉牙的内容,只要是软件从业人员,都会对这些内容非常熟悉。
925 0
《Linux内核设计的艺术:图解Linux操作系统架构设计与实现原理》——2.10 初始化缓冲区管理结构
本节书摘来自华章计算机《Linux内核设计的艺术:图解Linux操作系统架构设计与实现原理》一书中的第2章,第2.10节,作者:新设计团队著, 更多章节内容可以访问云栖社区“华章计算机”公众号查看。
1085 0
课程干货免费学!一起解读Spring Cloud微服务架构设计与开发实战(第一期)
阿里云开发者学堂全员开课计划上线!阿里云开发者学堂将为开发者提供超多免费Java精品课!本次干货总结了——Java Spring Cloud微服务实战课时课程内容 。阿里云开发者学堂是开发者学习成长的一站式学习平台,为开发者构建完善的学习成长体系、技术赋能。Java Spring Cloud是全球范围内成熟、完善、流行的微服务架构方案体系,被众多的互联网大公司采用,包括阿里巴巴、腾讯、支付宝、网易、IBM、谷歌、京东、百度、滴滴等。为给同学带来最佳学习效果,课程文字、课程链接、图谱地址统统为大家放送了哦!
238 0
《Linux内核设计的艺术:图解Linux操作系统架构设计与实现原理》——2.11 初始化硬盘
本节书摘来自华章计算机《Linux内核设计的艺术:图解Linux操作系统架构设计与实现原理》一书中的第2章,第2.11节,作者:新设计团队著, 更多章节内容可以访问云栖社区“华章计算机”公众号查看。
787 0
《Linux内核设计的艺术:图解Linux操作系统架构设计与实现原理》——2.14 进程0由0特权级翻转到3特权级,成为真正的进程
本节书摘来自华章计算机《Linux内核设计的艺术:图解Linux操作系统架构设计与实现原理》一书中的第2章,第2.14节,作者:新设计团队著, 更多章节内容可以访问云栖社区“华章计算机”公众号查看。
1148 0
我在架构设计和代码开发中的一些常用原则
在日常的开发和设计过程中,大家对技术设计上的一些问题往往会面临很多的选择,不同的人会有不同的选择。本文介绍的就是我在工作中遇到的一些问题而总结和使用到的一些常用原则。
1134 0
《Linux内核设计的艺术:图解Linux操作系统架构设计与实现原理》——2.9 初始化进程0
本节书摘来自华章计算机《Linux内核设计的艺术:图解Linux操作系统架构设计与实现原理》一书中的第2章,第2.9节,作者:新设计团队著, 更多章节内容可以访问云栖社区“华章计算机”公众号查看。
1447 0
10059
文章
0
问答
来源圈子
更多
+ 订阅
文章排行榜
最热
最新
相关电子书
更多
文娱运维技术
立即下载
《SaaS模式云原生数据仓库应用场景实践》
立即下载
《看见新力量:二》电子书
立即下载