软件工程(二)——需求工程、统一建模语言UML

news2024/11/15 13:37:30

目录

一、需求获取

二、需求分析

1.结构化需求分析

2.面向对象分析方法OOA 

三、UML 4+1视图

四、UML 图

  (1)用例图

  (2)类图、对象图

  (3)顺序图

(4)活动图

(5)状态图

(6)通信图


  • 软件需求指用户对系统在功能、行为、性能、设计约束等方面的期望
  • 软件需求指用户解决问题或达到目标所需的条件和能力是系统或系统部件要满足合同、标准、规范、或其他正式规定文档所需具有的条件和能力,以及反映这些条件的能力的文档说明。
  • 需求获取,通过开会、调查等手段了解客户的原始需求;需求分析,对获取到的需求信息进行整合,并发现其中的问题;需求定义,落下需求规格说明书等需求文档,确立需求基线SRS,按照基线的规划进行;需求验证,把需求规格说明书交付给客户确认,了解自己分析的内容

一、需求获取

        需求在技术维度上可以分类成,业务需求、用户需求、系统需求。业务需求通常指的决策层例如CEO提出来的需求,软件项目的创立目的。而用户需求指的是 软件使用方的需求。而把这些功能计算机化就落成了系统需求,分成功能需求、性能需求、除此之外需求就界定为设计约束。

        需求在管理维度上可以分为基本需求(用户明确提出来的要求,必须做的)、期望需求(客户没提但是也应该做的需求)、兴奋需求(客户没提,不是必须要做的,但是包含在客户期望中)。兴奋需求在项目管理中要特别识别,积极完成兴奋需求不可取,否则容易造成白白损失工作量,报酬。

二、需求分析

1.结构化需求分析

它会完成功能模型(通常用DFD进行建模),数据模型(通常用ER图进行建模),行为模型(通常用状态转换图进行建模)。并用数据字典描述数据的详细字段

2.面向对象分析方法OOA 

        面向对象分析有五个活动:分别是认定(识别)对象;组织对象;描述对象间的相互作用;确定对象的操作;定义对象的内部信息。

关于面向对象的一下概念:

  • 对象,对应的现实生活中的具体的人、物,三要素是 属性,id,方法。而将对象进行抽象就是类。
  • 类分成实体类,边界类,控制类。实体类就是一个抽象实体的信息。而边界类用于外部系统交互,例如打印机,窗体等。
实体类描述系统中的实体,通常可以用数据库进行存储。它包含存储和传递数据的类,还包括操作数据的类。
边界类用于描述外部参与者于系统间的交互,位于系统于外界的交界处。包括窗体、报表、打印机、扫描仪等硬件的接口,以及其他系统的接口
控制类用于实现应用程序的执行逻辑,可以降低界面和数据库之间的耦合。通常用“动词+名词”的方式。是控制用例工作的类。比如身份验证
  • 泛化指多个实体类将共性部分抽象出来成为一个父类。而继承是从父类上生成一个子类,子类拥有父类的特性。
  • 多态类型如下表
通用多态(不同的类型值,执行相同的代码)参数多态例如c++中的template(静态联编时候实现)
包含多态类似于虚函数(动态联编时候实现)
专用多态(不同的类型值,执行不同的代码)强制多态类型的隐式转换(静态联编时候实现)
重载多态类似于函数重载(静态联编时候实现)

三、UML 4+1视图

         统一建模语言主要用画图的形式进行设计模型。构造块的事物包含4个事物,其中分组事物、注释事物不详细讲。结构事物对应的是“静”,而行为事物对应的是“动”。

UML图如下

类型名称功能

静态图

(结构图)

类图侧重强调类、接口、协作和它们之间的关系
对象图侧重强调对象及它们之间的关系
构件图侧重强调封装的类和它的接口
部署图侧重强调软件和硬件之间的映射
制品图侧重强调系统的物理结构
包图侧重强调由模型本身分解而成的的组织单元,以及它们之间的依赖关系
组合结构图

动态图

(行为图)

用例图侧重强调系统与外部参与者之间的交互
顺序图/时序图侧重强调按时间顺序
通信图/协作图时序图的变种,侧重强调对象的组织关系
状态图侧重强调状态转换变迁
活动图强调对象间的控制流程以及并行、同步行为
定时图侧重强调实际时间点运行状况
交互概览图

 4+1视图:就是逻辑视图,实现视图,进程视图,部署视图还有用例视图。逻辑视图表现系统功能,实现视图表现程序的组件,进程视图强调线程进程的并发,部署视图强调软件到硬件的映射关系。

UML在需求分析的建模工作,主要建立用例模型和分析模型。分析模型要定义一些类,还有类之间的关系,以及它们的职责。而用例模型要识别参数者,以及获取参与者所需要的功能,之后细化这些功能描述

 

四、UML 图

(1)用例图

用例图描述了一组用例,参与者与它们之间的关系。参与者是触发系统内部逻辑的外部因素,比如用户,管理员,定时器,温度计等。而用例就是在用户角度所描述的功能。

其中关系包括3种:

包含关系:提取出来的公共用例称之为抽象用例,而把原始用例称为基本用例或基础用例系,当可以从两个或两个以上的用例中提取公共行为时,应该使用包含关系来表示它们。即完成基本用例必定完成包含用例,用“虚箭头+include”表示。

扩展关系:如果一个用例明显地混合了两种或两种以上的不同场景,即根据情况可能发生多种分支,则可以将这个用例分为一个基本用例和一个或多个扩展用例。即完成基本用例可选择完成扩展用例,用“虚箭头+extend”表示,箭头指向基本用例。例如ATM机系统,取款用例(基本用例)与打印取款凭证(扩展用例)的关系。

泛化关系:是一种用例之间的父子关系,用实心箭头的表示

   用例建模,首先要了解这个系统是要给谁用的,也就是识别参与者 ;然后从参与者中了解它们想要的功能,也就是获得用例。之后还要对用例进行细化,描述用例具体要表达的含义,例如登记外接信息要做什么,有什么注意事项,还有信息具体是什么。

    细化用例描述如下,其中主事件流表示完成用例功能必须的流程,而备选事件流就是当达到某些条件会触发的流程。

(2)类图、对象图

         类图和对象图类似,在图形种的表示,对象图的实体名称是   "类名:对象名"。

  • 依赖关系:例如A方法中调用了B方法,说明了A依赖于B,因为B的行为发生变化,参数变化,方法名变化都会影响到A。
  • 泛化关系:也是一种 抽象—具体关系,父子关系,子指向父。
  • 关联关系:包含了聚合关系和组合关系,聚合关系像是子对象的关系,比如汽车与轮子;组合关系像是集合,比如书籍列表和书籍
  • 实现关系:接口与实现接口的类之间的关系

 (3)顺序图

顺序图/时序图是一种交互图,它强调对象之间的消息发送的顺序,同时显示对象之间的交互。

(4)活动图

        活动图每一个节点表示系统或者人员要完成的事情,可以表示并发。用控制流和数据量表示进程运行的流程。强调对象间的控制流程

  • 并发分叉:达到条件后并发执行后续任务
  • 并发汇合:前面的任务都完成后才会执行后续的

(5)状态图

状态图描述一个状态机,它由状态、转移、事件和活动组成。每一个节点表示某个物体状态。

状态图包括简单状态和组合状态、转换。可以利用fork和join使组合状态再某一时刻同时达到多个子状态。中途从组合状态中退出,后续再进入组合状态时进入原先退出前的子状态,而不是从初态从新开始。

 

(6)通信图

通信图与时序图大同小异,只不过它不像时序图那样按照严格的顺序去走,只不过把大致的流程显现出来,把消息打上序号而已。通信图强调的是对象的组织结构。 

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

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

相关文章

【科研】ET-BERT代码分析

0. 数据集 论文使用的TLS1.3数据集是从 2021 年 3 月到 2021 年 7 月在中国科技网 (CSTNET) 上收集的。 如果要使用自己的数据集的话,需要检查数据格式是否与datasets/cstnet-tls1.3/目录下一致,并且在data_process/目录下指定数据集路径。 用于微调的…

Pomotroid 使用指南:一款高颜值 PC 端番茄时钟

文章首发于个人公众号:「阿拉平平」 番茄工作法作为一套高效易行的时间管理方案,是由意大利人弗朗西斯科西里洛于 1992 年创立的。作者发明的初衷源自于自身严重的拖延症,于是他找来一个厨房用的番茄计时器,调到 10 分钟&#xff…

游戏SDK(二)框架设计

前言 根据上一篇游戏SDK(一) 客户端整体架构,介绍了游戏SDK 及 游戏SDK的需求分析。根据需求分析,对游戏SDK的设计分为3大块: 客户端:接口统一,做好逻辑转发和处理。具体渠道具体实现&#xf…

【高并发】- 生产级系统搭建 - 4

前言 关于高并发系统中,当前比较热门的还是属于“秒杀”系统,前面章节在整理了“秒杀”系统的相关设计概念后,本章节,来讲解扣减库存相关的业务逻辑。 1 库存的那些事 一般电商网站中,购买流程一般都是这样的&#xff…

多线程之Callable接口、ReentrantLock、信号量 Semaphore以及CountDownLatch

目录:一、Callable接口Callable的用法小结二、ReentrantLockReentrantLock 的用法ReentrantLock 和 synchronized 的区别?为什么有了 synchronized 还需要 juc(java.util.concurrent) 下的 lock?三、信号量 Semaphore如何理解信号量&#xff…

Python接口测试实战4(下) - 框架完善:用例基类,用例标签,重新运行上次失败用例

本节内容使用用例基类自定义TestSuitecollect-only的实现testlist的实现用例tags的实现rerun-fails的实现命令行参数的使用更简单的用例编写使用用例基类因为每条用例都需要从excel中读取数据,解析数据,发送请求,断言响应结果,我们…

阿里云ECS学习笔记1

ECS:弹性计算服务。CPU可以热插、内存可变大变小、硬盘可以增加~ 注册: 在企业中,应该以企业的身份进行注册,而不是以个人身份进行注册。 手机号:行政部门专门管理注册的账号资源的,而不使用个人或者老板…

【可解释性机器学习】解释基于XGBoost对泰坦尼克号数据集的预测过程和结果

解释基于XGBoost对泰坦尼克号数据集的预测过程和结果1. 训练数据2. 简单的 XGBoost 分类器3. 解释重量4. 解释预测5. 添加文本特性参考资料本文介绍如何分析XGBoost分类器的预测( eli5也支持 XGBoost和大多数 scikit-learn树集成的回归)。 我们将使用 Ti…

【数据结构】8.5 归并排序

文章目录相邻两个有序子序列的归并归并排序算法归并排序算法分析基本思想 将两个或两个以上的有序子序列归并为一个有序序列。在内部排序中,通常采用的是2-路归并排序。 即:将两个位置相邻的有序子序列 R[l…m] 和 R[m1…n] 归并为一个有序序列 R[l…n]…

1个寒假能学会多少网络安全技能?

现在可以看到很多标题都声称三个月内就可以转行网络安全领域,并且成为月入15K的网络工程师。那么,这个寒假的时间能学多少网络安全知识?是否能入门网络安全工程师呢? 答案是肯定的。 虽然网络完全知识是一门广泛的学科&#xff…

在线支付系列【9】微信支付之申请微信公众号

有道无术,术尚可求,有术无道,止于术。 文章目录前言申请微信公众号前言 由于微信支付的产品体系全部搭载于微信的社交体系之上,所以直连商户或服务商接入微信支付之前,都需要有一个微信社交载体,该载体对应…

天啦撸~ChatGPT通过国际软件测试工程师(ISTQB)认证了~

天啦撸!目前最火的AI应用ChatGPT通过ISTQB认证了~ 近期,国外的一位工程师,放出了他用ChatGPT通过认证的相关信息。 ChatGPT相信大家都知道是什么了,ISTQB相信很多测试小伙伴也不陌生,而且很多考证的小伙伴也对此梦寐以…

Linux之网络性能测试工具netperf实践

一、netperf简介 Netperf是一种网络性能的测量工具,主要针对基于TCP或UDP的传输。Netperf根据应用的不同,可以进行不同模式的网络性能测试,即批量数据传输(bulk data transfer)模式和请求/应答(request/rep…

公司通知要大裁员,hr太强势,和所有人吵起来,老板见势不妙,不得不答应大家要求,把HR一起裁掉了!...

在裁员中,hr一般都会代表老板的利益和员工对抗,但如果hr和员工闹翻了,老板会维护hr吗?一位网友说:一上班就收到消息要裁员,立马让报上名单面谈,锁电脑关权限。后面那些人面谈的时候吵起来了&…

OpenAI Chatgpt注册及使用教程

零、什么是chatgpt?​ 1、简介 ChatGPT(Chat Generative Pre-trained Transformer)是OpenAI于 2022 年 11 月推出的聊天机器人。它建立在 OpenAI 的GPT-3大型语言模型家族之上,并经过微调(一种迁移学习的方法)…

双点双向的ISIS与OSPF、OSPF与OSPF、ISIS与ISIS环境以路由策略解决(1tag、2tag、4tag介绍与配置)

3.1.1 双点双向的ISIS与OSPF、OSPF与OSPF、ISIS与ISIS环境以路由策略解决(1tag、2tag、4tag介绍与配置) OSPF与ISIS双点双向 次优的产生与解决: 由于OSPF引入外部路由之后其优先级为150,再由ASBR进行双向引入之后。 原先OSPF外部…

闲鱼自动化软件——筛选/发送系统 V20已经测试完毕

做程序,就是不断地改,不断地优化。当改动达到一定程序,已经和前面形成断代,程序的升级时刻便到了。V20做了哪些更改或优化。1。优化抓取:在抓取环境优化参数,使抓取更顺滑,抓取数据效果上更准确…

智能家居创意DIY-Homekit智能灯

一、什么是智能灯 传统的灯泡是通过手动打开和关闭开关来工作。有时,它们可以通过声控、触控、红外等方式进行控制,或者带有调光开关,让用户调暗或调亮灯光。 智能灯泡内置有芯片和通信模块,可与手机、家庭智能助手、或其他智能…

若依-excel预览功能实现

实现效果及源码 实现效果如下图所示: 实现思路: 1.动态表格:定义表头数组,表格遍历表头生成表格列 2.读取excel文件内容,封装表头,绑定表格数据 代码修改 首先参考若依官网,先实现excel导入功…

C++基础——C++ 字符串

C基础——C 字符串C 字符串C 风格字符串C 中的 String 类C 字符串 C 提供了以下两种类型的字符串表示形式: C 风格字符串C 引入的 string 类类型 C 风格字符串 C 风格的字符串起源于 C 语言,并在 C 中继续得到支持。字符串实际上是使用 null 字符 ‘…