【软件工程中的各种图】

news2024/11/26 18:46:26

  1、用例图(use case diagrams

【概念】描述用户需求,从用户的角度描述系统的功能

【描述方式】椭圆表示某个用例;人形符号表示角色

【目的】帮组开发团队以一种可视化的方式理解系统的功能需求

【用例图】

 

2、静态图(Static diagram) 

(1)类图(class  diagrams

【概念】显示系统的静态结构,表示不同的实体是如何相关联的

【描述方式】三个矩形 

【目的】表示一个逻辑类或实现类,逻辑类通常是用户的业务所涉及的事物;实现类是程序员处理的实体

【类图】

 

 

(2)对象图(object      diagrams

【概念】类图的一个实例,描述系统在具体时间点上所包含的对象以及各个对象的关系

【对象图】

 

 

   3、交互图(Interaction Diagram)

     用来描述对象之间的交互关系

(1)序列图(顺序图)(Sequence Diagram)

【概念】描述对象之间的交互顺序,着重体现对象间消息传递的时间顺序

【描述方式】横跨图的顶部,每个框表示每个类的实例或对象;类实例名称和类名称使用冒号分开

【目的】显示流程中不同对象之间的调用关系,还可以显示不同对象的不同调用。

【序列图】

   

(2)协作图(Collaboration     diagrams

【概念】描述对象之间的合作关系,侧重对象之间的消息传递

4、行为图:描述系统的动态模型和对象之间的交互关系

    (1).状态图(Statechart       diagrams

    【概念】描述对象的所有状态以及事件发生而引起的状态之间的转移

    【描述方式】

  1. 起始点:实心圆
  1. 状态之间的转换:使用开箭头的线段
  2. 状态:圆角矩形
  3. 判断点:空心圆
  4. 一个或多个终止点:内部包含实心圆的圆

【目的】表示某个类所处的不同状态以及该类在这些状态中的转换过程

 (2).活动图(Activity      diagrams

【概念】描述满足用例要求所要进行的活动以及活动时间的约束关系

【描述方式】

  1. 起始点:实心圆
  1. 活动:圆角矩形
  1. 终止点:内部包含实心圆的圆
  1. 泳道:实际执行活动的对象

【目的】表示两个或多个对象之间在处理某个活动时的过程控制流程

【活动图】

活动图和状态图区别:

5、实现图 Implementation diagram

(1)构件图(Component       diagrams

【概念】描述代码构件的物理结构以及各构件之间的依赖关系

【描述方式】构件

【目的】提供系统的物理视图,根据系统的代码构件显示系统代码的整个物理结构

【构架图】

  

(2)部署图(Deployment      diagrams

【概念】系统中硬件的物理体系结构

【描述方式】

1三维立方体表示部件

2节点名称位于立方体上部

【目的】显示系统的硬件和软件的物理结构

【部署图】

九种UML图详解到此为止

UML中类间的关系

  类与类之间的关系通常有4种,即依赖关系(Dependency)、泛化关系(Generalization)、关联关系(Association)、实现关系(Realization

1,依赖关系(Dependency

【概念】表示两个或多个模型元素之间语义上的连接关系

【绘图方式】虚线箭头,箭头指向被使用者

【依赖图】

2,泛化关系(继承)(Generalization

【概念】描述类的一般和具体之间的关系,描述的“is a kind of 的关系

【绘图方式】实线空心三角箭头,箭头指向父类

【继承方式】

  1. 单继承

一个类只有一个父类

  1. 多继承

一个类可以有多个父类,可以从每一个父类中获得允许继承的信息

【泛化图】

3.关联关系(Association

【概念】表示一个事物的对象与另一个事物的对象之间的语义上连接,简单的理解为两个类或类与接口之间的强依赖关系

【绘图方式】实线箭头,双向箭头或无箭头

【包括】

1 聚集

【概念】描述的是部分与整体关系,描述了“has a的关系,部分离开整体可以单独存在

【绘图方式】空菱形的实线,头部指向整体

【聚集关系图】

2,组成

【概念】一种更强形式的关联,在整体中拥有管理部分特有的职责,也被称为强聚合关系,部分不能脱离整体存在

【绘图方式】实菱形的实线,头部指向整体

【组成关系图】

4.实现关系(Realization

【概念】将一种模型关系与另一种模型关系连接起来,从而说明和其实现之间的关系,简单的理解为一个类或多个类实现一个接口

【绘图方式】封闭空箭头的虚线,箭头指向接口

【实现关系图】

       泛化和实现关系的区别:

       泛化关系是指同一语义层的元素连接起来,通常在同一模型内;实现关系将不同语义层内的元素连接起来,通常在不同模型内。

UML的视图

 相信大家都知道UML的全称,统一建模语言(UML Unified Modeling Language的缩写)是用来对软件系统进行可视化建模的一种语言。UML为面向对象开发系统的产品进行说明、可视化、和编制文档的一种标准语言。

我想问大家两个问题:

一、什么是模型?模型是对现实世界的形状或状态的抽象模拟和简化。

二、为什么要建模?最简单的理由:为了能够更好地理解正在开发的系统。通过建模,可以达到四个目的:

1、有助于按照需求对系统进行可视化的分析

2、能够系统的结构或行为

3、给出了知道构造系统的模板

4、对做出的决策进行文档化

本文是我们主要介绍UML的七种视图,所谓一张图胜于千言万语,我们就用图来介绍UML的视图:

第一张图:总体的给大家一个影响,UML的七种视图。

 

第二章图;详细的讲解每个视图。

       UML的七种视图各有各自的特点,各自有各自的作用。只有正确的认识七种视图才能对UML的九种图进行更加详细、深入的学习。UML的九种图是七种视图的具体表现形式。

实体-关系图

1. 数据对象
2. 属性
3. 关系

学生成绩管理系统

数据流图

1、数据流图的基本符号

2、数据流图的附加符号

  • *  表示数据流之间是“与”关系(同时存在)
  • +  表示数据流之间是“或”关系
  • ⊕  表示只能从几个数据流中选一个(互斥关系)

 

3、画数据流图的步骤

  • 画顶层数据流图
  • 画分层数据流图
  • 画总的数据流图

4、几点注意事项
画学生成绩管理系统的数据流图。 

状态转换图

1. 什么情况下要画状态转换图
2. 状态转换图的符号
   画出数据结构中“栈”对象的状态转换图。

IPO

输入/处理/输出(Input Process Output )图的简称。
  画出学生成绩管理系统的 IPO 图。

 层次图(或HIPO图)

结构图

1. 结构图的符号 
(1)方框代表模块,框内注明模块的名字和主要功能。
(2)方框之间的大箭头或直线表示模块的调用关系。 
(3)带注释的小箭头表示模块调用时传递的信息及其传递方向。
尾部加空心圆的小箭头表示传递数据信息。
尾部加实心圆的小箭头表示传递控制信息。
(4)选择结构
(5)循环结构,模块 H 循环调用模块 A,B,C
 

学生成绩管理系统的结构图

结构化方法
结构化方法又称面向数据流设计方法(Structured Design,SD)。
设计步骤是先根据系统数据流图建立系统逻辑模型,再进行结构设计。
1. 建立系统逻辑模型
(1)变换型数据流
(2)事务型数据流
2. 完成软件结构设计
 

面向数据结构设计方法

Jackson 把数据结构(或程序结构)分为
    三种基本类型 :(a)顺序  (b)选择    (c) 循环
 

Jackson 图特点:

  • 能对结构进行自顶向下分解,可以清晰地表示层次结构
  • 结构易读、形象、直观
  • 既可表示数据结构也可表示程序结构 

Jackson 设计方法的四个步骤:
1、分析并确定输入数据和输出数据的逻辑结构;
2、找出输入数据结构和输出数据结构中有对应关系的数据单元;
3、从描述数据结构的Jackson 图导出描述程序结构的Jackson 图;
4、列出所有的操作和条件,并把它们分配到程序结构图中去。 

Jacksan方法对学生成绩管理系统进行结构设计。

学生成绩管理系统在学生入学时输入学生基本信息。
每次单科成绩是按班级内学生学号的顺序依次输入每位学生的平时成绩和考试成绩,然后由计算机计算每位学生的单科成绩总评分。
班级各科成绩汇总。

 

过程设计

过程设计就是用顺序、选择和循环三种结构的有限次组合或嵌套,描述模块功能的实现算法。
过程设计阶段的工具:流程图、N_S图、问题分析图(PAD图)、
判定表、判定树、过程设计语言(PDL)等。
流程图
1.  流程图的分类
(1)数据流程图


(2)程序流程图


(3)系统流程图


(4)程序网络图
(5)系统资源图

2.  流程图符号

3. 流程图使用约定 

 

4. 流程图的三种基本结构:顺序、选择、循环。

盒图

盒图是Nassi和Shneiderman提出的,又称N_S图。
1. 盒图的符号

 

将下述含有GOTO语句的用程序流程图,改为N_S图。

学生成绩管理系统的 N-S 图。

 

PAD
基本符号 

学生成绩管理系统的 PAD

判定表

1.  判定表的组成
左上部列出所有条件。
左下部列出所有可能做的工作。
右上部每一列表示各种条件的一种可能组合,所有列表示条件组合的全部可能情况。
右下部的每一列是和每一种条件组合所对应的应做的工作。
2.  判定表中的符号
右上部用“T”表示条件成立,用“F”表示条件不成立,空白表示条件成立与否不影响。
右下部画“X”表示做该行左边列出的那项工作,空白表示不做该项工作。

 

用判定表表示旅游票价的优惠规定。

某旅行社根据旅游淡季、旺季及是否团体订票,确定旅游票价的折扣率。具体规定如下:人数在20人以上的属团体,20人以下的是散客。每年的4-5月、7-8月、10月为旅游旺季,其余为旅游淡季。旅游旺季,团体票优惠5℅,散客不优惠。旅游淡季,团体票优惠30℅,散客优惠20℅。用判定表表示旅游订票的优惠规定。
 

用判定树表示旅游价格优惠规定。

 

过程设计语言

过程设计语言(Program Design Language,简称 PDL),也称伪码,
   是一种混杂语言,说明某种结构化的程序设计语言的语法形式。
用PDL表示的程序结构:
1、顺序结构  
    处理1
    处理2
    …
    处理3
2、选择结构  
   IF-THEN-ELSE结构:
    IF 条件
        处理1
    ELSE   
        处理2 
    ENDIF
IF-THEN结构:
    IF 条件
        处理1
    NDIF
CASE结构:
    CASE  条件  OF
    CASE(1)  
        处理1
    CASE(2)
        处理2
        …
    CASE(n)
        处理n
3、循环结构
FOR循环结构:
    FOR i=1  TO  n
        循环体
    END FOR
WHILE循环结构:
    WHILE 条件
        循环体
    ENDWHILE
UNTIL循环结构:
    REPEAT
        循环体           
    UNTIL条件
4、模块定义和调用
模块定义
    PROCEDURE 模块名(参数)
    …
    RETURE
模块调用
CALL模块名(参数)
    数据定义
    DECLARE 类型  变量名,…
其中,类型可以有:字符、整型、实型、双精度、指针、数组及结构等类型。
5.   输入或输出
    GET(输入变量表)
    PUT(输出变量表)
数据代码设计
1. 代码的定义和作用
   代码是为了对数据进行识别、分类、排序等操作所使用的数字、文字或符号。
2. 代码的性质 

代码设计原则
1、标准化:国际标准、国家标准、部颁标准或习惯标准
2、惟一性 
3、可扩充性 
4、简单性
5、规范化
6、适应性
代码种类
1. 顺序码
2. 信息块码
3. 归组分类码    见表 归组代码示例
4. 助记码
5. 数字式字符码
6. 组合码

表归组代码示例

 

代码设计方法
基本步骤如下:
1. 确定编码对象
2. 明确编码目的
3. 确定代码的个数
4. 确定代码使用范围和使用期限
5. 确定代码体系和代码位数
6. 确定编码规则
7. 编写代码
8. 编写代码词典

用户界面设计
用户界面设计问题
1. 系统响应时间
2. 用户帮助设施
3. 出错信息处理
4.命令交互
用户界面设计过程
用户界面设计是一个迭代的过程,一般步骤如下:
先设计和实现用户界面原型。
用户试用该原型,向设计者提出对界面的评价。
设计者根据用户的意见修改设计并实现下一级原型。
不断进行下去,直到用户满意为止。
用户界面设计的基本原则
(1)可靠性
(2)简单性
(3)易学习性和易使用性
(4)立即反馈性
用户界面设计指南 
1.一般交互
2.  信息显示
3. 数据输入

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

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

相关文章

CXL Bias Mode (1) - Bias Mode 背景与分类

🔥点击查看精选 CXL 系列文章🔥 🔥点击进入【芯片设计验证】社区,查看更多精彩内容🔥 📢 声明: 🥭 作者主页:【MangoPapa的CSDN主页】。⚠️ 本文首发于CSDN&#xff0c…

波奇学C++:实现一个简单的vector以及避开雷

vector的文档&#xff1a;vector - C Reference (cplusplus.com)​​​​​ 什么是vector&#xff1f; vector是数组。vector空间连续&#xff0c;可变大小&#xff0c;可存放自定义类型。 vector简单的使用 vector<int> v; //int型实例化 v.push_back(1);//插入数据 …

selenium定位rect元素

rect元素属性 rect元素的属性如下&#xff1a; x&#xff1a;此属性确定矩形的x坐标。 值类型&#xff1a;| ; 默认值&#xff1a;0 动画&#xff1a;是y&#xff1a;此属性确定矩形的y坐标。 值类型&#xff1a;| ; 默认值&#xff1a;0 动画&#xff1a;是width&#xff1a…

Web后端开发总结

后端web开发大致流程 和对应的核心技术 对应技术的来源 springMVC可以理解为spring框架中的web开发框架 springMVCSpringMybatis就是我们熟知的ssm框架了

【计算机视觉 | 目标检测】arxiv 计算机视觉关于目标检测的学术速递(7 月 21 日论文合集)

文章目录 一、检测相关(15篇)1.1 Representation Learning in Anomaly Detection: Successes, Limits and a Grand Challenge1.2 AlignDet: Aligning Pre-training and Fine-tuning in Object Detection1.3 Cascade-DETR: Delving into High-Quality Universal Object Detectio…

K8S初级入门系列之十一-安全

一、前言 安全是K8S重要的特性&#xff0c;在K8S初级入门系列之四-Namespace/ConfigMap/Secret章节&#xff0c;我们已经已经了解了Namespace&#xff0c;Secret与安全相关的知识。本篇将梳理K8S在安全方面的策略。主要包括两个方面&#xff0c;API安全访问策略以及Pod安全策略…

C++ 之命名空间namespace【详解】

文章目录 一&#xff0c;命名空间出现的意义二&#xff0c;命名空间的定义命名空间里面可以包含变量&#xff0c;函数&#xff0c;类型&#xff1a;命名空间不可以定义在局部作用域&#xff1a;命名空间可以嵌套&#xff1a; 三&#xff0c;同一个工程中允许存在多个相同名称的…

vue-cli项目中,使用webpack-bundle-analyzer进行模块分析,查看各个模块的体积,方便后期代码优化

一、安装 npm install --save-dev webpack-bundle-analyzer 二、在vue.config.js中配置 const BundleAnalyzerPlugin require(webpack-bundle-analyzer).BundleAnalyzerPlugin plugins: [new BundleAnalyzerPlugin({analyzerMode: server,analyzerHost: 127.0.0.1,analyze…

微信小程序原生上传图片和预览+云函数上传

1.前台页面 1.1wxml问阿金 <!-- 说明一个上传页面的按钮 --> <button type"primary" bindtap"uploadPage">上传页面展示</button> <!-- 声明一个上传服务器的按钮 --> <button type"warn" bindtap"uploadSeve…

【广州华锐互动】列车人员疏散VR虚拟演练系统

随着科技的不断发展&#xff0c;虚拟现实(VR)技术已经逐渐应用于各个领域。在火车站安全方面&#xff0c;为了提高旅客的安全意识和应对突发事件的能力&#xff0c;列车人员疏散VR虚拟演练系统应运而生。 列车人员疏散VR虚拟演练系统是一种基于虚拟现实技术的教育培训系统&…

进程信号的理解

进程信号 1. 信号的概念2. 信号的产生3. 信号的保存1. 信号其他相关常见概念2. 在内核中的表示3.信号集操作函数 4. 信号的处理&#xff08;捕捉&#xff09; 1. 信号的概念 信号的一生&#xff0c;进程信号从产生到被处理所经历的过程一共分成了三步&#xff1a;信号产生、信…

【C++】STL---list基本用法介绍

个人主页&#xff1a;平行线也会相交&#x1f4aa; 欢迎 点赞&#x1f44d; 收藏✨ 留言✉ 加关注&#x1f493;本文由 平行线也会相交 原创 收录于专栏【C之路】&#x1f48c; 本专栏旨在记录C的学习路线&#xff0c;望对大家有所帮助&#x1f647;‍ 希望我们一起努力、成长&…

文件批量智能归类

在日常工作中我们会经常碰到同一个文件夹里面多个文件有视频&#xff0c;图片&#xff0c;或视频标题名称不一样&#xff0c;图片名称不一样&#xff0c;整个文件夹看下来很混乱&#xff0c;需要找一个文件工花费很长时间去找&#xff0c;一个一个用眼睛去看&#xff0c;看久眼…

Linux开发工具使用

Linux开发工具使用 vim1.vim的基本概念2.vim三种模式的切换3.底行模式的基础操作4.命令模式下的基础操作5.vim的配置 yum1.yum的概念2.yum的基础操作 gcc/g1.gcc/g的概念2.一个C/C程序形成的过程3.gcc/g基本使用 make和makefile1.基础概念2.makefile【1】生成【2】清理 调试器g…

2023国际高校数学建模竞赛B题三星堆文物原创论文讲解

大家好呀&#xff0c;从昨天发布赛题一直到现在&#xff0c;总算完成了国际高校数学建模竞赛B题完整的成品论文。 本论文可以保证原创&#xff0c;保证高质量。绝不是随便引用一大堆模型和代码复制粘贴进来完全没有应用糊弄人的垃圾半成品论文。 B题论文共28页&#xff0c;一些…

docker php 容器安装redis和mongodb扩展

一、背景 很多项目(几乎所有)都有用到redis和mongodb来存储数据&#xff0c;php没有自带这些扩展&#xff0c;需要手动安装 二、PHP redis扩展安装步骤 这里以php8.2版本容器为例&#xff0c;以下命令中‘php82’均为容器名称&#xff0c;需要更换为你自己的实际名称&#x…

JZ31 栈的压入、弹出序列-C++

题目来源&#xff1a;牛客网 题目描述&#xff1a; 输入两个整数序列&#xff0c;第一个序列表示栈的压入顺序&#xff0c;请判断第二个序列是否可能为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压入顺序&#xff0c;序列4,5,3,2,1是该压栈序列…

List如何正确删除元素

public static void main(String[] args) {List<Integer> list Lists.newArrayList(1, 2, 3, 4, 5);list.forEach(item -> {if (item 3) {list.remove(3);}});} 使用foreach删除集合元素的时候&#xff0c;有可能会报错&#xff0c;报错信息如下&#xff1a; 这是因…

【docker】docker

目录 一、docker概念二、docker安装(centos7)三、docker架构3.1 镜像image3.2 容器container 四、配置docker镜像加速器五、docker命令5.1 docker服务命令5.2 docker镜像命令5.3 docker容器命令 六、docker容器的数据卷6.1 容器卷概念及作用6.2 配置数据卷6.3 挂载示例6.4 数据…

【Linux】多线程概念理论

目录 1 什么是线程&#xff1f; 2 线程的优点 3 线程的缺点 4 线程异常 5 线程用途 6 Linux线程和进程对比 1 什么是线程&#xff1f; 在一个程序里的一个执行路线就叫做线程&#xff08;thread&#xff09;。更准确的定义是&#xff1a;线程是“一个进程内部的控制序列…