软件需求分析的主要实现目标:
1)对实现软件的功能做全面的描述,帮助用户判断实现功能的正确性、一致性和完整 性,促使用户在软件设计启动之前周密地、全面地思考软件需求;
2)了解和描述软件实现所需的全部信息,为软件设计、确认和验证提供一个基准;
3)为软件管理人员进行软件成本计价和编制软件开发计划书提供依据;
需求分析的具体内容可以归纳为六个方面:软件的功能需求,软件与硬件或其他外部系统接口,软件的非功能性需求,软件的反向需求,软件设计和实现上的限制,阅读支持信息。
软件需求分析应尽量提供软件实现功能需求的全部信息,使得软件设计人员和软件测试人员不再需要需求方的接触。这就要求软件需求分析内容应正确、完整、一致和可验证。此外,为保证软件设计质量,便于软件功能的休整和验证,软件需求表达无岔意性,具有可追踪性和可修改性。
软件的功能需求是整个需求分析最主要、最关键和最复杂的部分,它描述软件的各种可能的条件下,对所有可能输入的数据信息,应完成那些具体功能,产生什么样的输出。描述软件功能需求是应注意下面几点:
1)功能需求的完整性和一致性
对功能的描述应包含与功能相关的信息,并应具有内在的一致性(即各种描述之间不矛盾、不冲突)。应注意以下几点:
(1) 给出触发功能的各种条件(如:控制流、运行状态、运行模式等);
(2) 定义各种可能性条件下的所有可能的输入(包括合法的输入空间和非法的输入空间);
(3) 给出各种功能间可能的相互关系(如各个功能间的控制流、数据流、信息流,功能运行关系:顺序、重复、选择、并发、同步);
(4) 给出功能性的主要级别(如:基本功能、可由设计者选择逐步实现的功能、可由设计者改变实现的功能等);
(5) 尽可能不使用“待定”这样的词。所有含有待定内容的需求都不是完整的文件,如果出现待定的部分,必须进行待定部分内容说明,落实负责人员、落实实施日期。
2)功能描述的无岔意性和可追踪性
需求功能描述的无岔意性、可追踪性和规范化:
(1) 功能描述必须清晰地描述出怎样输入到怎样输出,并且输入、输出描述应对应有数据流描述、控制流描述图,这些描述必须与其它地方描述一致;
(2) 可以用语言、方程式、决策表、矩阵或图等对功能的描述。如果选用语言描述必须使用结构化的语言,描述前必须说明该步骤(或子功能)的执行是顺序,选择,重复,还是并发,然后说明步骤逻辑。整个描述必须单入单出。
(3) 描述时,每一个功能名称和参照编号必须唯一,且不要将多个功能混在一起进行描述,这样便于功能的追踪和修改。
(4) 功能描述应注意需求说明和程序设计的区别。需求设计仅仅是软件的功能设计,它给出软件运行的的外部功能描述,以及为了实现这一外部功能必须做哪些事情(采用和种数据结构,定义多个模块,接口间的接口等)是设计阶段的事情,功能描述不应涉及到那些细节问题,以避免给软件设计带来不必要的约束。
软件与硬件或其他外部系统接口
软件与硬件或其它外部系统接口包括下述内容:
(1) 人机接口:说明输入、输出的内容、屏幕安排、格式等要求;
(2) 硬件接口:说明端口号,指令集,输入输出信号的内容与数据类型,初始化信号源,传输通道号和信号处理方式。
(3) 软件接口:说明软件的名称、助记符、规格说明、版本号和来源;
(4) 通讯接口:指定通讯接口和通讯协议等描述
软件的非功能性需求
软件非功能性需求是指软件性能指标,容限等功能以外的需求。一般指下述内容:
(1) 时间需求:输入、输出频率,输入、输出响应时间,各种功能恢复时间等;
(2) 处理容限、精度、采样参数的分辨率,误差处理等;
(3) 可靠性的MTBF要求,可维护性、安全性要求等。(对可能的不正常的输入给以正常响应是可靠性的重要内容,这属于功能性需求。)
软件反向需求
软件的反向需求描述软件在那些情况下不能做什么。这一条是随软件实际要求而定。有两类情形需要采用反向需求的形式。第一种情况:某些用户需求适宜采用反向形式说明,如数据安全性要求属于这类形式。第二种情况:对一些可靠性和安全性要求较高的软件,有些必须描述软件不能做些什么。如控制点火时序,我们必须交代清楚在那些情况下不能点火,否则会造成故障。
软件设计和实现上的限制
软件设计和实现上的限制主要指对软件设计者的限制。如软件运行环境的限制(选择计算机类型,使用配置,操作系统的限制等)、设计工具的限制(使用语言、执行的标准)和保密要求等
阅读支持信息
这部分内容是为了更好的帮助我们理解用户需求,也是为了使需求便于修改和追踪。其本身并不是对需求的描述,但它影响到需求分析的可读性,也属于需求分析的一个重要部分。一般目录、需求背景信息、内容索引、交叉引用表、注释等均属于这个部分的内容。
软件需求分析方法
为了保证项目的正常实施,并且能够顺利的完成,我们必须加强项目管理和重视项目分析工作。我们只有从实际出发,切切实实地把握用户需求,把握用户需求目标,把握用户将来功能界定,保证我们开发工作正确性方向。
重点监控软件需求分析办法
由于软件项目的特殊性和行业覆盖的广阔性,以及需求分析的高风险性,软件需求分析的重要性是不言而喻的,同时需求分析又的的确确难做。其原因基本是由于以下情况造成的。
客户说不清楚需求
有些客户对需求只有朦胧的感觉,当然说不清楚具体的需求。例如全国各地的很多部门、机构、单位在进行应用系统以及网络建设时,客户方的办公人员大多不清楚计算机网络有什么用,更缺乏IT系统建设方面的专家和知识。此时,用户就会要求软件系统分析人员替他们设想需求。工程的需求存在一定的主观性,为项目未来建设埋下了潜在的风险。
需求自身经常变动
根据以往的历史经验,随着客户方对信息化建设的认识和自己业务水平的提高,他们会在不同的阶段和时期对项目的需求提出新的要求和需求变更。事实上,历史上没有一个软件的需求改动少于三次的!所以必须接受“需求会变动”这个事实,在进行需求分析时要懂得防患于未然,尽可能地分析清楚哪些是稳定的需求,哪些是易变的需求,以便在进行系统设计时,将软件的核心建筑在稳定的需求上,同时留出变更空间。咨询监理方在需求分析的功能界定上担任一个中间、公平、公正的角色,所以也必须积极参与到需求分析的准备中来,以便协助客户方和承建方来界定“做什么”、“不做什么”的系统功能界限。
分析人员或客户理解有误
软件系统分析人员不可能都是全才,更不可能是行业方面的专家。客户表达的需求,不同的分析人员可能有不同的理解。如果分析人员理解错了,可能会导致以后的开发工作劳而无功。记得一则笑话,有个外星人间谍潜伏到地球刺探情报,它给上司写了一份报告:“主宰地球的是汽车。它们喝汽油,靠四个轮子滚动前进,嗓门极大,双眼在夜里能射出强光……有趣的是,车里住着一种叫作‘人’的寄生虫,这些寄生虫完全控制了车。”所以分析人员知识的专一性也会造成需求分析的误解和失败。这时,咨询监理公司就必须根据实际的项目需求调研计划,提醒承建方加强业务了解程度和注重沟通技巧。
根据以往的工程经验,需求分析工作方法,应该定位在“三个阶段”(也称“三步法”)。
“访谈式Visitation”阶段
这一阶段是和具体用户方的领导层、业务层人员的访谈式沟通,主要目的是从宏观上把握用户的具体需求方向和趋势,了解现有的组织架构、业务流程、硬件环境、软件环境、现有的运行系统等等具体情况、客观的信息。建立起良好的沟通渠道和方式。针对具体的职能部门以及各委办局,最好能指定本次项目的接口人。
实现手段:访谈、调查表格
输出成果:调查报告、业务流程报告
、“诱导式Inducement”阶段
这一阶段是在承建方已经了解了具体用户方的组织架构、业务流程、硬件环境、软件环境、现有的运行系统等等具体实际、客观的信息基础上,结合现有的硬件、软件实现方案,做出简单的用户流程页面,同时结合以往的项目经验对用户采用诱导式、启发式的调研方法和手段,和用户一起探讨业务流程设计的合理性、准确性、便易性、习惯性。用户可以操作简单演示的DEMO,来感受一下整个业务流程的设计合理性、准确性等等问题,及时地提出改进意见和方法。
实现手段:拜访(诱导)、原型演示
输出成果:调研分析报告、原型反馈报告、业务流程报告
确认式Afirm”阶段
这一阶段是在上述两个阶段成果的基础上,进行具体的流程细化、数据项的确认阶段,这个阶段承建方必须提供原型系统和明确的业务流程报告、数据项表,并能清晰地向用户描述系统的业务流设计目标。用户方可以通过审查业务流程报告、数据项表以及操作承建方提供的DEMO系统,来提出反馈意见,并对已经可接受的报告、文档签字确认。
实现手段:拜访(回顾、确认),提交业务流程报告、数据项表;原型演示系统
输出成果:需求分析报告、数据项、业务流程报告、原型系统反馈意见(后三者可以统一归入需求分析报告中,提交用户方、监理方进行确认和存档)
整体来讲,需求分析的三个阶段是需求调研中不可忽视一个重要的部分,三个阶段或者说三步法的实施和采用,对用户和承建方都同样提供了项目成功的保证。当然在系统建设的过程中,特别在采用迭代法的开发模式时,需求分析的工作需一直进行下去,而在后期的需求改进中,工作则基本集中在后两个阶段中。
分享到:
相关推荐
下面将详细阐述软件需求分析的目标、任务、过程、原则以及常用的技术和工具。 首先,软件需求分析的目标主要包括以下几点: 1. 明确用户需求:通过与用户沟通,了解他们对软件的功能、性能、界面等期望,确保软件...
本文将深入探讨需求分析的过程、方法和实践,旨在揭示各个环节中可能遇到的问题及其解决策略。 一、需求分析过程 1. 识别需求:这是需求分析的起点,通常通过与客户或利益相关者的沟通来完成。这一步需要明确业务...
在软件工程中,需求分析不仅包括了对问题的深入理解和详细描述,还包括了与用户的有效沟通,以确保最终开发的系统能够准确地符合用户期望。 **定义** 需求分析是指在创建或改进一个计算机系统时,对问题进行详细的...
使了解需求工程基本理论,具有一定需求相关工作经验的技术人员、业务骨干的需求分析实战技能...•对项目目标建立正确的认识与概念,深入掌握项目目标、Stakeholder的分析思路和方法,能够有效地对相关需求进行跟踪。
结构化分析方法和面向对象分析方法是两种常用的需求分析方法,它们都遵循以下基本原则: 1. 必须能够表达和理解问题的数据域和功能域。 2. 可以把一个复杂问题按功能进行分解并可逐层细化。 3. 建模。模型可以帮助...
本文在进行大量的实践和深入研究的基础上基于国际领先的理论框架结合商业银行的信息系统特点基于...需求分析的工作方法和工作内容指出了商业银行业务流程需求分析较为适用的规范和步骤指导实际的业务流程需求分析工作...
- **案例讨论与演示**:通过具体案例分析问题定义的方法和技巧。 - **问题分析**:深入分析问题的根本原因,确保目标设定的准确性和合理性。 - **理清Stakeholder** - **寻找Stakeholder**:识别项目的利益相关...
总之,软件需求分析是软件开发成功的关键,涉及多个层面和方法。掌握有效的分析技巧,能帮助我们更好地理解用户需求,从而构建出满足用户期望的高质量软件。通过深入学习和实践这些方法,可以为计算机软考和实际项目...
《软件需求分析国家标准》是指导软件开发过程中的一个重要标准,旨在规范需求获取、分析、定义、验证和管理的流程,确保软件项目能够满足用户和业务的实际需求。这一国家标准的实施对于提升软件质量、减少开发成本、...
本文将深入探讨“软件工程-需求分析”的概念、方法、步骤以及所使用的工具,旨在为软件开发人员提供全面的理解和实践指导。 **一、需求分析的概念** 需求分析是软件开发的第一个正式阶段,它是对用户需求进行收集...
结构化分析(Structured Analysis,简称 SA)方法是软件开发中的一种关键需求分析技术,尤其适用于大型数据处理系统,如企事业单位管理系统。SA 方法的核心理念源于70年代,由Yourdon, Constaintine 和 DeMarco等人...
需求分析文档的导论部分旨在介绍文档的目的和范围,概述软件系统的目标和背景信息。该部分还将对需求分析的重要性和意义进行简要说明。 知识点: * 需求分析的定义和重要性 * 软件开发过程中的需求分析步骤 * 需求...
面向目标方法在需求分析中的应用涉及目标的获取、分析和建模。目标分析阶段的主要任务是获取目标,然后通过建立目标模型来明确目标之间的关系和依赖。 综上所述,《软件需求分析》习题集涵盖了软件需求分析领域的多...
然而,当前的测试需求分析方法多依赖于测试人员的经验,这可能导致测试用例设计不充分,测试覆盖率低下,甚至测试目标不明确,容易遗漏问题。 为了改进这种情况,本文介绍了一种软件测试需求分析的新方法。这个方法...
在大数据应用的需求分析中,传统的软件工程方法常常面临挑战,主要因为需求理解的难度、严格的规范执行难度以及时间和成本的限制。在大数据环境下,需求分析更侧重于数据本身而非软件功能,这要求我们采取适应大数据...
首先明确,该习题集是关于面向目标方法(Goal-Oriented Approach)在软件需求分析中目标分析阶段的练习。软件需求分析是软件工程的一个重要环节,旨在明确系统必须完成的工作,并确定这些工作对系统用户的意义。 在...
了解需求分析的基本流程和方法对于初学者至关重要,包括访谈、问卷调查、观察法等信息收集手段。 4. **需求分析和激励原理**:在需求分析过程中,理解用户动机(激励原理)有助于设计出更符合用户期望的解决方案。...
【需求分析师面试题】知识点详解: 1. 需求收集与分析: 需求分析师在面试中经常被问及如何有效地收集需求。这涉及到与不同干系人的...这些能力的综合运用将确保需求分析工作的高效性和准确性,为项目的成功奠定基础。