精华内容
下载资源
问答
  • 架构师之路(六)五视图方法论
    千次阅读
    2019-03-11 16:44:05

    孙子曰:凡治众如治寡,分数是也;斗众如斗寡,形名是也。

    一、软件架构设计的五视图

    根据关注角度的不同,软件架构又分为逻辑架构、开发架构、运行架构、数据架构和物理架构。

     

    逻辑架构:着重考虑功能需求,系统应当向用户提供什么样的服务,关注点主要是行为或职责的划分。逻辑架构关注的功能,不仅包括用户可见的功能,还应当包括为实现用户功能而必须提供的辅助功能。逻辑架构更偏向我们所说的“分层”,像经典的“三层架构”。逻辑架构的静态方面是抽象职责的划分,动态方面是承担不同职责的逻辑单元之间的交互与协作关系。

    开发架构:着重考虑开发期间的质量属性,关注点是在软件开发环境中软件模块(包)的实际组织方式,具体涉及源程序文件、配置文件、源程序包、编译打包后的目标文件,还包括应用程序依赖的SDK、三方库、中间件以及开发的系统将运行于其上的系统软件和逻辑架构有紧密的关联。

    运行架构:着重考虑软件运行期间的质量属性,关注点是系统的并发、同步、通信等问题,这势必涉及到进程、线程、对象等运行时概念。运行架构的静态方面关注软件系统运行时的单元结构,动态方面关注运行时单元之间的交互机制。例如比较常见的“线程同步”问题、死锁问题、对象的生命周期问题等。

    物理架构:重考虑安装和部署需求,主要关注软件运行的系统、网络、服务器等基础设施以及如何通过服务器部署和配置网络环境,来实现应用程序的可伸缩性、高可用性等。

    数据架构:着重考虑数据需求,关注点是持久化数据的存储方案,不仅包括实体及实体关系数据存储格式,还可能包括数据传递、数据复制、数据同步等策略问题。如何选择关系型数据库、NOSQL,如何保障数据存储层面的性能、高可用性、灾备。

    前三种视图,可以归纳为软件架构,而后两种架构,则归为系统架构。
     

    二、五视图成果物

    架构视图重点考虑关注点成果物
    逻辑架构功能需求行为和职责的划分
    1. 分层设计
    2. 包和接口设计
    3. 数据流设计
    4. 协作设计
    5. 用例设计
    6. 业务流程设计
    开发架构扩展性、可重用性、可移植性、易测试性

    模块组织形式:

    1. 代码模板化
    2. 模块重用
    3. 高内聚
    4. 开发规范
    5. 模块可扩展
    6. 模块可维护
    7. 团队协作开发
    8. 模块通用性
    1. 包图、类图
    2. 组件图
    运行架构性能、伸缩性、高可用、安全性并发和同步
    1. 序列图
    2. 协作图
    物理架构安装和部署的需求硬件的可伸缩性、高可用性
    1. 部署图
    数据架构数据存储的需求性能、高可用性、灾备
    1. E-R图

     

     

     

    更多相关内容
  • 软件架构设计-五视图方法论
  • 从软件的架构角度来看,划分了5种架构视图,分别是:逻辑架构、开发架构、运行架构、物理架构、数据架构。 架构视图 着重考虑 关注点 描述方式 逻辑架构 1.功能需求——系统应答向用户提供什么样...

    从软件的架构角度来看,可以划分为5种架构视图,也就是我们常说的五视图,自上而下,分别是:

    • 逻辑架构
    • 开发架构
    • 运行架构
    • 物理架构
    • 数据架构

    架构视图着重考虑关注点描述方式
    逻辑架构1.功能需求——系统应答向用户提供什么样的服务。2.不仅包括用户可见的功能,还包括为实现用户功能而必须提供的“辅助功能模块”行为和职责的划分。分层架构,功能模块或者类图。UML:静态——包图,类图,对象图;动态——序列图,协作图,状态图,活动图。
    开发架构1.着重考虑开发环境中模块的实际组织方式 2.包括源程序文件、配置文件、源程序包、编译后的目标文件和第三方库文件等。软件开发环境中软件模块实际组织方式——具体涉及源程序文件,配置文件,源程序包,编译后的目标文件和第三方库文件。UML:包图,类图,组件图
    运行架构运行期质量属性——性能,可伸缩性,持续可用性,安全性系统的并发和同步,涉及进程和线程技术。UML:包图类图对象图来说明运行时的关键的概念;序列图,协作图等来描述交互机制。
    物理架构安装和部署的需求——包括计算机,网络,硬件设施情况,以及如何部署软件单元如何映射到硬件,以及硬件相关的可靠性,可伸缩性,性能和安全性等。UML:部署图,组件图
    数据架构数据需求持久化数据的组织,数据传递,数据复制和数据同步策略。E-R图

    展开全文
  • 摘要 ...一、五视图介绍 (一)逻辑架构设计着重考虑功能需求 系统应当向用户提供什么样的服务,关注点主要是行为或职责的划分。逻辑架构关注的功能,不仅包括用户可见的功能,还应当包括...

    摘要

    软件架构是从宏观上说明一套软件系统的组成与特性,包括软件可以提供什么样的功能,软件代码的层次结构,软件的部署与网络结构,软件的数据结构,软件的性能特征。上面说到的几个方面就可以用五视图法来表示。五视图法做架构设计的步骤是逻辑架构->数据架构->开发架构->运行架构->物理架构。

    一、    五视图介绍

    电脑萤幕 低可信度描述已自动生成


    (一) 逻辑架构设计着重考虑功能需求

    系统应当向用户提供什么样的服务,关注点主要是行为或职责的划分。逻辑架构关注的功能,不仅包括用户可见的功能,还应当包括为实现用户功能而必须提供的辅助功能。逻辑架构的静态方面是抽象职责的划分,动态方面是承担不同职责的逻辑单元之间的交互与协作。

    (二)开发架构的设计着重考虑开发期质量属性

    关注点是在软件开发环境中软件模块的实际组织方式,具体涉及源程序文件、配置文件、源程序包、编译打包后的目标文件、直接使用的第三方SDK/框架/类库、以及开发的系统将运行于其上的系统软件或中间件。

    (三)运行架构的设计着重考虑运行期质量属性

    关注点是系统的并发与同步等问题,这势必涉及到进程、线程、对象等运行时概念,以及相关的并发、同步、通信等。运行架构的静态方面关注软件系统运行时的单元结构,动态方面关注运行时单元之间的交互机制。

    (四)物理架构的设计着重考虑安装和部署需求

    关注点是目标程序及其依赖的运行库和系统软件最终如何安装或部署到物理机器,以及如何部署机器和网络来配合软件系统的可靠性、可伸缩性、持续可用性、性能和安全性等要求。

    (五)数据架构的设计着重考虑数据需求

    关注点是持久化数据的存储方案,不仅包括实体及实体关系数据存储格式,还可能包括数据传递、数据复制、数据同步等策略。

    二、    案例分析

    基于五视图法的酒店管理系统架构设计可以确定组成软件系统的程序模块和以程序模块为单位、用层次结构表示的软件结构,以及各模块的功能描述和借口描述。

    (一) 逻辑架构设计

    系统可划分为三个子系统,采购管理子系统、门店管理子系统和客服管理子系统。

    表格 描述已自动生成


    子系统都有用户登陆功能块。用户修改信息:指用户可以随时修改自己的信息,特别是用户密码必须经常修改,以防止他人盗用自己的身份操作系统,破坏数据库数据。取回密码:当用户忘了密码时,使用该功能通过简单的回忆获得自己的密码。

    图示, 日程表 描述已自动生成

     
    门店管理子系统包含五大模块。

    表格 中度可信度描述已自动生成


    客服管理子系统包括2大功能,分别是:客房预订,会员管理。


    (二) 开发架构设计

    系统采用三层架构模型进行开发,将系统分成三个部分:数据表现层、业务逻辑层和数据处理层。

    图示 描述已自动生成


    数据表现层负责用户与系统之间的交互,主要表现在将系统的数据按照用户的业务操作按照一定的规则显示在页面上,利用JSP页面技术来实现。在酒店管理中,数据表现层根据用户类别的不同分别展现不同的用户界面和功能,具体分为门店管理员界面、采购管理员界面、客服管理员界面、客人界面。

    业务逻辑层主要完成各个子系统之间的通信和交互,以实现系统的业务功能,在本系统分为门店管理、采购管理和客服管理。

    数据处理层主要实现系统的数据和数据库之间的交互,利用JSP和JDBC数据库的处理模块实现。

    (三) 运行架构设计

    文本, 信件 描述已自动生成


    (四) 物理架构设计

    图示 描述已自动生成

    (五) 数据架构设计

    图示 描述已自动生成


    三、    总结

    不同的架构视图代表不同的人对软件内部结构的不同看法,对于架构视图的选择和架构视图的数目,视实际的需要决定,并没有所有的软件在设计的时候都需要这5个视图,也不是只有这5个视图,能清晰地表达出系统设计的主要内容即为最优。 

    展开全文
  • 软件架构设计-五视图方法论

    万次阅读 多人点赞 2017-09-27 09:15:01
    在实际工作中,我们经常听到“架构”和“架构师”这样的名词,并不新鲜,但是总让很多刚入门的 ​​​在实际工作中,我们经常听到“架构”和“架构师”这样的名词,并不新鲜,但是总让很多刚入门的人感觉很神秘,...

    在实际工作中,我们经常听到“架构”和“架构师”这样的名词,并不新鲜,但是总让很多刚入门的
    ​​​在实际工作中,我们经常听到“架构”和“架构师”这样的名词,并不新鲜,但是总让很多刚入门的人感觉很神秘,甚至是高深莫测。很少有人对“架构”有全面的了解和认识能并说清楚架构是什么,更谈不上掌握了。事实上,也只有极少数人能成为或者被冠以“架构师”这样的title。为此,笔者总结了对架构的一些理解,希望能够补充很多初入门的人在这方面认识上的不足,纠正一些误解。高手和老鸟就直接跳过吧。

    架构的分类

    对于“架构”来讲,理论上划分了5种架构视图,分别是:逻辑架构、开发架构、运行架构、物理架构、数据架构。根据名字,大家都可能大概能猜到其侧重点和含义。这里先用通俗的文字简单介绍下,便于大家理解,大家可以不必纠结概念和这些理论。

    • 逻辑架构:逻辑架构关注的是功能,包含用户直接可见的功能,还有系统中隐含的功能。或者更加通俗来描述,逻辑架构更偏向我们日常所理解的“分层”,把一个项目分为“表示层、业务逻辑层、数据访问层”这样经典的“三层架构”。

    • 开发架构:开发架构则更关注程序包,不仅仅是我们自己写的程序,还包括应用程序依赖的SDK、第三方类库、中间价等。尤其是像目前主流的Java、.NET等依靠虚拟机的语言和平台,以及主流的基于数据库的应用,都会比较关注。和逻辑架构有紧密的关联。

    • 运行架构:顾名思义,更关注的是应用程序运行中可能出现的一些问题。例如并发带来的问题,比较常见的“线程同步”问题、死锁问题、对象创建和销毁(生命周期管理)问题等等。开发架构,更关注的是飞机起飞之前的一些准备工作,在静止状态下就能规划好做好的,而运行架构,更多考虑的是飞机起飞之后可能发生的一些问题。

    • 物理架构:物理架构,更关注的系统、网络、服务器等基础设施。例如:如何通过服务器部署和配置网络环境,来实现应用程序的“可伸缩性、高可用性”。或者举一个实际的例子,如何通过设计基础设施的架构,来保障网站能支持同时10W人在线、7*24小时提供服务,当超过10W人或者低于10W人在线时,可以很方便的调整部署架构来支撑。

    • 数据架构:数据架构,更关注的是数据持久化和存储层面的问题,也可能会包括数据的分布、复制、同步等问题。更贴切来讲,如何选择需要的关系型数据库、流行的NOSQL,如何保障数据存储层面的性能、高可用性、灾备等等。很多时候,和物理架构是有紧密联系的,但它更关注数据存储层面的,物理架构更关注整个基础设施部署层面。

    上面讲了那么多,相信国内很少有公司是严格按照这五种视图去分工和设计的。其实在笔者眼中,架构大致分为两种:软件架构、系统架构。前三种视图,可以归纳为软件架构,而后两种架构,则归为系统架构。这也比较符合国内大部分中小型互联网公司的现状。

    根据应用特性的不同,关注侧重点可能不同。例如,某些门户类的互联网应用,读多写少而且业务相对比较简单,则更加关注“高性能、可伸缩性、可用性”等方面。对于更加复杂的应用,例如电商类大规模交易型的应用,对每个层面和每个环节都会比较关注。对于业务型的系统,例如一些生产型企业使用的ERP,或者仅供企业内部使用的一些MIS、OA应用,通常更关注功能和复杂的业务和实现和扩展,而对性能等方面又可能不要太高,这类应用则更关注纯软件架构层面。这里,不展开做具体讨论。所以很多时候,架构师也需要是一个团队,而不是一个人“全栈”。

    架构设计到底是什么

    在长期的技术招聘面试中,我发现在很多人眼中,架构就是分层,架构设计就是“三层架构”(或者四层、五层…反正分层越多就说明项目越复杂而且架构就越牛),或许是受到诸如PetShop之类的示例项目的影响,这里暂时不去追究原因了。

    之前已经纠正过很多人的误解-架构不只是软件架构。说一下通俗点的理解:

    软件架构就是实用而且优雅的设计,它不在于分多少层,或者应用了多少种设计模式/架构模式等。它应该是以满足实现用户需求为前提,以开发人员普遍可接受为根本的,而且要符合系统特性和业务发展需要的,从软件设计的角度,能够达到层次清晰、可维护、可重用、可扩展…就非常优秀了,无需刻意去纠结分了多少层,是否使用了什么模式,有多么抽象等。以面向对象设计为例,基本目标是“高内聚、低耦合”,为此我们可能会遵循一些常见的设计原则(例如经典的SOLID设计原则)。最后纠正一点,通常我们所说的模式,其实又分为很多种,并不是仅仅指的是“设计模式”(设计模式也有千千万,并不是只有常见的GOF 23种设计模式)。通常包括:企业架构模式、设计模式、SOA模式、企业集成模式等等。

    强调一下,架构要讲求“实用”,而且开发人员普遍可接受,要符合现状的。否则,再“优雅”的设计,都会沦为高成本的“花架子”,生搬硬套和过度设计只会让项目“流产”。

    由于角色和分工不同,软件架构是一个复杂的整体,软件架构工程师不可能在一个视角、一下子讲清楚,而利用多重软件架构视图的方法,可以一次只围绕少数概念和技术展开,分别着重研究软件架构的不同方面,使问题得以清晰公和简化,利于软件架构工程师完成架构设计工作。

    因此软件架构的每个视图分别关注不同的方面,针对不同的目标和用途。目前常用架构设计五视图方法进行软件架构描述。它们分别是逻辑架构、开发架构、运行架构、物理架构和数据架构。

    • 逻辑架构的设计着重考虑功能需求,系统应当向用户提供什么样的服务,关注点主要是行为或职责的划分。逻辑架构关注的功能,不仅包括用户可见的功能,还应当包括为实现用户功能而必须提供的辅助功能。逻辑架构的静态方面是抽象职责的划分,动态方面是承担不同职责的逻辑单元之间的交互与协作。

    • 开发架构的设计着重考虑开发期质量属性,关注点是在软件开发环境中软件模块(包)的实际组织方式,具体涉及源程序文件、配置文件、源程序包、编译打包后的目标文件、直接使用的第三方SDK/框架/类库、以及开发的系统将运行于其上的系统软件或中间件。

    • 运行架构的设计着重考虑运行期质量属性,关注点是系统的并发、同步、通信等问题,这势必涉及到进程、线程、对象等运行时概念,以及相关的并发、同步、通信等。运行架构的静态方面关注软件系统运行时的单元结构,动态方面关注运行时单元之间的交互机制。

    • 物理架构的设计着重考虑安装和部署需求,关注点是目标程序及其依赖的运行库和系统软件最终如何安装或部署到物理机器,以及如何部署机器和网络来配合软件系统的可靠性、可伸缩性、持续可用性、性能和安全性等要求。

    • 数据架构的设计着重考虑数据需求,关注点是持久化数据的存储方案,不仅包括实体及实体关系数据存储格式,还可能包括数据传递、数据复制、数据同步等策略。

    在运用五视图方法进行架构设计时需要注意两个方面的问题:一是多个架构视图间的同步问题,也就是必须保证不同视图之间是互相解释而不是相互矛盾的;另一个是架构视图的数量问题,原则上是软件系统不涉及某方面的要求时就不需要该方面的视图,严格控制架构视图的数量,但如果有需要,可以引入新的架构视图,从而更加突出和明确地制定和表达特定方面的架构决策,如安全性。

    这里写图片描述

    构成每个架构设计视图的元素不同,这些不同的元素撑起不同的思维空间,从而使每个架构视图重点覆盖不同种类的需求,最终所有架构设计视图所表达的语义综合左右一起,就构成了软件架构设计方案。

    这里写图片描述

    展开全文
  • 一、架构设计五视图 1. 逻辑架构 2. 开发架构 3. 运行架构 4. 物理架构 5. 数据架构 二、数据设计 1. 数据库的逻辑模型 2. 数据库的常用模型 3. 实现从面对对象模型到表的转换 4. 数据库的物理模型 一...
  • 软件架构视图

    2016-01-02 23:36:40
    软件架构概念:将若干结构元素进行装配,从而满足系统主要功能和性能需求,并满足其他非功能性需求,如可靠性、可伸缩性、可移植性和可用性。用来处理软件高层次结构的设计和实施。
  • 本文从理解需求种类的复杂性谈起,通过具体案例的分析,展示了如何通过RUP的4+1视图方法,针对不同需求进行架构设计,从而确保重要的需求一一被满足。灵感一闪,就想出了把大象放进冰箱的办法,这自然好。但希望每个...
  • 本文分别对视图进行了描述,并同时给出了捕获每种视图的表示方法。这些视图使用以架构为中心的、场景驱动以及迭代开发过程来进行设计。引言我们已经看到在许多文章和书籍中,作者欲使用单张视图来捕捉所有的系统...
  • 架构师之路(七)之五视图方法论

    千次阅读 2018-12-05 01:58:17
    谈软件架构就不得不说说五视图方法论。 一、多阶段还是多视图  软件架构设计是多视图的,也是多阶段的,首先是多阶段的。 先左后做——这叫阶段,齐头并进——这叫视图。 二、软件架构设计的5视图  根据...
  • 讨论 软件架构视图 1、为用户设计:满足功能需求及质量需求(易用性、性能、可伸缩性、持续可用性)。 2、为客户设计:充分考虑客户的业务目标、上线要求的时间、预算限制以及集成需要等,还有特别关注客户所在领域...
  • 工业互联网功能视图平台体系架构
  • 架构设计-五视图

    千次阅读 2018-10-02 20:54:48
    1.什么是架构设计 我们要成为架构设计师我们需要了解什么是架构设计。简单一点,架构设计就是一个系统的草图,描述了构成系统的抽象组件,以及各个组件之间的是如何进行通讯的,这些组件在实现过程中可以被细化为...
  • )什么是软件架构视图 4+1视图

    万次阅读 多人点赞 2018-07-26 17:39:40
    一个架构视图是对于从某一视角或某一点上看到的系统所做的简化描述,描述中涵盖了系统的某一特定方面,而省略了于此方面无关的实体。 也就是说,架构要涵盖的内容和决策太多了,超过了人脑"一蹴而就"的...
  • 软件架构的5种视图

    2020-12-03 14:39:24
    逻辑架构:关注功能。不仅包括用户可见的功能,也包括一些基础模块以及辅助模块。 开发架构:关注程序包,不仅包括要编写的程序,还包括可以直接使用的第三方SDK或者现成的框架、类库以及开发的系统将运行于其上的...
  • 5种架构视图

    万次阅读 2019-03-06 16:29:37
    在实际工作中,我们经常听到“架构”和“架构师”这样的名词,并不新鲜,但是总让很多刚入门的人感觉很神秘,甚至是高深莫测。很少有人对“架构”有全面的了解和认识能并说清楚架构是什么,更谈不上掌握了。事实上,...
  • 本篇文章主要讲解软件架构设计的视图法及每种视图如何设计。 一、是什么 1、逻辑架构  逻辑架构关注的是功能,包含用户直接可见的功能,还有系统中隐含的功能。或者更加通俗来描述,逻辑架构更偏向我们日常...
  • 一个架构视图是对于从某一角度或某一点上看到的系统所作的简化描述描述中涵盖了系统的某一特定方面而省略了与此方面无关的实体 Philippe Kruchten Rational统一过程引论;RUP经典4+1视图;5+1架构视图;架构视图关注点...
  • 一、架构五视图是什么 1、逻辑架构  逻辑架构关注的是功能,包含用户直接可见的功能,还有系统中隐含的功能。或者更加通俗来描述,逻辑架构更偏向我们日常所理解的“分层”,把一个项目分为“表示层、业务逻辑...
  • 42-50 架构蓝图软件架构4+1 视图模型 Philippe Kruchten Rational Software Corp. 摘要 本文基于多个并发视图的使用情况来说明描述软件密集型系统 架构的模型使用多重视图允许独立地处理各"风险承担人" 最终用 户...
  • 软件架构设计( 软件架构视图实例 郝源春 2012年8月1日 个架构视图是对于从某一角度或某 上看到 的糸统所作的简化描述,描述中涵盖了糸统的某一特 定方面,而省略了与此方面无关的实体 Philippe Kruchten统一过程引论 ...
  • 软件架构设计---软件架构视图

    万次阅读 2018-09-18 07:38:21
    软件架构视图  从软件架构本身的特点出发讨论了架构建模及与特定应用领域密切相关的架构风格。本节将从对架构编档的角度对软件架构视图及其风格进行讨论。 1 软件视图的分类   现代软件系统非常复杂,通常在...
  • 4+1架构视图模型是1995年Philippe kruchen在《IEEE software》上发表的题为《The 4+1 View Model of Architecture》文。主要包括的架构视图如下:场景视图:也叫用例视图,描述用户的业务场景,从用户的角度识别出...
  • 软件系统架构~视点和视图

    千次阅读 2021-11-18 20:11:08
    即使是对于非常简单的系统来说,也不可能在单一的模型中描述整个架构的要素和细节。如果你试图那么做,最终就会得到“弗兰克斯坦怪物”一样的模型,而且根本无法管理,也无法向任意一位利益相关者展示系统。 管理...
  • 主要为大家详细介绍了Android视图控件架构分析之View、ViewGroup,感兴趣的朋友可以参考一下
  • 在不同的架构设计方法中出现的软件架构视图种类很多,本文介绍最常用的两种架构视图——逻辑架构视图和物理架构视图,并通过具体案例的分析说明如何运用它们进行架构设计。当观察和描述事物大局的时候,逻辑架构和...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 213,364
精华内容 85,345
关键字:

架构五视图