[软件需求实践之需求的沟通与分析]在信息化高速发展的今天,构建与时俱进的信息化系统已成为所有政府、企事业单位的重点课题之一。然而在软件项目实施过程中,进度超期、经费超预算、变更频繁的现象层出不穷,甚至...+阅读
需求分析奠定了软件工程和项目管理的基础。我们在建造软件系统这座大厦的时候,如果需求分析的基础不够坚实和牢固,那么往往会导致软件系统问题百出,甚至被马上丢弃。在建造软件系统的过程中,如果我们经常习惯地沿用一些不规范的方法,其后果便是产生一条鸿沟──开发者开发的与用户所想得到的软件存在着巨大的“期望差异”。
因此“需求”这个名词的定义不仅仅是从用户角度对系统外部行为的描述,以及从开发人员角度对系统内部特性的描述,其关键的一点是“需求”必须文档化。 需求的类型 软件需求包括三个不同的层次──业务需求、用户需求和功能需求。 除此之外,每个系统还有各种非功能需求。 业务需求(BusinessRequirement)表示组织或客户高层次的目标。
业务需求通常来自项目投资人、购买产品的客户、实际用户的管理者、市场营销部门或产品策划部门。业务需求描述了组织为什么要开发一个系统,即组织希望达到的目标。使用前景和范围(vision and scope)文档来记录业务需求,这份文档有时也被称作项目轮廓图或市场需求(project charter 或 market requirement)文档。 用户需求(UserRequirement)描述的是用户的目标,或用户要求系统必须能完成的任务。
用例、场景描述和事件响应表都是表达用户需求的有效途径。也就是说用户需求描述了用户能使用系统来做些什么。 功能需求(Functional Requirement)规定开发人员必须在产品中实现的软件功能,用户利用这些功能来完成任务,满足业务需求。功能需求有时也被称作行为需求(behavioral requirement),因为习惯上总是用“应该”对其进行描述:“系统应该发送电子邮件来通知用户已接受其预定”。
功能需求描述是开发人员需要实现什么。 非功能需求(Non-functional Requirement) 定义了软件产品为满足用户业务需求而必须具有的除功能需求以外的特性。包括系统的完整性(联机帮助、 数据管理、用户管理、软件发布管理、在线升级等)、性能、可靠性、可维护性、可扩充性、对技术和业务的适应性等。 需求分析的任务 1 解决的问题 1) 齐全、准确地找出目标系统全部的功能、性能、限制; 2) 找出全部的输入流、输出流; 3) 找出所有的加工; 4) 产生完整的分层的DFD、数据字典、加工的描述; 5) 补充的意见。
2 综合要求 确定对系统的综合要求,系统功能要求,系统性能要求,运行要求,将来可能提出的要求。 3 任务 图1为需求分析任务图,需求分析阶段要完成的具体明确的最终任务就是形成一份经开发方和用户认可或达成共识的软件需求分析文档(需求规格说明书、修改后的项目开发计划、初步的用户手册、确认测试计划、数据要求说明书)。
这个文档能清晰准确地说明系统将要开发什么,能够规定出详细的技术需求,包括所有面向用户、面向机器和其它软件系统的接口。可以说需求文档在开发过程中一直起指导作用。 为了更好地完成软件开发第一阶段的需求分析任务,提高质量,需求管理是必不可少的。 需求管理的目的是在客户与开发方之间建立对需求的共同理解,维护需求与其他工作成果的一致性,并控制需求的变更,主要体现在跟踪和控制需求变更管理。
需求管理是开发工作有效进行的保证,是一种很高层次的系统行为,涉及整个开发过程和产品本身。 需求分析的方法 需求分析方法由对软件问题的信息域和功能域的系统分析过程及其表示方法组成,大多数的需求分析方法是由信息驱动的。信息域具有三种属性: 信息流、信息内容和信息结构。 常用的需求分析方法有:面向数据流的结构化分析方法(SA),面向数据结构的Jackson方法(JSD),面向数据结构的结构化数据系统开发方法(DSSD),面向对象的分析方法(OOA)等。
选择那种方法要根据哪些资源在什么时间对开发人员有效,不能盲目套用。这里着重阐述面向数据流的结构化分析方法(SA)。面向数据流的结构化分析方法 面向数据流的结构化分析方法(Structured Analysis,简称SA),是面向数据流进行需求分析的方法,是需求分析使用最多的方法之一。 SA也是一种建模活动,该方法使用简单易读符号,根据软件内部数据传递、变换的关系,自顶向下逐层分解,描绘出满足功能要求的软件模型。
适用于数据处理类型软件的需求分析,这一方法除了简单,容易掌握之外,还能和设计阶段的结构化设计(SD)衔接,从而取得良好的设计结果。 自顶向下逐层分解的分析策略 SA方法的基本手段:“分解”和“抽象”。这是系统开发技术中控制复杂性的两种手段。它先将系统“抽象”成一个模型,此模型是有输入和输出并有系统名称的盒子,然后打开这个盒子,对它进行逐层分解,直到能被理解,可以实现为止。
因此分析的策略是自顶向下,逐层加细,由抽象到具体的过程。如图2。 结构化分析方法使用工具 SA方法利用图形等半形式化的描述方式表达需求,简明易懂,用它们形成需求规格说明书中的主要部分。描述工具是 1) 数据流图:描述系统由哪几部分组成,各部分之间有什么联系等等。 2) 数据字典:定义了数据流图中每一个图形元素。 3) 描述加工逻辑的结构化语...
以下为关联文档:
请问软件开发和需求分析一个软件开发项目通常要经历需求分析、设计、编程、测试等几个大的阶段。其中设计又包括整体设计、系统设计(把整体架构变成一块块系统)、详细设计几个环节。详细设计之后软件...
APP开发的需求分析主要包括哪些随着移动互联网的飞速发展,为APP开发市场提供了良好的基础。现如今,大部分企业都需要开发属于自己的APP软件,但为了保证开发出来的APP适应市场需求,以及被用户认可,就必须先对APP...
论文高手进:软件开发需求分析的认识和理解应用软件开发中的需求分析及方法 软件工程一般具有以下基本活动:软件描述:软件的功能以及软件操作上的约束定义;软件设计和实现:软件要按照描述来设计;软件有效性验证:软件要被确...
在软件开发中需求分析阶段需要哪些工具需求分析阶段用的工具有:数据流图(DFD图)、数据字典、判定树、判定表。 如果在进行需求分析之前没有做过可行性分析,那么补充完成这部分工作往往是必要的,从问题定义和调查研究入...
在软件开发中需求分析阶段可以使用的工具是选B,在软件开发中,需求分析阶段可以使用的工具是DFD图。 DFD图是需求分析阶段业务人员能够理解的工具,而N-S图、PAD图、程序流程图,都是具体到设计阶段的设计工具。 下面详细介...
软件需求分析的需求类型下面这些定义是需求工程领域中常见术语的定义。 软件需求包括三个不同的层次:业务需求、用户需求和功能需求(也包括非功能需求)。 1.业务需求(business requirement)反映了组织机...
android开发课程设计报告需求分析怎么写对于正文部分内容要求必须具备如下内容:1)目的此次课程设计的目的。2)需求分析以无二义性的陈述说明程序设计的任务,程序要做什么?明确规定:①输入的形式和输入值的范围;②输出的形...
软件开发用户需求说明书怎么写?规范化软件开发过程中的《需求说明书》的编写,使之成为整个开发工作的基础。2 适用范围本规范适用于集团开发项目的(软件)《需求说明书》的编写。3 编写内容提示1 引言3.1.1 背...
软件需求分析是软件工程过程中几交换意见最频繁的步骤为什么交换意软件需求包括三个不同的层次—业务需求,用户需求和功能需求—也包括非功能需求. 业务需求( business requirement)反映了组织机构或客户对系统,产品高层次的目标要求,它 们在项目...