3.2.2 软件需求分析
1.需求分析的任务
这个阶段的基本任务是:用户和分析人员双方共同来理解系统的需求,并将共同理解形成一份文件——软件需求说明书。分析阶段是面向“问题”的阶段,它主要对用户的业务活动进行分析,明确在用户的业务环境中,软件系统应该做什么。
所谓用户需求是指用户要求软件系统必须满足的所有功能和限制。用户需求通常包括功能要求、性能要求、可靠性要求、安全保密要求以及开发费用、开发周期、可使用的资源等方面的限制,其中功能要求是最基本的,它又包括数据要求和加工要求两方面。
分析阶段是用户和软件人员双方讨论协商的阶段,分析人员在其中起到组织和协调的作用。分析人员应该有以下能力:熟悉计算机技术;了解用户业务领域的相关知识,能在用户和软件人员之间借助数据处理的概念进行交流。同时从个体素质上,应善于领会一些抽象的概念,重新整理使之成为各种逻辑成分,并根据各种逻辑成分综合出问题的解决办法,善于从相互冲突的原始材料中吸取适当的论据;具有良好的用书面或口头形式进行讨论及交换意见的能力。
2.需求分析的步骤
软件需求分析涉及一系列的通信,认识理解和过程决策复杂的任务。需求分析工作的难度不仅决定于软件项目本身的特点,也与参与需求分析人员的技术水平、心理因素等方面有关。需求分析工作大体上可按下述步骤进行:
(1)理解。理解软件系统的目标与范围的说明和软件计划中所述的软件系统的目标,软件的作用范围,理解用户环境并与用户达到一致的理解。
(2)分析。分析软件作用范围中的功能、性能要求、接口说明是否明确,约束条件是否恰当,可实现性如何。必要时可对软件作用范围和约束条件作补充说明。
(3)决策。根据软件项目的规模、特征、性质等因素和类似软件开发的历史经验,决定采取哪种需求分析方法。
(4)实现。按照选定的需求分析方法来进行需求分析,并写出软件规格说明。
(5)复审。复审是确认需求分析阶段工作完成的一步。复审有可能进行多次,复审的标准主要有:
①软件需求规格说明中的目标是否与系统规格说明中的目标一致。
②软件需求规格说明中对重要的系统元素接口、所有的数据流和数据文件的定义是否明确,是否有不一致或遗漏。
③每个功能是否已清楚地描述,设计的主要约束是否实现。对未来的软件需求是否有所考虑。
④是否与用户取得了一致的意见。
⑤文档是否清晰、完备。
3.需求分析常用的工具
(1)数据流图(DFD,Data Flow Diagram)
数据流图是描述数据处理过程的工具,是需求理解的逻辑模型的图形表示,它直接支持系统的功能建模。
数据流图从数据传递和加工的角度,刻画数据流从输入到输出的移动变换过程。数据流图中的主要图形元素与说明如下:
加工(转换)。输入数据经加工变换产生输出。
数据流。沿箭头方向传送数据的通道,一般在旁边标注数据流名称。
存储文件(数据源)。表示处理过程中存放各种数据的文件。
源。表示系统和环境的接口,属系统之外的实体。
一般通过对实际系统的了解和分析后,使用数据流图为系统建立逻辑模型。
结构化分析方法的实质是着眼于数据流、自顶向下、逐层分解、建立系统的处理流程,以数据流图和数据字典为主要工具,建立系统的逻辑模型。
结构化分析的步骤如下:
①通过对用户的调查,以软件的需求为线索,获得当前系统的具体模型;
②去掉具体模型中非本质因素,抽象出当前系统的逻辑模型;
③根据计算机的特点分析当前系统与目标系统的差别,建立目标系统的逻辑模型;
④完善目标系统并补充细节,写出目标系统的软件需求规格说明;
⑤评审直到确认完全符合用户对软件的需求。
(2)数据字典(DD,Data Dictionary)
在数据流图中,对所有的图形元素都进行了命名,它们都是对一些属性和内容抽象的概括,一个软件系统,对其数据流图上的命名必须有相同的理解,否则将会严重影响以后的开发和维护工作。
数据字典是对数据定义信息的集合。它是对数据流图中包含所有元素定义的集合。
数据流图和数据字典共同构成系统的逻辑模型,没有数据流图则数据字典难以发挥作用,没有数据字典则数据流图就不严格。
(3)数据字典的内容
数据字典中有四种类型的条目:数据流、数据存储、数据项和加工。除了数据定义之外,数据字典中还应该包含关于数据的一些其他信息。可能包括的信息有:
①一般信息,包括名字、别名和描述。
②数据定义,包括数据类型、数据长度和结构组成。
③数据的使用特点,包括数据的取值范围、使用频率和使用方式。
④数据控制信息,包括数据来源、用户、使用它的程序和改变权。
数据的别名是指与该数据的其他等价的名字,别名的出现主要是因为对于同样的数据,不同的用户部门可能使用了不同的名字或者分析人员在不同的时期使用了不同的名字。
(4)数据字典定义
①数据项
数据项给出某个数据单项的定义,通常为数据项的值类型,允许的取值范围等。如学生编号为1~20 000。
②数据流
数据流给出某个数据流的定义,它通常是列出该数据流的各组成数据项。有些数据流的组成比较复杂,可以采用自顶向下分解的方法将它表示成更低层次的组合。一直分解到每个与项目有关的人都清楚其准确含义时为止。
在数据字典的数据流定义中,由简单的数据元素(或称分量)组成更复杂的数据方式有:
顺序:以确定次序连接两个或多个分量。
选择从两个或多个可能的元素中选取一个。
重复:将指定的分量重复零次或多次。
可选某一个分量是可有可无的。
在进行数据流定义时,需要借助于下列符号:
=:表示定义为
+:表示顺序连接
[分量1|分量2…]表示选择其中某一个分量
{}表示重复括号内的分量
()表示可选,圆括弧内的分量可有可无
例如,银行取款业务的数据流图中,存储文件“存折”的定义如下:
存折=户名+所号+账户+开户日+性质+(印密)+l{存取行}50
户名=2{字母}24
所号=“00l”-“999”
账号=“0000000l”-“99999999”
开户日=年+月+日
性质=“l”-“6”
印密=“0”
存取行=日期+(摘要)+支出+存入+余额+操作+复核
日期=年+月+日
年:“00”-“99”
月=“01”-“12”
日=“01”-“3l”
摘要=1{字母}4
支出=金额
金额=“0000000.01”-“9999999.99”
操作=“0000l”-“99999”
(5)判定树
构造一棵判定树时,应首先从文字材料中分清哪些是判定的条件,哪些是判定的结论,根据文字材料中的连接词找出判定条件之间的从属关系、并列关系、选择关系,根据它们构造判定树。
(6)判定表
判定表与判定树相似,当数据流图中的加工要依赖于多个逻辑条件的取值,即完成该加工的一组动作是由于某一组条件取值的组合而引发的,使用判定表描述比较适宜。
判定表通常由四部分组成,其上部称条件部,列出了决定一组条件的对象;右上部称条件条目,它列出了各种可能的条件组合;左下部称操作部,它列出了所有的操作;右下部称操作条目,它列出在对应的条件组合下所选的操作。判定表或判定树是以图形形式描述数据流图的加工逻辑,它结构简单,易读懂。尤其遇到组合条件的判定,利用判定表或判定树可以使问题的描述清晰,而且便于直接映射到程序代码。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。