关闭

软件需求分析方法

发表于:2009-6-19 11:46

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:未知    来源:51Testing博客

  软件需求分析(Software Reguirement Analysis)是研究用户需求得到的东西,完全理解用户对软件需求的完整功能,确认用户软件功能需求,建立可确认的、可验证的一个基本依据。

  软件需求分析是一个项目的开端,也是项目实施最重要的关键点。据有关的机构分析结果表明,我们设计的软件产品存在不完整性、不正确性等问题80%以上是需求分析错误所导致的,而且由于需求分析错误造成根本性的功能问题尤为突出。因此,一个项目的成功软件需求分析是关键的一步。

  一、 软件需求分析理论

  如果我们用数学方法来描述软件需求分析,可以将一个应用软件定义为S,可能应用软件涉及功能性问题非常广,我们用抽象化理论分析,可以划分为各个功能域,可以用D1、D2、… Dn表示,那么,我们可以用一个表达式描述为

  S={D1,D2,D3,…Dn}

  但是,功能域Di依然存在着有若干个问题P1、P2、P3、… Pm组成,并且每个功能对应于子系统中的一个软构件,我们可以表示为

  Di={P1,P2,P3,…Pm}

  同样,功能Pj有若干个行为F1、F2、F3、… Fk,每个行为对应于软构件中的实现方法

  Pj={F1,F2,F3,…Fk}

  一个软件包含了所有功能的集合,同时包含了实现所有功能的所有方法和算法描述。需求分析是依据于用户需求,经过需求问题识别,进行分析、消化与综合,制订规格说明,评审,分为四个阶段,形成用户需求与设计同步,设计满足用户需求目标。

  需求分析方法始终贯穿着吸收、同化、贯彻方法和手段,用商业化行为解决需求与实现中存在的矛盾,解决用户需求与商业化产品融通,解决规范与个性化追求。

  二、 软件需求分析目标

  软件需求分析的主要实现目标:

  1)对实现软件的功能做全面的描述,帮助用户判断实现功能的正确性、一致性和完整 性,促使用户在软件设计启动之前周密地、全面地思考软件需求;

  2)了解和描述软件实现所需的全部信息,为软件设计、确认和验证提供一个基准;

  3)为软件管理人员进行软件成本计价和编制软件开发计划书提供依据;

  需求分析的具体内容可以归纳为六个方面:软件的功能需求,软件与硬件或其他外部系统接口,软件的非功能性需求,软件的反向需求,软件设计和实现上的限制,阅读支持信息。

  软件需求分析应尽量提供软件实现功能需求的全部信息,使得软件设计人员和软件测试人员不再需要需求方的接触。这就要求软件需求分析内容应正确、完整、一致和可验证。此外,为保证软件设计质量,便于软件功能的休整和验证,软件需求表达无岔意性,具有可追踪性和可修改性。

  2.1      软件功能需求

  软件的功能需求是整个需求分析最主要、最关键和最复杂的部分,它描述软件的各种可能的条件下,对所有可能输入的数据信息,应完成那些具体功能,产生什么样的输出。描述软件功能需求是应注意下面几点:

  1)功能需求的完整性和一致性

  对功能的描述应包含与功能相关的信息,并应具有内在的一致性(即各种描述之间不矛盾、不冲突)。应注意以下几点:

  (1)    给出触发功能的各种条件(如:控制流、运行状态、运行模式等);

  (2)    定义各种可能性条件下的所有可能的输入(包括合法的输入空间和非法的输入空间);

  (3)    给出各种功能间可能的相互关系(如各个功能间的控制流、数据流、信息流,功能运行关系:顺序、重复、选择、并发、同步);

  (4)    给出功能性的主要级别(如:基本功能、可由设计者选择逐步实现的功能、可由设计者改变实现的功能等);

  (5)    尽可能不使用“待定”这样的词。所有含有待定内容的需求都不是完整的文件,如果出现待定的部分,必须进行待定部分内容说明,落实负责人员、落实实施日期。

  2)功能描述的无岔意性和可追踪性

  需求功能描述的无岔意性、可追踪性和规范化:

  (1)    功能描述必须清晰地描述出怎样输入到怎样输出,并且输入、输出描述应对应有数据流描述、控制流描述图,这些描述必须与其它地方描述一致;

  (2)    可以用语言、方程式、决策表、矩阵或图等对功能的描述。如果选用语言描述必须使用结构化的语言,描述前必须说明该步骤(或子功能)的执行是顺序,选择,重复,还是并发,然后说明步骤逻辑。整个描述必须单入单出。

  (3)    描述时,每一个功能名称和参照编号必须唯一,且不要将多个功能混在一起进行描述,这样便于功能的追踪和修改。

  (4)    功能描述应注意需求说明和程序设计的区别。需求设计仅仅是软件的功能设计,它给出软件运行的的外部功能描述,以及为了实现这一外部功能必须做哪些事情(采用和种数据结构,定义多个模块,接口间的接口等)是设计阶段的事情,功能描述不应涉及到那些细节问题,以避免给软件设计带来不必要的约束。

  2.2      软件与硬件或其他外部系统接口

  软件与硬件或其它外部系统接口包括下述内容:

  (1)    人机接口:说明输入、输出的内容、屏幕安排、格式等要求;

  (2)    硬件接口:说明端口号,指令集,输入输出信号的内容与数据类型,初始化信号源,传输通道号和信号处理方式。

  (3)    软件接口:说明软件的名称、助记符、规格说明、版本号和来源;

  (4)    通讯接口:指定通讯接口和通讯协议等描述。

  2.3      软件的非功能性需求

  软件非功能性需求是指软件性能指标,容限等功能以外的需求。一般指下述内容:

  (1)    时间需求:输入、输出频率,输入、输出响应时间,各种功能恢复时间等;

  (2)    处理容限、精度、采样参数的分辨率,误差处理等;

  (3)    可靠性的MTBF要求,可维护性、安全性要求等。(对可能的不正常的输入给以正常响应是可靠性的重要内容,这属于功能性需求。)

  2.4      软件反向需求

  软件的反向需求描述软件在那些情况下不能做什么。这一条是随软件实际要求而定。有两类情形需要采用反向需求的形式。第一种情况:某些用户需求适宜采用反向形式说明,如数据安全性要求属于这类形式。第二种情况:对一些可靠性和安全性要求较高的软件,有些必须描述软件不能做些什么。如控制点火时序,我们必须交代清楚在那些情况下不能点火,否则会造成故障。

  2.5      软件设计和实现上的限制

  软件设计和实现上的限制主要指对软件设计者的限制。如软件运行环境的限制(选择计算机类型,使用配置,操作系统的限制等)、设计工具的限制(使用语言、执行的标准)和保密要求等。

  2.6      阅读支持信息

  这部分内容是为了更好的帮助我们理解用户需求,也是为了使需求便于修改和追踪。其本身并不是对需求的描述,但它影响到需求分析的可读性,也属于需求分析的一个重要部分。一般目录、需求背景信息、内容索引、交叉引用表、注释等均属于这个部分的内容。

31/3123>
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号