【无标题】

一、为什么要建模

  • 软件开发之后都是用来解决现实问题的, 通过计算机软件、可以高效、自动化的去解决现实中低效的、手工的业务过程。
  • 软件开发的本质就是在计算机的虚拟空间中根据现实需求创建一个新的世界, 这个有工程师创造出来的虚拟世界,是一个大气恢弘的罗马都城、还是垃圾遍地的棚户区,就看软件工程师如何设计它了。而软件设计的主要过程就是软件建模(软件设计-> 软件建模, 软件落地-> 软件开发)

二、什么是软件建模

:::info
软件建模: 就是未开发的软件建造模型, 模型是对客观存在的抽象。

  • 例如: 地图, 就是对地理空间建模

  • 三视图: 就是对建筑建构建模
    :::
    在软件开发中, 两个客观存在:

  • 一个是我们要解决的领域问题,比如我们要开发一个电子商务网站,那么客观的领域问题就是如何做生意,卖家如何管理商品,管理订单,服务用户。买家如何挑选商品,如何下单,如何支付等等;对这些客观领域问题的抽象就是各种功能及其**关系、**各种模型对象及其关系,各种业务处理流程的理解。

  • 另一个客观存在就是最终开发出来的软加你系统,这个软件系统也是客观存在的, 软件有哪些类组成,这些类如何组织成一个个组件,这些类和组件之间的依赖关系如何,运行期如何调用,需要部署多少台机器,服务器之间如何通信等等。

![image.png](https://img-blog.csdnimg.cn/img_convert/e8144b9a78dc94e2074d86eb1eb5760c.png#clientId=u094a7511-cb3a-4&crop=0&crop=0&crop=1&crop=1&from=paste&height=461&id=u83fb7578&margin=[object Object]&name=image.png&originHeight=461&originWidth=2088&originalType=binary&ratio=1&rotation=0&showTitle=false&size=73694&status=done&style=none&taskId=u7b484d59-79b1-4360-8155-a15cd7ee2ed&title=&width=2088)
所有两个客观存在的抽象, 就是我们的软件模型,一方面我们要对领域问题和软件系统进行分析、设计、抽象。另一方面,我们根据抽象出来的模型开发,实现最终的软件系统。这就是软件开发的主要过程。而对领域问题和软件系统进行分析、设计和抽象的这个过程中,我们专门化分出来,就是软件建模。

三、软件建模的方法论

3.1、建模过程

https://www.woshipm.com/pmd/2916531.html
https://www.woshipm.com/pd/2920580.html
https://www.woshipm.com/pd/2925744.html

3.2、完整的建模描述

:::info
软件建模比较知名的是4+1视图模型。
:::

4+1视图模型认为: 一个完整的软件设计模型,应该包含五个内容:

  • 逻辑视图: 描述软件的功能逻辑,有哪些模块组成,模块中包哪些类,其依赖关系如何
  • **开发视图 :**包括系统架构层面的层次划分, 包的管理,依赖的系统与第三方程序包。
  • 过程视图: 描述程序运行期的进程,线程,对象实力,以及与此相关的开发、同步、通信等问题。
  • 物理视图: 描述软件如何安装并部署在物理服务器上,以及不同服务器之间如何关联、通信。
  • 场景视图:针对具体的用用例场景,上面4个视图关联起来,一方面从业务角度描述,功能流程如何完成, 一方面从软件角度描述,相关组成部分如何互相依赖、调用。

在机械制图领域,一个立体的零件进行制图设计,必须要画三视图,即正视图、侧视图、俯视图,每张图都平面的,但是组合起来就完整地描述了一个立体的机械零件。4+1视图模型也是通过多个角度描述软件系统的某个方面的抽象模型,最终组合起来构成一个软件完整的模型。

四、建模工具:UML

4.1、UML概念

1997年,OMG 组织(Object Management Group对象管理组织)发布了统一建模语言(Unified Modeling Language,UML)。UML 是一种编制软件蓝图的标准化语言,它的目标之一就是为开发团队提供标准通用的设计语言来开发和构建计算机应用。UML 提出了一套 IT 专业人员期待多年的统一的标准建模符号。通过使用UML,这些人员能够阅读和交流系统架构和设计规划。UML支持面向对象的技术,能够准确的方便地表达面向对象的概念,体现面向对象的分析和设计风格.

  • UML的特点如下:
    • 面向对象
    • 可视化,表达能力强。
    • 独立于过程。
    • 独立于程序设计
    • 易掌握使用。

4.2、UML模型构成

:::info
以下内容分析主要基于面向对象软件设计。
:::

  • 事物: UML模型中最基本的构成元素, 是具有代表行的成分的抽象。
    • 结构事物: 类,接口,协作,用例,活动类,组件,节点。
    • 行为事物:交互,状态机。
    • 分组事物:包
    • 注视事物:解释
  • 关系: 关系把事物紧密联系在一起。
    • 四种关系:依赖,关联,实现,泛化。
  • 图种类: 图是事物和关系的可视化表示(十种图, 大体可以分为两种类型: 结构图,行为图)
    • 【行为】用例图
      • 用例图是从用户角度描述系统功能,并指出各个功能的操作者,用来捕捉系统的动态性质。
    • 【结构】类图
      • 类图描述了在一个系统中的对象和他们之间的关系,能够让我在正确编写代码以前对系统有一个全面的认识。
    • 【结构】对象图
      • 对象图描述的是参交互的各个对象再交互过程中的某一时刻的状态,对象图可以被看作是类图在某一时刻的实例。
    • 【结构】部署图
      • 用来描述一个系统的静态部署视图,这些图主要用于系统工程师。
    • 【行为】活动图
      • 活动图是UML动态模型的一种图形,一般用来描述相关用例图,活动图是一种特殊的状态图。
    • 【行为】状态图
      • 状态图是用于模拟系统的动态性质的五个图,这些图用来模拟一个对象的整个生命周期。
    • 【行为】序列图
      • 用来展示对象之间如何交互的,强调对象之间的消息是如何进行发送和接受的。
    • 【行为】协作图
      • 和序列图类似,如果强调上下级关系,那么使用协作图, 如果强调时间顺序,使用序列图。
    • 【组件】组件图
      • 用来描系统静态实现视图,组件图包括物理组件,如库,档案,文件夹等。

4.3、UML建模类型

4.3.1、结构建模

结构建模具有捕捉静态的功能,包括一下各项:

  • 类图
  • 对象图
  • 部署图
  • 包图
  • 组件图

4.3.2、行为建模

行为建模描述了在系统中的相互应用,代表之间的交互的结构图,行为建模显示系统的动态性质,包括下列各项:

  • 活动图
  • 交互图
  • 用例图

4.3.3、架构建模

架构建模表示的是一个系统的总体框架,它包含了系统的结构和行为的元素。架构建模可以被定义为整个系统的蓝图。包图是根据架构模型进行的。

4.4、各种类型图实例

4.4.1、类图

:::info
UML 图一般不直接映射到任何面向对象的编程语言,但在类图是一个例外。

类图可以用来:

  • 描述系统的静态视图。

  • 显示静态视图中的元素之间的协作。

  • 由系统执行的功能的描述。

  • 构建软件应用面向对象的语言。
    :::
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-a6Pi7jkG-1668876223733)(https://cdn.nlark.com/yuque/__puml/05cb89399d4f4649a085594fc8f91a16.svg#lake_card_v2=eyJ0eXBlIjoicHVtbCIsImNvZGUiOiJAc3RhcnR1bWxcblxuY2xhc3MgVGVzdCB7XG5cdC0gU3RyaW5nIG5hbWU7XG59XG5cbmNsYXNzIEFUZXN0IGV4dGVuZHMgVGVzdCB7XG5cdCsgU3RyaW5nIGdldE5hbWUoKTtcbn1cblxuQGVuZHVtbCIsInVybCI6Imh0dHBzOi8vY2RuLm5sYXJrLmNvbS95dXF1ZS9fX3B1bWwvMDVjYjg5Mzk5ZDRmNDY0OWEwODU1OTRmYzhmOTFhMTYuc3ZnIiwiaWQiOiJuTm9yNyIsIm1hcmdpbiI6eyJ0b3AiOnRydWUsImJvdHRvbSI6dHJ1ZX0sImNhcmQiOiJkaWFncmFtIn0=)]## 4.4.2、对象图
    :::info
    对象图可以被想象成正在运行的系统在某一时刻的快照。我们可以举一个例子来描述它:一个正在运行的列车。
    现在,如果运行一个单元列车运行,那么会发现它具有以下静态图片:

  • 这是一个特别的运行状态

  • 一个特定的乘客数量。如果捕捉在不同的时间,这将在不断改变。

所以,在这里我们可以想像的列车运行的管理单元是一个对象,具有上述值。任何现实生活中的简单或复杂的系统而且的确如此。
对象图可用于:

  • 使一个系统的原型。
  • 逆向工程。
  • 造型复杂的数据结构。
  • 从实用的角度了解系统。
  • 捕捉实例和链接。
  • 详细描述瞬态图。
    :::

4.4.3、组件图

:::info
组件图的使用可以被描述为:

  • 组件建模的一个系统。
  • 模型的数据库架构。
  • 模型的应用程序的可执行文件。
  • 模型系统的源代码。
    :::

4.4.4、部署图

:::info
部署图主要用于系统工程师。这些图用来描述的物理组件(硬件)以及它们的分布和关联。
为了阐述清楚细节,我们可以想像的硬件组件/节点上的软件组件位于部署图。
软件应用程序的开发需要复杂的业务流程模型。为了满足业务的需求,一个软件应用只做到高效是不够的,还应考虑到业务是否能够支持用户的不断增长以及响应的时间是否够快等。
软件应用程序可以是独立的,基于 Web,分布式,基于大型机和更多。
:::

4.4.5、用例图

:::info
用例图使用的场景:

  • 需求分析和高水平的设计。
  • 模拟系统的上下文。
  • 逆向工程。
  • Forward engineering.
    :::

4.4.6、交互图

:::info

  • UML 交互图描述的是对象之间的动态合作关系以及合作过程中的行为次序。

  • UML 交互图常常用来描述一个用例的行为,显示该用例中所涉及的对象以及这些对象之间的消息传递情况,即一个用例的实现过程。

  • UML 交互图包括两种:序列图和协作图。

    • 序列图 :显示对象之间的关系,强调对象之间消息的时间顺序,显示对象之间的交互。
    • 协作图 :描述对象之间的交互关系。
      :::
  • 序列图

  • 协作图

![image.png](https://img-blog.csdnimg.cn/img_convert/c1fe5715fb4356ad22d0e8aa560554bd.png#clientId=ue0d77c8e-3e7f-4&crop=0&crop=0&crop=1&crop=1&from=paste&height=335&id=u3d3d205d&margin=[object Object]&name=image.png&originHeight=335&originWidth=686&originalType=binary&ratio=1&rotation=0&showTitle=false&size=79479&status=done&style=none&taskId=ua008fad0-816a-43b5-8770-b95a312634d&title=&width=686)

4.4.7、状态图

:::info
状态图的作用主要体现在以下几个方面。

  • 状态图清晰地描述了状态之间的转换顺序,通过状态的转换顺序也就可以清晰地看出事件的执行顺序。如果没有状态图我们就不可避免地要使用大量文字来描述外部事件的合法顺序。
  • 清晰的事件顺序有利于程序员在开发程序时避免出现事件顺序错误的情况。例如,对于一个网上销售系统,在用户处于登录状态前是不允许购买商品的,这就需要程序员开发程序的过程中加以限制。
  • 状态图清晰地描述了状态转换时所必需的触发事件、监护条件和动作等影响转换的因素,有利于程序员避免程序中非法事件的进入。例如,飞机起飞前半小时不允许售票,在状态图中就可以清晰地看到,可以提醒程序员不要遗漏这些限制条件。
  • 状态图通过判定可以更好地描述工作流因为不同的条件发生的分支。例如,当一个班的人数少于10人的时候需要和其他班合为一班上课,大于10人则单独上课,在状态图中就可以很明确地表达出来。
    :::

4.4.8、活动图

:::info
活动图是适用于该系统的活动流程建模。应用程序可以有多个系统。活动图也抓住了这些系统,并介绍了流程从一个系统到另一个。在其他图中,这个特定的用法,不提供。这些系统可以是数据库,外部队列或任何其他系统。
现在,我们将看看活动图到实际应用。从上面的讨论,很显然,活动图是来自一个非常高的级别。因此,它给出了一个系统的高级视图。这种高层次的观点主要是针对企业用户或任何其他人而不是一个技术人员。
以下是活动图的主要用途:

  • 使用业务建模工作流程。
  • 建模的业务需求。
  • 高层次的理解系统的功能。
  • 调查在后一阶段的业务需求。

活动图, 是细化了的状态图;
:::
![image.png](https://img-blog.csdnimg.cn/img_convert/a5cbd34bdf3524463e89e2d9bfcec7c9.png#clientId=ue0d77c8e-3e7f-4&crop=0&crop=0&crop=1&crop=1&from=paste&height=361&id=u78f8acfc&margin=[object Object]&name=image.png&originHeight=361&originWidth=646&originalType=binary&ratio=1&rotation=0&showTitle=false&size=100829&status=done&style=none&taskId=u3251688e-5474-45af-8dd2-dae5fc3e682&title=&width=646)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值