【软件建模】对软件建模的认识

举报
huahua.Dr 发表于 2022/09/08 23:56:57 2022/09/08
【摘要】 一、软件建模的定义软件建模就是对一个系统的抽象化,在需求和实现之间架起一座桥梁,通过模型指导一个软件系统的具体实现。简单来说,软件建模就是对软件设计思想的一个体现。

一、软件建模的定义

认识软件开发的两个范围维度:

(1)解决方案域:就是通过软件建模和软件设计,去实现一个软件系统;是去定义世界,改造世界的一个过程。帮助业务领域更好的运作。

(2)问题域:也就是业务领域,是基于解决方案域,认识世界,认识软件系统,实现系统中的业务并运作起来。

软件建模就是对一个系统的抽象化(并不是一个完全的表示),属于解决方案域,在需求和实现之间架起一座桥梁,通过模型指导一个软件系统的具体实现。简单来说,软件建模就是对软件系统设计思想的一个体现。

 

二、如何进行软件建模

1.首先得清楚,进行软件建模的一些基本原则:

(1)需要识别并使用正确的模型图进行软件建模,并且模型需要与实际相符合,有联系(真实性)

(2)需要从不同的视角,使用不同的模型图去表示一个系统(抽象化)

不同的视图维度有那些呢?

黑盒视图:就是外部视图,表示系统做什么(what)展示的是系统给外界所呈现的功能,看不到系统的内部组成和运行机制

白盒视图:就是内部视图,表示系统怎么做(how)展示的是系统的内部组成和运作机制

具体有四种视角:

1)【黑盒视图】外部视角:对系统上下或环境进行建模(该系统具备那些对外呈现的功能

2)【黑盒视图】交互视角:对系统及环境或者系统的构件之间的交互进行建模(该系统所具备的功能与那些其他外部组件有交互关系

3)【白盒视图】结构化视角:对系统的组织或者系统所处理的数据结构进行建模(该系统内部所具备了那些组织结构,以达到实现对外功能

4)【白盒视图】行为视角:对系统的动态行为以及系统如何响应事件进行建模(该系统内部是如何运行的,以满足对外功能需求

那么不同的模型又有哪些呢?总共汇总有9种模型图:

1)【黑盒视图】【外部/交互视角】用例图:用于描述角色以及角色与用例之间的连接关系(如:泛化、关联和依赖);说明的是系统实现了那些功能,谁要使用这些系统功能,以及他们使用该系统可以做些什么(与外部交互)。是一种静态模型

2)【黑盒视图】【外部视角】组件图:也叫构件图,用于描述系统的物理结构以及各种构件之间的依赖关系。是一种静态模型

3)【黑盒视图】【交互视角】部署图:用于描述系统的物理部署。例如计算机和设备,以及它们之间是如何连接的。是一种静态模型

4【白盒视图】【结构化视角】类图:用于描述系统中的类,以及各个类之间的关系(如:泛化、实现、依赖、关联、聚合、组合);说明的是系统内部的数据结构,是一种静态模型

5)【白盒视图】【结构化视角】对象图:与类图极为相似,它是类图的实例,对象图显示类的多个对象实例,而不是实际的类。它描述的不是类之间的关系,而是对象之间的关系。是一种静态模型

6)【白盒视图】【行为视角】状态图:用于描述类的对象所有可能的状态,以及事件发生时状态的转移条件,是对类图行为上的补充。是一种动态模型

7)【白盒视图】【行为视角】活动图:用于描述用例要求所要进行的活动,以及活动间的约束关系,有利于识别并行活动。是一种动态模型

8)【白盒视图】【行为视角】顺序图:也叫序列图或时序图,用于描述参与者与系统对象之间有序的交互过程,强调消息是如何在对象之间被发送和接收的。是一种动态模型

9)【白盒视图】【行为视角】合作图:也叫协作图,和顺序图相似,用于描述对象间的动态合作关系。可以看成是类图和顺序图的交集,重点描述对象之间的相互通信关系。如果强调时间和顺序,则使用序列图;如果强调上下级关系,则选择合作图。是一种动态模型

2.清楚了软件建模的基本原则和一些概念,再者需要了解软件建模的方法

在不同的领域和场景下有不同的软件建模方法,其各自的建模思想和采用的建模工具也不尽相同,如:

(1)结构化方法 (Structured Method)

(2)面向对象方法(Object Oriented Method)

(3)基于构件方法(Component Based Development)

(4)面向服务方法(Service Oriented Method)

(5)面向方面方法(Aspect Oriented Method)

(6)模型驱动方法 (Model Driven Development)

(7)形式化方法 (Formal Method)

3.最后需要借助一些建模工具来辅助我们提高软件建模效率

常用的软件建模工具很多,其中面向对象的软件建模非常常用,它有一套自己的建模标准,叫UML,统一建模语言,是面向对象开发中一种通用的图行化的建模语言,所以推荐使用UML的建模工具,比较常用的是一款软件工具的插件,叫PlantUML;UML建模工具有以下特点:

面向对象支持面向对象技术的主要概念,提供了一批基本的模型元素的表示图形和方法,能简洁明了地表达面向对象的各种概念。

可视化,表示能力强通过UML的模型图能清晰地表示系统的逻辑模型和实现模型。可用于各种复杂系统的建模。

独立于过程是系统建模语言,独立于开发过程。

独立于程序设计语言用UML建立的软件系统模型可以用Java、C++、Smalltalk等任何一种面向对象的程序设计来实现。

易于掌握使用UML图形结构清晰,建模简洁明了,容易掌握使用。

 

4.UML统一建模语言的实践

(1)UML的组成:由事物、关系、图三部分组成。

       1)事物:结构事物(用例、类、接口、协作、活动类、组件、节点);行为事物(交互、状态机);组织事物(包);辅助事物(注释)

       2)关系:关联、依赖、泛化、组合、聚合

       3)图:动态图(状态图,顺序图,合作图,活动图);静态图(用例图,类图,对象图,组件图,部署图)

(2)UML的五种视图(对上面九种模型图的实际应用)

    (1)【白盒视图】逻辑视图,使用类图和对象图实现

    (2)【白盒视图】实现视图,使用组件图实现

    3【白盒视图】运行视图,使用状态图,顺序图,合作图,活动图实现

    (4【黑盒视图】部署视图,使用部署图实现

    (5)【黑盒视图】用例视图,使用用例图实现

也叫4+1视图,其中用例视图出现在其他四个视图里面:

 


(3) UML模型图的五种关系

类的五种关系:泛化=实现>组合>聚合>关联>依赖(耦合度依次减弱,一个类的改变对另一个类影响越大则耦合度越强)

1)泛化: 指的是类之间的继承或者实现关系,继承使用空心三角箭头+实线表示[<|--],实现使用空心三角箭头+虚线表示[<|..],生命周期:在定义类关系时就必须确定,一开始有效

2)组合:表示个体与组成部分之间的关联关系,组成部分是个体不合分割的一部分[*--],使用实心菱形+实线表示,生命周期:在类实例化时有效

3)聚合:表示集体与个体的关联关系,个体独立于集体,使用空心菱形+实线[o--],生命周期:在调用方法调用时有效

4)关联:表示一个类需要依赖另一个类做成员属性的关联关系,使用箭头+实线表示[-->],生命周期:在类的成员变量内有效

5)依赖:表示一个类需要依赖另一个类做方法的返回值、形参、局部变量或者调用另外一个类方法的依赖关系,使用箭头+虚线表示[..>],生命周期:在类的函数调用时有效

(4)应用到具体的软件开发流程

1)需求分析:使用用例视图(用例模型图),去描述外部参与者(角色)对系统功能的建模;分析是否满足客户需求。

2)概要设计:使用逻辑视图(类图、对象图)和行为视图(状态图、活动图、合作图、顺序图),去描述系统的静态结构和动态结构。

3)详细设计:使用逻辑视图(类图、对象图)和行为视图(状态图、活动图、合作图、顺序图),去描述实现系统的静态结构和动态结构方案。

4)编码阶段:将详细设计的静态结构和动态结构方案实现到具体编码中。

5)测试阶段:使用逻辑视图(类图)描述编写单元测试用例,使用实现视图(组件图)和部署视图(部署图)去描述集成测试用例。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。