软件工程---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】_06 变态跳台阶

题目描述 一只青蛙一次可以跳上1级台阶&#xff0c;也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。 解题思路 链接&#xff1a;https://www.nowcoder.com/questionTerminal/22243d016f6b47f2a6928b4313c85387 关于本题&#xff0c;前提是…

【剑指offer】_07 矩形覆盖

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

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

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

软件工程---08.软件测试

测试 测试的正向思维&#xff08;确认测试&#xff09; 向开发人员和客户展示软件满足其需求测试的逆向思维&#xff08;缺陷测试&#xff09;找出可能导致软件行为不正确原因。测试是更广阔的软件确认和验证( Verification and Validation; V & V)过程的一部分。验证和确…

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

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

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

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

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

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

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

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

【剑指offer】_08.数值的整数次方

题目描述 给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。 保证base和exponent不同时为0 解题思路 首先一个数的任意次方&#xff0c;这个数有可能是负数和正数和零&#xff0c;然后次方也有可能是负数和正数和零 当这个数是零时&#xff…

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

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

【剑指offer】_10二叉树和为某一路径值

题目描述 输入一颗二叉树的跟节点和一个整数&#xff0c;打印出二叉树中结点值的和为输入整数的所有路径。路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径。 解题思路 要求一路径的和&#xff0c;那么必然终止条件为叶子结点&#xff0c;从根结点出发…

【剑指offer】_11整数中1出现的次数

题目描述 求出1~13的整数中1出现的次数,并算出100~1300的整数中1出现的次数&#xff1f;为此他特别数了一下1~13中包含1的数字有1、10、11、12、13因此共出现6次,但是对于后面问题他就没辙了。ACMer希望你们帮帮他,并把问题更加普遍化,可以很快的求出任意非负整数区间中1出现的…

【剑指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首先是设置密码…

【剑指offer】_13 圆圈中最后的数

题目描述 年六一儿童节,牛客都会准备一些小礼物去看望孤儿院的小朋友,今年亦是如此。HF作为牛客的资深元老,自然也准备了一些小游戏。其中,有个游戏是这样的:首先,让小朋友们围成一个大圈。然后,他随机指定一个数m,让编号为0的小朋友开始报数。每次喊到m-1的那个小朋友要出列唱…

【剑指offer】_14 不用加减乘除做加法

题目描述 写一个函数&#xff0c;求两个整数之和&#xff0c;要求在函数体内不得使用、-、*、/四则运算符号。 解题思路 首先看十进制是如何做的&#xff1a; 5712&#xff0c;三步走 第一步&#xff1a;相加各位的值&#xff0c;不算进位&#xff0c;得到2。 第二步&#x…

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

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

C++11新特性的总结

C11新特性 auto关键字(C11&#xff09;基于范围的for循环(C11&#xff09;. 指针空值nullptr(C11&#xff09;C动态内存管理序列式容器 array forward_list;继承和多态:final overridedelete:不生成默认的成员函数default:强制编译器生成默认的成员函数智能指针:unique_ptr,sh…

详解C++中右值引用

98中的引用 概念特性引用的使用场景三种传参方式效率的比较探索:引用的底层实现方式----->指针 T&------>T* constconst T&---->const T*const 引用和指针的区别 引用的总结 11中的右值引用 为什么要有右值引用 为了提高程序运行效率&#xff0c;C11中引…