换个角度看软件建模

换个角度看软件建模
www.zeeklog.com  - 换个角度看软件建模

领域建模的目的

用一句话讲领域建模的根本目的就是统一认识、减少沟通成本。

这句话听起来很简单,但其实有两个层面的含义:一是工程技术规范,指的是业内规范;二是业务认识,指统一业务、开发、测试、产品的认识。

然而要做到统一与规范是很难的,开发喜欢从技术层面去描述问题,产品习惯从业务层面描述问题,双方沟通成本较大,此时领域建模就能够起到“一图胜千言”的作用。

领域建模的关键

领域建模的关键是找到业务的流程节点,找到业务流程节点就成功了一半。正如在小学做阅读理解一样,重要的是概括文章中心思想和段落划分。

其中段落划分就是业务流程中的节点,所以每个段落分层一定有核心点,而核心点就是组成文章中心的一部分。抓住这几个核心要点就等于掌握了整个文章的主旨,再深入分析每个支撑要点。这样一来,既能站在主层次看整个流程,又能深入细节看具体内容。

如何建模

那么到底该如何建模,我们需要先理解关键概念,即领域是什么,模是什么,再来学习方法。

领域和模的定义

首先来看领域是什么,百科中将它解释为“学术思想或社会活动的范围”,“的”字前面都是修饰作用,重点需要关注“范围”这个词,谈建模一定要限定范围。比如商品领域建模、优惠券领域建模等。

其次,模是模型,反映到业务上,模就是业务场景的映射,换言之,通过模型就能推导出业务场景,反之也一样,通过业务场景也能推导出模型,所以,不懂业务无法建模。

建模的前提

在了解怎么建模之前,我们需要认识到:

  • 业务是建模之母
  • 任何业务都存在一条稳定的业务流程
  • 业务流程中,流程节点的产物就是业务骨架

以上结论在实际操作中会不断用到。下面就具体从实际可操作的方法上分析领域建模。

建模的具体步骤

第一步:找出业务主流程

这是业务的生命周期,不管怎么讲,任何业务都有一套稳定的业务流程。

类似优惠券业务,业务流程就是建券、发券、用券。

业务主流程的每个流程节点都会有一个产物出现,这个产物就是业务的骨架,在这个业务下,它的产物是券批次、优惠券实例。

注意,它仅仅是一个骨架,但至少需要找到两个关键领域对象。

第二步:细分业务主流程

这一步是在主流程基础上继续分析子流程,主流程能让我们知道整体的业务流程,但还有些细节流程是在子流程中,比如建券是一个大流程,那么我们马上会问,这个券长什么样?有哪些关键属性?等等,多问几个为什么就可以深入到业务细节了。

再比如发券过程,需要经过一些检查,如规则检查、风控检查,最后才是发券,这样分析下来,我们对业务掌握得越来越深入。

第三步:抽象

从第二步中,我们得到更多具体对象,但此时要进行合并整理,并不是直接加到券模板或者优惠券实例关联部分上,这个过程是不断打磨的过程。

Read more

超快速,使用ChatGPT编写回归和分类算法

超快速,使用ChatGPT编写回归和分类算法

本文将使用一些 ChatGPT 提示,这些提示对于数据科学家在工作时非常重要。 微信搜索关注《Python学研大本营》,加入读者群,分享更多精彩 以下是一些示例ChatGPT 提示的列表以及数据科学家的响应。 ChatGPT 提示 为决策树回归算法生成 python 代码。 下面是使用scikit-learn在 Python 中进行决策树回归的示例代码: import numpy as np import matplotlib.pyplot as plt from sklearn.tree import DecisionTreeRegressor # Generate random data rng = np.random.default_rng() x = 5 * rng.random(100) y = np.sin(x) + 0.

By Ne0inhk
力扣每日一题:993.二叉树的堂兄弟节点 深度优先算法

力扣每日一题:993.二叉树的堂兄弟节点 深度优先算法

993.二叉树的堂兄弟节点 难度:简单 题目: 在二叉树中,根节点位于深度 0 处,每个深度为 k 的节点的子节点位于深度 k+1 处。 如果二叉树的两个节点深度相同,但 父节点不同 ,则它们是一对堂兄弟节点。 我们给出了具有唯一值的二叉树的根节点 root ,以及树中两个不同节点的值 x 和 y 。 只有与值 x 和 y 对应的节点是堂兄弟节点时,才返回 true 。否则,返回 false。 示例: 示例 1: 输入:root = [1,2,3,4], x = 4, y = 3 输出:false

By Ne0inhk
1239.串联字符串的最大长度 关于字符串的回溯算法!

1239.串联字符串的最大长度 关于字符串的回溯算法!

题目: 给定一个字符串数组 arr,字符串 s 是将 arr 某一子序列字符串连接所得的字符串, 如果 s 中的每一个字符都只出现过一次,那么它就是一个可行解。 请返回所有可行解 s 中最长长度。 提示: 1 <= arr.length <= 16 1 <= arr[i].length <= 26 arr[i] 中只含有小写英文字母 示例: 示例 1: 输入:arr = ["un","iq","ue"] 输出:4 解释:所有可能的串联组合是

By Ne0inhk