软件工程——UML简介

软件工具:UML

UML也称为统一建模语言。它提供了一个可视化的建模语言,所谓可视化即通过一些很直观,容易理解的图形化来描述系统。

因此用uml实现的文档形式为:" 图形化+文本描述= 相应文档 "

UML语言很全面,庞大,可以表示各种复杂的问题。这样一个丰富的语言,我们只需要用其20%部分,描述80%的问题,因此学习中,我们只需要掌握常用的基本组成部分,关键是要对这些组成部分了解之后,能够应用他所提供的表示方法,进行分析和设计。

实际上在真正应用里面,活用UML是非常关键的,虽然它是一个语言,但是应用这个语言要根据分析设计里面需要描述设计模型的需要来应用。而不是说死记一些条目,很死板的去应用。只有活用,才能感受到UML语言的威力。

一个比喻:uml中所提供的标准的图符,相当于音乐五线谱里的乐符,学会看乐符才能看得懂乐谱,才能进一步创造音乐。同样,懂得uml中的图符,才能进行系统分析和设计。

应用UML的三种方式

(1)UML作为草图------非正式的、不完整的图(通常是在白板上手绘草图),借助可视化语言的功能,用于探讨问题或解决方案空间的复杂部分。

(2)UML作为蓝图------相对详细的设计图,用于:1)逆向工程,即以UML图的方式对现有代码进行可视化,使其易于理解。2)代码生成(前向工程),一般情况下,代码生成工具使用图生成一些代码,然后由开发者编写并填充其他代码。

(3)UML作为编程语言------用UML完成软件系统可执行规格说明。可执行代码能够被自动生成,但并不像通常一样为开发者所见或修改,但是目前在理论、工具的健壮性和可用性方面仍然处于发展阶段。

UML 的9种图:

用例图:定义了系统的功能需求,它完全是从系统的外部观看系统功能,并不描述系统内部对功能的具体实现。

类图:描述系统的静态结构,表示系统中的类以及类与类之间的关系。

对象图:描述了一组对象以及它们之间的关系,表示类的对象实例。

组件图:描述组件以及它们之间的关系,表示系统的静态实现视图。

具体系统可能划分成不同组件和模块,有哪些模块,组件之间的关系怎样由组件图描述。

例子:在课程注册管理系统中,有两个子系统:收费系统,注册系统。

注册系统分为:课程组件,人员管理组件。

注册系统在课程注册完后,通过接口调用收费系统,将学生相应注册信息传递给收费系统,形成对学生的收费单,通知学生交费。

课程系统又通过接口管理相应课程信息,即课程模块。对于学生教师人员进行管理。通过这两个模块,实现存取相应人员和课程信息,最后实现相应功能。

部署图:反映系统中软件和硬件的物理架构,表示系统运行时的处理节点,以及节点中组件的配置。

时序图和协作图:都表示一组对象之间的动态协作关系。其中时序图反映对象之间发送消息的时间顺序,协作图反映收发消息的对象的结构组织。时序图和协作图是同构的,即两者之间可以相互转换。

状态图:强调同一个类里对象状态变化过程,和相应事件触发过程。

所谓状态,是对对象属性值的一种抽象。各对象之间相互触发(即作用)就形成了一系列的状态变化。我们把一个触发行为称作一个事件。对象对事件的响应,取决于接受该触发的对象当时所处的状态,响应包括改变自己的状态或者又形成一个新的触发行为。

状态有持续性,它占用一段时间间隔。状态与事件密不可分,一个事件分开两个状态,一个状态隔开两个事件。事件表示时刻,状态代表时间间隔。

活动图:反映系统中从一个活动到另一个活动的流程,强调对象间的控制流程。

相关推荐
2501_926978335 小时前
“LLM的智能本质--AGI的可能路径--人类的意识本质”三者的统一基底(5.0理论解读)
人工智能·经验分享·笔记·深度学习·机器学习·ai写作·agi
لا معنى له6 小时前
WAM与AC-WM:具身智能时代的世界动作模型与动作条件世界模型
人工智能·笔记·学习
薛先生_0997 小时前
js学习语法第一天
开发语言·javascript·学习
Wilber的技术分享7 小时前
【LeetCode高频手撕题 2】面试中常见的手撕算法题(小红书)
笔记·算法·leetcode·面试
愚昧之山绝望之谷开悟之坡8 小时前
合格境外投资者
笔记
寒秋花开曾相惜10 小时前
(学习笔记)3.8 指针运算(3.8.3 嵌套的数组& 3.8.4 定长数组)
java·开发语言·笔记·学习·算法
是翔仔呐10 小时前
第11章 显示外设驱动:I2C协议OLED屏、SPI协议LCD屏字符/图片/中文显示
c语言·开发语言·stm32·单片机·嵌入式硬件·学习·gitee
_李小白10 小时前
【AI大模型学习笔记之平台篇】第五篇:Trae常用模型介绍与性能对比
人工智能·笔记·学习
承渊政道11 小时前
【优选算法】(实战体会位运算的逻辑思维)
数据结构·c++·笔记·学习·算法·leetcode·visual studio
AI-Ming11 小时前
程序员转行学习 AI 大模型: 踩坑记录:服务器内存不够,程序被killed
服务器·人工智能·python·gpt·深度学习·学习·agi