西安交通大学 刘海岩 1
第 3章 软件需求分析
软件需求
需求分析过程
传统方法的分析建模
举例西安交通大学 刘海岩 2
3.1 软件需求
1、需求的概念需求( requirements),Jones 定义为用户所需要的软件必须达到的目标和能力。 Lethbridge定义为需求是关于系统将要完成什么工作的一段描述,他们必须经过所有相关人员的认可,其目的是彻底的解决用户的问题。
需求是一段描述 …,意思是每个需求是相对短小简明的一段信息,表现为一个事实。它可以是一段话或用各种图表示。一组需求的集合成为需求文档。
… 关于系统将要完成什么工作 …,需求描述了系统应当完成的任务,不描述系统将如何实现。
… 必须经过所有相关人员的认可 …,意指需求必须经过评审,才能成为正式的需求。
… 其目的是彻底的解决用户的问题 。 有助于解决用户的问题,该需求才有存在的价值。
西安交通大学 刘海岩 3
2、需求的类型
( 1) 功能性需求:描述系统应该做什么,即为用户和其它系统完成的功能、提供的服务。
( 2) 非功能性需求:必须遵循的标准,外部界面的细节,
实现的约束条件,质量属性等等。
非功能需求限定了选择解决问题方案的范围,如运行平台、实现技术、编程语言和工具等。
例:将飞机订票系统中的以下方面做如下的划分,F代表
“功能性”,NF代表“非功能性”,X代表“不应当是需求”。简要的说明功能性或非功能性需求的种类。对于不应当是需求的方面,说明其原因。
西安交通大学 刘海岩 4
如何输入有关航班、乘客及订票信息。 F,输入 。
什么信息要出现在机票和报告中。 F,输出 。
如何计算乘机费用。 F,计算 。
什么信息必须存储在旅行社和其他人访问的数据库中。
F,数据存储 。
这个系统应该设计成可以处理旅行常客计划。
NF,增强的容限 。
这个系统在任何时候都必须是可用的。一周中只允许有 2
分钟宕机时间。 NF,有效性 。
必须使用排序算法根据离开时间对航班排序。
X,这是一个设计问题 。
西安交通大学 刘海岩 5
3、需求的描述
( 1)结构化语言
( 2)图形化表示
( 3)数学描述(形式化描述)
4,软件需求文档(需求规格化说明)
是需求分析阶段的产品,是所有其他开发和管理活动的基础。对系统开发过程中其他活动的影响:
项目经理根据它制定或修改开发计划。
设计人员根据它进行系统设计。
测试人员根据它编写测试计划,设计测试用例。
产品发布人员根据它编写产品介绍和用户文档。
培训人员根据它编写培训教程。
西安交通大学 刘海岩 6
IEEE标准为需求文档提出了以下结构,组织机构内部可以基于此标准扩展:
( 1)引言
a,需求文档的目的
b,文档约定
c,预期的读者和阅读建议
d,产品范围
e,参考文献
( 2)综合描述
a,产品前景
b,产品功能与优先级
c,用户特征
d,运行环境
e,设计与实现上的限制
f,假设和依赖性西安交通大学 刘海岩 7
( 3)需求描述
a,功能需求
b,数据需求:与功能有关的数据定义和数据关系
c,性能需求:响应时间、容量要求、用户数等
d,外部接口:用户界面、软硬件接口、通信接口
e,设计约束:软件支持环境、报表、数据命名等
f,软件质量属性(可维护性、可靠性、可移植性、
可用性、安全性等等)
g,其他需求这一节是文档中最实质性的部分,由于在机构组织的实践中存在极大的变数,对这一节定义的标准结构可以进行增删。
( 4)附录(词汇表、分析模型、待定问题列表)
( 5)索引西安交通大学 刘海岩 8
3.2 需求分析过程需求分析是指开发人员通过对应用问题及其环境的调查分析,准确的理解用户的需求,将不规范的需求陈述转化为完整的需求定义,再将需求定义编写成需求规格化说明的过程。
对于一些新的复杂的系统,如果没有专门进行可行性研究,需求分析过程前应集中回答以下几个问题:
( 1)系统是否符合组织机构的总题目标?(业务需求)。
( 2)系统是否可能在现在的技术条件、预算和时间限制内完成?(经济、技术上的可行性)
( 3)系统能否与已经存在的其他系统集成?
当收集到信息并评估后,需要对系统是否要开发给出意见和建议,书写可行性报告。该过程可能提出对系统功能范围的修正、对预算和时间安排的调整意见或者是对系统高层需求的建议。
西安交通大学 刘海岩 9
1、需求获取
( 1)个别访谈和召集会议
( 2)观察用户工作流程
( 3)利用原型
( 4)使用实例(用例):用例把系统分成一组逻辑的、
互相联系很少的部分,每一部分都描述了系统运行的某种方式。因此容易理解每个用例达到的功能。
问题分析 问题描述 原型化 文件管理与确认需求获取和分析 需求定义和说明是否已经记录了用户需要的所有部分是否使用了正确的技术功能是否可行是否记录了用户期望的部分确定需求的过程西安交通大学 刘海岩 10
例:列出图书馆系统中以下参与者的最小用例集:借阅者、借书员、图书管理员、会计系统。
借阅者:
按题目查询书籍
按作者查询书籍
按主题查询书籍
预定已被其他人借出的书籍
查询借阅者的个人信息并列出借阅的书籍西安交通大学 刘海岩 11
借书员:
所有借阅者的用例,再加上
为借阅者查找某一书籍
登记已归还的书籍
续借一本书
登记缴纳的罚款
添加新的借阅者
更新借阅者的个人信息(地址、电话号码等)
图书管理员:
所有借阅者和借书员的用例,再加上
添加藏书
删除藏书
改变系统中对已有书籍的记录信息会计系统 (独立运行)
获得借阅者支付的超期罚款西安交通大学 刘海岩 12
3、分析与综合用文字和图形描述不同视图以揭示更深的、易混淆的问题,确保与所有风险承担者达成共识。
( 1)分析需求的可行性:允许的成本、性能;与其他需求的冲突;外界因素的依赖和技术障碍等。
( 2)对于渐增式开发要确定需求的优先级别,以便确立产品版本。
( 3)建模:图形化的表示分析模型可以增强对软件需求的理解,也为软件设计奠定了基础。
模型包括:
西安交通大学 刘海岩 13
数据流图( DFD- 功能模型)
实体关系图( ERD- 信息模型)
状态转换图( STD- 行为模型)
类图 ( 信息模型)
顺序图 ( 行为模型)
合作图 ( 行为模型)等等。
( 4)使用原型法,减少项目风险。
( 5)建立数据字典。
4、编写需求文档西安交通大学 刘海岩 14
5、需求验证需求验证的重要性:如果在后续的开发或当系统投入使用时才发现需求文档中的错误,就会导致更大代价的返工。
由需求问题而对系统做变更的成本比修改设计或代码错误的成本要大的多。假设需求阶段引入 1个错误的需求,设计时对这个需求需要 5~10条设计实现,1条设计需要 5~10条程序,
1条程序需要 3~5种测试组合测试。
原始需求正确的规格说明 错误的规格说明正确的设计 错误的设计 对错误需求的设计正确的编码 错误的编码 对错误设计的编码 对错误需求的编码正确功能 测试到的错误 没有测试到的错误一个错误的需求,纠正成本 100元
× 10 纠正成本 1000元
× 10
× 5
西安交通大学 刘海岩 15
对需求文档需执行以下类型的检查:
( 1)有效性检查检查不同用户使用不同功能的有效性。
( 2)一致性检查在文档中,需求不应该冲突。
( 3)完备性检查需求文档应该包括所有用户想要的功能和约束。
( 4)现实性检查检查保证能利用现有技术实现需求。
西安交通大学 刘海岩 16
验证技术,
( 1)需求评审:
由分析员、设计员、测试员、用户参与的正式或非正式的会议评审。正式会议要有严格的评审程序,要有会议记录,开发组根据缺陷建议修改需求说明并重审。
( 2)利用原型检验系统是否符合用户的真正需要。
( 3)对每个需求编写概念性的测试用例。
( 4)编写用户手册。用浅显易懂的语言描述用户可见的功能。
( 5)自动的一致性分析。可用 CASE工具检验需求模型的一致性。
西安交通大学 刘海岩 17
3.3 传统方法的分析建模分析建模是使用文本 和图表形式的组合,以相对容易理解和能直接评审正确性、完整性和一致性的方式来描述数据、功能和行为的需求。
在过去的数年中,人们提出了许多种分析建模的方法,
其中两种在分析建模领域占有主导地位:
第一种是结构化分析 (Structured Analysis,SA),70年代末由 DeMarco等人提出,这是传统的建模方法。
另一种方法是面向对象的分析,将在后面介绍。
结构化分析方法不是被所有的使用者一致地使用的单一方法,众多科学家对其进行了扩充,因此它是发展了超过 30年的一个混合物。
西安交通大学 刘海岩 18
1、分析模型分析模型必须达到三个主要目标:
( 1)描述用户的需要,使用户和开发人员更好理解;
( 2)建立创建软件设计的基础;
( 3)定义在软件完成后可以被确认的一组需求。
为了达到这些目标,在结构化分析中导出的分析模型如图所示:
图 3.1 分析模型西安交通大学 刘海岩 19
数据字典,包含了软件生产或使用的所有数据对象描述的中心存储库。
实体-关系图( ERD),描述数据对象间的关系,每个对象的属性由“数据对象描述”来描述。
数据流图( DFD)用于两个目的:
① 指明数据在系统中移动时如何被变换 ;
② 反映对数据流进行变换的功能(和子功能) ;
在 DFD中出现的每个功能的描述包含在“加工规约”
中。
状态转换图( STD),指明作为外部事件的结果系统将如何动作,有哪些行为。软件控制方面的附加信息包含在“控制规约”中。
西安交通大学 刘海岩 20
2、数据建模在数据密集型应用问题中,对复杂数据或数据间复杂关系的分析和建模是需求分析的重要任务之一,
有助于数据库的设计。
数据建模回答与任何数据处理应用相关的一组特定问题:
系统处理哪些主要的数据对象(或实体)?
每个数据对象的组成如何,哪些属性描述了这些对象?
每个对象与其他对象有哪些关系?这些对象当前位于何处?
对象和变换它们的处理之间有哪些关系?
西安交通大学 刘海岩 21
分析人员经常使用实体 -联系 (Entity Relationship,ER)
图来描述数据对象及相互之间的关系。
ER模型包含了 3种相互关联的信息:
数据对象
数据对象的属性
数据对象相互连接的关系( 1:1,1:N,M:N)。
下图是一个教学管理的 ER图:
西安交通大学 刘海岩 22
教师 学生课程教 学
M
N M
N教师号姓名性别职称 系别 学号 姓名性别系别班级时间 成绩课程号 课名 学时 学分其中,表示实体,表示属性,表示联系。
为了降低图的复杂性,有时属性不画在 ER图中,单独造表。
西安交通大学 刘海岩 23
3、功能建模
( 1) 数据流图 (Data Flow Diagram,DFD)
DFD用来描述数据在处理序列中的流动,由箭头给出流动的数据,泡泡表示对数据的变换(加工或处理),
两条平行横线表示数据存储(数据库),矩形表示外部实体(数据源或数据池)。图 3,2描述了一个反映“看病”
功能的 DFD。
DFD可以自顶向下,逐层分解,第 0层 DFD将整个系统表示为一个具有输入和输出数据的泡泡,反映了系统的语境,以下各层分别是上一层泡泡的分解,分解到可理解为止。表示在第 1层的每个加工是表示在语境模型中的整个系统的子功能。 ( 见图 3.3)。
西安交通大学 刘海岩 24
图 3.2,看病”的数据流图西安交通大学 刘海岩 25
图 3,3 数据流图的分解西安交通大学 刘海岩 26
分解时注意保持每次精化的输入输出数据流 一致,
称为分层数据流图的 平衡 。
图形并不能充分反映软件的需求,需要用数据字典和
“加工规约”对分析模型进行补充。
数据字典对 DFD中的元素进行严格的定义与解释。
加工规约说明 DFD中的“泡泡”隐含的处理细节并指出加工的约束与限制。
DFD符号简单,适用于数据处理系统的分析建模,关注的重点是数据流而不是控制流,不易于实时系统的分析。
西安交通大学 刘海岩 27
( 2) IDEF0图美国国防部使用的图形化建模技术,
一个基本活动图如图 3.4所示。每个活动包括 4类要素:输入、控制、机制和输出。控制是限制所描述活动的类型或活动所受约束,机制是活图 3.4 一个基本的 IDEF0图( A-0图) 动的外部支持(如工具、技术、数据库等)。
该图如同 DFD一样,通过逐层分解展示系统的功能与子功能,每一层分解的活动为 3~ 6个。(图 3.5为第 1层的
IDEF0图)
西安交通大学 刘海岩 28
图 3.5,看病”的 IDEF0图( A0图)
症 状医 学 知 识帐 目 代 码帐 目 文 件病 史 文 件诊 断治 疗记 账结果诊 断 结 果治 疗 方 案帐 目 记 录药 品列 表检 查列 表西安交通大学 刘海岩 29
4、行为建模
SA的扩展版本才使用 STD进行行为建模。 STD通过描述状态以及导致系统改变状态的事件来表示系统的行为。
STD一般用圆角矩形(以下例图中用矩形)表示状态,每个状态代表系统的一种行为模式,状态之间用箭头连接,表示当发生某个事件或满足某条件时,激发某个动作,引起对象或系统状态间的转移。
图 3.6和图 3.7分别是复印机软件的 DFD和 STD。
行为模型有助于理解系统的预期行为,便于检验
“需求规格说明”是否包含了与状态变化相关的功能需求,有利于对实时系统进行分析。
西安交通大学 刘海岩 30
图 3.6 复印机软件的 DFD
西安交通大学 刘海岩 31
图 3.7 复印机软件的 STD
西安交通大学 刘海岩 32
5、数据字典 (Data Dictionary,DD)
DD是对所有与系统相关的数据元素的一个有组织的列表和精确的、严格的定义,使得用户和开发人员对于这些数据元素有共同的理解。它可以管理各种模型中的各种信息。尽管各工具中字典的形式各不相同,但都包含以下信息:
名称
别名
何处使用 /如何使用
内容描述,描述符号记号 意义例 1:西安交大电话号码= = 由 … 构成
[82668|82669|82660]+后缀号码 + 和例 2:学生名表= 1{ 姓名+成绩 }30 [ | ] 或
1{ } n 1~ n次重复
补充信息,( ) 可选数据类型、限制、约束等西安交通大学 刘海岩 33
5、加工规约和控制规约说明基本加工的处理逻辑以及一些附加信息。
描述工具:结构化语言(半形式化语言)
表格(如判定表、加工激活表)
下图是某大学“录取新生”满足一组条件规则的判定表:
规则 1 规则 2 规则 3 规则 4 规则 5
标准考试得分高 T F F F F
平时成绩好 - T F F F
参加课外活动 - - T F F
好的推荐材料 - - - T F
发送拒绝信 √ √ √
发送录取通知 √ √
西安交通大学 刘海岩 34
条件和动作(或结果)列在表格的左边,每列代表一组条件下系统要做的动作(或取得的结果),也说明了当系统处于列中所描述的状态时,将要遵守的规则。
,T”表示本行的条件为“真”,,F”为“假”,
“-”为“无所谓”,,√,表示在本列组合条件下采取的动作。
判定表用于反映系统在多个条件组合下,将要采取的行动。如果有 n个条件,就有 2n个可能的条件组合,
这样表的结构就会很大。 注意规则 3,4和 5,是重复的,
可以取消 4和 5。去掉表中冗余的规则,以减少表的规模并更容易理解。
通过制作、分析判定表,可进一步检查需求说明的完整性、一致性。
西安交通大学 刘海岩 35
3.4 例 1:机票预订系统其功能为:旅行社把预订机票的旅客信息(姓名、
性别、身份证号码、旅行时间、目的地等)输入系统。
系统为旅客安排航班,打印出取票通知单。旅客在飞机起飞的前一天凭取票通知单交款取票,系统检验无误,
输出机票给旅客。建立该系统 DFD:
机票预订系统旅行社 旅客订票单 取票单取票单 机票机票预订系统顶层图西安交通大学 刘海岩 36
预订机票
1
旅客取票
2
订票单取票单取票单机票机票文件机票预订系统 0层图检验有效性
1.1
查询航班
1.2
登记机票
1.3
打印取票单
1.4机票文件航班目录订票单 有效有航班已登记 取票单
“预订机票”子图( 1层图)
图 1:
西安交通大学 刘海岩 37
图 2:
这样逐步求精分解下去,直到每个加工相对简单、
整个图的功能可理解为止。
查询机票文件检验取票单
2.1
记帐
2.2
修改机票文件并打印机票
2.3
机票文件账目文件取票单有效取票单已交款 机票
“旅客取票”子图( 1层图)
西安交通大学 刘海岩 38
例 2:家庭安全系统( SafeHome)
是一个基于微处理器的系统,能识别异常事件并采取相应防护措施。异常事件包括:非法侵入、火灾等。
一旦异常事件被传感器识别出来,系统自动启动电话向监控中心报警。具体功能为:
1、在安装时允许用户进行系统配置,配置的信息有:
① 每一个传感器的类型和编号,
②报警电话号码,
③启动和关闭系统的密码,
④警报延迟和电话号码延迟时间(以秒为单位),
西安交通大学 刘海岩 39
2、系统实施对传感器的监控:当识别到传感器事件后,
系统激活警铃,并在指定的延迟时间内(如 20秒 /次)拨报警电话,反覆重拨,直至拨通。
3、系统显示事件时间、地点和事件的性质。
4、用户通过控制面板与系统交互,系统显示提示信息和系统状态。
西安交通大学 刘海岩 40
创建 DFD模型,
1、建立顶层语境级 DFD,确定系统与外部环境的关系。找外部实体,它们产生输入信息,接收输出信息。(见图 3.8)
2、对用户的文字叙述进行语法分析,名词和名词短语可构成数据流或数据存储,动词或动词短语可构成加工,以便产生精化下一层的有用信息。
3、分解功能,精化一个个加工组成下一层图。
图 3.9为 SafeHome的第 1层 DFD。
图 3.10是父图中“传感器监控”加工的分解,为第 2层图。
图 3.11是系统的状态转换图。
西安交通大学 刘海岩 41
图 3.8 SafeHome的语境级 DFD
西安交通大学 刘海岩 42
图 3.9 SafeHome的第 1层 DFD
西安交通大学 刘海岩 43图 3.10 精化加工“传感器监控”的第 2层 DFD
f o r m a t f o r
d i s p l a y
6,3
a s s e s s a g a i n s t
S e t u p
6,2
C o n f i g u r a t i o n
i n f o r m a t i o n
g e n e r a t e a l a r m
s i g n a l
6,4
d i a l p h o n e
6,5
r e a d s e n s o r s
6,1
s e n s o r
i n f o r m a t i o n
s e n s o r I D,
t y p e,l o c a t i o n
a l a r m
t y p e
a l a r m
d a t a
t e l e p h o n e
n u m b e r
t e l e p h o n e
n u m b e r t o n e s
s e n s o r I D,
t y p e
s e n s o r
s t a t u s
c o n f i g u r a t i o n
d a t a
西安交通大学 刘海岩 44
启动信号激活传感器监控停信号异常事件激活监控异常事件激活报警超时信号激活命令输入异常事件激活信息显示显示完成激活命令输入无异常事件命令输入完成激活信息显示图 3.11 SafeHome 的 STD
命令输入状态报警状态监控状态显示反馈信息状态西安交通大学 刘海岩 45
习题
1、软件需求是什么?需求分析阶段的主要任务是什么?
2、需求获取和需求分析的主要步骤是什么?
3、需求规格说明书在软件开发过程中有什么作用?
4、传统的分析方法建立哪些模型?
5、数据字典有什么作用?
6、针对某一应用问题,会使用 SA方法建模。