【软件建模】对软件建模的认识
一、软件建模的定义
认识软件开发的两个范围维度:
(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)测试阶段:使用逻辑视图(类图)描述编写单元测试用例,使用实现视图(组件图)和部署视图(部署图)去描述集成测试用例。
- 点赞
- 收藏
- 关注作者
评论(0)