系统架构图编写(概要设计)

article/2025/9/14 14:23:36

系统架构图编写(概要设计)
应用架构图、技术架构图、业务架构图定义以及到底怎么画好架构图?
常见的数据库架构设计方案?
业务架构的定义、特性和方法
架构图之间的关系
在这里插入图片描述
业务架构图
业务架构,是IT架构的基础。
是从业务、产品视角,描述整个平台、或某个产品的实现。
在这里插入图片描述
应用架构图
站在整个平台视角,描述整个平台架构。
分为两种,一种是企业级应用架构,一种是单系统的应用架构。
数据架构图
一套对存储数据的架构逻辑,它会根据各个系统应用场景、不同时间段的应用场景 ,对数据进行诸如数据异构、读写分离、缓存使用、分布式数据策略等划分。数据架构主要解决三个问题:第一,系统需要什么样的数据;第二,如何存储这些数据;第三,如何进行数据架构设计。
技术架构图
单个系统
主要体现分层模型,例如持久层、数据层、逻辑层、应用层、表现层等,然后每层使用什么技术框架、组件,例如Spring、hibernate、ioc、MVC、成熟的类库、中间件、WebService等,分别说明,要求这些技术能够将整个系统的主要实现概括。
分层模型
在这里插入图片描述
还有一种是框架类的,例如struts的技术架构图:

在这里插入图片描述
分布式系统:
技术架构,就是高层级的技术架构了,不仅仅体现的是技术组件了,而是更高层级的一些模块,甚至规范。
在这里插入图片描述

系统逻辑架构图
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

++++++++++++++++++++++++++++++++++++++++++++++
如何画架构图?
系统架构图
常见的数据库架构设计方案?
业务架构的定义、特性和方法
引言
业务架构一般不被开发重视,开发人员喜欢追求新技术,而技术是服务于业务的,现在没有一项技术是自娱自乐的,一定要支撑业务,否则没有场景。设计好业务架构要考虑的方面比较多,要做到业务彼此隔离、业务与技术 (平台) 隔离,从业务架构中能看得出整体业务的流程运转、业务产品的能力、业务领域对象…接下来的两篇文章将重点讲业务架构。

一、什么是业务架构
在上篇文章中提到系统架构的方法:系统性思考、分解、抽象、模式,这是总的纲要,针对不同类型的业务架构,要结合本身的特性再加以细化。

业务架构是系统架构的一种,那什么是业务架构呢?业务在百科中的定义是"涉及一个以上组织,按某一共同的目标、通过信息交换实现的一系列过程,其中每个过程都有明确的目的,并延续一段时间"。从这句话可以看到几个关键词:组织、目标、过程,下面仔细分析这几个关键词的含义。

组织:业务涉及到的人或者组织,这个比较好理解,一项业务应该由多个人来完成,如销售、财务、产品、研发、售后等。
目标:这是做这项业务的目的和价值,换言之,为什么做这项业务,做好这项业务要达到的目标是什么。
过程:过程就是业务过程,一项业务由多个过程组成,如优惠券业务,它的过程是建券、发券、用券、退券。
上面这样的描述可能比较空洞,与我们平时接触的不匹配,再继续提炼出重要信息。

利益相关者:这个是从"组织"和"目标"中推导出来的,业务的受益方是谁,为什么要做这个业务,肯定有受益的群体,否则没有市场。如优惠券的利益相关者有用户、商户、公司,因为用户下单可以使用优惠券、商户可以吸引更多的客户来消费、公司的 GMV 就上升了。

业务流程: 这个是从过程推导出来的,并且这个业务流程是固定的 (至少一段时间内)。这里的业务流程是大的流程,每个流程都会再往下分解成子流程,如优惠券中的发券,它会有一系列子流程,如发放规则检验、风控安全等。

综上,到这里,也可以用一个公式来定义业务架构,业务架构 = 业务目标 + 业务流程 + 业务要素,这和系统架构的定义非常相似,只不过是实例化了而已。从业务架构的公式中,最重要的是识别出业务流程和业务流程中包含的业务要素,换个角度来看就是业务要素与业务要素之间的关系,这些关系组成了整个业务。

二、业务架构的特性
已经知道了业务架构是什么,接下来就讨论业务架构的特性,通过特性基本上就知道业务架构的大体框架。笔者通过 x、y 数轴加以说明,因为业务要体现出业务流程的流动性和业务的层次性,下面就说明这两个特性:

业务的流动性:其实这是业务生命周期的体现,从产生、拥用、使用可以看出业务的流动,这是横向的。

业务的层次性:笔者一般习惯用场景层、产品功能层、领域模型层、依赖层来画业务架构图,这是纵向的。场景层依赖下面的产品功能层,多个场景很有可能对应一个产品功能,产品的功能又是由领域模型来支撑的。

img

三、业务架构的方法
业务架构的方法还是从系统性思考、分解、抽象、模式这四点具体说明。

系统性思考:站在业务的角度,分析业务与业务之间的关联性,如优惠券业务,它就涉及到人群选择、风控安全、活动、会场、优惠、交易、凭证等,思考系统之间的交互和依赖关系,以及依赖系统要提供的哪些能力。

分解:系统性思考让我们的目光放得更广,整体上考虑整个业务的运转,此时还没有想业务的具体流程,只是知道有,并不深入考虑如何做。分解就不一样,它聚焦的是业务本身是如何运转的,一般业务由几个主要的流程组成的,每个流程又能往下继续分解出细的流程,分解的目的是为了找出业务的要素,此时的元素都是孤零零的。

抽象:分解不是我们的目的,通过分解找出的业务要素,此时要经过一定的抽象才能形成我们的领域对象,因为分解找到的业务要素很多是可以合并归类的,这样就大在减少了业务要素,也降低了理解的复杂度。

模式:通过业务架构的特性,按照场景层、产品功能层、领域模型层、依赖层这四层画出业务架构图。

所以方法还是上一篇所提到的方法,只不过套到具体类型的架构中,具体化分析。有的时候在想,并不是业务架构难搞,只是我们并没有像追求技术那样投入时间研究业务架构,可以不断运用上面的方法,结合自己的理解和扩展,多去实践。

四、通过实例画出业务架构图
下面通过一个电商场景的优惠券业务案例来说明业务架构图是如何画出来的,使用的方法还是上面提到的,通过具体的例子再加以巩固。优惠券对于我们来讲并不陌生,每年的双11 都有很多优惠券,有满减券、折扣券,优惠券是营销中最常使用的营销抓手。

4.1 优惠券业务愿景和目标
优惠券的业务愿景是让用户可以享受到更多优惠,目标是通过优惠券吸引更多用户加入,从而提升 GMV。

从这里可以看出,愿景一定是为他人着想,绝不是为了公司自己赚钱,而是创造价值的同时实现双赢,双赢才是最终目标。

4.2 系统性思考优惠券业务
如何进行系统性的思考,笔者建议可以使用反推法,假设已经有了这项业务,它应该是如何运转的、涉及到哪些人,实际上这个过程就是推演的过程,基本上能把整个交互都考虑清楚,业务实现起来基本上没问题。

用户:用户有优惠券,下单会使用优惠券,涉及到交易和优惠。
系统:涉及到建券、发券、核销券、退券
建券与我们优惠券系统关联最大,也即是我们要做的事。
发券,发给谁呢,肯定不是遍地撒网,现在基本上是精准营销了,要知道哪些用户是活跃用户,所以涉及到算法推荐;除了发给谁是我们关心的,营销还有一个比较核心的点,就是营销模式,你怎么能吸引用户,这就涉及到会场、活动,这些玩法是非常关键的。
核销券:优惠券券在什么条件下可用 (满 100 元减 10 块)?订单价格如何计算出来的?
退券:退款了,券要不要退回?
所以,经过上面的分析,初步涉及到的业务方就已经出来,此时还只是一个粗略的关系,这个过程可能需要几轮不断的讨论最后才成型。

img

4.3 优惠券业务流程
业务流程是客观存在的,而且任何一个业务在一定的时候内应该有一条稳定的业务流程,这个业务流程是符合人的认识的,具有严谨的逻辑性。怎么理解呢?一个业务要运转起来,不可能是一团糟,一定具备流程,而且是人能接收的,否则你设计一个反人类的业务产品出来,注定是失败的。拿优惠券来讲,根据它的生命周期,很容易想到它的主业务流程:建券、发券、用券、退券。

img

4.4 分解和抽象
上面是一个大的流程,还要对各个流程再进一步细分,分解成更小的子流程,每个子流程中包含一系列的步骤,其实这个步骤就是不断深入地过程,同时对业务的理解也不断加深,多问几个为什么就深入了。

建券:这个券包含了哪些内容?
发券:给谁发?发券的条件是什么?
用券:什么条件下能使用优惠券?用券涉及到哪些过程?
退券:什么场景下会退券?
随着深入的过程,整个业务的细节也浮现出来了,现在就是要抓业务要素,这个要素可以通过每个阶段的产物来看。建券的产物是券批次,发券的产物是券实例,用券的产物是用券明细,退券的产物是退券明细。

img

接下来就是抽象的过程,这个抽象的过程就是对已找出的产物进行抽象。券批次包含:券类型和券门槛限制两个重要的信息,用券明细和退券明细统一抽象成券明细,优惠券又与活动强相关,所以也把券活动放进去。

img

4.5 优惠券业务层次结构
接下来就是画整体的业务架构图了,按照场景层、产品功能层、领域模型层、依赖层来画,画业务架构图要体现两点出来:业务流向和产品功能。通过下面的图可以直观地感知业务流向是什么 (即是蓝色区域,建券、发券、用券、退券),通过分层可以清晰地看到可以支持的场景有哪些,场景依赖的产品功能有哪些,业务的领域模型是什么,依赖的业务又有哪些,真正好的图能做到一图胜千言的效果。

笔者喜欢的画法是"一主两翼",主体的部分就是上面讲的分层,两翼是运营平台和数据平台,这样很直观、简洁。

img

五、小结
本篇文章主要讲业务架构的定义、特性以及业务架构的方法,最关键的是寻出业务的要素和要素之间的关联关系,最后通过一个实例来讲解业务架构的画法,本篇只是业务架构的基础,通过这个业务架构图基本上知道业务的流转和业务的产品功能。接下来的一篇主要讲业务架构中的能力视图、业务监控。

==================================================
Mark Richards他写了一本书,名为《软件架构模式》,其中主要介绍了5种软件架构模式:微内核模式(Microkernel Pattern),微服务模式 (Microservices Pattern ),分层架构模式( Layered Architecture Pattern),基于事件的模式(Event-based Pattern),基于空间的架构模式(Space-based Pattern)。


http://chatgpt.dhexx.cn/article/Kd1eDFRy.shtml

相关文章

概要设计、详细设计:概念、方法、实践步骤

完整软件开发流程: 需求分析、概要设计、详细设计 一 1. 概念、方法、实践步骤 设计是指根据需求开发的结果,对产品的技术实现由粗到细进行设计的过程。根据设计粒度和目的的不同可以将设计分为概要设计、详细设计等阶段以便于管理和确保质量。设计内容…

概要设计与详细设计如何编写

撰写的设计文档主要分为:总体概要设计文档 详细设计文档,后简称为“概设”“详设”。 总设和详设都应该包含的部分: (1) 需求:一般以产品的语言描述,这一块可以拷贝产品需求文档中的story li…

软件项目总体设计

软件项目总体设计 目录 1.导言 1 1.1目的 1 1.2范围 1 1.3参考资料 2 2.项目设计原则简介 2 3.功能模块设计 2 3.1功能模块设计总述 2 3.2 客户端子系统模块设计 4 3.2.1 模块 CM1 :静态页面 4 3.2.2 模块 CM2:系统登录 5 3.2.3 模块 CM3 :注…

软件概要设计的过程与任务

在完成对软件系统的需求分析之后,接下来需要进行的是软件系统的概要设计。一般说来,对于较大规模的软件项目,软件设计往往被分成两个阶段进行。首先是前期概要设计,用于确定软件系统的基本框架;然后是在概要设计基础上…

软件工程技术--第四章 概要设计

第四章 概要设计 4.1 软件设计概述 4.1.1 软件设计的概念与重要性 ​ 软件设计是软件工程的重要阶段,是一个将软件需求转换为软件表示的过程。软件设计的基本目标是用比较抽象概括的方式确定目标系统如何完成预定的任务,即确定系统的物理模型&#xff0…

ios 新建项目关于Main.storyboard的处理

使用xcode新建新建项目时,都会带一个main.storyboard的主界面。如果你不进行代码控制,默认APP启动会加载main.storyboard这个界面。怎么使用这个界面来加载这里就不在介绍了,这里只说用代码加载主页,不使用main.storyboard时&…

storyboard 使用

Storyboard是一项令人兴奋的功能,在iOS5中首次推出,在开发app的界面时可以极大地节省时间。 如下图所示,这就是一个完整的应用的storyboard,接下来我们要学习如何通过这种方式创建应用。 现在你可能还不是很精确地知道我们的应用可…

ios storyboard简单用法

使用xcode5中的storyboard,做个简单的界面,第一次用简直一头雾水,摸索下来感觉也蛮方便的。 从左到右,从上到下,控件依次是:UITextFiled,UIButton, UILabel, UIPickerVi…

iOS开发18:Storyboard的简单使用

之前做的例子,我们经常会用到.xib文件,在其中我们可以进行界面的设计。不过如果想切换视图,我们就得自己写很多代码。自从苹果推出了Storyboard,我们可以在一个编辑区域设计多个视图,并通过可视化的方法进行各个视图之…

如何在xcode中使用storyboard

StoryBoard是iOS 5的新特征,目的是代替历史悠久的NIB/XIB,对于已经习惯了xib文件的孩子们来说,StoryBoard还不是那么熟悉。经过两天的研究,有了一些心得,在此分享。 一、如何使用storyboard简单实现Push页面&#xff…

Storyboard Reference

在某些情况下,你开发的应用可能包含有各种各样的复杂界面,如果你使用Storyboard来管理这些界面,通常你会将这些界面按照相应的逻辑分成许多子模块,放在不同的storyboard里,比如注册相关的放到Register.Storyboard&…

storyboard使用教程

Storyboard是最先在iOS 5引入的一项振奋人心的特性,大幅缩减构建App用户界面所需的时间。 要介绍Storyboard是什么,我打算从这张图讲起。下面是您将会在本教程中构建的Storyboard: image 或许你现在并不清楚这个App是用来做什么的&#xff0c…

关于storyboard的使用入门

 在iOS5以前,一直使用纯代码进行处理界面,尽管能够严格数据信息,但是操作上相比storyboards操作效率低,现就这个时尚的storyboards进行简要学习总结。 一 创建storyboards。 创建storyboards的方式有多种…

Storyboard入门

Storyboard 是iOS 5 中令人兴奋的一个新特性,他将为你在创建用户界面上节省很多时间。 那么究竟什么是Storyboard呢?我将用一幅图片来向你展示: 下面这个就是本教程中即将用到的Storyboard。 你或许不能精确的知道这个应用是做什么的,但是你可…

IOS开发入门之五——storyboard的使用(上)

需要iOS开发视频资料可以加我微信: 1914532832 验证信息请注明:IOS开发 上节介绍了纯代码开发,就是所有页面全部用代码来写,纯代码开发缺点就是比较慢的,而且很不直观,需要在App运行后才能看到页面效果。这节介绍重点…

IOS开发之——更换Storyboard

一 概述 新建项目的默认面板为Main.storyboard,用于向界面中添加控件并显示向项目中添加新的storyboard,并替换Main.storyboard 二 添加新的Storyboard 在Main.storyboard上右键,选择New File 在User Interface 分类下,选择Stor…

使用storyboard

story board是xcode4.2新增的一个特性,它将原有工程中的所有xib文件集成在一起,用拖拽的方式建立2个viewController之间的跳转关系,使得整个程序的UI跳转逻辑清楚明了。使用storyboard后,界面相关的代码编写将更少。 简单说…

Storyboard使用心得

最近接触IOS7新特性,之前项目都是使用xib,没有使用过storyboard,今天就研究下。首先,说下storyboard优缺点,优点:a). 流程结构清晰b). 有内置的segue支持c). 方便的实例化ViewController缺点:a). 所有的Vie…

Storyboard 自适应布局

原文链接:http://justsee.iteye.com/blog/2148987 通用的Storyboard 通用的stroyboard文件是通向自适应布局光明大道的第一步。在一个storyboard文件中适配iPad和iPhone的布局在iOS8中已不再是梦想。我们不必再为不同尺寸的Apple移动设备创建不同的storyboard文件&a…

IOS开发之Storyboard应用

(Storyboard)是一个能够节省你很多设计手机App界面时间的新特性,下面,为了简明的说明Storyboard的效果,我贴上本教程所完成的Storyboard的截图: 现在,你就可以清楚的看到这个应用究竟是干些什么…