# 软件建模的本质是映射

建模从字面含义上理解就是，为了研究某种现实或事物而建立相应的模型。在上学的时候，我们会参加一些奥数比赛，里面经常会出现一些情景题，描述了一些现实问题，而我们一般会用数学模型对其进行抽象和建模，然后借助数学公式得出结果。

而在软件世界里，建模的思路也是一样的，只不过它用的不是数学模型和数学公式，而是用的一些软件建模方法对软件要解决的现实问题进行分析和建模。软件建模方法主要分为面向过程和面向对象两个方向，在面向对象的方向中又分为领域驱动设计和用例驱动设计这两大类。而本文以及后续的相关文章主要以面向对象中的用例驱动设计为主线来介绍。

既然软件建模是作为一种分析方法来分析一些现实问题，那么它必然会将现实世界和我们的对象世界建立一套映射关系。如图1所示，我们先看在现实世界中，它主要有哪些元素构成？我们站在一个较高的层次来看现实世界的运作，它主要有人，事，物，规则这四个元素构成，事指的是我们要做的事情，而物代表做事情过程中需要用到的事物，规则代表人在做事情过程中需要遵循的纪律。那么对应到我们的对象世界中同样也应该有四个元素构成，分别为参与者，用例，业务实体和业务场景。

![图1](https://1422447769-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LuM9BGn-c7ft3h1D5Gf%2F-MCm8MUmr8l7n1gl6CfX%2F-MCm9py4hcI6rqOybPwe%2Fimage.png?alt=media\&token=280c556b-e9f3-4976-b3ed-0c34adf4e722)

有了这个认知前提后，后面将重点介绍如何借助用例驱动的方法在对象世界中确定参与者，用例，业务实体和业务场景，并基于这些元素如何构建我们的业务架构。

请牢记这个映射的前提，因为当我们在对象世界中想不明白的时候，我们需要回到现实世界中理清我们的思路。
