当前位置: 首页 > news >正文

架构师面试(二十八):业务建模

问题

今天我们撇开纯技术,聊一下关于【业务建模】的话题。

何为业务建模?即通过易于理解的模型将业务中的关键问题准确表达出来。

业务建模是需求分析环节乃至整个软件生命周期中非常关键的一环,它几乎决定了软件的开发周期和成本。下面关于【业务建模】的相关描述中,说法正确的有哪几项?

A. 在分析不管是已经运行的软件系统还是产品描述的业务系统时,可以首先区分【功能需求】和【非功能需求】,对于前者再分析出【基础功能需求】和【扩展功能需求】,而对于后者在互联网中一般是分布式系统的三高需求;

B. 对需求进行业务建模时,如果发现逻辑或流程存在不能闭环的情况,必须立刻反馈给业务方对需求进行确认;闭环是验证需求可行性的唯一关键指标;

C. 业务建模的工具或方法有很多,包括 E-R 图、UML、SA、OOA、DDD 等;

D. 对需求进行分析和建模时,需要区分出业务稳定的模块单元和业务容易变化的模块单元,前者往往是系统的核心,而后者往往是系统的扩展。

解析

【业务建模】通过非常容易理解的模型将业务系统的关键问题表达出来,方便业务人员、开发人员、测试人员对业务系统的理解保持高度一致,可以减少后续对软件系统的频繁修改,从而起到【降本增效】的作用;希望大家对【业务建模】保持高度重视!

当我们面对产品经理提的一堆需求时,或者去熟悉已经存在的软件系统时,有没有一个思路框架进行指导呢?

当然有的:可以首先区分【功能需求】和【非功能需求】,对于前者再分析出【基础功能需求】和【扩展功能需求】,而对于后者在互联网中一般是分布式系统的三高需求;【基础功能需求】往往是业务系统中非常稳定的模块单元,不会轻易修改和变化,这就是系统的核心;而【扩展功能需求】往往是业务系统中经常变化的模块单元,这是对系统核心的扩展。(详见《架构技能(四):需求分析》)

举一个例子:在IM系统中,【私信消息】就是【基础功能需求】,而【红包】【语音通话】就属于【扩展功能需求】;【扩展功能需求】的实现一般都是基于【基础功能需求】进行的。所以,把握好系统的【基础功能】也就把握了系统的核心和关键。

业务建模的工具和方法非常多,比如 数据库建模工具E-R 图、统一建模语言UML、结构化分析SA、面向对象分析OOA、领域驱动设计DDD 等。

对需求进行业务建模时,如果发现逻辑或流程存在不能闭环的情况,必须立刻反馈给业务方对需求进行确认;闭环是验证需求可行性的一个经常使用的关键指标,但不是唯一的指标。【闭环】更多的是验证需求的逻辑性是否合理;需求可行性除了逻辑性之外还有经济可行性(投入产出比)、技术可行性(三十年前的手机实现地图导航简直匪夷所思)、操作可行性(是否合法等)。

参考答案

ACD

相关文章:

架构师面试(二十八):业务建模

问题 今天我们撇开纯技术,聊一下关于【业务建模】的话题。 何为业务建模?即通过易于理解的模型将业务中的关键问题准确表达出来。 业务建模是需求分析环节乃至整个软件生命周期中非常关键的一环,它几乎决定了软件的开发周期和成本。下面关…...

求教:vue中的find()函数的用法this.$set

需求:为了实现联动,当我在选择问题标题之后,后面几列的内容就会自动联动显示 方案一: 选完之后 直接 是this.questionList[index] this.selected; 这样的效果虽然改动了数组,但是页面上没有显示出来实际数组的内容 …...

常见算法模板总结

文章目录 一、二叉树1. DFS2. BFS 二、回溯模板三、记忆化搜索四、动态规划1. 01背包朴素版本滚动数组优化 2. 完全背包朴素版本滚动数组优化 3. 最长递增子序列LIS朴素版本贪心二分优化 4. 最长公共子序列5. 最长回文子串 五、滑动窗口六、二分查找七、单调栈八、单调队列九、…...

生产者消费者模型

目录 一、生产者消费者模型 1. 生产者消费者模型是什么? 2. 为什么使用生产者消费者模型? 3. 生产者消费者模型的特点(321原则) 🌵3种关系 🌵2种角色 🌵1个交易场所 二、基于BlockingQue…...

linux里怎么禁用 其他用户使用sudo添加定时器,例如创建的tomcat用户禁止使用 sudo crontab -u tomcat -e 添加定时器

要禁止 tomcat 用户通过 sudo crontab -u tomcat -e 添加定时任务,需从 sudo 权限控制和 crontab 访问限制两方面入手。以下是具体步骤: 一、核心思路 禁止 tomcat 用户使用 sudo 提权执行 crontab 修改 /etc/sudoers 配置,移除 tomcat 用户…...

函数作为返回值输出

实际上,函数当做返回值输出的应用场景也很多,也更能体现函数式变成的巧妙,让函数继续返回一个可执行的函数,意味着运算过程是可延续的。 判断数据的类型 常见的判断一个数据的类型的函数: 单例模式 下面是一个单例模…...

黑马 SpringAI+DeepSeek 实战:从对话机器人到企业级知识库的大模型开发全攻略

附完整代码 项目案例,3 天吃透大模型应用开发核心技术 需要完整项目学习视频以及源码的私信博主,谢谢~大家一起加油呐!! 01.认识AI和大模型 小结 AI的发展过程 符号主义 机器学习 深度学习——自然语言处理(NLP…...

word表格间隔设置

1.怎么解决word表格间隔达不到我们想要的要求 其实很简单, 我们直接在word表格里面, 全选表格中里面的内容。接着,我们选择自动调整---->根据内容自动调整表格,即可达到我们想要的要求...

Windows批处理脚本,bat 循环数组进入文件夹进行后续操作

文章目录 前言一、脚本功能解析1.2、定义数组1.2、遍历数组1.2、处理每个数组元素1.2、循环控制1.2、结束脚本 二、之前编写的脚本三、优化后的脚本代码四、总结五、感谢 前言 Windows批处理脚本,主要功能是遍历一个预定义的数组,并对每个数组元素执行cd…...

TurtleBot3 Package turtlebot3_drive source code read

前言 此处阅读简单的 turtlebot3_drive 代码。 从ROS的角度,作为一个demo,它足够小、简单,可以从中看见ROS的 NodeHandle如何使用。此外,我们也能简单地看到 “自动避障功能的实现”。 从C的角度,它实际上并不复杂&…...

机器学习的下一个前沿是因果关系吗?

如今,越来越多研究人员意识到,将因果关系融入机器学习,或许会是该领域实现重大突破的关键所在。 机器学习凭借先进的预测能力,已为诸多行业带来了显著变革,但也暴露出了一定的局限性。而因果关系,作为理解…...

Mujoco xml模型

Mujoco xml模型 一个例子compileroptionassetmesh default基本使用childclass与class多个class worldbodybody关系inertialjointgeom XML主要分为以下三个部分&#xff1a; < asset> &#xff1a; 用 tag导入STL文件&#xff1b;< worldbody>&#xff1a;用tag定义…...

MyBatis 详解及代码示例

MyBatis 是一个 半自动 ORM 框架&#xff0c;主要用于 Java 与数据库之间的持久化操作&#xff0c;它本质是对 JDBC 的封装 全名&#xff1a;MyBatis&#xff08;前身 iBATIS&#xff09;核心作用&#xff1a;自动将 SQL 执行结果映射为 Java 对象&#xff1b;也可以将 Java 对…...

STL-list链表

STL-list链表实现 STL中采用双向带头循环链表来实现 list,下面将使用 C++ 实现 STL list 链表。 list 类中包含两个主要部分,一个是指向哨兵位头节点的指针(_head),另一个是结构体类型的迭代器(__list_iterator)。 哨兵位头节点本身是不存储数据的,它只是用于简化代码…...

R语言中的rvest库写个视频爬虫通用代码

朋友让我用R语言的rvest库写一个通用的视频爬虫代码示例。首先&#xff0c;我需要回忆一下rvest库的主要功能&#xff0c;它主要是用来做网页抓取和解析的&#xff0c;类似于Python的BeautifulSoup。但是视频爬虫的话&#xff0c;可能需要处理动态加载的内容&#xff0c;或者找…...

SQLite 中日期型数据定义及处理(Delphi 版本)

在使用SQLite的时候&#xff0c;肯定需要使用到日期型数据类型&#xff0c;但是SQLite没有直接支持日期类型&#xff0c;比如在其他数据库中支持的DateTime类型&#xff0c;在Delphi中是TDateTime类型。 那么实际处理中应该如何处理呢&#xff1f; 可以使用两种方式类在SQLit…...

4.9复习记

1.地宫取宝--记忆化搜索&#xff0c;可以先写void dfs&#xff0c;然后在改成ll 形式的&#xff0c;边界条件return 0/1&#xff1b; 记忆化数组与dfs元素保持一致&#xff0c;记得记忆化剪枝 这个题特殊在value可能是0&#xff0c;不取的时候应该记为-1 https://mpbeta.cs…...

Flink基础

Flink基础 目录 Flink简介核心概念编程模型核心功能应用场景部署模式生态系统最佳实践学习资源实践案例高级特性 1. Flink简介 1.1 什么是Flink Apache Flink是一个开源的分布式流处理和批处理系统。它能够处理有界&#xff08;批处理&#xff09;和无界&#xff08;流处理…...

SASE、零信任安全理念的发展脉络

SASE(安全访问服务边缘)与零信任架构的发展脉络,是云安全理念从 “边界防御” 向 “动态信任” 跃迁的典型缩影。两者的演进既独立又交织,共同推动网络安全从静态合规走向主动治理。以下从技术起源、理念突破、产业实践到未来趋势展开深度解析: 一、零信任:从理论构想到…...

CompletableFuture 和 List<CompletableFuture> allOf() join() get() 使用经验

CompletableFuture<Map<Menu, Map<IntentDetail, Double>>> xxx CompletableFuture.supplyAsync(() -> {Map<Menu, Map<IntentDetail, Double>> scores new ConcurrentHashMap<>();// 存储结果scores.computeIfAbsent(menu, k -> n…...

Vue.js组件化开发实战:从工程化到安全纵深设计

文章目录 开篇&#xff1a;现代前端组件化演进之路 组件设计核心&#xff1a;高内聚低耦合实践 工程化基石&#xff1a;从Webpack到Monorepo 安全纵深设计&#xff1a;RASP在组件层的实现 实战&#xff1a;动态表单组件的三次进化 进阶篇&#xff1a;组件工厂模式与策略模…...

【深度解析】SkyWalking 10.2.0版本安全优化与性能提升实战指南

前言 Apache SkyWalking 作为云原生可观测性领域的佼佼者&#xff0c;在微服务架构监控中扮演着至关重要的角色。然而&#xff0c;官方版本在安全性、镜像体积和功能扩展方面仍有优化空间。本文将分享一套完整的 SkyWalking 10.2.0 版本优化方案&#xff0c;从安全漏洞修复到镜…...

NOIP2011提高组.玛雅游戏

目录 题目算法标签: 模拟, 搜索, d f s dfs dfs, 剪枝优化思路*详细注释版代码精简注释版代码 题目 185. 玛雅游戏 算法标签: 模拟, 搜索, d f s dfs dfs, 剪枝优化 思路 可行性剪枝 如果某个颜色的格子数量少于 3 3 3一定无解因为要求字典序最小, 因此当一个格子左边有…...

常微分方程求解全解析:从基础到矩阵方法深度实践

常微分方程求解全解析:从基础到矩阵方法深度实践 一、常微分方程基础与解法体系 1.微分方程基本概念解析 常微分方程的阶数指方程中未知函数导数的最高阶数。通解是包含任意常数且常数个数与方程阶数相同的解,特解则是通解中任意常数取特定值得到的解。以自由落体运动为例…...

Go 微服务框架 | 中间件

文章目录 定义中间件前置中间件后置中间件路由级别中间件 定义中间件 中间件的作用是给应用添加一些额外的功能&#xff0c;但是不会影响原有应用的编码方式&#xff0c;想用的时候直接添加&#xff0c;不想用的时候也可以轻松去除&#xff0c;实现所谓的可插拔。中间件的实现…...

【HarmonyOS Next之旅】DevEco Studio使用指南(十二)

目录 1 -> Code Linter代码检查 2 -> 配置代码检查规则 3 -> 查看/处理代码检查结果 1 -> Code Linter代码检查 Code Linter针对ArkTS/TS代码进行最佳实践/编程规范方面的检查。 可根据扫描结果中告警提示手工修复代码缺陷&#xff0c;或者执行一键式自动修复…...

Java设计模式之桥接模式:从入门到架构级实践

1. 什么是桥接模式&#xff1f; 桥接模式&#xff08;Bridge Pattern&#xff09; 是一种结构型设计模式&#xff0c;其核心目标是将抽象部分与实现部分分离&#xff0c;使它们能够独立变化。通过这种方式&#xff0c;桥接模式解决了多层继承带来的复杂性&#xff0c;并增强了…...

Jupyter Lab 无法启动 Kernel 问题排查与解决总结

&#x1f4c4; Jupyter Lab 无法启动 Kernel 问题排查与解决总结 一、问题概述 &#x1f6a8; 现象描述&#xff1a; 用户通过浏览器访问远程服务器的 Jupyter Lab 页面&#xff08;http://xx.xx.xx.xx:8891/lab&#xff09;后&#xff0c;.ipynb 文件可以打开&#xff0c;但无…...

【LeetCode 热题100】73:矩阵置零(详细解析)(Go语言版)

&#x1f680; 力扣热题 73&#xff1a;矩阵置零&#xff08;详解 多种解法&#xff09; &#x1f4cc; 题目描述 给定一个 m x n 的整数矩阵 matrix&#xff0c;如果一个元素为 0&#xff0c;则将其所在行和列的所有元素都设为 0。请你 原地 使用常量空间解决。 &#x1f3a…...

OminiAdapt:学习跨任务不变性,实现稳健且环境-觉察的机器人操作

25年3月来自中科大、北理工和中科院自动化所的论文“OminiAdapt: Learning Cross-Task Invariance for Robust and Environment-Aware Robotic Manipulation”。 随着具身智能的快速发展&#xff0c;利用大规模人体数据对人形机器人进行高水平的模仿学习&#xff0c;成为学术界…...

Vue3中父组件将一个ref定义的对象类型传递给子组件的解包机制

在Vue3中&#xff0c;当父组件将一个ref定义的对象类型传递给子组件时&#xff0c;子组件接收到的不是原始的Ref类型&#xff0c;而是该ref的.value值&#xff0c;即被解包后的响应式对象。具体行为如下&#xff1a; 关键点解析&#xff1a; 自动解包机制&#xff1a; Vue3在模…...

批量将 SVG 转换为 jpg/png/Word/PDF/ppt 等其它格式

SVG&#xff08;可缩放矢量图形&#xff09;是一种广泛使用的图像格式&#xff0c;因其矢量特性在不同分辨率下都能保持清晰&#xff0c;但在某些情况下&#xff0c;用户可能需要将 SVG 格式的图片转换为更常见的位图格式&#xff0c;如 JPG、PNG 等&#xff0c;以适应不同平台…...

微服务篇——SpringCloud

服务注册 Spring Cloud5大组件有哪些&#xff1f; 服务注册和发现是什么意思&#xff1f;Spring Cloud如何实现服务注册发现&#xff1f; nacos与eureka的区别 负载均衡 如何实现负载均衡&#xff1f; Ribbon负载均衡的策略有哪些&#xff1f; 如何自定义负载均衡的策略&…...

Windows 11 家庭中文版 安装docker desktop 无法开启自启动问题处理

前言 我在某台Windows 11家庭中文版的电脑上安装Docker Desktop后&#xff0c;老是无法开机启动&#xff0c;已经按照Docker Desktop 设置调整的方式设置了开机启动&#xff0c;但是重启后发现还是无法自启动&#xff0c;需要手动点击启动。然后使用任务计划程序新建一个开机启…...

蓝桥杯备考

先浅学一遍数据结构&#xff0c;不会拉倒&#xff0c;找点简单题练练语法基础 然后边学边刷二分查找和双指针 递归和暴力&#xff0c;边学边刷 学习贪心&#xff0c;练个几十道 再去过下数据结构 开始算法:搜索&#xff0c;动态规划&#xff0c; 搜索很重要&#xff0c;深…...

Elasticsearch 系列专题 - 第一篇:Elasticsearch 入门

Elasticsearch 是一个功能强大的开源分布式搜索和分析引擎,广泛应用于日志分析、实时搜索、数据可视化等领域。本篇将带你了解 Elasticsearch 的基本概念、安装方法以及简单操作,帮助你快速上手。 1. 什么是 Elasticsearch? 1.1 Elasticsearch 的定义与核心概念 Elasticse…...

【LeetCode 题解】数据库:1321.餐馆营业额变化增长

一、问题描述 本题给定了一个名为 Customer 的表&#xff0c;记录了餐馆顾客的交易数据&#xff0c;包括顾客 ID、姓名、访问日期和消费金额。作为餐馆老板&#xff0c;我们的任务是分析营业额的变化增长情况&#xff0c;具体来说&#xff0c;就是计算以 7 天&#xff08;某日…...

Apache Nifi安装与尝试

Apache NIFI中文文档 地址&#xff1a;https://nifichina.github.io/ 下载安装配置 1、环境准备 Nifi的运行需要依赖于java环境&#xff0c;所以本机上需要安装java环境&#xff0c;并配置环境变量。 1.1查看本机是否已经存在java环境 请先执行以下命令找出系统中真实可用…...

【Git 常用操作指令指南】

一、初始化与配置 1. 设置全局账户信息 git config --global user.name "用户名" # 设置全局用户名 git config --global user.email "邮箱" # 设置全局邮箱 --global 表示全局生效&#xff0c;若需针对单个仓库配置&#xff0c;可省略该参数 2.…...

Django 生成PDF文件

在这里&#xff0c;我们将学习如何使用Django视图设计和生成PDF文件。我们将使用ReportLab Python PDF库生成PDF&#xff0c;该库可以创建定制的动态PDF文件。 这是一个开源库&#xff0c;可以通过在Ubuntu中使用以下命令轻松下载。 $ pip install reportlab Python Copy …...

多账户使用Github的场景,设置 SSH 多账号使用特定 key

遇到多账户使用Github的场景&#xff0c;常难以管理ssh文件 解决方案&#xff1a; 你可以通过配置 ~/.ssh/config 文件&#xff0c;生成多个SSH key 让 Git 识别不同 key 来对应不同 GitHub 账号。 ✅ 正确的 key 类型有这些常见选项&#xff1a; rsa&#xff1a;老牌算法&a…...

js中this指向问题

在js中&#xff0c;this关键字的指向是一个比较重要的概念&#xff0c;它的值取决于函数的调用方式。 全局状态下 //全局状态下 this指向windowsconsole.log("this", this);console.log("thiswindows", this window); 在函数中 // 在函数中 this指向win…...

BabelDOC ,开源的 AI PDF 翻译工具

BabelDOC 是一款开源智能 PDF 翻译工具&#xff0c;专门为科学论文的翻译而设计。它能够在原文旁边生成翻译文本&#xff0c;实现双语对照&#xff0c;用户无需频繁切换窗口&#xff0c;极大提升了阅读的便利性。此外&#xff0c;BabelDOC 能够完整保留数学公式、表格和图形&am…...

Dify 生成提示词的 Prompt

Dify 生成提示词的 Prompt **第1次提示词****第2次提示词****第3次提示词**总结 Dify 生成提示词是&#xff0c;会和LLM进行3次交互&#xff0c;下面是和LLM进行交互是的Prompt。 以下是每次提示词的概要、目标总结以及原始Prompt&#xff1a; 第1次提示词 概要&#xff1a; …...

在nvim的snippet补全片段中增加函数注释的功能

一、补全片段路径 如果使用nvim,应当在nvim的snippet的插件中增加对应补全的片段&#xff0c;目前我所用的补全的片段路径如下&#xff1a; /home/zhaoky/.local/share/nvim/site/pack/packer/start/vim-snippets.git/snippets我当前补全的是c语言所以使用的片段是c.snippets…...

阿里云负载均衡为何费用高昂?——深度解析技术架构与市场定价策略

本文深度解析阿里云负载均衡&#xff08;SLB&#xff09;产品的定价体系&#xff0c;从技术架构、安全防护、合规成本三个维度揭示费用构成逻辑。通过2023年某跨国企业遭受的混合型DDoS攻击案例&#xff0c;结合Gartner最新安全支出报告&#xff0c;给出企业级负载均衡成本优化…...

大数据(7)Kafka核心原理揭秘:从入门到企业级实战应用

目录 一、大数据时代的技术革命1.1 消息中间件演进史1.2 Kafka核心设计哲学 二、架构深度解构2.1 核心组件拓扑2.1.1 副本同步机制&#xff08;ISR&#xff09; 2.2 生产者黑科技2.3 消费者演进路线 三、企业级应用实战3.1 金融行业实时风控3.2 物联网数据管道 四、生产环境优化…...

01背包 Java

① 记忆化搜索解法&#xff1a; import java.util.*; import java.io.*;public class Main {static int n, m;static int[] v, w;static int[][] memory; // 记忆化数组public static void main(String[] args) throws Exception {BufferedReader br new BufferedReader(new …...

【Kafka基础】消费者命令行完全指南:从基础到高级消费

Kafka消费者是消息系统的关键组成部分&#xff0c;掌握/export/home/kafka_zk/kafka_2.13-2.7.1/bin/kafka-console-consumer.sh工具的使用对于调试、测试和监控都至关重要。本文将全面介绍该工具的各种用法&#xff0c;帮助您高效地从Kafka消费消息。 1 基础消费模式 1.1 从最…...

Seq2Seq - 编码器(Encoder)和解码器(Decoder)

本节实现一个简单的 Seq2Seq&#xff08;Sequence to Sequence&#xff09;模型 的编码器&#xff08;Encoder&#xff09;和解码器&#xff08;Decoder&#xff09;部分。 重点把握Seq2Seq 模型的整体工作流程 理解编码器&#xff08;Encoder&#xff09;和解码器&#xff08…...