`
yimlin
  • 浏览: 138911 次
  • 性别: Icon_minigender_1
  • 来自: 福州
社区版块
存档分类
最新评论

关于架构的思考

 
阅读更多

 作者: Anders小明  


一、            
架构是什么

通常关于架构的第一个问题是架构是什么,很自然也很正常,本文也不能免俗。然而关于这个问题却没有一致性答案,同时也要注意到不同应用的架构实质上存在不同差异性。

      (一) 架构的定义

架构,虽然人们一直在讨论它,甚至于每天都在同其工作,然而这个词并没有一个被业界广泛认可的定义。

大致而言,架构的定义分为三类:

 

类别

定义

结构论

牛津高阶词典: The design an structure of a computer system

韦氏大辞典: The way in which the parts of a computer are organized

IEEE: The fundamental organisation of a system embodied in its components, their relationships to each other, and to the environment,and the principle guiding its design and evolution

关键论

架构是系统中最关键的20%,关注在系统非功能性需求

文化论

架构是关于系统一些的决策

 

       (二) 架构的分类

架构由于应用的不同而存在不同。大体而言,我们可以将当前的应用分为如下四种:互联网应用、企业应用、桌面/移动应用和游戏。

需要一提的是,虽然几种应用的存在一定的模糊性,某种技术为多种应用所共用,例如很多的企业应用基于互联网技术SaaS,以及移动设备的支持。但依然存在很大的不同。

 

特别的,对于企业架构,大体存在如下几种流派:

      1.       TOGAF, OpenGroup组织提出,围绕业务、应用、技术和数据四个方面描述架构;

      2.       DoDAF/MoDAF,美国和英国国防部提出的架构方案;

      3.       Zachman Framework, 根据不同角色的5W1H来审视架构;

      4.       4+1视图,由Philippe Kruchten提出,并被RUP采纳;

 

(三) 架构的关键非功能指标

通常来讲,架构所关注的非功能需求可以分为三个角度5个特性,如下:

 

角度

特性

说明

运营角度

伸缩性

主要为水平扩展能力

可靠性

包括容错性、可用性和安全性等;

开发角度

维护性

 

扩展性

能否快速应对业务的变化

应用角度

易用性

对最终用户是否友好

非功能性指标当然不止这些,如下是一些参考:

      1.         ISO 9126提出的质量特性:

     

 

       2.         或者通过如下三个视图来进行:

                               i.        业务视角

Time To MarketCost and BenefitsProjected life timeTargeted MarketIntegration with Legacy SystemRoll back Schedule

                             ii.        最终用户视角

PerformanceAvailabilityUsabilitySecurity

                            iii.        开发视角

MaintainabilityPortabilityReusabilityTestability

       3.         也可以通过诸如:简洁性、清晰和一致性等指标。

 

不同类型的应用关注点会有很大不同,例如:互联网应用由于面临大量的最终用户,会特别关注于伸缩性、可靠性和易用性,这并不是说互联网应用不关注维护性和扩展性,只是会更加强调另外三个特性;而企业应用由于关注于数据、流程以及业务的适应性,会更多得强调维护性和扩展性,而其他特性如易用性相对弱化(面对内部用户,强制使用),伸缩性(内部用户访问量少,大部分情况下通过现有硬件即可支持)。同时,企业应用对数据一致性和准确性要求非常高,而互联网应用相对可以容忍一定的不一致性和错误。因此,一个企业应用的架构师可能无法设计互联网应用的架构。

 

二、             架构有什么

架构有什么,通常会来一张或者一堆好看的图画。既然本篇不讨论具体应用,故而也拿不出啥图了,也不想讨论这些。因为不同的应用存在的差异,非本文所能涵盖。这里就想讨论下形形色色架构图的背后的内容,以及隶属架构但未在架构图表达的内容。

 

《易经·系辞》有云:“形而上者谓之道,形而下者谓之器”,将架构分为“形而上”和“形而下”两个部分,如下图:

     

 

       (一) 形而上

形而上体系中,除去前置内容,分为文化和支撑两大块。

其中,文化部分里最重要的就是原则方法论,例如:关注点分离原则(SoC),面向对象分析设计和领域驱动设计等等。在此之下,就是架构模式算法,常见架构模式为:结构化(分层、管道流、黑板)、分布式(代理和管道流)、交互系统(MVCPAC)和适配系统(微内核、元数据)。当然还有更低一层次的设计模式(创建、结构和行为)。

       (二) 形而下

形而下分为三个部分,运行时、工具和文档。

其中,运行时的内容按照重要性依次为:语言、平台/中间件、框架、类库和工具,具体在企业应用中就是:Java/C#Windows/LinuxApplication Server/DatabaseSpring/Hibernate等等。

如果说运行时决定最终能力,则工具就事关效率。工具中最常见的是集成开发环境了,此外还有配置、部署和测试工具。

文档部分是另一个重要的内容,应包括:视图(从不同角色出发,可以参考4+1),范例和各种指导参考文档。

 

三、             架构如何设计

如果把“形而下”当成架构设计的产出,那么架构设计往前追溯,就有输入和加工过程。

       (一) 架构的输入

架构的输入包括三个部分:目标、需求和相应约束。其中:目标是大方向内容,需求关注在细节,而约束对目标的达成提供了限定。特别的,关注在非功能性指标上。

       (二) 架构的设计过程

架构的设计从需求分析开始,结合参考模型或者已有架构体系,结合原则、方法论等等作料。其主要活动有:技术选型、脚手架/框架/平台搭建等等。

       关于具体过程的描述,可见《如何定义和建立架构》。

 

四、             架构如何评估

架构设计出后一个重要的工作是对架构(形而下部分)进行评估,进行架构评估的必要性在:使得架构设计工作形成闭环,确保当前架构是合适和正确的。

大体上,架构评估有三种方法:

·           ATAM: Architecture Tradeoff Analysis Method

·           SAAM: Software Architecture Analysis Method

·           ARID: Active Reviews for Intermediate Designs

在进行架构评估工作时,首先要确定架构评估的参与人,包括相应的干系人和独立的评估队伍;然后是确定评估的时机:早期(在架构设计期间就参与评估)和晚期(传动的,在架构设计完成后)。

评估内容包括如下:

      1.         首先是要满足其输入:目标、需求和约束;

      2.         各项的非功能性指标;

 

五、             小结

以如下思维导图作为本文的小结:

      

分享到:
评论
1 楼 semmy 2011-07-01  
牛人,我的偶像

相关推荐

    区块链应用架构思考

    区块链应用架构思考 区块链应用架构思考 区块链应用架构思考 区块链应用架构思考 区块链应用架构思考 区块链应用架构思考

    编程语言中的架构思考-姚钢强.pdf

    在编程领域,架构思考是构建高效、稳定和可扩展系统的关键。姚钢强在其讲座“编程语言中的架构思考”中,分享了他在不同项目中积累的经验,特别是在优化系统性能、提高稳定性以及资源利用效率方面的实践。 首先,姚...

    前端团队管理 前端基础架构的实践和思考 共22页.pdf

    前端团队管理与前端基础架构的实践和思考 前端团队管理是指在软件开发过程中,负责前端开发的团队如何更好地发挥职能作用,提高团队的效率和质量。本文将探讨前端团队的职能转变、前端基础架构的构建和实施,以及...

    ERP技术架构发展,对做ERP整体技术架构思考有概览好处

    ERP技术架构发展,台湾版,对做ERP整体技术架构思考有概览好处

    工商银行IT架构转型思考.docx

    #### 六、高层领导对于IT架构转型的思考 - **中国工商银行行长谷澍的观点:** - IT架构作为企业架构的基础,是实现业务发展目标的重要支撑。 - 随着金融服务的多元化和数据量的爆发式增长,IT系统需要在数据处理...

    大型网站系统架构思考

    大型网站系统架构思考,针对于大型网站系统开发架构做出详细解析

    软件架构设计分层模型和构图思考.docx

    软件架构设计分层模型和构图思考 软件架构设计是一个复杂的问题,需要架构师具备系统思维、结构化思维、编程思维等多种思维模式。架构设计的核心作用是建立业务现实世界和抽象的 IT 实现之间的一道桥梁,要求架构师...

    思考软件-创新设计 A段架构师的思考技术

    《思考软件,创新设计——A段架构师的思考技术》介绍当今全球正蔚为风潮的设计思考(Design Thinking)技术,陪伴你从目前的编程或设计岗位进入架构设计(A段和B段),踏上灿烂的软件(程序)生涯的新旅程。...

    Android架构师手册_建模与图形思考--高焕堂

    在规划架构或框架的阶段,还没开始动工撰写Android 程序码,那么架构师如何进行创意思考呢? 又如何将创意设计表达出来,争取自己公司老板和业主的支持(例如投资)呢? 大家都知道,像举世公认的创意天才:达芬奇...

    宋宝华 - Linux驱动的架构思考

    宋宝华在MDCC 2015中国移动开发者大会上发表的主题演讲“Linux驱动的架构思考”中,深入探讨了Linux驱动架构的设计理念与实践。 演讲首先强调了Linux支持的众多体系架构,目前已有大约30种不同的体系架构得到支持。...

    百度林仕鼎:架构设计的一些思考

    根据提供的标题、描述以及部分文档内容,我们可以提炼出关于架构设计的重要知识点,主要涉及存储、分布式、服务和计算模型等方面。 ### 架构设计的重要考量因素 #### 1. **存储设计** - **数据布局**:数据如何在...

    中国跨国公司经营模式架构思考.doc

    中国跨国公司经营模式架构思考.doc

    5g移动网络新技术及核心网架构思考-移动网络-计算机.pdf

    5G 移动网络新技术及核心网架构思考 本文主要探讨了 5G 移动网络新技术及核心网架构的思考,涵盖了 5G 网络通信新技术概述、5G 网络核心架构等方面的内容。文章首先对 5G 网络通信新技术进行了概述,包括 Small ...

    关于软件和架构的思考

    最近转岗到架构部,对软件、系统,和软件架构系统性的看了一些书,做了简单的整理

    现代架构设计需求和方案思考

    ### 现代架构设计需求和方案思考 #### 传统稳定架构设计方案的局限性 在传统的架构设计中,人们往往采用一种稳定不变的设计方案来应对不断变化的业务需求。这种设计通常包括分层架构(如数据层、服务层、中间件层...

    做架构师——架构师能力模型解析.pdf

    "架构师能力模型解析" 架构师是一个职业名称,而不是一个技术高下的职位名称。要想成为一个优秀的架构师,需要具备“个人特性”和“技术技能”两个方面的能力。“个人特性”包括人际关系的能力和业务能力,而“技术...

    安全多方计算体系架构及应用思考.docx

    安全多方计算体系架构及应用思考.docx

    SilverlightQQ项目实践与架构思考

    【SilverlightQQ项目实践与架构思考】 SilverlightQQ是一个基于微软的Silverlight技术开发的即时通讯应用程序,它展示了Silverlight在构建富互联网应用(RIA)方面的潜力。Silverlight,作为.NET Framework的一部分...

    Java框架研发思考

    ### Java框架研发思考 #### 背景与动机 在软件工程领域,特别是在Java平台下进行应用开发时,框架的研发不仅是技术挑战的体现,更是对未来技术趋势的一种预测和引导。本文作者彭晨阳分享了他在开发Jdon框架过程中...

Global site tag (gtag.js) - Google Analytics