需求 分析

 需求分析的任务

需求分析的任务

1、需求分析是软件定义时期的最后一个阶段,它的基本任务是准确地回答“系统必须做什么?”这个问题。

2、确定系统必须完成哪些工作,也就是对目标系统提出完整、准确、清晰、具体的要求。

3、系统分析员应该写出软件需求规格说明书,以书面形式准确地描述软件需求。

相关概念 

$需求:正在构建的系统必须符合的事务。

$需求管理:是一种获取、组织并记录系统需求的系统化方案以及一个使客户与项目团队不$断变更的系统需求达成并保持一致的过程。

$传统需求分析:强调需求的记录,以一成不变的观点对待需求,不重视需求实现与维护。

$现代需求过程:包括需求的获取、分析、处理、验证、实现和全过程的需求管理。需求管$理覆盖软件工程的整个过程。 

传统与现代需求方法的比较

 需求管理存在的问题

1、范围问题:系统目标、边界未被良好定义,用户和开发团队理解不一致。

2、理解问题:用户不能完全了解自己需要什么,对系统能力、局限更加不清楚;工程师不理解用户的问题域和应用环境。

3、易变问题:需求随时间发生变化。

需求工程 

1、20世纪80年代中期,形成了软件工程的子领域——需求工程。

2、进入20世纪90年代后,需求工程称为软件界研究的重点之一。

3、Alan Davis 把需求工程定义为“直到(但不包括)把软件分解为实际架构构件之前的所有活动”。

阶段划分 

确定对系统的综合要求 

分析系统的数据要求 

导出系统的逻辑模型 

综合上述两项分析的结果可以导出系统的详细的逻辑模型,通常用数据流图、实体-联系图、状态转换图、数据字典和主要的处理算法描述这个逻辑模型。

修正系统开发计划

与用户沟通获取需求的方法

访谈 

面向数据流自顶向下求精 

简易的应用规格说明技术 

1、简易的应用规格说明技术是一种面向团队的需求收集法。

2、这种方法提倡用户与开发者密切合作,共同标识问题,提出解决方案要素,商讨不同方案并指定基本需求。

分析需求的典型过程 

1. 初步访谈,准备会议

        首先进行初步的访谈,初步确定待解决的问题的范围和解决方案;然后开发者和用户分别写出“产品需求”。选定会议的时间和地点,并选举协调人。

2. 会前审查需求,确定列表

        要求每位与会者在开会的前几天认真审查产品需求,并且列出对象、操作这些对象或与这些对象交互的服务、约束条件和性能标准。

3.会上讨论列表,创建组合列表
        每位与会者展示列表供大家讨论。大家共同创建一张组合列表;由协调人主持讨论这些列表。

4.分组制定小型规格说明
        与会者分成更小的小组,为每张列表中的项目制定小型规格说明;每个小组都向全体与会者展示他们制定的小型规格说明,供大家讨论。
5.制定确认标准,起草需求规格说明书
        每个与会者都制定出产品的一整套确认标准,并提交会议讨论,以创建出意见一致的确认标准;最后,起草完整的软件需求规格说明书。

简易的应用规格说明技术的优点 

1、开发者与用户不分彼此,齐心协力,密切合作

2、即时讨论并求精

3、有能导出规格说明的具体步骤

快速建立软件原型 

快速原型的特性 

1、“快速”

        快速原型的目的是尽快向用户提供一个可在计算机上运行的目标系统的模型。因此,原型的某些缺陷是可以忽略的。

2、“容易修改”

        如果原型的第一版不是用户所需要的,就必须根据用户的意见迅速地修改它,构建出原型的第二版,以更好地满足用户需求。如果修改耗时过多,势必延误软件开发时间。

快速原型通常使用下述3种方法和工具 

(1) 第四代技术(4GL)

        第四代技术包括众多数据库查询(如SQL)和报表语言(如ADF)、程序和应用系统生成器(如Power Builder和Oracle的应用开发环境)以及其他非常高级的非过程语言。

        第四代技术使得软件工程师能够快速地生成可执行的代码,它们是较理想的快速原型工具。 

第四代技术特点:

        简单易学,用户界面良好,面向问题、非过程化程度高,用户只需告知系统做什么,而无需说明怎么做。用4GL编程使用的代码量较少,并可成数量级地提高软件生产率。

程序设计语言划代:

        1GL是汇编语言;

        2GL是高级程序设计语言,如FORTRAN,ALGOL,BASIC,LISP等;

        3GL是增强性的高级程序设计语言,如PASCAL,ALGOL68,FORTRAN77等;

        4GL是按计算机科学理论指导设计出来的结构化语言,如ADA,MODULA-2,SMALLTALK-80,JAVA,VB,VC,VF等。

(2)可重用的软件构件
        另外一种快速构建原型的方法,是使用一组已有的软件构件(也称为组件)来装配(而不是从头构造)原型。
        软件构件可以是数据结构(或数据库),或软件体系结构构件(即程序),或过程构件(即模块)。

(3)形式化规格说明和原型环境

        非形式化方法:自然语言描述

        半形式化方法:数据流图或实体-联系图

        形式化方法:基于数学的技术 

分析建模与规格说明

分析建模

1、模型:就是为了理解事物而对事物做出的一种抽象,是对事物的一种无歧义的书面描述。通常,模型由一组图形符号和组织这些符号的规则组成。

2、结构化分析过程:实质上是一种创建模型的活动。系统分析员从不同角度抽象出目标系统的特性,使用精确的表示方法构造系统的模型,验证模型是否满足用户对目标系统的需求,并在设计过程中逐渐把和实现有关的细节加进模型中,直至最终用程序实现模型。

3种分析模型 

1、数据模型

2、功能模型

3、行为模型

分析模型的结构 

 

相关概念 

1、数据字典:是分析模型的核心,它描述软件使用或产生的所有数据对象。

2、实体-联系图:描绘数据对象及数据对象之间的关系,是用于建立数据模型的图形。

3、数据流图:描绘当数据在软件系统中移动时被变换的逻辑过程,指明系统具有的变换数据的功能,因此,数据流图是建立功能模型的基础。

4、状态转换图(简称为状态图):指明了作为外部事件结果的系统行为。为此,状态转换图描绘了系统的各种行为模式(称为“状态”)和在不同状态间转换的方式。状态转换图是行为建模的基础。

规格说明 

我国定义了GB856D-1988国家标准,给出了需求规格说明的内容框架:

实体-联系图

相关概念

1、概念性数据模型是一种面向问题的数据模型,是按照用户的观点对数据建立的模型。它描述了从用户角度看到的数据,它反映了用户的现实环境,且与在软件系统中的实现方法无关。

2、数据模型中包含3种相互关联的信息:

        (1)数据对象

        (2)数据对象的属性

        (3)数据对象彼此间相互连接的关系

数据对象

1、数据对象:是对软件必须理解的复合信息的抽象。复合信息是指具有一系列不同性质或属性的事物,仅有单个值的事物不是数据对象。

2、数据对象可以是外部实体、事物、行为、事件、角色、单位、地点或结构等。

3、数据对象彼此间是有关联的。

属性 

1、属性:定义了数据对象的性质。必须把一个或多个属性定义为“标识符” 。

2、根据对问题的理解来确定特定数据对象的合适的属性。

联系 

1、联系:数据对象彼此之间相互连接的方式称为联系,也称为关系。

2、联系可分为以下3种类型:

        (1)一对一联系(1∶1)

        (2)一对多联系(1∶N)

        (3)多对多联系(M∶N)

3、联系也可能有属性。

实体-联系图的符号 

例一 

某校教学管理系统的ER图

ER图优点及数据建模工具

ER图的优点:

        1、比较接近人的习惯思维方式;

        2、用简单的图形符号表达系统分析员对问题域的理解,用户也容易理解,可以作为用户与分析员之间有效的交流工具。

数据建模工具:以自动化的方式创建ER图、数据字典及相关模型。

        1、AllFusion ERWin  辅助设计数据库、数据对象、结构、关键元素

        2、Oracle Designer  建模、应用系统和数据库设计

        3、Meta Scope  图形化显示数据

        4、Model Sphere Visible Analyst  模型可视化分析

        5、ER/Studio  支持实体-关系建模

例二 

银行储蓄系统的ER图

银行计算机储蓄系统的工作过程大致如下:

1、储户填写的存款单或取款单由业务员键入系统,如果是存款则系统记录存款人姓名、住址(或电话号码)、身份证号码、存款类型、存款日期、到期日期、利率及密码(可选)等信息,并印出存单给储户;

2、如果是取款而且存款时留有密码,则系统首先核对储户密码,若密码正确或存款时未留密码,则系统计算利息并印出利息清单给储户。

 

数据规范化

数据结构规范化

软件系统经常使用各种长期保存的信息,这些信息通常以一定方式组织并存储在数据库或文件中,为减少数据冗余,避免出现插入异常或删除异常,简化修改数据的过程,通常需要把数据结构规范化。

范式 

通常用“范式(normal forms)”定义消除数据冗余的程度。第一范式(1 NF)数据冗余程度最大,第五范式(5 NF)数据冗余程度最小。

范式级别越高,存储同样数据需要分解成更多张表,因此,“存储自身”过程越复杂。

随着范式级别的提高,数据的存储结构与基于问题域的结构间的匹配程度也随之下降,因此,在需求变化时数据的稳定性较差。

范式级别提高则需要访问的表增多,因此性能(速度)将下降。

第一范式

每个属性值都必须是原子值,即仅仅是一个简单值而不含内部结构

第二范式

满足第一范式条件,而且每个非关键字属性都由整个关键字决定(而不是由关键字的一部分来决定)

第三范式 

符合第二范式的条件,每个非关键字属性都仅由关键字决定,而且一个非关键字属性不能仅仅是对另一个非关键字属性的进一步描述(即一个非关键字属性值不依赖于另一个非关键字属性值)

状态转换图

状态转换图:通过描绘系统的状态及引起系统状态转换的事件,来表示系统的行为。

状态图还指明了作为特定事件的结果系统将做哪些动作(例如,处理数据)。

状态

状态:是任何可以被观察到的系统行为模式,一个状态代表系统的一种行为模式

状态规定了系统对事件的响应方式

状态主要有:

        初态(即初始状态),只能有1个

        终态(即最终状态),可以有0至多个 中间状态

状态图分类:

        表示系统循环运行过程,通常不关心循环是怎样启动的

        表示系统单程生命期,需要标明初始状态和最终状态

事件

在某个特定时刻发生的事情,它是对引起系统做动作或(和)从一个状态转换到另一个状态的外界事件的抽象。简而言之,事件就是引起系统做动作或(和)转换状态的控制信息

符号 

初态:用实心圆表示

终态:用一对同心圆(内圆为实心圆)表示

中间状态:用圆角矩形表示,分成上、中、下3部分:

        上面部分-----为状态的名称

        中间部分-----为状态变量的名字和值

        下面部分-----是活动表 

带箭头的连线:称为状态转换,箭头指明了转换方向

主要符号 

活动表的语法格式

事件名(参数表)/动作表达式

“事件名”可以是任何事件的名称

常用的3种标准事件:

        entry事件指定进入该状态的动作

        exit事件指定退出该状态的动作

        do事件则指定在该状态下的动作

需要时可以为事件指定参数表

活动表中的动作表达式描述应做的具体动作

事件表达式的语法 

事件说明[守卫条件]/动作表达式

事件说明的语法为:事件名(参数表)

守卫条件是一个布尔表达式

如果同时使用事件说明和守卫条件,则当且仅当事件发生且布尔表达式为真时,状态转换才发生。如果只有守卫条件没有事件说明,则只要守卫条件为真状态转换就发生

动作表达式是一个过程表达式,当状态转换开始时执行该表达式

例一 

电话系统

 例二

银行储蓄系统——存款过程的状态图

银行储蓄系统——取款过程的状态图 

其他图形工具

层次方框图

层次方框图:用树形结构的一系列多层次的矩形框描绘数据的层次结构。

树形结构的顶层是一个单独的矩形框,它代表完整的数据结构;

下面的各层矩形框代表这个数据的子集;

最底层的各个框代表组成这个数据的实际数据元素(不能再分割的元素)。

某计算机公司的全部产品的层次方框图:

Warnier图

Warnier图:和层次方框图类似,Warnier图也用树形结构描绘信息,但是这种图形工具比层次方框图提供了更丰富的描绘手段。

特点:用Warnier图可以表明信息的逻辑组织,也可以表示特定信息在某一类信息中是有条件地出现的。因为重复和条件约束是说明软件处理过程的基础,所以很容易把Warnier图转变成软件设计的工具。

软件产品的Warnier图:

IPO图

IPO图:是输入、处理、输出图的简称,它是美国IBM公司发展完善起来的一种图形工具,能够方便地描绘输入数据、对数据的处理和输出数据之间的关系。

基本形式:是在左边的框中列出有关的输入数据,在中间的框内列出主要的处理,在右边的框内列出产生的输出数据。在IPO图中还用类似向量符号的粗大箭头清楚地指出数据通信的情况。

主文件更新处理的IPO图:

 改进的IPO图

这种图中包含某些附加的信息,在软件设计过程中将比原始的IPO图更有用。 在需求分析阶段可以使用IPO图简略地描述系统的主要算法(即数据流图中各个处理的基本算法)。

 

验证软件需求

从哪些方面验证软件需求的正确性

1、一致性,所有需求必须是一致的,任何一条需求不能和其他需求互相矛盾

2、完整性,需求必须是完整的,规格说明书应该包括用户需要的每一个功能或性能

3、现实性,指定的需求应该是用现有的硬件技术和软件技术基本上可以实现的

4、有效性,必须证明需求是正确有效的,确实能解决用户面对的问题。

验证软件需求的方法

用于需求分析的工具

软件工具应该满足下列要求:

        1、必须有形式化的语法(或表),因此可以用计算机自动处理使用这种语法说明的内容; 使用这个软件工具能够导出详细的文档

        2、必须提供分析(测试)规格说明书的不一致性和冗余性的手段,并且应该能够产生一组报告指明对完整性分析的结果

        3、使用这个软件工具之后,应该能够改进通信状况。

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

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

相关文章

Xbox VR头盔即将推出,但它是Meta Quest的‘限量版’。

📳Xbox VR头盔即将推出,但它是Meta Quest的‘限量版’。 微软与Meta合作推出限量版Meta Quest VR头映射Xbox风格,可能是Meta Quest 3或未来版本的特别定制版,附带Xbox控制器。这一合作是Meta向第三方硬件制造商开放其Quest VR头盔…

小塔 | 时尚领域RFID应用,别人早你一步!

优衣库,作为知名服装品牌零售商,近年来在数字化转型的道路上取得了显著的成果。其中,RFID技术的应用成为了优衣库提升运营效率、优化客户体验以及实现精准营销的重要工具。 RFID助力时尚门店品牌升级 优衣库深知RFID技术的潜力,将…

计算机网络3——数据链路层3以太网的MAC层

文章目录 一、MAC 层的硬件地址1、介绍2、注意点3、定制标准 二、MAC 帧的格式1、结构2、工作原理3、其他 一、MAC 层的硬件地址 1、介绍 在局域网中,硬件地址又称为物理地址或 MAC地址(因为这种地址用在MAC帧中)。 大家知道,在所有计算机系统的设计中…

计算机视觉——两视图几何求解投影矩阵

上文我提到了通过图像匹配得到基本矩阵,接下来我们要接着求解投影矩阵。 计算投影矩阵思路 假设两个投影矩阵为规范化相机,因此采用基本矩阵进行恢复。在规范化相机下, P [ I ∣ 0 ] P[I|0] P[I∣0], P ′ [ M ∣ m ] P[M|m] P′[M∣m]。…

apache和IIS区别?内网本地服务器项目怎么让外网访问?

Apache和IIS是比较常用的搭建服务器的中间件,它们之间还是有一些区别差异的,下面就详细说说 Apache和IIS有哪些区别,以及如何利用快解析实现内网主机应用让外网访问。 首先说说apache和IIS最基本的区别。Apache运行的操作系统通常为Unix或Lin…

Mysql — 刷题知识点

一. 功能函数 1. 大小写转换 UCASE/LCASE (列名) LCASE是将内容转换为小写 UCASE将内容转换为大写 CASE是条件控制语句的关键字 二、join ... on 问题 1. right join ..on RIGHT JOIN 关键字会返回右表 (t2) 所有的行,即使在左表 (t1) 中没有匹配的行。或者更…

【每日刷题】Day22

【每日刷题】Day22 🥕个人主页:开敲🍉 🔥所属专栏:每日刷题🍍 🌼文章目录🌼 1. 1669. 合并两个链表 - 力扣(LeetCode) 2. 11. 盛最多水的容器 - 力扣&#…

回归用户本真的业务价值需求,聚焦成本优化与内核能力提升——专访云和恩墨张程伟、金毅...

数据库作为企业核心业务系统的重要基座,其技术架构和性能都将直接影响企业的运营效率与成本。在2024“数据技术嘉年华”大会现场,笔者采访到了云和恩墨本原数据的两位技术合伙人——MogDB数据库研发负责人张程伟、下一代原生HTAP企业级数据库研发负责人金…

NSQ消息队列---总结篇

架构 概念 nsqlookup:存储了nsqd的元数据和服务信息(endpoind),向消费者提供服务发现功能, 向nsqadmin提供数据查询功能。 nsqd: 是接收、队列和传送消息到客户端的守护进程。 nsqadmin:简单的管理界面,展示了topic, channel以及channel上的消费者,也…

【漏洞复现】号卡极团管理系统 index.php SQL注入漏洞

0x01 产品简介 号卡极团管理系统是一款专为号卡行业打造的管理系统,它具备一系列强大的功能,能够满足号卡行业推广人员在业务运营中的各类需求。 0x02 漏洞概述 号卡极团管理系统存在SQL注入漏洞,未授权的攻击者可以通过该漏洞获取数据库敏…

数据库关系模式分解 - 无损连接和保持函数依赖性

文章目录 1 概述1.1 关系模式分解的好坏标准 2 无损连接验证算法 1 概述 1.1 关系模式分解的好坏标准 书上的算法太抽象了,咱不好理解,以下举例说明。一个关系可以有很多种分解方法,如何判断分解的好与坏呢? ① 查询时的连接操作…

类的六个构造函数相关干货

构造函数 特点 1.名字与类名相同 2.无返回值 3.对象实例化的时候编译器自动调用这个函数 4.构造函数可以重载(无参构造函数,拷贝构造等) 5.如果类中没有显式定义构造函数(深拷贝),则编译器会自动生成一个…

抖音阳哥:选品师项目究竟能不能算蓝海项目?

在当今这个信息爆炸的时代,短视频平台如抖音已经成为了人们获取信息、娱乐休闲的重要渠道。抖音上涌现出许多具有影响力的网红,他们不仅分享自己的生活点滴,还常常推荐一些创业项目或商业模式。其中,阳哥分享的选品师项目引起了广…

STM32H750片外QSPI下载算法文件(stldr)生成

STM32H750片外QSPI下载算法文件(stldr)生成 🌿相关篇《STM32H750片外QSPI启动配置简要》📌参考实现资料: https://github.com/lchnu/STM32H750XBH_ARTPIQSPI_W25Q64JV https://gitee.com/wangchief/H750_W25QXX ✨利…

风格迁移adaIN 和iT的adaLN

文章目录 BN、LN、IN、GN的区别![](https://img-blog.csdnimg.cn/direct/d38c005616f145cba2aa1c4c2e046be0.png)图像风格迁移adaINDiT adaLN BN、LN、IN、GN的区别 BatchNorm:batch方向做归一化,算NxHxW的均值,对小batchsize效果不好&#x…

「Kafka」Kafka基础知识入门介绍(三)

「Kafka」Kafka基础知识入门介绍(三) 一、消息主题1. 创建主题 二、生产数据1. 命令行模式2. Java代码模式 三、消费数据1. 命令行模式2. Java代码模式 「Kafka」Kafka理论知识解读(一) 「Kafka」Kafka安装和启动(二&a…

【kotlin】利用by关键字更加方便地实现装饰器模式

关于kotlin中的by关键字的用法,kotlin官方文档属性委托这一节讲得很清楚。 简单来说就是这样的,假设存在一个接口Component如下: interface Component {fun method1(): IntArrayfun method2(a: Int)fun method3(a: Int, str: String) }那么对…

React-性能优化的手段

​🌈个人主页:前端青山 🔥系列专栏:React篇 🔖人终将被年少不可得之物困其一生 依旧青山,本期给大家带来React篇专栏内容:React-性能优化的手段 目录 React 性能优化的手段有哪些? 一、是什么 二、如何做…

【汇编语言】流程转移和子程序

【汇编语言】流程转移和子程序 文章目录 【汇编语言】流程转移和子程序前言一、“转移”综述二、操作符offset三、jmp指令jmp指令——无条件转移jmp指令:依据位移进行转移两种段内转移远转移:jmp far ptr 标号转移地址在寄存器中的jmp指令转移地址在内存…

Vue3种常用插槽的使用

插槽总结 &#xff1a; 插槽的作用&#xff1a;让父组件可以向子组件指定位置插入html结构&#xff0c;也是一种组件间通信的方式&#xff0c;适用于 父组件 > 子组件 。分类&#xff1a;默认插槽、具名插槽、作用域插槽 1、默认插槽 父组件中&#xff1a; <Category>…