声明:部分内容摘录了简书「橘色对白」作者的文章片段。

之前经常看到文章中提到「4+1视图」,对其也有片面的理解,但一直没有实践过,不清楚其真正的作用,这两天在业务需求分析中运用了其中的一部分,想谈谈自己的粗浅理解。

最近在调研「多租户」实现方案时,看到简友「橘色对白」的3篇关于多租户架构的文章,其中一篇「以CRM系统为例,浅析初级SaaS架构的构建方法」,以「4+1视图」的形式,覆盖了分析、设计、开发、部署等阶段,如何一步一步递进,形成最终的实施方案。

所谓「4+1视图」,是从5个不同视角来描述软件体系结构,包括场景视图、逻辑视图、开发视图、过程视图、物理视图,每个视图只关系系统的一个侧面,5个视图结合起来,才能反映系统的全部内容。

好吧,语气还是有点官方了,本来想根据自己项目再分析一遍,有人又在催我睡觉了,同时觉得「橘色对白」的这篇文章写的很不错了,决定整理下分享出来。

在分享之前,说说我的实践,通过场景视图、逻辑视图,分析出了「多租户」改造时,需要的功能列表。场景视图站在使用系统的角度,分析各个角色的用例。 逻辑视图站在业务对象的角度,表达了业务对象和对象间的关系。两个视图相互递进和补充,帮助我更完整的梳理出系统的功能点。

下面分享下「橘色对白」的这篇文章,如何一步步构建CRM系统

一、场景视图

负责从用户角度,识别业务需求,描述业务场景,是架构设计的起点和终点。

场景描述

老板角度:了解客户增减数量;了解客户增减变化趋势;商务行程管理。

员工角度:保存和随时查阅客户资料;通过邮件、IM、IP电话与客户保持及时沟通;商务行程管理。

场景抽象

客户管理:增、删、改、查,客户资料;
行程管理:商务形成安排(客户拜访、合同谈判);
订单管理:已签订单的管理;

二、逻辑视图

从对象角度,构建对象模型,用以确立逻辑分层、模块划分、模块功能、模块间依赖关系等。其中,模块功能,既包括可见的业务功能,也包括不可见的系统功能(日志、权限、事务等)。

模块划分及功能

客户模块、行程模块、订单模块、报表模块

模块依赖关系

模块包含的业务对象
  • 客户模块 — 客户分组、客户、联系人;
  • 行程模块 — 时间、事项等;
  • 订单模块 — 时间、客户、订单等;
  • 报表模块 — ……

三、开发视图

从开发角度,描述软件在开发环境下的静态组织(程序包、应用的统一框架、引用的类库、SDK和中间件等),并规范和约束开发环境的结构。

开发环境
  • 开发语言:Java、JavaScript、Html
  • 数据库类型:MySQL 5.0
  • 应用服务器类型:Apache+JBOSS
  • 其他软件:Ant、JUnit 等
  • 相关硬件:略
技术框架

开源框架:Struts+Spring+Hibernate框架结构

分层策略

目录结构

根据分层,制定目录结构如下

  • Api: 存放service的接口定义源文件;
  • Action: 存放action的源文件和配置文件;
  • Biz: 存放各模块的业务逻辑组件和DAO组件;
  • Bundle: 存放JSP和HTML文件;
  • deploy:存放构建后待部署的jar文件;
  • biz目录下根据模块再分为dao和service目录,以及它们的实现类目录impl;

四、过程视图

从过程角度,描述系统的并发和同步设计。旨在解决进程、线程、并发、同步、通信等方面的问题;

五、物理视图

负责从部署角度,描述软硬件的映射关系,以及系统在分布/部署上的设计。旨在解决系统安装、系统部署、网络分布等问题。

至此,CRM系统已基本成型。

理论很重要,更重要的是去实践,在实践的过程中,才能够真正理解理论中每个字的精华。
我理解的还很浅,先欠个账,后续项目开发过程中,完整应用「4+1视图」后,我在做个实践总结。


「4+1视图」学习与理解相关推荐

  1. 《非对称风险》书中精髓:「风险共担」是我们理解人类社会和世界的前提,一个没有风险共担的系统会慢慢积累不平衡,最终垮掉。

    <非对称风险>书中精髓:「风险共担」是我们理解人类社会和世界的前提,一个没有风险共担的系统会慢慢积累不平衡,最终垮掉. <非对称风险>的作者是纳西姆·尼古拉斯·塔勒布.对于全球 ...

  2. 「前端组件化」该怎么理解?

    大家好,我是若川.今天分享一篇关于「前端组件化」的好文.欢迎点击下方卡片关注我. 以下是正文~ 这里我们一起来学习前端组件化的知识,而组件化在前端架构里面是最重要的一个部分. 讲到前端架构,其实前端架 ...

  3. 「全网最细」:MRP1视图所有字段详解及实战应用 - 合集

    : 视频详解 注:本文章建议要结合视频进行观看 声明:本文仅代表原作者观点,仅用于SAP软件的应用和学习,不代表SAP公司.注:文中所示截图来源于SAP软件或PA官方教材,相应著作版权归SAP所有. ...

  4. 「AlphaGo 之父」David Silver最新演讲,传授强化学习的十大原则

    「AlphaGo 之父」David Silver最新演讲,传授强化学习的十大原则 https://mp.weixin.qq.com/s/KBddskHUAzQ8dm0Onu13ZA 演讲课件地址: h ...

  5. 「从源码中学习」面试官都不知道的Vue题目答案

    前言 当回答面试官问及的Vue问题,我们除了照本宣科的回答外,其实还可以根据少量的源码来秀一把,来体现出你对Vue的深度了解. 本文会陆续更新,此次涉及以下问题: "new Vue()做了什 ...

  6. 从0开始学习 GitHub 系列之「03.Git 速成」

    前面的 GitHub 系列文章介绍过,GitHub 是基于 Git 的,所以也就意味着 Git 是基础,如果你不会 Git ,那么接下来你完全继续不下去,所以今天的教程就来说说 Git ,当然关于 G ...

  7. 「前端工程化」该怎么理解?

    大家好,我是若川.今天分享一篇「前端工程化」的好文.非广告,请放心阅读.可点击下方卡片关注我,或者查看系列文章.今天发文比较晚,以往都是定时早上7:30发文,也不知道是不是有点早. 一.什么是前端工程 ...

  8. 干货 | 深度学习的可解释性研究(一):让模型「说人话」

    在这篇文章中: 可解释性是什么? 我们为什么需要可解释性? 有哪些可解释性方法? 在建模之前的可解释性方法 建立本身具备可解释性的模型 在建模之后使用可解释性性方法作出解释 关于 BIGSCity 参 ...

  9. 对话 IJCAI 07「卓越研究奖」得主 Alan Bundy :理解智能的本质是 AI 发展的终极目标

    AI 科技评论按: 今年,IJCAI(国际人工智能联合会议,International Joint Conferences on Artificial Intelligence)将于 8 月 10 日 ...

最新文章

  1. OpenAI解散机器人团队,曾试图造AGI机器人,创始人:最好的决定
  2. 资深猎头揭露:他们为何能年薪百万?
  3. NYOJ 648 数字1的数量
  4. 在线机器学习FTRL(Follow-the-regularized-Leader)算法介绍
  5. 国外一些知名ASP.Net开源CMS系统
  6. scipy.sparse、pandas.sparse、sklearn稀疏矩阵的使用
  7. JQuery 选择器总结
  8. android手机更改手机密码,重要提醒:手机这个密码一定要改!
  9. 预卷积HDR环境贴图
  10. http 406 java_java – Spring JSON请求获取406(不可接受)
  11. python 有趣包_一些有趣且鲜为人知的 Python 特性
  12. 明天起,鄂尔多斯这些地方要停电!涉及伊旗、达旗等6个旗区
  13. MSDC 4.3 接口规范(6)
  14. 重装Windows10后调节亮度无效,一直是最亮
  15. 烤仔建工承建,著名画家孙天骄的元宇宙美术馆即将开门迎客
  16. 打印魔方阵(C语言)
  17. Arduino手动添加ESP32相关开发板(图文并茂)
  18. 音视频开发总结之一理论基础
  19. EMC电磁兼容测试项目简介
  20. CSR8670 spi方式软件烧录方法

热门文章

  1. 如何快速检测app动态注入漏洞
  2. C++静态库和动态库的导入导出
  3. 服务器ping显示不是内部,如何解决ping不是内部或外部命令问题_网站服务器运行维护,ping,内部,外部,命令...
  4. Java读取串口数据
  5. Spring boot 2.0 mongoTemplate 操作范例
  6. php写火车头采集接口,的这个火车头采集接口我在火车头采集规则里已经写了采集时间的规,迅睿CMS,CodeIgniter技术文档,PHP开发文档,迅睿CMS框架官方教程...
  7. 计算机图形学(一) 视频显示设备_7_光栅扫描系统
  8. PyTorch 模型训练实用教程(六):监控模型——可视化
  9. linux系统中pinctrl 和gpio子系统使用方法(教你点灯)
  10. SpringBoot + MyBatis-Plus + Shiro授权认证