摘要:
本文是在管理信息系统需求调研实践和学习中的一些经验总结,有些是自己的体会,有些来自专家的书本或文章,希望与大家分享,并起到一个抛砖引玉的作用,如有不妥之处欢迎指正。
关键字:需求、调研
正文:
一、软件需求的定义
IEEE软件工程标准词汇表(1997年)中定义的需求为:
(1) 用户解决问题或达到目标所需的条件或能力;
(2) 系统或系统部件要满足合同、标准、规范或其他正式规定文档所需具有的条件或能力;
(3) 一种反映上述条件和能力的文档说明。
二、需求分析的几个方面
需求分析可分为问题识别、分析与综合、编制需求分析文档、需求评审等四个阶段,包括以下几个方面:确定软件所期望的用户类;获取每个用户的需求;了解实际用户任务和目标以及这些任务所支持的业务需求;分析员与用户的信息以区别用户任务需求、功能需求、业务规则、质量属性、建议解决方法和附加信息;将系统级的需求分为几个子系统,并将需求中的一部分分配给软件组件;了解相关质量属性的重要性;讨论得出实施优先级;将所收集的用户需求编写成需求规格说明和模型;评审需求规格说明,确保与用户达成共识。
软件需求的各组成部分如下图所示:
三、需求文档规范
A、三种编写方法
1、 用好的结构化和自然语言编写文本型文档;
2、 建立图形化模型,这些模型可以描绘转换过程、系统状态、和它们之间的变化、数据关系、逻辑流或对象类和他们的关系;
3、 编写形式化规格说明,这可以通过使用数学上精确的形式化逻辑语言来定义需求。
多种编写方法可在同一个文档使用,根据需要选择,或互为补充,以能够把需求说明白为目的。
B、应有成果
1、 各业务手工办理流程文字说明;
2、 各业务手工办理流程图;
3、 各业务手工办理各环节输入输出表单、数据来源;
4、 目标软件系统功能划分(示意图及文字说明);
5、 目标软件系统中各业务办理流程文字说明;
6、 目标软件系统中各业务办理流程图(模型);
7、 目标软件系统中各业务办理各环节数据、数据采集方式、数据间的内在联系分析。
8、 目标软件系统用户界面图、各式系统逻辑模型图及说明
C、文档工具推荐
1、 调研结果《需求分析说明书》格式参照开发文档模板;
2、 单位组织结构图、功能模块分解图用VISIO绘制,或直接用WORD中的画图工具;
3、 业务流程图用VISIO中的FLOWCHART模板绘制;
4、 系统逻辑模型使用ROSE绘制活用VISIO中的UML模板绘制;
5、 软件用户界面用VISIO中的WIN95 USER INTERFACE模板绘制;
6、 数据物理模型用POWERDESINER绘制;
D、需求文档编写原则
1、 句子简短完整,具有正确的语法、拼写和标点;
2、 使用的术语与词汇表中所定义的一致;
3、 需求陈述应该有一致的样式,例如“系统必须..”或者“用户必须..”,并紧跟一个行为动作和可观察的结果。;
4、 避免使用模糊、主观的术语,减少不确定性,如“界面友好、操作方便”;
5、 避免使用比较性词语,如“提高”,应定量说明提高程度。
四、需求分析的任务与过程
需求分析的任务是借助于当前系统的物理模型(待开发系统的系统元素)导出目标系统的逻辑模型(只描述系统要完成的功能和要处理的数据),解决目标系统“做什么”的问题,所要做的工作是深入描述软件的功能和性能,确定软件设计的限制和软件同其他系统元素的接口细节,定义软件的其他有效性需求,通过逐步细化对软件的要求描述软件要处理的数据,并给软件开发提供一种可以转化为数据设计、结构设计和过程设计的数据与功能表示。必须全面理解用户的各项要求,但不能全盘接受,只能接受合理的要求;对其中模糊的要求要进一步澄清,然后决定是否采纳;对于无法实现的要求要向用户作充分的解释。最后将软件的需求准确地表达出来,形成软件需求说明书SRS。其实现步骤如图:
(1) 获得当前系统的物理模型:首先分析、理解当前系统是如何运行的,了解当前系统的组织机构、输入输出、资源利用情况和日常数据处理过程,并用一个具体的模型来反映自己对当前系统的理解。此步骤也可以称为“业务建模”,其主要任务是对用户的组织机构或企业进行评估理解他们的需要及未来系统要解决的问题,然后建立一个业务USECASE模型和业务对象模型。当然如果系统相对简单,也没必要大动干戈区进行业务建模,只要做一些简单的业务分析即可。
(2) 抽象出当前系统的逻辑模型:在理解当前系统“怎样做”的基础上,取出非本质因素,抽取出“做什么”的本质。
(3) 建立目标系统的逻辑模型:明确目标系统要“做什么”
(4) 对逻辑模型的补充,如用户界面、启动和结束、出错处理、系统输入输出、系统性能、其他限制等等。
需求分析各过程如下:
(1) 问题识别:解决目标系统做什么,做到什么程度。需求包括:功能、性能、环境、可靠性、安全性、保密性、用户界面、资源使用、成本、进度。同时建立需求调查分析所需的通信途径。
(2) 分析与综合:从数据流和数据结构出发,逐步细化所有的软件功能,找出各元素之间的联系、接口特性和设计上的限制,分析它们是否满足功能要求并剔除不合理部分,综合成系统解决方案,给出目标系统的详细逻辑模型。常用的分析方法有面向数据流的结构化分析方法SA(数据流图DFD、数据词典DD、加工逻辑说明)、描绘系统数据关系的实体关系图ERD、面向数据结构的Jackson方法JSD、面向对象分析方法OOA(主要用UML)、对于有动态时序问题的软件可以用形式化技术,包括有穷状态机FSM的状态迁移(转换)图STD、时序图、Petri网或Z。每一种分析建模方法都有其优势和局限性,可以兼而有之以不同角度分析,应该避免陷入在软件需求方法和模型中发生教条的思维模式和派系斗争,一般来说结构化方法用于中小规模软件、面向对象方法用于大型软件。
(3) 编制需求分析文档
(4) 需求评审