软工导论第三章 需求分析

2024-05-02 18:12

本文主要是介绍软工导论第三章 需求分析,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

对软件需求的深人理解是软件开发工作获得成功的前提条件,不论人们把设计和编码工作做得如何出色,不能真正满足用户需求的程序只会令用户失望,给开发者带来烦恼。(意义)
需求分析是软件定义时期的最后一个阶段,它的基本任务是准确地回答“系统必须做什么”这个问题。(目的)

文章目录

3.1 需求分析的任务

3.1.1 确定对系统的综合要求

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

1.访谈

2.面向数据流自顶向下求精

3.简易的应用规格说明技术

4、快速建立软件原型

3.3 分析建模与规格说明

1.分析建模

2.软件需求规格说明

3.4 实体-联系图

3.6 状态转换图

1.状态

2.事件

3.7 其他图形工具

1.系统流程图

2.层次方框图

3.Warnier 图

4.IPO 图

3.8 验证软件需求


3.1 需求分析的任务

3.1.1 确定对系统的综合要求

  • 功能需求(系统必须提供的服务)
  • 性能需求(系统必须满足的定时约束或容量约束)
  • 可靠性和可用性需求
  • 出错处理需求(对环境错误应该怎样响应)
  • 接口需求(它的环境通信的格式)
  • 约束
  • 逆向需求(不应该做什么)
  • 将来可能提出的要求(不属于当前系统开发范畴)

需求分析的方法:

  • 功能分析法
  • 结构化分析法
  • 信息建模法
  • 面向对象分析法

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

分析员和用户都起着关键的、必不可少的作用。用户与分析员之间需要沟通的内容非常多,在获取和分析软件需求的过程中,在双方交流信息的过程中很容易出现误解或遗漏,也可能存在二义性。因此,不仅在个需求分析过程中应该采用行之有效的通信技术,集中精力做细致的工作,而且必须严格审查、验证需求分析的结果。

分析员与用户沟通进行需求分析的典型方法如下所述。

1.访谈

访谈是最早开始使用的获取用户需求的方法,也是迄今为止仍然广泛使用的需求分析方法。
访谈有两种基本形式,分别是正式的和非正式的访谈。
当需要调查大量人员的意见时,请被调查人填写调查表是十分有效的做法。
在访问用户的过程中使用情景分析技术往往非常有效。所谓情景分析,就是对用户将来使用目标系统解决某个具体问题的方法和结果进行分析。系统分析员利用情景分析技术往往能够获知用户的具体需求。

2.面向数据流自顶向下求精

结构化分析方法实质上就是,面向数据流自顶向下逐步求精进行需求分析的方法。
通过可行性研究已经得出了目标系统的高层数据流图,需求分析的一个主要目标就是把数据流和数据存储定义到元素级。为了达到这个目标,通常从数据流图的输出端着手分析。

3.简易的应用规格说明技术

简易的应用规格说明技术是一种面向团队的需求收集技术。这种方法提倡用户与开发者密切合作,共同标识问题,提出解决方案要素,商讨不同的方案并指定基本需求。目前,这种技术已经成为信息系统领域使用的主流技术。

4、快速建立软件原型

快速建立软件原型是最准确、最有效、最强大的需求分析技术。所谓软件原型,就是快速建立起来的旨在演示目标系统主要功能的可运行的程序。
构建软件原型的要点是,它应该实现用户看得见的功能,省略目标系统的“隐含功能。
软件原型应该具有的第一个特性是“快速”,第二个特性是“容易修改”。

3.3 分析建模与规格说明

1.分析建模

为了更好地理解复杂事物,人们通常采用建立事物模型的方法。所谓模型,就是为了理解事物而对事物作出的一种抽象,是对事物的一种无歧义的书面描述。通常,模型由一组图形符号和组织这些符号的规则组成。
尽管目前有许多不同的用于需求分析的结构化分析方法,但是,多数方法都遵守下述准则。
(1)必须理解并描述问题的信息域,根据这条准则应该建立数据模型
(2)必须定义软件应完成的功能,这条准则要求建立功能模型。
(3)必须描述作为外部事件结果的软件行为,这条准则要求建立行为模型
(4)必须对描述目标系统信息功能和行为的模型进行分解,用层次的方式展示细节

2.软件需求规格说明

通过需求分析除了创建分析模型之外,还应该写出软件需求规格说明书,它是需求分析阶段得出的最主要文档。
通常用自然语言完整、准确、具体地描述对目标系统的需求,这样的规格说明书具有容易书写、容易理解的优点。
为了消除用自然语言书写的软件需求规格说明书中可能存在的不一致、歧义、含糊不完整及抽象层次混乱等问题,有些人主张用形式化方法描述用户对软件的需求。

3.4 实体-联系图

为了把用户的数据要求清楚、准确地描述出来,系统分析员通常建立一个概念性的数据模型。概念性数据模型是一种面向问题的数据模型,它描述了从用户角度看到的数据
通常,使用实体-联系图来建立数据模型。可以把实体-联系图简称为ER图,相应地可以把用ER图描绘的数据模型称为ER模型。
ER图中包含了实体(即数据对象)关系和属性三种基本成分。通常用矩形框代表实体,用连接相关实体的菱形框表示关系,用椭圆形或圆角矩形表示实体或关系的属性并用直线把实体(或关系)与其属性连接起来。

3.6 状态转换图

状态转换图(简称为状态图)通过描绘系统状态及引起系统状态转换的事件来表示系统的行为。此外,状态图还指明了作为特定事件的结果系统将做哪些动作。因此,可以用状态图建立软件系统的行为模型。

1.状态

状态图:状态、状态的转换、引起状态转换的事件

一个类的对象里面的一个枚举类型的数据成员,在整个生命周期中所有可能的状态,以及状态的转化、引起状态转换的事件(他有哪些取值?什么状态会改变这些值?那些函数可以改变这些值?)

状态是可以被观察到的系统行为模式,一个状态代表系统的一种行为模式。状态规定了系统对事件的响应方式。
在状态图中定义的状态主要有初态、终态和中间状态。在一张状态图中只能有一个初态,而终态则可以有0至多个。
在状态图中,初态用实心圆表示,终态用一对同心圆(内圆为实心圆)表示。中间状态用圆角矩形表示,可以用两条水平横线把它分成上、中、下三个部分,分别放置状态名、状态变量和活动表。

2.事件

事件是在某个特定时刻发生的事情,它是对引起系统做动作或(和)从一个状态转到另一个状态的外界事件的抽象。
状态图中两个状态之间带箭头的连线称为状态转换,箭头指明了转换的方向。状态转换通常是由事件触发的,在这种情况下应该在表示状态转换的箭头线上标出触发转的事件表达式。

3.7 其他图形工具

1.系统流程图

在进行可行性研究时,需要了解和分析现有的系统,并以概括的形式表达对现有系续的认识;在可行性研究及设计阶段,需要把设想的新系统逻辑模型转变成物理模型,因必须措绘未来物理系统的摄貌、
系统流程图是概括地描绘物理系统的传统工具,它用图形符号以黑盒子形式描绘组成系统的每个具体部件。系统流程图表达的是数据在系统各部件之间流动的情况,而不是对数据进行加工处理的控制过程,因此,它是物理数据流图而不是程序流程图。

2.层次方框图

层次方框图用树形结构的一系列多层次的矩形框描绘数据的层次结构。树形结构的顶层是一个单独的矩形框,它代表完整的数据结构,下面各层矩形框代表这个数据的组成部分,最底层的各个框代表组成这个数据的实际数据元素。

3.Warnier 图

Warnier图也用树形结构描绘信息,但是它提供的描绘手段比层次方框图更丰富。用 Warnier图可以清楚地描绘信息的逻辑结构,也就是说,它可以表明一个(或一类)信息元素是重复出现的,也可以表示特定信息在某一类信息中是有条件地出现的。因为重复和条件约束是说明软件处理过程的基础,所以很容易把Warnier图转变成软件设计的工具。
Warnier图用花括号的开括号来区分数据结构的层次,在一个开括号内的所有名字都属于同一类信息,一个名字下方(或右侧)的圆括号中的数字标明了这个名字代表的信息类(或元素)在这个数据结构中出现的次数。

4.IPO 图

IPO图是输入、处理和输出图的简称,它能够方便地描绘输人数据、对数据的处理和输出数据之同的关系,可以用来描述数据流图中处理框的功能,也可以描述程序模块的功能或实现算法。

3.8 验证软件需求

需求分析阶段的工作结果是开发软件系统的重要基础,一旦对目标系统提出完整、具体的要求并写出了软件需求规格说明书之后,就必须严格验证这些需求的正确性。通常从下述4个方面进行验证。
(1)一致性。所有需求必须是一致的,任何一条需求都不能和其他需求相互矛盾。
(2)完整性。需求必须是完整的,软件需求规格说明书应该包含用户对软件产品的每一项要求。
(3)现实性。指定的需求应该是用现有的硬件技术和软件技术可以实现的
(4)有效性。需求必须是有效的,确实能解决用户所面临的问题,可以达到开发该软件的目标。

这篇关于软工导论第三章 需求分析的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/954871

相关文章

python panda库从基础到高级操作分析

《pythonpanda库从基础到高级操作分析》本文介绍了Pandas库的核心功能,包括处理结构化数据的Series和DataFrame数据结构,数据读取、清洗、分组聚合、合并、时间序列分析及大数据... 目录1. Pandas 概述2. 基本操作:数据读取与查看3. 索引操作:精准定位数据4. Group

MySQL中EXISTS与IN用法使用与对比分析

《MySQL中EXISTS与IN用法使用与对比分析》在MySQL中,EXISTS和IN都用于子查询中根据另一个查询的结果来过滤主查询的记录,本文将基于工作原理、效率和应用场景进行全面对比... 目录一、基本用法详解1. IN 运算符2. EXISTS 运算符二、EXISTS 与 IN 的选择策略三、性能对比

MySQL 内存使用率常用分析语句

《MySQL内存使用率常用分析语句》用户整理了MySQL内存占用过高的分析方法,涵盖操作系统层确认及数据库层bufferpool、内存模块差值、线程状态、performance_schema性能数据... 目录一、 OS层二、 DB层1. 全局情况2. 内存占js用详情最近连续遇到mysql内存占用过高导致

深度解析Nginx日志分析与499状态码问题解决

《深度解析Nginx日志分析与499状态码问题解决》在Web服务器运维和性能优化过程中,Nginx日志是排查问题的重要依据,本文将围绕Nginx日志分析、499状态码的成因、排查方法及解决方案展开讨论... 目录前言1. Nginx日志基础1.1 Nginx日志存放位置1.2 Nginx日志格式2. 499

Olingo分析和实践之EDM 辅助序列化器详解(最佳实践)

《Olingo分析和实践之EDM辅助序列化器详解(最佳实践)》EDM辅助序列化器是ApacheOlingoOData框架中无需完整EDM模型的智能序列化工具,通过运行时类型推断实现灵活数据转换,适用... 目录概念与定义什么是 EDM 辅助序列化器?核心概念设计目标核心特点1. EDM 信息可选2. 智能类

Olingo分析和实践之OData框架核心组件初始化(关键步骤)

《Olingo分析和实践之OData框架核心组件初始化(关键步骤)》ODataSpringBootService通过初始化OData实例和服务元数据,构建框架核心能力与数据模型结构,实现序列化、URI... 目录概述第一步:OData实例创建1.1 OData.newInstance() 详细分析1.1.1

Olingo分析和实践之ODataImpl详细分析(重要方法详解)

《Olingo分析和实践之ODataImpl详细分析(重要方法详解)》ODataImpl.java是ApacheOlingoOData框架的核心工厂类,负责创建序列化器、反序列化器和处理器等组件,... 目录概述主要职责类结构与继承关系核心功能分析1. 序列化器管理2. 反序列化器管理3. 处理器管理重要方

SpringBoot中六种批量更新Mysql的方式效率对比分析

《SpringBoot中六种批量更新Mysql的方式效率对比分析》文章比较了MySQL大数据量批量更新的多种方法,指出REPLACEINTO和ONDUPLICATEKEY效率最高但存在数据风险,MyB... 目录效率比较测试结构数据库初始化测试数据批量修改方案第一种 for第二种 case when第三种

解决1093 - You can‘t specify target table报错问题及原因分析

《解决1093-Youcan‘tspecifytargettable报错问题及原因分析》MySQL1093错误因UPDATE/DELETE语句的FROM子句直接引用目标表或嵌套子查询导致,... 目录报js错原因分析具体原因解决办法方法一:使用临时表方法二:使用JOIN方法三:使用EXISTS示例总结报错原

MySQL中的LENGTH()函数用法详解与实例分析

《MySQL中的LENGTH()函数用法详解与实例分析》MySQLLENGTH()函数用于计算字符串的字节长度,区别于CHAR_LENGTH()的字符长度,适用于多字节字符集(如UTF-8)的数据验证... 目录1. LENGTH()函数的基本语法2. LENGTH()函数的返回值2.1 示例1:计算字符串