软件工程与计算总结(六)需求分析方法

news2024/9/21 21:52:16

本贴介绍需求分析方法,涉及到诸多实践性的东西,掌握各种图表的绘制是重中之重~ 

一.需求分析基础

1.原因

需求获取中得到的信息仅仅解释了用户对软件系统的理解与期待,使用的是实际业务的表达方式,还不是开发者能够立即加以实现的解决方案~

需求分析的任务:

  • 建立分析模型,达成开发者和用户对需求信息的共同理解~
  • 依据共同的理解,发挥创造性,创建软件系统解决方案

2.模型

(1)定义

模型是对事物的抽象,帮助人们在创建一个事物之前有更好的理解~

(2)建模

建立系统的一个表示,这个表示以精确统一的方式描述系统,使得系统的使用更加容易~

  • 抽象:一方面要求人们只关注重要的信息,忽略次要的内容;另一方面要求认知保留在适当的层次,屏蔽更深层次的细节~
  • 分解:将单个复杂和难以理解的问题分解为多个相对容易得子问题
(3)特点及其常见需求分析模型

需求分析模型是专门用来描述软件解决方案的模型技术。

定位:

常见模型:

二.结构化分析

1.方法

把现实世界描绘为数据在信息系统中的流动,以及在数据流动过程中数据向信息的转化。他帮助开发人员定义系统需要做什么(处理需求),系统需要存储和使用哪些数据需求(数据需求),需要什么样的输入和输出,以及如何把这些功能结合在一起来完成任务。

(常见模型:数据流图、实体关系图、状态转移图、数据字典等)

2.数据流图(DFD图)

将系统看为过程的集合,过程的执行就是对数据的处理,接受数据输入,并进行数据转换,输出数据结果;执行过程中可能涉及到人机交互等外界输入的数值~

(1)基本元素

  • 外部实体:处于待构建软件系统之外的人、组织、设备或者其他软件系统
  • 过程:施加于数据的动作或者行为
  • 数据流:数据的运动(动态)
  • 数据存储:软件内部手机的数据集合(静态)

如下是一个DFD图的样例:

(2)语法规则
  • 过程是对数据的处理,必须有输入,也必须有输出,而且输入数据集和输出数据集应该存在差异
  • 数据流是必须和过程产生关联的,他要么是过程的数据输入,要么是过程的数据输出
  • 所有对象都应该有一个可以唯一标识自己的名称,过程使用动词,外部实体、数据流和数据存储使用名词

(3)分层结构

对于复杂的系统,解决的方式是分而治之:即利用过程具有不同抽象层次表达能力的特点,依据过程的功能分解结构,建立层次式的DFD描述:

  • 上下文图:最高层次的图,是系统功能的最高抽象,将整个系统看做一个过程,这个过程是实现系统的所有功能,所以上下文图中仅存在一个过程,表示整个系统

  • 0层图:上下文图的下面一层,被认为是上下文图中单一过程的细节描述,是对单一过程的第一次分解
  • N层图:0层图中的每一个过程都可以进行分解,以展示更多的细节~被分解的过程成为父过程,分解后产生的揭示更多细节的图成为子图(可以持续分解到无法再分解

(分解过程中要保证平衡性,即不会出现需求偏差的方法,要求DFD子图的输入流、输出流必须和父过程的输入流、输出流保持一致

3.实体关系图(E-R图)

能够弥补过程建模在数据说明方面的缺陷,描述数据的定义、结构和关系等特性的技术~

3个基本元素:实体、属性、关系

  • 实体:需要在系统中收集和存储的显示世界的类别描述
  • 关系:实体之间并不是孤立存在的,他们之间相互交互、相互影响
  • 属性:可对实体进行描述的特征

标识符/键:可以唯一确定一个实例的一个或者多个属性~

三.面向对象分析

1.方法

认为系统是对象的集合,对象之间相互协作,共同完成系统的任务。(与结构化完全不同,面向对象以对象为基础,而结构化分析以功能和数据为基础)

主要优点:

  • 自然性:对人类而言更加自然和直观
  • 可复用性

UML(统一建模语言):多种技术的综合体,并非单一的技术——用例图、类图等

2.用例

需求获取和组织的主要手段~

定义:在系统和外部对象的交互中所执行的行为序列的描述——换句话说,用例是对相关场景的集合

一种理解:关于x+y=z的程序,x=1 y=2 z=3即为一个用例 

3.用例图

(1)基本元素

  • 用例:最重要的元素(椭圆)
  • 参与者:发起或者参与一个用例的外部用户及其他软件系统等角色
  • 关系
  • 系统边界:一个系统所包含的系统成分与系统外界事物的分界线

(2)建立

步骤大致如下:

  • 进行目标分析与确定解决方向:进行目标的分析,确定项目的目标,定义高层次解决方案的系统特性。
  • 寻找参与者:根据上一步确定的目标系统与系统特性,发现系统功能相关的参与者
  • 寻找用例:根据参与者寻找用例
  • 细化用例:将用例的粒度调整为更加适宜的存在

用例粒度的判断标准——对应一个业务事件,由一个用户发起,并在一个连续时间段内完成,可以增加业务价值的任务~

 

4.用例描述

5.概念类图(领域模型)

(1)基本元素
  • 对象:分析方法的基础,包含标识符、状态、行为3个方面的内容 
  • 类:对象分类思想的结果,是共享共同属性的对象的集合
  • 链接:对象之间的相互协作的关系
  • 关联:类之间的关系

(部分与整体之间的关系被称为聚合,如果整体还拥有对整体的管理职责,则这种聚合称为组合

  • 继承:某类拥有另一类的全部属性和服务~子类也可以认为是父类的特化
(2)建立概念类图

步骤如下:

  • 对每个用例文本描述,建立局部概念类图
  • 将所有用例产生的局部概念类图进行合并,建立软件系统的整体概念类图
  • 识别关联
  • 识别重要属性

 

6.交互图(顺序图)

描述对象协作的技术,描述特定上下文环境中一组对象的交互行为

(1)顺序图

(2)系统顺序图——常用于系统分析阶段

7.状态图

系统总是存在于一定状态之中,有限状态机理论是状态图的基础~

四.使用需求分析方法细化和明确需求 

1.细化和明确需求内容

需要强调的是需求分析模型不是简单机械的对已有内容进行转述,而是要细化和明确具体的需求内容~

2.建立系统级需求

基于最后建立的需求分析模型,还可以顺利的将用户需求转换为系统级需求~

tips:理论部分非常枯燥乏味,重点在于掌握图表的绘制,敬请期待专题~

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

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

相关文章

Ubuntu20.04安装Ipopt的流程介绍及报错解决方法(亲测简单有效)

本文主要介绍在Ubuntu20.04中安装Ipopt库的流程,及过程报错的解决方法,已经有很多关于Ipopt安装的博客,但经过我的测试,很多都失效了,因此,经过探索,我找到可流畅的安装Ipopt的方法,…

一站式数据可视化与分析平台JVS智能BI强大的数据节点功能

在商业智能(BI)中,数据集是数据的集合,用于分析和报告。数据节点是数据集中的一个重要组成部分,它代表数据集中的一个特定数据点或数据元素。通过使用数据节点,可以对数据进行过滤、分组和计算,…

Netty通信在中间件组件中的广泛使用-Dubbo3举例

Netty是一个高性能异步IO通信框架,封装了NIO,对各种bug做了很好的优化解决。所以很多中间件底层的通信都会使用Netty,比如说:Dubbo3,rocketmq,ElasticSearch等。 比方说,我们使用dubbo作为rpc跨…

批量混剪系统视频闪闪批量剪辑:只需几段素材片段即可批量混剪大量成片,快速制作大量成片的秘密

视频闪闪批量混剪系统:快速制作大量成片的秘密 在今天这个视频内容爆炸的时代,如何快速处理大量的素材并生成优质的成片,是许多视频制作人员面临的挑战。而视频闪闪批量混剪系统,却能帮助你轻松解决这一难题。 视频闪闪批量混剪…

Qt多工程同名字段自动翻译工具

开发背景 项目里不同工程经常会引用同一批公共类,这些类里如果有字段需要翻译,需要在不同的项目里都翻译一遍,比较麻烦冗余。 特此开发了这个小翻译工具,能读取程序目录下的所有ts文件,以类名归类,不同项目…

登陆认证权限控制(1)——从session到token认证的变迁 session的问题分析 + CSRF攻击的认识

前言 登陆认证,权限控制是一个系统必不可少的部分,一个开放访问的系统能否在上线后稳定持续运行其实很大程度上取决于登陆认证和权限控制措施是否到位,不然可能系统刚刚上线就会夭折。 本篇博客回溯登陆认证的变迁历史,阐述sess…

查找算法 —— 斐波拉契查找法

一、介绍 斐波拉契查找法是以分割范围进行查找的,分割的方式是按照斐波拉契级数的方式来分割。好处是:只用到加减运算,计算效率较高一些。 要使用斐波拉契查找首先需要定义一颗斐波拉契查找树,建立规则如下: 1.斐波拉契…

德国鞋履品牌【Birkenstock】申请15亿美元纳斯达克IPO上市

来源:猛兽财经 作者:猛兽财经 猛兽财经获悉,德国鞋履品牌【Birkenstock】近期已向美国证券交易委员会(SEC)提交招股书,申请在纳斯达克IPO上市,股票代码为(BIRK),Birkens…

Vue-1.9工程化开发和脚手架

开发Vue的两种方式: 1.核心包传统开发模式:基于html/css/js文件,直接引入核心包,开发Vue 2.工程化开发模式:基于构建工具(例如:webpack)的环境中开发Vue 问题: 1&…

如何安装TortoiseSVN并实现公网提交文件至本地SVN服务器?

文章目录 前言1. TortoiseSVN 客户端下载安装2. 创建检出文件夹3. 创建与提交文件4. 公网访问测试 前言 TortoiseSVN是一个开源的版本控制系统,它与Apache Subversion(SVN)集成在一起,提供了一个用户友好的界面,方便用…

设计模式16、中介者模式 Mediator

解释说明:中介者模式(Mediator Pattern)用一个中介对象来封装一系列的对象交互 中介者使各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。 抽象中介者(Mediator&#xff0…

Kaadas凯迪仕助力亚运盛会,尽展品牌硬核科技与智能锁行业风采

9月23日至10月8日,亚洲最大规模体育赛事亚运会在杭州举办。作为国际性体育赛事,除赛中的各类竞赛项目外,杭州亚运会前后相关活动也吸引了大众目光的聚焦。 Kaadas凯迪仕智能锁作为此次杭州亚运会官方指定智能门锁,以#凯迪仕守护每…

IP真人识别方法与代理IP检测技术

随着互联网的发展,IP地址在网络安全和数据分析中扮演着重要的角色。为了维护网络的安全性和识别真实用户,IP地址的真实性和来源成为了一个关键问题。 什么是IP真人识别? IP真人识别是一种技术,旨在确定IP地址背后的用户是否为真实…

深入理解RBAC

RBAC是一种基于角色实现访问控制的权限管理机制,通过定义角色和权限、用户和角色、角色和角色之间的关系,实现多层次、细粒度、可复用的权限管理系统。原文: Role-based Access Control (RBAC) Model[1] Bernard HermantUnsplash Avery Pennarun写的&quo…

XML文件详解 (java程序解析XML文件,java程序写XML文件)

XML 的全称是可扩展标记语言(eXtensible Markup Language) xml本质上是一种数据的格式,可以用来存储复杂的数据结构和数据关系。 使用XML(可扩展标记语言)有以下几个好处: 可读性强:XML使用标…

微信小程序 获取当前屏幕的可见高宽度

很多时候我们做一下逻辑 需要用整个窗口的高度或宽度参与计算 而且很多时候我们js中拿到的单位都是px像素点 没办法和rpx同流合污 官方提供了wx.getSystemInfoSync() 可以获取到部分窗口信息 其中就包括了整个窗口的宽度和高度 wx.getSystemInfoSync().windowHeight 返回值为像…

ElasticSearch 安装,保存,查询,更新,复杂查询,模糊查询,高亮查询

ElasticSearch ik分词器: ik分词器的安装,将ik分词器下载并解压,新建文件夹ik,将解压内容放进ik文件夹中,将ik文件夹放在es安装路径的plugin文件夹中 GET _analyze {"analyzer": "ik_smart",&q…

C++对string进行大小写转换的三种方法

C对string进行大小写转换的三种方法 方法一&#xff1a;下标 #include <iostream> #include <string> using namespace std;int main() {string s "ABCDEFG";for( int i 0; i < s.size(); i ){s[i] tolower(s[i]);}cout<<s<<endl;re…

详细解说iptables 高阶用法,用来完成哪些高效率网络路由策略场景,iptables 实现域名过滤,Linux如何利用iptables屏蔽某些域名?

详细解说iptables 高阶用法,用来完成哪些高效率网络路由策略场景,iptables 实现域名过滤,Linux如何利用iptables屏蔽某些域名? Linux利用iptables屏蔽某些域名 以下规则是屏蔽以 youtube.com 为主的所有一级 二级 三级等域名。 iptables -A OUTPUT -m string --string &qu…

XLSX.utils.sheet_to_json()解析excel,给空的单元格赋值为空字符串

前言 今天用到XLSX来解析excel文件&#xff0c;调用XLSX.utils.sheet_to_json(worksheet)&#xff0c;发现如果单元格为空的话&#xff0c;解析出来的结果&#xff0c;就会缺少相应的key&#xff08;如图所示&#xff09;。但是我想要单元格为空的话&#xff0c;值就默认给空字…