-
[Skill]程序员画图参考——流程图、时序图、算法原理图和系统架构图
2019-09-26 18:28:12在简单学习Golang和C++基础语法后,我需要阅读系统源码,为了更好理解系统架构、系统内部模块交互和不同业务场景下的数据流,绘制一些简单流程图、时序图和系统架构图是有必要的。 主要工具: process on ppt 系统...前言
在简单学习
Golang
和C++
基础语法后,我需要阅读系统源码,为了更好理解系统架构、系统内部模块交互和不同业务场景下的数据流,绘制一些简单流程图、时序图和系统架构图是有必要的。
主要工具:- process on
- ppt
系统架构图
最原始的系统架构图,简单分层展示不同层次的模块,加上基础服务、公共服务和监控服务:
image加上数据流的系统架构图:
image流程图
简单业务流程图:
image加上接口的流程交互图:
image接口交互图
简单的多个接口交互逻辑图:
image模块提供的内外部接口和外部依赖:
image时序图
image程序流程图
梳理并发程序或复杂逻辑程序时可以会用到:
image算法图
这部分是用ppt做的,帮助直观理解算法原理,ppt画图的自由度更高
-
boosting
image -
k折交叉验证
image -
随机森林
image
总结
作为一个研发菜鸟,在阅读大型系统的源码时碰上了很多问题,很多时候并不是语法层面的问题,反而是因为快速迭代开发和系统的庞大性给我梳理系统架构和模块功能带来较大的挑战。
通过简单绘制系统的架构图、各模块之间的接口交互和时序图等,我可以更加直观地理解整个系统的运作模式,大概就是所谓的磨刀不误砍柴工。 -
工程监管系统整体架构图
2020-10-21 16:46:53工程监管系统的软件整体架构图分多端应用的系统,整体架构图包括了平台层、应用层、支撑层、数据层、网络层和感知层的交互 -
系统架构图怎么画_如何画出一份优秀的产品架构图?
2020-11-20 15:15:42一、什么是产品架构图产品架构图是产品经理用来表达自己产品设计机制的一张概念图:它将可视化的具象产品功能,抽象成信息化、模块化、层次清晰的架构,并通过不同分层的交互关系、功能模块的组合、数据和信息的流转...产品架构图通常用于比较复杂的产品项目中,是设计复杂产品时不可或缺的文档之一。在本文中,笔者也向大家介绍一下画产品架构图的流程以及关键点,希望对你有所启发。
一、什么是产品架构图
产品架构图是产品经理用来表达自己产品设计机制的一张概念图:
它将可视化的具象产品功能,抽象成信息化、模块化、层次清晰的架构,并通过不同分层的交互关系、功能模块的组合、数据和信息的流转,来传递产品的业务流程、商业模式和设计思路。
由于产品架构图通常用于比较复杂的产品项目中,目前介绍产品架构图的相关书籍和资料极少(尤其是入门级别的资料很少提及),却是设计复杂产品时不可或缺的文档之一。
为什么要画?
首先梳理自己对产品方向的判断,思考这张图如何设计的过程,也是帮助你梳理“半年内自己的产品该往何处去、需求应该如何分期和落地、和其他产品的依赖、竞争关系是什么、未来的可拓展性在哪里”等问题的过程。
1. 为技术&运营的输出形成支撑
当这张图被设计出来后,按照产品架构图的结构和路径,项目的里程碑(RoadMap)就可以被清晰的拆解出来,同时项目成员也可以根据这张架构图产出运营计划、技术系统架构方案等强依赖产品方向的方案。
2. 让他人可视化的理解你的产品架构
能较为清晰简单的呈现自己的思路、明确自己的产品边界、指明发展的方向,常用于在项目规划或项目总结中进行演示,帮助不了解你的产品的人快速的建立对你的产品结构、功能、复杂度的认知。
二、何时需要画
建议在复杂项目开始前写:
当你要开始设计一个系统性、完整的需求时,如果跳过画产品架构图的步骤,直接开始画原型、写PRD,有时候很容易发生“改了又改”、“做了一版需求然后又推翻”的情况。如果你的项目已经进行到一半,自己却从未产出过这张图,那么就从此刻开始,按照下文的步骤尝试为自己的产品产出一张产品架构图吧。
三、画前准备
列出问题域
在需求初期,产品经理得到的往往只是一句比较模糊的需求描述,它们可能来自于老板、运营或用户。
直接把这句话作为核心产品功能是不恰当的,合理的做法是先把这个产品所有的问题域列清楚。
“问题域”是指自己的产品能够解决的所有问题的空间集合。从核心需求出发,将所有当前需要解决、未来可能要解决的问题放入产品框架的范围,能够帮助你的产品架构图拥有更高的可拓展性,在后续具备迭代和优化的空间。
以微信AR的需求为例,问题域是这样一个集合:
详细操作步骤:
- 找到收到的需求中,跟产品形态、产品目标相关的词句,去列出“XX的流程会是什么样”、“XX该怎么达成”之类的问题,直到如果这些问题解决,能够实现核心需求的方向和业务目标。
- 去逐次寻找这些问题需求被解决的过程中,是否有其他要先解决掉的问题、或者其他跟业务相关的问题能够被解决/改善。
- 按照层级去罗列出所有的问题,并附上自己的初步回答,从而形成一个初步的、自己的产品能够解决的“问题域”。
四、确定产品方向
在经过问题域的罗列后,你应该能够得到一个模糊的产品方向和功能范围。把这些问题域的答案抽象总结成一个确定的产品需求。
以微信AR的需求为例,根据问题域,我们发现需求不只是扫码组件增加AR识别能力这么简单,整个需求里需要引入广告主的角色,并且需要和腾讯等团队合作。最终得到的产品方向描述是这样的:
1. 详细操作步骤
问题域的环节非常发散,这一步需要回归基础,把模糊的需求补充、拓展和翻译成一个在商业模式和用户体验上能够形成闭环的产品需求。
- 核心需求确定:我的产品核心解决的是哪批用户、哪个用户需求?
- 产品目标:如果以一个数字指标衡量我的产品,它应该是什么?
- 3.用户场景:核心需求基本的产品形态、用户使用的路径是怎样的?
2. 清晰的业务流程
这一步需要根据核心产品需求和问题域的答案,画出简单的业务流程。业务流程是产品设计中常见的图表,绘制方法就不再多做说明。
以微信AR的需求为例,从广告主准备AR互动,到用户在前台使用摄像头参与互动,整个业务流程如下:
五、着手绘制
1. 搭建基础框架
基础的产品框架脱胎于业务流程,但相比业务流程,更加注重产品功能的枚举、功能模块之间的分界。
2. 详细操作步骤
对照业务流程,根据自己设想的产品机制、基本产品形态和用户的使用路径,列出需要的页面&功能&模块等前后端逻辑。
将刚刚得到的多个流程图中所有功能类似或者范围有包含关系的机制/功能放在一起,以模块化的形式形成一张简单的矩阵图。
将明显是同一个产品范围、同一组产品功能的模块放在同一层级,得到一个基础的产品框架。
3. 明确架构分层
一个具备前后台关系的产品架构图至少分为三层:用户感知层(在何种场景下通过何种方式触达用户)、功能模块层(通过哪些功能模块实现产品的核心功能、和哪些外部平台功能有信息交互)、数据层(产品的数据从哪里来、产品的数据沉淀到何处去)。
在上一步进行简单分层后,我们已经得到一个初步框架,但是难免会有分层不明确的问题。此时需要按照两种维度来处理架构图的层级:不同信息层级的边界、同一层级内模块和模块的边界。
4. 处理不同信息层级的边界
架构图的层级表达的其实是信息之间的流转关系,不同信息层级之间一定是有逻辑关系的。
其中用户感知层和数据层通常可以简化为一层(用户端的功能表达往往逻辑简单、数据的来源问题则不是自己产品的核心功能),而功能模块层则需要按照自己产品的逻辑去将功能模块层内的主要模块变成新的层级。
5. 处理同一层级内子模块的边界
各层次之间虽然相关,但同一层次内的子模块之间一定是互相独立、界限分明的。将解决不同问题的功能拆分成两个子模块,做到一个问题只在同一层解决,避免牵一发而动全身的情况出现。
6. 明确产品间的边界
产品边界对于开发设计系统架构、业务间的合作模式都非常重要。用不同颜色标识清楚产品框架中,各个部分所属产品的边界,通常其中属于自己团队的部分用亮色表示。
7. 加入信息流转机制
产品架构图在表达产品的核心功能外,也应该体现信息流动的路径:当前层级数据的交互形成产品功能,产品功能又产生新的数据,从而推动下一层级的功能运转起来。
如果当前产品的主要使用角色只有一个,则只需要用箭头标明模块间信息流动的方式即可。如果当前产品会涉及的主要角色比较多,则需要用不同颜色的线条将他们和各个模块之间的信息交互关系外化出来。
六、最终检查
一张好的产品架构图,应该具备以下特点:
- 清晰的模块功能边界
- 功能经过抽象,做到标准化、互相独立
- 上下游产品功能边界清晰,架构分层明确合理
- 具备迭代优化的能力
记得不断根据你的产品的发展情况来更新产品架构图,每次修改的过程对提升产品架构能力的帮助非常巨大。认真完成,才会成功。
本文由 @寄书予影 原创发布于人人都是产品经理,未经作者许可,禁止转载。
题图来自Unsplash,基于CC0协议
-
ios系统架构图
2014-05-19 22:18:201、Core OS是位于iOS系统架构最下面的一层是核心操作系统层,它包括内存管理、文件系统、电源管理以及一些其他的操作系统任务。它可以直接和硬件设备进行交互。作为app开发者不需要与这一层打交道。 2、Core ...1、Core OS是位于iOS系统架构最下面的一层是核心操作系统层,它包括内存管理、文件系统、电源管理以及一些其他的操作系统任务。它可以直接和硬件设备进行交互。作为app开发者不需要与这一层打交道。
2、Core Services是核心服务层,可以通过它来访问iOS的一些服务。
3、Media是媒体层,通过它我们可以在应用程序中使用各种媒体文件,进行音频与视频的录制,图形的绘制,以及制作基础的动画效果。
4、Cocoa Touch是可触摸层,这一层为我们的应用程序开发提供了各种有用的框架,并且大部分与用户界面有关,本质上来说它负责用户在iOS设备上的触摸交互操作。
Core OS层
该层为最下层主要是mach4.x BSD UNIX内核,也就是Mac OS 10操作系统,是一个在硬件上能够执行多任务的UNIX内核。在这一层上,它提供了很多支持例如网络、socket、安全机制、文件系统,这里的API大多数都是C的API不是面向对象的,因为这是UNIX代码,我们一般不在这一层上写代码。
Core Services层
这层开始面向对象了,它提供了很多和底层一样的服务,但是是面向对象的API,还提供socket类、Runtime支持、多线程、集合类(如数组、字典)等。可以把这一层当做是提供面向对象支持的Core OS的封装。
Media层
这一层离硬件还是很近,因为iphone、ipad、itouch根本上是一个多媒体设备,多媒体相关的代码贯穿整个ios,在Core Services以上能看到的API都是关于多媒体的。
Cocoa Touch层
cocoa是mac os 10开发环境的名称,在ios上称它为cocoa touch。所有的按钮、滑动条、视图、导航栏、高层次的多媒体都在cocoa touch上,这是完全面向对象的。
-
系统架构3:如何用简洁图形描述系统架构?
2021-02-23 22:02:05这周在和其它部门讨论一个工程问题的时候,对于其中一个细节大家有不同的理解,“空对空”讨论很久无果,直到有人拿出了一张系统架构图,明确指出有争议的点,大家才迅速结束了争论。对于复杂的系统,其中包含很多... -
openstack运行时架构 系统内部交互图
2015-03-12 16:26:40Swift也是独立组件,对系统运行没影响。 nova-api是对外的接口。 Glance是独立组件,供 nova-compute 下载镜像使用。 核心组件: Scheduler: 根据当前资源使用情况,决定计算节点分布到哪台计算节点上。...
Swift也是独立组件,对系统运行没影响。
nova-api是对外的接口。
Glance是独立组件,供 nova-compute 下载镜像使用。
核心组件:
Scheduler: 根据当前资源使用情况,决定计算节点分布到哪台计算节点上。目前实现很薄,目前已支持插件方式扩展,方便后面可能有采用更复杂算法。
Compute:计算节点,使用虚拟化技术, host 虚拟机
Network: 网络管理,给虚拟机分配网络和管理,使外部 PC 可以可直接访问
Volume:给虚拟机分配额外持久化的存储
运行时系统间交互都是通过异步消息的方式和DB 进行交互
运行时图
管理和使用是走两个通道的。管理必须要经由 nova-api转发过去。而运行时,直接连接计算节点上的虚拟机即可。
OpenStack架构
OpenStack的架构示意图和目前已实现情况
蓝色是要 openstack概念上的架构图,红色是目前已实现的。
部署
部署时,除了Dashboard 必须部署在 nova-api server 上以外,所有的其它进程都可以部署在不同的机器上。
OpenStack提供了基于 Puppet 的自动部署工具。经过简单配置,就可以把各个组件部署到不同机器上。
OpenStack的镜像创建并没有纳入其职责列表。
你可以使用Ubuntu的已有image (https://help.ubuntu.com/community/UEC/),或者直接重新自己通过KVM安装 http://cssoss.wordpress.com/2011/04/27/openstack-beginners-guide-for-ubuntu-11-04-image-management/
网络模型
Flat Network Manager, Flat DHCP Network Manager, VLAN Network Manager.
VLAN Network Manager 这种方式适合于共有云。
在私有云方面, IP充足,而且为了方便的互联互通,简单的Flat结构网络比较适合。
OpenStack支持 Floating IPs ,该特性可以方便的通过更改IP来Failover(容错转移)或者迁移。
CAAS
Cluster as a Service: Managing multiple clusters for openstack clouds and other diverse frameworks
OpenStack无法独自满足集群计算的需求。目前有一种方案,把集群计算部署放到 IaaS/PaaS 的下一层,我们称这种解决方案是 CaaS.
当前,在很多机构或者学校,部署了不同的集群解决方案,但是他们使用的频率并不是很高,因此资源利用率不高的情况下,造成了很大的浪费(比如电费, PC)。
设计目标:
o 每个集群资源都可以动态分配
o 系统隔离性好
o 集群有足够的性能和容量
设计:
o IaaS/PaaS层与 CaaS 隔离
o IaaS/PaaS 层可联机扩展
o CaaS 层的镜像可通过容器有效被处理
o CaaS 层是通过 webservice提供服务
o 可通过 VLAN 网络隔离
o 自动安装
在这个解决方案中是通过 LXC的 方式来实现系统隔离
注:
LXC, LINUX的容器工具,他使用cgroup把系统资源分组进行隔离。
它不需要指令级模拟。因此相对其他虚拟化技术性能更高。
因为他必须以进程运行执行文件的方式,因此不支持windows.
架构图 -
架构图(拓扑图)画图工具分析整理(静态,动态,可交互图.层级tu)
2019-09-25 12:40:54最近要画架构图. ...类似 dubbo 的架构图. 外部系统,基础系统,应用层.) 到处搜索有什么可编程的方案. 后面搜索到拓扑图. 简单的布局,画图语言javascript,python很多(变量化),但是有自动布局的组... -
openstack架构详解图_应用架构TOGAF建模:系统用例图
2020-11-23 15:54:49系统用例图的目的是帮助描述和验证参与者及其角色与应用程序之间的交互。随着架构的发展,用例可以从功能信息演变为包含技术实现细节的信息。架构系统用例也可以在更详细的系统设计工作中被重用。系统用例图使用U... -
登记结算技术架构图_数据与广告系列七:广告与推荐系统技术架构
2021-01-16 16:19:08作者|黄崇远(题图:http://pixabay.com,CCO协议) 01 接上篇文章《数据与广告系列六:一图读懂在线广告产品交互...在做正式的分析之前,我们先把《计算广告》中涉及的技术架构图来一张(重新绘制就没有必要了,... -
文档撰写和画图--用例架构时序+数据流向图.. 或者是交互数据图
2016-05-16 20:38:32首先要有业务架构图. 只有功能划分. 方框. 交互框架(rpc,mq,tcp,网关) 哪些上中下三层即可. 模块功能描述:2. 然后是各个模块的技术架构图. 含周边系统,存储工具(mongodb,mysql,redis,hbase). 存储功能描述3. 然后... -
系统架构
2012-04-24 16:32:06参加了一个如何画好架构图的培训,总结下来有一下几点: 1.设计也死 2.做正确的架构,正确清晰的表达架构,将架构正确应用到系统 3.Rup 4+1 视图:逻辑视图、进程视图、实现视图、用例视图 4.逻辑视图里包含功能视图... -
智能交互系统介绍x_智能交互是什么
2020-11-11 16:30:01完整对话系统架构图;概念解释;概念解释-Contd;独立场景的各种交互机制;各种交互机制 概念消歧 意图澄清 ;各种交互机制 概念消歧 意图澄清 下位展开 ;各种交互机制 概念消歧 意图澄清 下位展开 需求细化 ;各种交互... -
系统架构设计
2018-05-03 15:44:55系统架构功能需求 根据目前智能仪表的行业需求,智能仪表需要实现设备管理、人机交互、数据上传等功能,按照功能模块化划分,具体系统功能组件如图1-1所示。 图1-1 智能仪表系统功能组件图 1.2 系统... -
android 系统架构
2019-11-24 16:30:05android 系统架构按照层次分为5层结构,分别为应用层、应用框架层、系统运行库层、硬件抽象层、内核层如下图所示 1、应用层 系统的应用程序,比如手机安装的各种软件等,负责直接与用户交互,是java语言写的 2、... -
iOS系统架构
2015-09-23 19:33:54iOS的系统架构分为四个层次:核心操作系统层(Core OS layer)、核心服务层(Core Services layer)、媒体层(Media layer)和可触摸层(Cocoa Touch layer)。下面是IOS系统结构图。 一、Core OS是位于iOS系统... -
系统集成的系统架构图的相关的vsd素材_基于Ruff 5110智能网关在地质灾害及农业领域的监测系统设计...
2021-01-05 12:36:46物联网网关就像一座桥梁,连接感知网络与传统通信网络,从而实现感知网络和通信网关之间的数据传输与交互,包括不同类型感知网络之间的协议转换,既能实现广域互联,也能实现局域互联。Ruff 5110 智能网关本篇文章... -
如何画架构图
2021-01-13 19:36:10什么是架构方法 软件架构,是有关软件结构与组件的抽象描述,用户指导大型软件系统...动态关系,表示的它们是如何依赖交互的,以及如何相互调用整个系统运行的,比如一个用户登录不同的子系统是如何写协作的,元素、 -
架构图初体验
2018-03-07 15:23:00架构图的维度和组成要素 架构视图最经典的当属4+1视图:包含逻辑视图、开发视图、过程视图、物理视图、场景视图 1:逻辑视图一般针对客户、用户、业务人员、开发组织,主要从系统的功能元素、以及它们的接口、职责、... -
软考_系统架构师
2016-09-20 14:35:00软件等级考试高级 系统架构师和系统分析师,一般一个在上半年考试,一个在下半年考试 系统架构师的主要职责 1.需求分析 包括技术难点和技术细节 ...可以输出Feature list,...可以输出系统架构图,组成图,接口等... -
android系统架构详解
2017-05-09 10:38:56先放上一张android系统架构图: 从上图中可以看出,Android系统架构为四层结构,从上层到下层分别是:应用程序层、应用程序框架层、系统运行库层以及Linux内核层,分别介绍如下: 1)应用程序层 Android平台的... -
SONiC系统架构
2021-02-20 09:53:02SONiC系统由两部分组成: 1.彼此交互的模块 2.用于交互的基础设施(集中式,可扩展) 其中用于交互的基础设施主要是一个非关系型数据库Redis引擎: 1.提供了一个无视语言的接口 2.是一种数据保持,复制和多进程交互... -
.net core+ado.net如何架构项目_如何绘制有用的技术架构图
2020-11-02 12:48:37五种技术架构图的示例,并附有指南以促进数字解决方案的设计和实施> Photo by Alex wong on Unsplash技术架构图提供了您组织的... 架构图有两个主要优点:· 它们有助于理解-提供可用系统和交互的概述,这有助于... -
微服务架构 接口交互问题_SpringCloud微服务架构篇1:微服务架构开发
2021-01-29 08:38:16大型分布式系统具有复杂性、隐匿性、配合性和易变性四大难题,不会...单体架构应用结构图单体架构应用会逐渐变得不稳定,一方面是系统不管增长的复杂性造成的,另一方面是由于系统本身牵一发而动全身的特性造成的... -
怎样画好架构图
2017-01-12 13:02:00参加了一个如何画好架构图的培训,总结下来有一下几点: 1.设计也死 2.做正确的架构,正确清晰的表达架构,将架构正确应用到系统 3.Rup 4+1 视图:逻辑视图、进程视图、实现视图、用例视图 4.逻辑视图里包含功能... -
iOS系统架构分层
2015-08-19 15:38:40iOS系统架构共分为4层,如下图所示: 1、Core OS是位于iOS系统架构最下面的一层是核心操作系统层,它包括内存管理、文件系统、电源管理以及一些其他的操作系统任务。它可以直接和硬件设备进行交互。作为app开发者不... -
sitewhere 系统架构【译】
2018-03-13 14:35:24架构图下图显示了主要的SiteWhere服务器组件以及它们如何与外部系统进行交互。全局组件如架构图所示,SiteWhere由许多不同的组件组成,这些组件通过连接在一起提供核心平台。在下面的章节中,我们将介绍系统全局的... -
iOS的系统架构
2017-10-17 14:51:11iOS基于UNIX系统,iOS的系统架构分为四层,由上到下一次为:可触摸层(Cocoa Touch layer)、媒体层(Media layer)、核心服务层(Core Services layer)、核心操作系统层(Core OS layer),如下图: (1)... -
推荐系统架构_数据与广告系列七:广告与推荐系统技术架构
2020-11-19 09:13:19作者|黄崇远(题图:http://pixabay.com,CCO协议) 01 接上篇文章《数据与广告系列六:一图读懂在线广告产品交互...在做正式的分析之前,我们先把《计算广告》中涉及的技术架构图来一张(重新绘制就没有必要了,...
-
华为1+X——网络系统建设与运维(中级)
-
Mycat 实现 MySQL的分库分表、读写分离、主从切换
-
Mysql数据库面试直通车
-
湖南大学《计算机操作实践》10套期末考试试卷.pdf
-
站长便民小工具
-
龙芯生态应用开发基础:C语言精要
-
华为OD机试:求S字符串在L字符串最后一个有效字符的位置
-
http与https的区别
-
江西财经大学《概率论与数理统计》期中试卷(含答案).pdf
-
东南大学计算机技术935专业考研经验分享
-
NFS 实现高可用(DRBD + heartbeat)
-
范剑青--机器是怎么学习金融的
-
MySQL 查询与高级查询(多表、嵌套和正则表达式)
-
MySQL 管理利器 mysql-utilities
-
湖南大学《高等数学A》习题课(全含答案).pdf
-
关于深度学习的一些基本概念
-
分布式核心技术知识体系
-
Windows_Service_PPT_CHAP01_V1.0.ppt
-
江西财经大学《高等数学1》期末复习题(含答案).pdf
-
《SpringBoot整合Quartz实现定时任务》