1、什么是软件需求
软件需求是指用户对系统在功能、行为、性能、设计约束等方面的期望。
软件需求是指用户解决问题或达到目标所需的条件或能力,是系统或系统部件要满足合同、标准、规范或其他正式规定文档所需具有的条件或能力,以及反映这些条件或能力的文档说明。
2、需求分类
(1)业务需求:是指反应企业或客户对系统高层次的目标要求,通常来自项目投资人、购买产品的客户、客户单位的管理人员、市场营销部门或产品策划部门等。通过业务需求可以确定项目视图和范围,为以后的开发工作奠定了基础。
(2)用户需求:描述的是用户的具体目标,或用户要求系统必须能完成的任务。也就是说,用户需求描述了用户能使用系统来做些什么。
(3)系统需求:是从系统的角度来说明软件的需求,包括功能需求、非功能需求和设计约束等。功能需求也称为行为需求,它规定了开发人员必须在系统种实现的软件功能,用户利用这些功能来完成任务,满足业务要求。非功能需求是指系统必须具备的属性或品质,又可细分为软件质量属性和其他非功能需求。设计约束也称为限制条件或补充规约,通常是对系统的一些约束说明。
3、PIECES 框架是系统非功能性需求分类的技术
性能(Preformance):性能用于描述企业当前的运行效率,可以分析当前业务的处理速度。
信息(Information):信息和数据指标用于描述业务数据的输入、输出以及处理方面存在的各种问题。经济(Economics):经济指标主要是从成本和收益的角度分析企业当前存在的问题。
控制(Control):提高信息系统的安全和控制水平。
效率(Efficiency):提高企业的人、财、物等的使用效率。
服务(Service):提高企业对客户、供应商、合作伙伴、顾客等的服务质量。
4、需求获取方法
(1)用户访谈
1 对 1-3,有代表性的用户。用户访谈是最基本的一种需求获取手段,其形式包括结构化和非结构化两种。用户访谈是通过 1 对 1(或 1 对 2,1 对 3)的形式与用户面对面进行沟通,以获取用户需求。用户访谈具有良好的灵活性,有较宽广的应用范围。但是,也存在着许多困难,例如,用户经常较忙,难以安排时间;面谈时信息量大,记录较为困难;沟通需要很多技巧,同时需要系统分析师具有足够的领域知识等。另外,在访谈时,还可能会遇到一些对于企业来说比较机密和敏感的话题。因此,这看似简单的技术,也需要系统分析师具有丰富的经验和较强的沟通能力。
(2)问卷调查
用户多,无法一一访谈。与用户访谈相比,问卷调查可以在短时间内,以低廉的代价从大量的回答中收集数据;问卷调查允许回答者匿名填写,大多数用户可能会提供真实信息;问卷调查的结果比较好整理和统计。问卷调查最大的不足就是缺乏灵活性。
(3)现场观摩
针对较为复杂的流程和操作。想获取系统某些较为复杂的流程和操作过程,则现场观摩方法比较合适。对于一些较为复杂的流程和操作而言,是比较难以用语言和文字进行表达的,对于这种情况,可以采用到客户的工作现场,一边观察,一边听客户讲解,从而更直观的了解客户需求。
(4)联合需求计划(JRP)
高度组织的群体会议,各方参与,成本较高。为了提高需求获取的效率,越来越多的企业倾向于使用小组工作会议来代替大量独立的访谈。联合需求计划(Joint Requirement Planning,JRP)是一个通过高度组织的群体会议来分析企业内的问题并获取需求的过程,它是联合应用开发(Joint Application Development,JAD)的一部分。
(5)情节串联板
一系列图片,通过这些图片来讲故事。
(6)收集资料
把与系统有关的、对系统开发有益的信息收集起来。
(7)参加业务实践
有效地发现问题的本质和寻找解决问题的办法。
(8)阅读历史文档
对收集数据性的信息较为有用。
(9)抽样调查
降低成本。采样是指从种群中系统地选出有代表性的样本集的过程,通过认真研究所选出的样本集,可以从整体上揭示种群的有用信息。对于信息系统的开发而言,现有系统的文档(文件)就是采样种群。当开始对一个系统做需求分析时,查看现有系统的文档是对系统有初步了解的最好方法。但是,系统分析师应该查看哪些类型的文档,当文档的数据庞大,无法一一研究时,就需要使用采样技术选出有代表性的数据。抽样能够提高需求获取效率,但抽样往往是由系统分析师来抽的,所以会受到他的主观因素影响。