3.3 软件需求:面对对象分析模型

news2024/11/24 18:30:55

面对对象分析模型

  • 1、对象
  • 2、面对对象的软件开发模型
  • 3、用例图建模基础
    • 3.1 用例图基本符号
      • 参与者
      • 用例
      • 系统
      • 执行关联
    • 3.2 用例建模过程
    • 3.3 用例图初步
    • 3.4 用例图进阶
      • 关联Association
      • 泛化Inheritance
      • 包含Include
      • 扩展Extend
      • 示例

1、对象

在现实世界中有意义的,与所要解决的问题有关系的任何事物都可以作为对象,包括具体的物理实体的抽象、人为的概念、任何有明确边界和意义的东西。如:一名职工、一本图书、贷款、生产计划、一场演出等。
一个对象通常由 对象名、属性和方法(操作) 三部分组成。
几种著名的面对对象方法:UML

  1. Booch方法(1991)
  2. Coad- Yourdon 方法(1991)
  3. Rumbaugh方法(简称 OMT)(object Modeling Technology1991 )
  4. Jacobson 方法(简称 OOSE,1992)
  5. 由 Rumbaugh、 Booch、Jacobson 提出的统一建模语言(简称UML)( Unify Modeling Language ,1994 ):一种可视化建模语言,能描述开发需要的各种视图,并以此为基础组建系统。
  • 消息。对象之间进行通信的一种构造叫做消息。消息响应
  • 类。一组大体相似的对象。一个类所包含的方法和数据描述了一组对象的共同行为和属性。类是对象之上的抽象,对象是类的具体化,是类的实例。
  • 继承。继承是父类和子类之间共享数据和方法的机制。一个父类可以有多个子类,一个子类也可以有多个父类。
  • 多态。对象收到消息时,要予以响应。不同对象收到同一消息可以进行不同的响应,产生完全不同的结果,这种现象叫做多态。
  • 动态绑定。当一个对象发送消息请求服务时,要根据接受对象的具体情况将请求的操作与实现的方法进行结合叫做动态绑定。
  • 面对对象原则
    1. 单一责任原则。让一个类只做一种类型责任
    2. 开关原则。可修改,不封闭
    3. 里氏替换原则。在任何父类可以出现的地方,都可以用子类的实例来赋值给父类型的引用。
    4. 依赖倒置原则。高层模块不应该依赖于低层模块,二者都应该依赖于抽象;抽象不应该依赖于细节,细节应该依赖于抽象。
    5. 接口分离原则。依赖于抽象,不要依赖于具体,同时在抽象级别不应该有对于细节的依赖。这样做的好处就在于可以最大限度地应对可能的变化,即使用多个专门的接口比使用单一的总接口总要好。

2、面对对象的软件开发模型

在这里插入图片描述

  1. 数据模型(对象模型):描述系统数据结构的对象模型。
  2. 行为模型(动态模型):描述系统控制结构。
  3. 功能模型:描述系统功能。
    一个典型的软件系统使用数据结构(对象模型),执行操作(动态模型),并且完成数据值的变化(功能模型)。

3、用例图建模基础

3.1 用例图基本符号

用例建模用于描述系统需求,把系统当作黑盒,从用户的角度,描述系统的场景。主要图形元素有:

参与者

外部用户或外部实体在系统中扮演的角色,需要使用系统或与系统交互的东西,可以是一个人、一个计算机子系统、硬件设备或者时间等角色。
在这里插入图片描述

  • 如何确定参与者?
    在获取用例前首先要确定系统的参与者,开发人员可以通过回答以下的问题来寻找系统的参与者。

    1. 谁将使用该系统的主要功能?
    2. 谁将需要该系统的支持以完成其工作?
    3. 谁将需要维护、管理该系统,以及保持该系统处于工作状态?
    4. 系统需要处理哪些硬件设备?
    5. 与该系统交互的是什么系统?
    6. 谁或什么系统对本系统产生的结果感兴趣?
  • 示例:饮料自动售卖系统
    每一个参与者都有自己的执行关联。
    在这里插入图片描述

用例

  • 定义:对一组动作序列的描述,系统通过执行这一组动作序列为参与者产生一个可观察的结果。用例名往往用动宾结构命名。

  • 特征:

    1. 说明了系统具有的一种行为模式
    2. 说明了一个参与者与系统执行的一个相关的事件序列;
    3. 提供了一种获取系统需求的方法;
    4. 提供了一种与最终的用户和领域专家进行沟通的方法;
    5. 提供了一种测试系统的方法。
  • 图形表示:用椭圆形表示

  • 怎样使用用例?

    1. 参与者希望用户执行什么任务?
    2. 参与者在系统中访问哪些信息(创建、存储、修改、删除等)?
    3. 需要将哪些外界信息提供给系统
    4. 需要将系统的什么事情告诉参与者
    5. 如何维护系统

系统

用于界定系统功能范围,描述该系统功能的用例都置于其中,而描述外部实体的参数者都置于其外。用大矩形表示。
在这里插入图片描述

执行关联

参与者(Actor)执行用例(Use Case)之间的关系。
连接参与者和用例,表示参与者所代表的系统外部实体与该用例所描述的系统需求有关。用直线表示。

3.2 用例建模过程

建立用例模型的顺序:

  1. 确定谁会直接使用该系统。这些都是参与者(Actor)。
  2. 选取其中一个参与者。
  3. 定义该参与者希望系统做什么,参与者希望系统做的每件事成为一个用例
  4. 对每件事来说,何时参与者会使用系统,通常会发生什么,这就是用例的基本过程。
  5. 描述该用例的基本过程
  6. 考虑一些可变情况,把他们创建为扩展用例,
  7. 复审不同用例的描述,找出其中的相同点,抽出相同点作为共同的用例。
  8. 重复步骤2~7找出每一个用例。

3.3 用例图初步

自动售卖系统
在这里插入图片描述
在这里插入图片描述

3.4 用例图进阶

用例之间关系:关联、泛化、包含、扩展

关联Association

表示参与者与用例之间的通信,任何一方都可发送或接受信息。
在这里插入图片描述

泛化Inheritance

就是通常理解的继承关系,子用例和父用例相似,但表现出更特别的行为;子用例将继承父用例的所有结构、行为和关系。子用例可以使用父用例的一段行为,也可以重载它。父用例通常是抽象的。
用例之间的is a kind of关系,表示用例之间的场景共享;Actor之间的 is a kind of关系,一般描述责任共享。
在这里插入图片描述

包含Include

包含关系用来把一个较复杂用例所表示的功能分解成较小的步骤。一个用例可以包含另外一个用例。
在这里插入图片描述

扩展Extend

扩展关系是指用例功能的延伸,相当于为基础用例提供一个附加功能。由一个用例的扩展点可以扩展出另外一个用例。
在这里插入图片描述
扩展关系中,一个基本用例执行时可以不执行扩展部分,但是在包含关系中,一定会执行包含用例部分。

  • 关联、泛化、包含和扩展的区别
    在这里插入图片描述

示例

自动售卖系统
在这里插入图片描述
图书借阅系统用例图:
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2236892.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

「C/C++」C++标准库 之 #include<exception> 异常处理库

✨博客主页何曾参静谧的博客📌文章专栏「C/C」C/C程序设计📚全部专栏「VS」Visual Studio「C/C」C/C程序设计「UG/NX」BlockUI集合「Win」Windows程序设计「DSA」数据结构与算法「UG/NX」NX二次开发「QT」QT5程序设计「File」数据文件格式「PK」Parasoli…

嵌入式linux中gpio子系统的开发与实现

大家好,今天主要给大家分享一下,如何使用gpio子系统,来控制对应的引脚电平状态与实现。 第一:linux中gpio子系统描述 gpio0:gpio@fdd60000{compatible = "rockchip,gpio-bank";reg = <0x0 0xfdd60000 0x0 0x100>; interrupts = <GIC_SPI 33 IRQ_TYP…

【主机游戏】艾尔登法环游戏攻略

艾尔登法环&#xff0c;作为一款备受好评但优化问题频发的游戏&#xff0c;就连马斯克都夸过 今天介绍一下这款游戏 https://pan.quark.cn/s/24760186ac0b 角色升级 在《艾尔登法环》中&#xff0c;角色升级需要找到梅琳娜。你可以在关卡前废墟的营地附近&#xff0c;风暴关…

大数据面试题--kafka夺命连环问

1、kafka消息发送的流程&#xff1f; 在消息发送过程中涉及到两个线程&#xff1a;一个是 main 线程和一个 sender 线程。在 main 线程中创建了一个双端队列 RecordAccumulator。main 线程将消息发送给双端队列&#xff0c;sender 线程不断从双端队列 RecordAccumulator 中拉取…

出海企业如何借助云计算平台实现多区域部署?

云计算de小白 如需进一步了解&#xff0c;请单击链接了解有关 Akamai 云计算的更多信息 在本文中我们将告诉大家如何在Linode云计算平台上借助VLAN快速实现多地域部署。 首先我们需要明确一些基本概念和思想&#xff1a; 部署多区域 VLAN 为了在多区域部署中在不同的 VLAN …

W55RP20-EVB-Pico评估板介绍

目录 1 简介 2 硬件资源 2.1 硬件规格 2.2 引脚定义 2.3 工作条件 3 参考资料 3.1 RP2040 数据手册 3.2 原理图 ​编辑 原理图 & 物料清单 & Gerber 文件 3.3 尺寸图&#xff08;单位&#xff1a;mm&#xff09; ​编辑 3.4 认证 3.5 参考例程 4 硬件协…

【机器学习】均方误差根(RMSE:Root Mean Squared Error)

均方误差根&#xff08;Root Mean Squared Error&#xff0c;RMSE&#xff09;是机器学习和统计学中常用的误差度量指标&#xff0c;用于评估预测值与真实值之间的差异。它通常用于回归模型的评价&#xff0c;以衡量模型的预测精度。 RMSE的定义与公式 给定预测值 和实际值 …

《计算机原理与系统结构》学习系列——存储器(上)

系列文章目录 目录 存储器技术概要存储器层次cache&#xff0c;内存辅存存储器技术SRAM技术DRAM技术闪存磁盘存储器 局部性原理 高速缓存cache访存性能概念命中与缺失访存阻塞的周期数 cache基础&#xff1a;直接映射块号内存地址字段缺失缺失处理和写策略 全相联映射组相连映…

python爬虫自动库DrissionPage保存网页快照mhtml/pdf/全局截图/打印机另存pdf

目录 零一、保存网页快照的三种方法二、利用打印机保存pdf的方法 零 最近星球有人问如何使用页面打印功能&#xff0c;另存为pdf 一、保存网页快照的三种方法 解决方案已经放在星球内&#xff1a;https://articles.zsxq.com/id_55mr53xahr9a.html当然也可以看如下代码&…

【Linux】进程概念与PCB,父子进程与foke函数

目录 一、进程概念&#xff1a; 描述&#xff1a; 组织&#xff1a; 二、Linux中的进程管理&#xff1a; 指令&#xff1a;ps ajx 三、父子进程&#xff1a; PID和PPID的调用查看&#xff1a; 四、创建子进程------fork&#xff1a; 一、进程概念&#xff1a; 首先&…

处理PhotoShopCS5和CS6界面字体太小

处理PhotoShop CS6界面字体太小 背景&#xff1a;安装PhotoShop CS6后发现无法调大字体大小&#xff0c;特别是我的笔记本14寸的&#xff0c;显示的字体小到离谱。 百度好多什么降低该电脑分辨率&#xff0c;更改电脑的显示图标大小&#xff0c;或者PS里的首选项中的界面设置。…

【Linux第八课-进程间通信】管道、共享内存、消息队列、信号量、信号、可重入函数、volatile

目录 进程间通信为什么&#xff1f;是什么&#xff1f;怎么办&#xff1f;一般规律具体做法 匿名管道原理代码 命名管道原理代码 system V共享内存消息队列信号量信号量的接口 信号概念为什么&#xff1f;怎么办&#xff1f;准备信号的产生信号的保存概念三张表匹配的操作和系统…

文件互传助手 v1.0

电脑和手机互传文件&#xff0c;经常需要找数据线&#xff0c;连着数据线还要下载安装手机助手&#xff0c;还要安装驱动识别手机&#xff0c;还要点手机那个连接模式&#xff0c;实在太麻烦了。 明明是一件简单的事情&#xff0c;往往需要很多层手续。有时会用到微信网页端作文…

Spring Boot 与 Vue 共筑航空机票预定卓越平台

作者介绍&#xff1a;✌️大厂全栈码农|毕设实战开发&#xff0c;专注于大学生项目实战开发、讲解和毕业答疑辅导。 &#x1f345;获取源码联系方式请查看文末&#x1f345; 推荐订阅精彩专栏 &#x1f447;&#x1f3fb; 避免错过下次更新 Springboot项目精选实战案例 更多项目…

面试总结!

OSI七层模型&#xff1a; 什么是OSI七层模型&#xff1f; 我们需要了解互联网的本质是一系列的网络协议&#xff0c;这个协议就叫做OSI协议&#xff08;开放系统互联(Open System Interconnection&#xff09;&#xff09;&#xff0c;它是由ISO&#xff08;国际标准化组织&…

MATLAB实现智能水滴算法(Intelligent Water Drops Algorithm, IWDA)

1.智能水滴算法介绍 智能水滴算法&#xff08;Intelligent Water Drops Algorithm&#xff0c;IWDA&#xff09;是一种基于水滴特性的智能优化算法&#xff0c;它借鉴了水滴在自然界中的运动和形态变化规律&#xff0c;通过模拟水滴的形成、发展和消亡过程&#xff0c;实现问题…

RabbitMQ延迟队列(重要)

RabbitMQ延迟队列 1、延迟队列1.1、延迟队列使用场景1.2、延迟队列实现原理 2、使用rabbitmq-delayed-message-exchange 延迟插件2.1、下载2.2、安装2.2.1、解压2.2.2、启用插件2.2.3、查询安装情况 2.4、示例2.4.1、RabbitConfig配置类&#xff08;关键代码&#xff09;2.4.2、…

Tencent Hunyuan3D

一、前言 腾讯于2024年11月5日正式开源了最新的MoE模型“混元Large”以及混元3D生成大模型“Hunyuan3D-1.0”&#xff0c;支持企业及开发者在精调、部署等不同场景下的使用需求。 GitHub - Tencent/Hunyuan3D-1 二、技术与原理 Hunyuan3D-1.0 是一款支持文本生成3D&#xff08;…

新品发布:广州大彩科技DB系列5.0寸带CAN/RS485外壳串口屏发布!

新品发布:广州大彩科技DB系列5.0寸带CAN/RS485外壳串口屏发布! 一、产品介绍 该产品是一款5寸的医疗级外壳系列组态串口屏&#xff0c;液晶屏采用800*480分辨率&#xff0c;拥有电阻触摸。硬件上针对工控行业&#xff0c;汽车行业串口使用RS485电平&#xff0c;并且另外加入了…

Js — 定时器

有两种&#xff1a;setInterval 和 setTimeout 间隔时间单位为毫秒 setInterval 每隔指定的毫秒数重复执行一个函数或代码 开启定时器&#xff1a;setInterval(函数&#xff0c;间隔时间) 作用&#xff1a;每隔一段时间调用这个函数 注意&#xff1a;它不是立即执行&#x…