软件工程---5.系统建模

从不同视角对系统建模

  1. 外部视角,上下文模型,对系统上下文或环境建模
  2. 交互视角,交互模型(功能模型),对系统与参与者或系统内构件之间的交互建模
  3. 结构视角,结构模型(静态模型),对系统的组成或系统处理的数据结构建模
  4. 行为视图,行为模型(动态模型),对系统的动态行为以及系统如何响应事件进行建模

UML同一建模语言

在这里插入图片描述

UML动态图

  1. 协作图
  2. 顺序图
  3. 状态图
  4. 活动图
UML静态图
  1. 用例图
  2. 类图
  3. 对象图
  4. 构建图
  5. 部署图

UML可以用于建立系统开发中的多种模型

功能模型用例图
对象模型类图,对象图
动态模型交互图(顺序图),状态图,活动图,协作图
其他构件图,部署图

在这里插入图片描述

交互模型(重点)

  1. 用例建模,系统与外部主体(人或其他系统)之间的交互,抽象层次高
  2. 顺序图,系统构件之间的交互,也可以包括外部主体,抽象层次低

用例建模

在这里插入图片描述
对于上图写出用例详述
在这里插入图片描述

用例图

在这里插入图片描述

参与者

  1. 与系统交互的外部实体(人,其他系统)
  2. 定义系统边界

标识参与者

  • 在标识参与者的初始阶段,很难将参与者与对象区别开 来,例如一个数据库可能是参与者,也可能是系统中对 象,可以通过确定系统边界的方式来确定参与者
  • 标识参与者的时候需要考虑
    • 本系统与哪些参与者交互(人,其他系统)
    • 哪些参与者完成系统主要功能
    • 哪些参与者完成系统次要功能(维护,管理)

标识用例

  • 场景是用例的实例
  • 用例可以说明这一功能下的所有场景
  • 用例大多由参与者启动
  • 用例贯穿系统事件的完整流程

用例详述的写法

  • 用动词短语命名,清晰

    • 用户登录,打印信息,搜索网页
  • 用名词短语对参与者进行命名

    • 用户,系统管理员,应用服务器
  • 系统边界应该是清晰的

    • XX客户端,需要对其功能范围非常清楚
  • 事件流中使用主动语态,指明谁完成这一步骤

    • 用户通过网银结算,将货款付到第三方支付机构
  • 事件流前后因果关系清晰

    • 用户打开播放器
    • 搜索本地视频文件
  • 应该描述一个完整的用户事务流程

  • 异常情况应该分别描述

  • 无需描述系统接口

    • 不需描述用户提交Web表单到服务器
  • 简洁,明了

示例

在这里插入图片描述

标识参与者与用例之间的关系

  1. 启动,参与者启动了该用例
  2. 参与,参与者参与了该用例

用例与用例之间的关系(牢记)

  1. 扩展,一个用例被定义为 基础用例的扩展
  2. 包含,包含其他用例的行 为,减少用例之间的冗余
  3. 继承,一个用例被泛化成 多个用例

顺序图

  • 顺序图主要用于对参与者与系统对象之间、系统对象自身之间的交互进行建模
  • 顺序图显示对象之间的动态合作关系,它强调对象之间消息发送的顺序,同时显示对象之间的交互
  • 顺序图的一个用途是用来表示用例中的行为顺序。当执行一个用例行为时,顺序图中的每条消息对应了一个类操作或引起状态转换的触发事件

示例

注意长方形里,每写一个要加冒号
在这里插入图片描述

顺序图四要素(重点)

在这里插入图片描述

  1. 示例或类元角色
  2. 消息流
  3. 对象生命线
  4. 注释

结构模型

结构模型描述系统构件以及它们之间的关系

类图

  1. 类图以反映类的结构(属性、操作)以及类之间的关系为主要目的,描述了软件系统的结构,是一种静态建模手段
  2. 类图中的“类”与面向对象语言中的“类”的概念是对应的,是对现实世界中的事物的抽象

类之间的四种关系(重点)

  • 关联、依赖、继承、实现
  • 而其中关联又有两种特例:聚合和组合

关联关系

聚合

在这里插入图片描述

组合

在这里插入图片描述

关联和依赖的区别

  1. 从类之间关系的强弱程度来分,关联表示类之间的很强的关系;依赖表示类之间的较弱的关系
  2. 从类之间关系的时间角度来分,关联表示类之间的“持久”关系,这种关系一般表示一种重要的业务之间的关系,需要保存的,或者说需要“持久化”的,或者说需要保存到数据库中的。比如学生管理系统中的Student类和Class(班级)类,一个Student对象属于哪个Class是一个重要的业务关系,如果这种关系不保存,系统就无法管理。另外,**依赖表示类之间的是一种“临时、短暂”关系,这种关系是不需要保存的,**比如Student类和StuEditScreen(学生登录界面)类之间就是一种依赖关系,StuEditScreen类依赖Student类,依赖Student对象的信息来显示编辑学生信息。
  3. 依赖是类与类之间的连接,依赖总是单向的。依赖关系代表一个类依赖于另一个类的定义。依赖在代码中一般表示为方法的参数。
  4. 关联是一种结构关系,说明一个事物的对象与另一个事物的对象相联系。给定一个连接两各类关联,可以从一个类的对象导航到另一个类的对象。关联可以有方向,即导航。一般不作说明的时候
  5. 导航是双向的,不需要在线上标出箭头。大部分情况下导航是单向的,可以加一个箭头表示。关联在代码中一般表示为属性(成员变量)。
  6. 设计类之间的关系是遵循的原则:首先判断类之间是否是一种“关联”关系,若不是再判断是否是“依赖关系”,一般情况下若不是关联,就是依赖关系。

聚合与组合

  1. 聚合关系也称“has-a”关系,组合关系也称“contains-a”关系。
  2. 聚合关系表示事物的整体/部分关系的较弱情况,部分的生命周期可以超越整体
  3. 组合关系表示事物的整体/部分关系的较强的情况,部分的生命周期不能超越整体,或者说不能脱离整体而存在。组合关系的“部分”,是不能在整体之间进行共享的。
  4. 聚合关系中,代表部分事物的可以属于多个聚合对象,可以为多个聚合对象共享,而且可以随时改变它。所从属的聚合对象.代表部分事物的对象与代表聚合事物对象的生存期无关,一旦删除了它的一个聚合对象不一定也就随即删除代表部分事物的对象。
  5. 在组合关系中,代表整体事物的对象负责创建和删除代表部分事物的对象,代表部分事物只属于一个组合对象.一旦删除了组合对象,也就随即删除了相应的代表部分事物的对象

关联关系的强度:关联<聚合<组合。

泛化关系

在面向对象中一般称为继承关系,存在于父类与子类、父接口与子接口之间
在这里插入图片描述

实现关系

对应于类和接口之间的关系
在这里插入图片描述

总的来说,后四种关系所表现的强弱程度依次为:组合>聚合>关联>依赖

行为模型

数据驱动的建模

行为驱动的建模

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

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

相关文章

软件工程---6.体系结构设计

体系结构模型是什么&#xff1f; 体系结构模型&#xff0c;该模型描述系统如何被组织为一组相互通信的构件 体系结构分类 小体系结构关注单个程序的体系结构。在这个层次上&#xff0c;我们关注单个的程序是如何补分解为构件的。大体系结构关注包括其他系统、程序和程序构件…

【剑指offer】_07 矩形覆盖

题目描述 我们可以用21的小矩形横着或者竖着去覆盖更大的矩形。请问用n个21的小矩形无重叠地覆盖一个2*n的大矩形&#xff0c;总共有多少种方法&#xff1f; 解题思路 依旧是斐波那契数列 2n的大矩形&#xff0c;和n个21的小矩形 其中target*2为大矩阵的大小 有以下几种情形…

软件工程---07.设计与实现

软件设计和软件实现 软件设计是一个创造性的活动&#xff0c;在此活动中需要基于客户需求识别软件构件及其关系。软件实现是将设计实现为一个程序的过程 为开发一个系统设计&#xff0c;你需要 理解并定义上下文模型以及系统的外部交互设计系统体系结构识别系统中的主要对象…

软件工程---15.软件复用

复用的图(牢记) 软件复用的好处 开发加速有效的专家利用提高可依赖性降低开发成本降低过程风险符合标准 软件复用的缺点 创建&#xff0c;维护以及使用一个构件库查找&#xff0c;理解以及适配可复用构件维护成本增加缺少工具支持“不是在这里发明的”综合症 应用框架 现在…

软件工程---16.基于构件的软件工程

CBSE CBSE是定义、实现、集成或组装松散耦合的独立构件成为系统的过程。 基于构件的软件工程的要素有: 完全由接口进行规格说明的独立构件。构件标准使构件集成变得更为容易。中间件为构件集成提供软件支持。开发过程适合基于构件的软件工程。 CBSE的设计原则 构件是独立的…

软件工程---17.分布式软件工程

分布式系统的5个优点 资源共享开放性并发性可伸缩性容错性 分布式计算中必须考虑的设计问题 透明性&#xff1a;隐藏底层分布 开放性 可伸缩性 三个维度 规模&#xff1a;又分为增强扩展(单挑)&#xff0c;增加扩展(群殴)分布可靠性 信息安全性 主要防止以下类型的攻击 拦…

软件工程---18.面向服务的软件工程

什么是Web服务 一个松耦合、可复用的软件构件&#xff0c;封装了离散的功能&#xff0c;该功能是分布式的并且可以被程序访问。Web服务是通过标准互联网和基于XML的协议被访问的服务。 服务和软件构件之间的一个重要的区别是 服务应该总是独立的和松耦合的Web 服务没有“请求…

【剑指offer】_09二叉搜索树的后序遍历序列

题目描述 输入一个整数数组&#xff0c;判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。 解题思路 比如下面的这棵二叉搜索树 它的后序遍历为0214369875&#xff1b; 我们设当前根节点为root; 第一次…

【剑指offer】_12 数组中的逆序对

题目描述 在数组中的两个数字&#xff0c;如果前面一个数字大于后面的数字&#xff0c;则这两个数字组成一个逆序对。输入一个数组,求出这个数组中的逆序对的总数P。并将P对1000000007取模的结果输出。 即输出P%1000000007 解题思路 剑指offer的解法 看到这个题目&#xff0…

详解Linux下通过yum安装Mariadb/MySQL数据库(腾讯云也适用)

1. 安装Mariadb 安装命令 yum -y install mariadb mariadb-server安装完成MariaDB&#xff0c;首先启动MariaDB systemctl start mariadb设置开机启动 systemctl enable mariadbMariaDB的相关简单配置 此命令进入到配置相关界面 mysql_secure_installation首先是设置密码…

海量数据处理(位图和布隆过滤器)

哈希切割 给一个超过100G大小的log file, log中存着IP地址, 设计算法找到出现次数最多的IP地址&#xff1f; 与上题条件相同&#xff0c;如何找到top K的IP&#xff1f;如何直接用Linux系统命令实现 解决思路 找到出现次数最多的IP地址 要找到前TopK的IP地址&#xff0c;就…

C++中的lambda表达式和线程库

98中的一个例子 如果想要对一个数据集合中的元素进行排序&#xff0c;可以使用std::sort方法 #include <algorithm> #include <functional> int main() {int array[] {4,1,8,5,3,7,0,9,2,6};// 默认按照小于比较&#xff0c;排出来结果是升序std::sort(array, a…

文件压缩(Huaffman树的概念及其实现)

什么是压缩 想办法让源文件变得更小并能还原。 为什么要进行文件压缩 文件太大&#xff0c;节省空间提高数据再网络上传输的效率对数据有保护作用—加密 文件压缩的分类 无损压缩 源文件被压缩后&#xff0c;通过解压缩能够还原成和源文件完全相同的格式 有损压缩 解压缩之…

详解STL中的空间配置器(SGI版本)

空间配置器 1.什么是空间配置器 为各个容器高效的管理空间(空间的申请与回收)的 2.为什么需要空间配置器 各种容器----->可以存放元素---->底层需要空间 new 申请空间 operator new ---->malloc调用构造函数------完成对象的构造 动态内存管理总结 前面的容器…

大四阶段的社会实践的主要目的是_疫情当前,大三大四的学生“很惨”?大一大二的学生也别松懈...

大四毕业生不容易这次疫情对于高校学生而言&#xff0c;可以说是各有各的难处&#xff0c;“这届毕业生很惨”更是屡上热搜。不可否认&#xff0c;大四毕业生确实很不容易&#xff0c;论文答辩、毕业、求职就业等都受到了影响&#xff0c;虽然有困难&#xff0c;但各方都在积极…

【剑指offer】_19 滑动窗口中的最大值

题目描述 给定一个数组和滑动窗口的大小&#xff0c;找出所有滑动窗口里数值的最大值。例如&#xff0c;如果输入数组{2,3,4,2,6,2,5,1}及滑动窗口的大小3&#xff0c;那么一共存在6个滑动窗口&#xff0c;他们的最大值分别为{4,4,6,6,6,5}&#xff1b; 针对数组{2,3,4,2,6,2,…

android 文字反转_多文字共享信息系统

欧阳贵林 www.HeZi.net首发表于2016年03月23日“ 处在信息时代的开端&#xff0c;信息技术不应有特殊的文字性&#xff0c;需要创建多文字共享信息系统&#xff0c;给各国文字一个公平的参与信息与科技创新发展的平台。这是世界的事&#xff0c;更是中国事。”01人类语言语言文…

LeetCode【1--两数之和】 LeetCode【2--两数相加】

两数之和 题目描述 给定一个整数数组 nums 和一个目标值 target&#xff0c;请你在该数组中找出和为目标值的那 两个 整数&#xff0c;并返回他们的数组下标。 你可以假设每种输入只会对应一个答案。但是&#xff0c;你不能重复利用这个数组中同样的元素。 解题思路 直接两…

input数字开头不能为0_李商隐为初恋写诗,每句以数字开头,最后10字一直被仿从未被超越...

上学时&#xff0c;每次写作文&#xff0c;老师总爱在耳边念叨&#xff1a;“你的作文得让阅卷老师看得懂&#xff0c;不然不可能给你高分的&#xff01;”每次听到话&#xff0c;笔者总是用李商隐的诗来和他斗嘴。是的&#xff0c;李商隐的诗作常常是让人读不懂的&#xff0c;…

lsass.exe 当试图更新密码时_“驱动人生”下载器木马再度更新-你应该注意什么?...

360安全大脑监测到通过"驱动人生"供应链攻击传播的挖矿木马在1月30日下午4时左右再次更新。此次更新中&#xff0c;木马在此前抓取系统帐户密码的基础上增加了抓取密码hash值的功能&#xff0c;并试图通过pass the hash攻击进行横向渗透&#xff0c;使得该木马的传播…