初学架构设计的第一步:需求、愿景与架构

了解<需求>、<愿景>与<架构>三者的关系。也就是<需求分析>、<观想愿景>与<架构设计>三者的关系。


一、需求(Requirements)分析:

这通常是由目前面临的问题(Problem)所引发出来的。着重于现实问题和条件的分析,然后寻求解决问题的方法、技术和资源。就系统开发人员来说,需求主要有两种:用户需求和系统需求。一般而言,人们通常会把它看成是系统开发时必须满足的<限制>(Constraint),也是要达成的<目标>(Goal)。

(视频课程,请点击上图)

二、观想愿景(Vision):

由于需求非常贴近现实,若直接拿来当作<目标>的话,常有见招拆招或见树不见林的缺点。甚至,会有<短视而缺乏远见>之嫌。于是,透过观想愿景来汇集更多视角、扩大视野、产生洞见,成为系统开发的理想目标。一般而言,带来重大革新的公司(如苹果)都会提出一个愿景(Vision),告诉人们应该去追求的事物。苹果公司的前首席设计师布鲁诺(R. Brunner)说道:“通常,伟大产品的成功之道并不是从草图和定义开始的,而是以一个点子(想法)开始,形成一条切实可行的路;然后对此不断开发和经营,这是一个战略性的过程。”

(视频课程,请点击上图)

三、架构(Architecture)设计:

  • 需求分析从现实(Reality)出发,不但找出问题,并且厘清它的现实条件和限制。观想愿景则指引出我们的方向和目标(Goal)。架构设计就从这个目标出发,以终为始,从愿景映射到现实(Mapping from
    vision toreality)。恰好与需求分析是相反的视角,两者互补而相成,殊途而同归,才能得出一条从现实通往目标之路(或蓝图),这就是所谓的架构(Architecture)了。

两者互补:需求分析偏重<分>,架构设计偏重<合>

  • <分>的另一面是<合>。需求分析注重于<分>,另一面是架构设计注重于<合>。许多人误认为,架构设计是要寻觅系统的共通性和不变性。其实,这是需求<分析>的工作;而不是架构<设计>的工作。在人们展开对事物(或系统)的分析(Analysis)过程中,自然而然会对其分析结果进行抽象,抽出万变不离其<宗>,把此宗视为不变的序(Order)或本质(Essence),就会得到系统的共通性和不变性了。如下图:

  • 需求分析与架构设计是两个不同视角,互补而相成,所以架构师必须兼顾两个视角,才能完成一个优质的架构(蓝图)。架构是独一无二的,架构设计是追求独特性的、气象万千的、与众不同的崭新组合。
  • 苹果乔布斯说:“创造无非就是把事物联结起来。即若是非凡的创造通常也不过是对已有事物进行的新组合和关联而已。”
  • 在《7 Brains:怎样拥有达芬奇(De Vinci)的7种天才》一书里,作者写道:“能不能看出事物的关系和模式,并做出不寻常的组合和关联,乃是创造力的核心要素。”
  • 例如在飞机行业里,架构师的愿景是把一群各自「不会飞」的组件(如轮胎、引擎、机翼、机尾、油箱等),以精致架构将它们巧妙地组<合>起来,竟然整体就飞起来了。如下图:

  • 从愿景出发,架构师心中先有<合>的目标,才来做分的动作。分离出很多接口,依据接口来组合出许多新奇的产品。
  • 例如肯德基餐厅卖炸鸡,肯德基是客人来之前大师傅先做分(庖丁解鸡),等客人来了才由柜台的小弟小妹迅速组合,如下图:

相關文章:

1. 两种观点兼顾的架构设计方法

~ End ~

时间: 2024-11-03 21:36:15

初学架构设计的第一步:需求、愿景与架构的相关文章

聊聊架构设计做些什么来谈如何成为架构师

一.架构的定义 在软件开发领域,自从架构这个词被广泛传播之后,产生的架构模式也非常多,架构关注点也在增加.但回到"道"的层面,架构的定义或者说本质还是: 架构,又名软件架构,是有关软件整体结构与组件的抽象描述,用于指导大型软件系统各个方面的设计. ----摘自<百度百科> 二.架构是做什么? 很多做业务功能的增删改查开发感受到无趣的小伙伴常把做架构想象成一片乐土,没有嘈杂的业务声音干扰,可以专心做一番牛X的技术.会把架构单纯的理解成,牛X的性能.牛X的TPS.高可用,支撑了

架构设计:前后端分离之Web前端架构设计

在前面的文章里我谈到了前后端分离的一些看法,这个看法是从宏观的角度来思考的,没有具体的落地实现,今天我将延续上篇文章的主题,从纯前端的架构设计角度谈谈前后端分离的一种具体实现方案,该方案和我原来设想有了很大的变化,但是核心思想没变,就是控制层是属于Web前端的. 在以前文章里我说道前后端分离的核心在于把mvc的控制层归为前端的一部分,原方案的构想在实际的生产开发里很难做到,我觉得核心还是控制层和视图层的技术异构性,这样后果使得系统改造牵涉面太大,导致在项目团队里,沟通.协调以及管理成本相对较高,

MySQL提升课程 全面讲解MySQL架构设计 打造扛得住的MySQL数据库架构

第1章 实例和故事决定电商11大促成败的各个关键因素.1-1 什么决定了电商双11大促的成败1-2 在双11大促中的数据库服务器1-3 在大促中什么影响了数据库性能1-4 大表带来的问题1-5 大事务带来的问题 第2章 什么影响了MySQL性能详细介绍影响性能各个因素,包括硬件.操作系统等等.2-1 影响性能的几个方面2-2 CPU资源和可用内存大小2-3 磁盘的配置和选择2-4 使用RAID增加传统机器硬盘的性能2-5 使用固态存储SSD或PCIe卡2-6 使用网络存储SAN和NAS2-7 总

架构设计实践二:需求分析

1.1 三个问题 掌握好需求分析,需要掌握三个问题的解决方式. 需求如何获得?需求开发=愿景分析+需求分析 如何判断需求全不全?功能.质量.约束三类需求 如何从需求转换为设计?功能.质量.约束对架构产生不同的影响. 1.2 软件研发与交付过程总图 其中概念化阶段一般都要完成愿景分析.风险评估.可行性分析及项目进度和成本的粗略估算,输出<愿景与范围文档>:需求分析阶段则完成需求捕获.需求分析,得到<软件需求规格说明书>,一个关键的思路是需求捕获与需求分析是迭代着进行的,完成需求捕获之

架构设计的方法学

约公元前25年,古罗马建筑师维特鲁威说:"理想的建筑师应该既是文学家又是数字家,他还应通晓历史,热衷于哲学研究,精通音乐,懂得医药知识,具有法学造诣,深谙天文学及天文计算."(好难哪,软件构架设计师的要求呢?大家好好想想吧.)   本文目录   一.与构架有关的几个基本概念:   二.构架设计应考虑的因素概揽:   三.程序的运行时结构方面的考虑:   四.源代码的组织结构方面的考虑:   五.写系统构架设计文档应考虑的问题   六.结语   一.与构架有关的几个基本概念:   1.模

[Architecture Design] 跨平台架构设计

[Architecture Design] 跨平台架构设计 跨越平台 Productivity Future Vision 2011 在开始谈跨平台架构设计之前,请大家先看看上面这段影片,影片内容是微软在2011年所描绘的未来生活蓝图.在观看的过程中,请大家以「软件开发人员」的角度来思考,想想软件开发人员在其中扮演甚么样的角色. 「Productivity Future Vision 2011」 这段影片里面所描绘未来产品,把时间轴拉到现在来看,其实有许多概念已经悄悄融入我们的生活之中.像是影片

电商峰值系统架构设计--转载

1.1 系统架构设计目录 摘要:双11来临之际,<程序员>以“电商峰值系统架构设计”为主题,力邀京东.当当.小米.1号店.海尔商城.唯品会.蘑菇街.麦包包等电商企业,及商派.基调网络等服务公司,分享电商峰值系统架构设计的最佳技术实践. 自2009年11月11日,淘宝商城(现名天猫)拉开网购狂欢节的序幕,各大电商的促销浪潮此起彼伏.此时的电商大战不仅是价格之争,更是技术的较量.如何设计电商峰值系统来更好地满足用户蜂拥而至的访问,如何在海量数据处理中实时发现有效信息并转化为商机,成为众多电商企业密

软件设计入门1 架构设计

热爱编程才能做优秀的软件设计师! 软件设计有一些方法可以参考.但更重要的是要有好的需求分析.丰富的技术知识和设计经验(多动手!)不断追求更好的精神(多动脑!). 遇到别人的系统想一下自己能否实现,如何实现? 一.优秀设计的标准:性价比高的设计. 1)优秀的设计都是需求驱动的,不熟悉需求就做出来的设计是不靠谱的: 2)优秀的设计应该是当前团队能理解能实现的,太超前的设计项目团队做不出来,这个设计只能是摆设: 3)优秀的设计应充分考虑当前各种限制条件,适当做出平衡,能保证达成项目的目标: 4)优秀的

HRMS(人力资源管理系统)-SaaS架构设计-概要设计实践

一.开篇 前期我们针对架构准备阶段及需求分析这块我们写了2篇内容<HRMS(人力资源管理系统)-从单机应用到SaaS应用-架构分析(功能性.非功能性.关键约束)-上篇><HRMS(人力资源管理系统)-从单机应用到SaaS应用-架构分析(功能性.非功能性.关键约束)-下篇>内容来展开说明. 本篇主将详细的阐述架构设计过程中概要架构设计要点来和大家共同交流,掌握后续如何强化概要架构设计在架构设计中作用,帮助我们快速确认架构的方向及核心大框架. 在阐述具体的概要架构工作方法之前,还请大家