第3章 软件需求分析 本章内容结构 本章引言 学习目标 教学内容 本章小结 思考和练习 课堂讨论 2017年3月1日
本章引言 软件需求分析是软件开发期的第一个阶段,基本任务是准确地回答“系统必须做什么?”这个问题。 软件需求分析是整个系统开发的基础。在此阶段结束前,系统分析员应该写出软件需求规格说明书,以书面形式准确地描述软件需求。 本章将讲述需求分析的任务和步骤、需求获取的常用方法、需求分析的常用方法、结构化分析方法、需求分析的图形工具、SA方法的应用、数据库内容的需求分析和描述以及需求规格说明书的 撰写。 2017年3月1日
学习目标 了解需求分析的任务和步骤 了解需求获取的常用方法 理解需求分析的常用方法 熟练掌握结构化分析方法 熟悉需求分析的图形工具及其用法 理解和掌握数据库内容的需求分析和描述 掌握需求规格说明书的主要内容及撰写方法 2017年3月1日
教学内容 3.1 需求分析的任务和步骤 3.2 需求获取的常用方法 3.3 需求分析的常用方法 3.4 结构化分析方法 3.1 需求分析的任务和步骤 3.2 需求获取的常用方法 3.3 需求分析的常用方法 3.4 结构化分析方法 3.5 需求分析的图形工具 3.6 SA方法的应用 3.7 数据库内容的需求分析和描述 3.8 需求规格说明书的 撰写 3.9 本章小结和习题 2017年3月1日
3.1 需求分析的任务和步骤 3.1.1 需求分析的任务 需求分析的任务还不是确定系统怎样完成它的工作。 3.1 需求分析的任务和步骤 3.1.1 需求分析的任务 需求分析的任务还不是确定系统怎样完成它的工作。 需求分析的任务仅仅是确定系统必须完成哪些工作,也就是对目标系统提出完整、准确、清晰而且具体的需求。 需求分析实际上是一个对用户意图不断进行揭示和判断的过程,它并不考虑系统的具体实现,而是完整地、严密地描述应当“做什么”的一种过程。 2017年3月1日
3.1 需求分析的任务和步骤 3.1.1 需求分析的任务 需求分析阶段的具体任务包括: 确定对系统的综合需求 分析系统的数据需求; 3.1 需求分析的任务和步骤 3.1.1 需求分析的任务 需求分析阶段的具体任务包括: 确定对系统的综合需求 分析系统的数据需求; 建立软件的逻辑模型; 编写软件需求规格说明书; 需求分析评审。 2017年3月1日
3.1.1 需求分析的任务 1.确定对系统的综合需求 (1)功能需求 (2)性能需求 (3)环境需求 (4)接口需求 (5)用户界面需求 3.1.1 需求分析的任务 1.确定对系统的综合需求 (1)功能需求 (2)性能需求 (3)环境需求 (4)接口需求 (5)用户界面需求 (6)其他需求,包括可靠性、安全性、保密性、可移植性等方面的需求。 所开发软件系统必须提供的服务,划分出系统必须完成的所有功能。 所开发软件的技术性能指标,比如存储容量、响应时间等。 软件运行时所需要的软、硬件的要求。 描述应用系统与它的环境通信的格式。 人机交互方式、输入/输出数据格式等。
3.1.1 需求分析的任务 2.分析系统的数据需求 建立数据模型-----实体联系图(ER图); 3.1.1 需求分析的任务 2.分析系统的数据需求 建立数据模型-----实体联系图(ER图); 描述数据结构-----层次方框图和Warnier图。 3.建立软件的逻辑模型 综合上述两项分析的结果可以确定系统的逻辑模型,通常用数据流图、数据字典、实体-联系图和主要的处理算法等描述目标系统的逻辑模型。
3.1.1 需求分析的任务 4.编写软件需求规格说明书 目的:明确定义目标系统的需求、系统构成及有关的接口; 3.1.1 需求分析的任务 4.编写软件需求规格说明书 目的:明确定义目标系统的需求、系统构成及有关的接口; 需求说明相当于用户与开发者之间的一份技术合同,是测试验收阶段对软件进行确认和验收的基准。 5.需求分析评审 评审的目的是发现需求分析的错误和缺陷,然后修改开发计划。
3.1 需求分析的任务和步骤 3.1.2 需求分析的步骤 一般分为以下四个步骤进行: 1. 需求获取:调查研究; 2. 需求提炼:分析建模; 3.1 需求分析的任务和步骤 3.1.2 需求分析的步骤 一般分为以下四个步骤进行: 1. 需求获取:调查研究; 2. 需求提炼:分析建模; 3. 需求描述:编写SRS; 4. 需求验证。 2017年3月1日
3.2 需求获取的常用方法 3.2.1 需求获取的常用方法 3.2.2 快速建立软件原型模型来获取需求 3.2 需求获取的常用方法 3.2.1 需求获取的常用方法 1. 客户访谈:分为正式的和非正式的两种基本形式 2. 建立联合分析小组 3. 问题分析与确认 3.2.2 快速建立软件原型模型来获取需求 在实际的软件开发中,快速原型法常常被用作一种有效的需求获取方法; 第四代开发技术(4GT)是常用的快速原型工具; 另外一种快速构件原型的方法是使用一组已有的正确的软件构件组装的方法来装配原型系统。 2017年3月1日
3.2.1 需求获取的常用方法 1.客户访谈 (1)正式访谈 系统分析员将提出一些事先准备好的具体问题。 (2)非正式访谈 3.2.1 需求获取的常用方法 1.客户访谈 (1)正式访谈 系统分析员将提出一些事先准备好的具体问题。 (2)非正式访谈 分析员将提出一些用户可以自由回答的开放性问题, 以鼓励被访问人员说出自己的想法。 (3)调查表 经过仔细考虑写出的书面回答可能比被访问者对问题 的口头回答更准确。
3.2.1 需求获取的常用方法 2.建立联合分析小组 系统分析员不熟悉用户领域内的专业知识,而用户也 不熟悉计算机知识。 3.2.1 需求获取的常用方法 2.建立联合分析小组 系统分析员不熟悉用户领域内的专业知识,而用户也 不熟悉计算机知识。 需要建立一个由用户、系统分析员和领域专家参加的 联合分析小组,由领域专家来沟通。 3.问题分析与确认 每次访问之后,要及时整理,分析用户提供的信息, 以便下一次与用户见面时由用户确认,同时准备下一次 访问用户的更进一步的细节问题,如此循环。
3.2.1 需求获取的常用方法 4.简易的应用规格说明技术 简易的应用规格说明技术是一种面向团队的需求获得方法。 3.2.1 需求获取的常用方法 4.简易的应用规格说明技术 简易的应用规格说明技术是一种面向团队的需求获得方法。 这种方法提倡用户与开发者密切合作,共同标识问题,提出 解决方案要素,商讨不同方案并制定基本需求。 分析需求的典型过程如下: (1)初步访谈,准备会议 首先进行初步的访谈,初步确定待解决的问题的范围和解 决方案。 然后开发者和用户分别写出“产品需求”,选定会议的时 间和地点,并选举协调人。
3.2.1 需求获取的常用方法 (2)会前审查需求,确定列表 3.2.1 需求获取的常用方法 (2)会前审查需求,确定列表 要求每位与会者在开会的前几天认真审查产品需求, 并且列出对象、操作这些对象或者与这些对象交互的服 务、约束条件和性能标准。 (3)会上讨论列表,创建组合列表 每位与会者展示列表供大家讨论。大家共同穿件一张 组合列表。由协调人主持讨论这些列表。
3.2.1 需求获取的常用方法 (4)分组制定小型规格说明 3.2.1 需求获取的常用方法 (4)分组制定小型规格说明 与会者分成更小的小组,为每张列表中的项目制定小 型规格说明。每个小组都向全体与会者展示他们制定的 小型规格说明,供大家讨论。 (5)制定确认标准,起草需求规格说明书 每位与会者都制定出产品的一整套确认标准,并提交 会议讨论,以创建出意见一致的确认标准。 最后,起草完整的软件需求规格说明书。
3.2.1 需求获取的常用方法 简易的应用规格说明技术的优点: 开发者与用户不分彼此,齐心协力,密切合作; 即时讨论并求精; 3.2.1 需求获取的常用方法 简易的应用规格说明技术的优点: 开发者与用户不分彼此,齐心协力,密切合作; 即时讨论并求精; 有能导出规格说明的具体步骤。
3.2.2 快速建立软件原型来获取需求 快速建立软件原型 快速建立软件原型是一种有效的需求获取方法。 3.2.2 快速建立软件原型来获取需求 快速建立软件原型 快速建立软件原型是一种有效的需求获取方法。 快速原型的目的是尽快向用户提供一个演示目标系统主 要功能的可运行的程序。 快速原型的特性: (1)“快速”。 (2)“容易修改”:如果原型的第一版不是用户所需要的, 就必须根据用户的意见迅速地修改它,构建出原型的第二 版,以更好地满足用户需求。如果修改耗时过多,势必延 误软件开发时间。
3.2.2 快速建立软件原型来获取需求 快速原型法基本思想: 3.2.2 快速建立软件原型来获取需求 短时间内建立原型 否 用户满意? 修改,完善原型 完成原型 是 只包含基本功能 和基本数据库 快速原型法基本思想: 在很短时间内建立起一个只包含基本数据库和一些基本功能的原型给用户使用,然后根据用户意见对原型进行修改,直到满意为止. 2017年3月1日
√ × 3.2.2 快速建立软件原型来获取需求 Andriole提出的以下6个问题,可用来帮助判断是否选择原型法来帮助获取需求: 3.2.2 快速建立软件原型来获取需求 Andriole提出的以下6个问题,可用来帮助判断是否选择原型法来帮助获取需求: 1. 需求已经建立,并且可以预见是相当稳定吗? 2. 软件开发人员和用户已经理解了目标系统的应用领域吗? 3. 问题是否可被模型化? 4. 用户能否清楚地确定基本的系统需求? 5. 有任何需求是含糊的吗? 6. 已知的需求中存在矛盾吗? × √
3.2.2 快速建立软件原型来获取需求 快速原型通常采用以下两种方法: (1)第四代技术(4GT) 3.2.2 快速建立软件原型来获取需求 快速原型通常采用以下两种方法: (1)第四代技术(4GT) 第四代技术包括众多数据库查询和表表语言、程序和应用软 件生成器以及其他非常高级的非过程语言。 第四代技术使得软件工程师能够快速地生成可执行的代码, 它们是较理想的快速原型工具。 (2)可重用的软件构件 另一种快速构建原型的方法是使用一组已有的软件构建来装 配原型(而不是从头构造)。 软件构件可以是数据结构(或数据库),或软件体系结构构 件(即程序),或过程构件(即模块)。
3.3 需求分析的常用方法 3.3.1 功能分解方法 3.3.2 结构化分析方法 3.3.3 信息建模方法 3.3.4 面向对象方法 3.3 需求分析的常用方法 3.3.1 功能分解方法 3.3.2 结构化分析方法 3.3.3 信息建模方法 3.3.4 面向对象方法 2017年3月1日
3.3.1 功能分解方法 该方法将一个系统看成是由若干功能构成的一个集合,每个功能又可划分若干个子功能(加工),一个子功能又进一步分解成若干个子功能(即加工步骤)。这样,功能分解方法有功能、子功能和功能接口三个组成要素。 把软件需求当作一棵倒置的功能树,每个结点都是一项具体的功能,从树根往下,功能由粗到细,树根是总功能,树枝是子功能,树叶是子功能,整棵树就是一个信息系统的全部功能树。 功能分解法体现了“自顶向下,逐步求精”的思想 该方法难以适应用户的需求变化。 2017年3月1日
3.3.2 结构化分析方法 结构化分析方法是一种从问题空间到某种表示的映射方法,软件功能由数据流图表示,是结构化方法中重要的,被普遍采用的方法,它由数据流图和数据字典构成系统的逻辑模型。 该方法使用简单,主要适用于数据处理领域问题。 3.4节主要介绍结构化分析方法,它适合于传统软件工程思想。 2017年3月1日
3.3.3 信息建模方法 信息建模方法是从数据的角度来对现实世界建立模型的。 该方法基本工具是实体联系图,由实体、属性和联系构成 在信息模型中,实体是一个对象或一组对象。实体把信息收集在其中,关系是实体之间的联系或交互作用。 2017年3月1日
3.3.4 面向对象方法 面向对象的分析是把实体联系图中的概念与面向对象程序设计语言中的概念结合在一起形成的一种分析方法。面向对象分析的关键是识别、定义问题域内的类与对象(实体) ,并分析它们之间的关系,根据问题域中的操作规则和内存性质建立模型。 在该方法中采用了实体、关系和属性等信息模型分析中的概念,同时采用了封闭、类结构和继承性等面向对象程序设计语言中的概念。 2017年3月1日
3.4 结构化分析方法 结构化分析(Structured Analysis简称SA)是面向数据流的需求分析方法,是20世纪70年代后期由Yourdon,Constantine及DeMarco等人提出和发展,并得到广泛的应用。 T·DeMarco:结构化分析就是使用数据流图、数据字典、结构化语言、判定树和判定表等工具,来建立一种新的称为结构化说明书的目标文档。 3.4.1 自顶向下逐层分解的分析策略 3.4.2 结构化分析描述工具 3.4.3 数据流图 3.4.4 数据字典 3.4.5 加工逻辑的描述 2017年3月1日
3.4.1 自顶向下逐层分解的分析策略 对于复杂的大项目,传统的策略是把复杂的问题“化整为零,各个击破”,这就是我们通常所说的“分解”。 3.4.1 自顶向下逐层分解的分析策略 对于复杂的大项目,传统的策略是把复杂的问题“化整为零,各个击破”,这就是我们通常所说的“分解”。 SA方法采用分解策略,把一个复杂庞大的问题分解成若干个小问题,然后再分别解决。 分解可分层进行,要根据系统的逻辑特性和系统内部各成分之间的逻辑关系进行分解。在分解中要充分体现“抽象”的原则,逐层分解中的上一层就是下一层的抽象。
3.4.1 自顶向下逐层分解的分析策略 图3.1 对一个问题的自顶向下逐层分解 P 顶层 第一层 1 2 3 第二层 2.1 1.1 3.1 3.4.1 自顶向下逐层分解的分析策略 1 3 2 P 2.1 2.2 1.1 1.3 1.2 3.1 3.2 顶层 第一层 第二层 图3.1 对一个问题的自顶向下逐层分解
3.4.2 结构化分析描述工具 结构化分析方法目前的描述方法可划分成非形式化、 半形式化和形式化三类。 3.4.2 结构化分析描述工具 结构化分析方法目前的描述方法可划分成非形式化、 半形式化和形式化三类。 利用图形等半形式化的描述方法表达需求的工具主要 有: 数据流图 :结构化建模的工具。 数据字典 :关于数据信息的集合,用于定义数据流图中的数据和加工; 描述加工逻辑的结构化语言、判定表和判定树等 。
3.4.3 数据流图 数据流图(Data Flow Diagram,DFD)是一种图形 化技术,用于表示系统逻辑模型,它以直观的图形清晰 地描述了系统数据的流动和处理过程。是分析员与用户 之间极好的通信工具。 DFD图中没有任何具体的物理元素,它只是描述数据 在软件中流动和被处理的逻辑过程。
一、数据流图的图符 四种基本图形符号: 数据的源点或终点 加工 (数据处理) 数据存储 数据流 文件名 图c 实体名 图 a 1.2.1 加工名 图 b 加工 (数据处理) 数据存储 文件名 图c 数据流 数据流名 图 d
3.4.3 数据流图 源点或者终点:通常是系统之外的实体,可以是人、物或其他软件系统 ;一般只出现在数据流图的顶层图中. 加工:是对数据进行处理的单元,一个处理框可以代表一系列程序、单个程序或程序的一个模块;每个加工的名字通常是动词短语,简明地描述完成什么处理。在分层的数据流图中,处理还应有编号。编号说明这个处理在层次分解中的位置。
3.4.3 数据流图 数据流:是数据在系统内传播的路径,由一组固定的数据项组成。描述所有可能的数据流向,而不应该描绘出现某个数据流的条件;数据流应该用名词或名词短语命名。 数据存储:用来存储数据,可以表示一个文件、文件的一部分、数据库的元素或者记录的一部分等 。流向数据存储的数据流可理解为写入文件,或查询文件,从数据存储流出的数据可理解为从文件读数据或得到查询结果。
3.4.3 数据流图
3.4.3 数据流图
3.4.3 数据流图
3.4.3 数据流图 画数据流图的基本原则: 数据流图中所有的符号必须是前面所述的四种基本符号和附加符号; 数据流图的主图(顶层)必须含有前面所述的四种符号,缺一不可; 数据流图主图上数据流必须封闭在外部实体之间。(外部实体可以是一个,也可以是多个); 加工(变换数据处理)至少有一个输入数据流和一个输出数据流,反映出此加工数据的来源与加工的结果; 任何一个数据流子图必须与他父图上的一个加工相对应,父图中有几个加工,就可能有几张子图,两者的输入数据流和输出数据流必须一致,即所谓“平衡”; 图上的每个元素都必须有名字(流向数据存储或从数据存储流出的数据流除外)。
X 顶层 0图 1 3 2 中 间 层 1图 2图 1.1 1.2 1.4 1.3 2.1 2.2 1.1.1 1.1.2 2.1.3 2.1.2 2.1.1 2.2.2 2.2.3 2.2.1 底 层
分层的数据流图
逐层分解原则如下: 自顶向下逐层分解. 不要一下子引入过多细节,应该逐步增加细节.一张数据流图包含的处理不能太多,一般不多于5-9(7+2个),否则难以理解。需进一步分层。 分层的DFD图,一般分为顶层、中间层、底层。层次编号是按顶层、1层、2层……次序编排的。而顶层、1层图只有一张 。
3.4.3 数据流图 画数据流图的步骤 : 第一步,先找外部实体(可以是人、物或其他软件系统),找到了外部实体,则系统与外部世界的界面就得以确定,系统的源点和终点也就找到了; 第二步,找出外部实体的输入和输出数据流; 第三步,在图的边上画出系统的外部实体; 第四步,从外部实体的输出流(源点)出发,按照系统的逻辑需要,逐步画出一系列变换数据的加工,直到找到外部实体处所需的输入流(终点),形成数据流的封闭; 第五步,按照上述原则进行检查和修改。 最后按照上述步骤画出所有子图。
3.4.3 数据流图 画数据流图的注意事项 : 画数据流图时,只考虑数据流的静态关系,不考虑其动态关系(如启动、停止等与时间有关的问题),也不考虑出错处理问题。 画数据流图时,只考虑常规状态,不考虑异常状态,这两点一般留在设计阶段解决。 画数据流图不是画程序流程图,二者有本质的区别。数据流图只描述“做什么”,不描述“怎么做”和做的顺序。而程序流程图表示对数据进行加工的控制和细节。 不能期望数据流图一次画成,而是要经过各项反复才能完成。 描绘复杂系统的数据流图通常很大,对于画在几张纸上的图很难阅读和理解。一个比较好的方法是分层的描绘这个系统。在分层细画时,必须保持星系的持续性,父图和子图要平衡;每次只细画一个加工。
3.4.3 数据流图 画数据流图的用途 ; 基本目的是利用它作为交流信息的工具; 供有关人员审查确认; 供用户理解和评价; 数据流图应该分层,超过9个时应该画分图。 另一个用途是作为分析和设计的工具; 描述系统所完成的功能 辅助物理系统的设计时,以定时要求为指南,画出许多组自动化边界,对应不同的物理系统; 导出更详细的设计步骤---面向数据流的设计方法。
顶层图只有一张,且变换只有一个,因此不需编号。 顶 层 顶层图只有一张,且变换只有一个,因此不需编号。 H 源点1 源点2 终点 顶层数据流图
分层时应注意的问题: 1. 编号规则 1) 子图的编号就是父图中相应加工的编号。 2) 子图中加工的编号由父图号、小数点、局部号连接而成 2.父图和子图的平衡 所谓“平衡”是指子图的所有输入数据流必须是父图中相应加工的输入,子图的所有输出数据流必须是父图中相应加工的输出。
例1 考察下图中子父图的平衡。 显然,图a中子图与父图不平衡。 如果有如下数据条目:订货单=客户+账号+数量 则子、父图平衡。 父 图 1 3 A n T B C M 2 子 图 2.1 2.3 2.2 N P S T Q 显然,图a中子图与父图不平衡。 图 a 如果有如下数据条目:订货单=客户+账号+数量 则子、父图平衡。 3 1 2 4 6 5 定货单 提货单 父 图 3.1 3.2 3.3 客户 帐号 数量 提货单 子 图
均匀性:理想的分解是将一个问题分解成大小均匀的几个部分; 分解度:一般每一个加工每次分解最多不要超过7个子加工,应分解到基本加工为止。 加工分解的原则 自然性:概念上合理、清晰; 均匀性:理想的分解是将一个问题分解成大小均匀的几个部分; 分解度:一般每一个加工每次分解最多不要超过7个子加工,应分解到基本加工为止。 合理使用文件 当文件作为某些加工之间的交界面时,文件必须画出来,一旦文件作为数据流图中的一个独立成份画出来了,那么同其他成份之间的联系也应同时表达出来。
3.4.3 数据流图 画基本系统模型 由若干个数据源点/终点和一个处理组成。 旅游公司 旅客 机票 预订系统 机票预订系统的基本系统模型 订票单 账单 机票预订系统的基本系统模型
3.4.3 数据流图 细化,描绘系统的主要功能(功能级DFD) 对系统的主要功能还可以进一步细化 机票预定系统功能级数据流图
3.4.3 数据流图 细化时注意: 当进一步分解涉及如何具体的实现一个功能时就不应该再分解了。 当对数据流图分层细化时必须保持信息连续性,也就是说,当把一个处理分解为一系列处理时,分解前和分解后的输入输出数据流必须相同。 注意对处理进行编号的方法。
3.4.3 数据流图 父图与子图的不平衡
3.4.3 数据流图 父图与子图的平衡
3.4.3 数据流图 销售统计分类的数据流图
3.4.3 数据流图
3.4.3 数据流图
3.4.3 数据流图
3.4.3 数据流图
实例:仓库定货系统: 顶层确定了系统的范围,其外部实体为:源点是“仓库管理员”,终点是“采购员” 顶 层 仓 库 管理员 定货 系统 采购员 仓 库 管理员 定货 系统 采购员 仓库定货系统模型 事务 定货报表
将定货系统分解为处理事务、产生报表2个处理。 第1层 将定货系统分解为处理事务、产生报表2个处理。 D1: 库存清单 库存清单 定货报表 1 处理 事务 2 产生 报表 事务 采购员 仓 库 管理员 定货信息 定货信息 D2: 定货信息 图 定货系统的功能级数据流图
图 把处理事务的功能进一步分解后的数据流图 对处理事物变换进行第二层分解。 第2层对“处理事物”分解 D1: 库存清单 库存清单 库存信息 定货报表 1.1 接收 事务 1.2 更新库 存清单 1.3 处理 定货 2 产生 报表 事务 事务 仓 库 管理员 采购员 定货信息 定货信息 D2: 定货信息 图 把处理事务的功能进一步分解后的数据流图
数据流图的作用 •作为交流信息的工具 •分析和设计物理系统的工具
图 这种划分自动化边界的方法暗示 以批量方式更新库存清单
图 另一种划分自动化边界的方法建议 以联机方式更新库存清单
3.4.4 数据字典 数据字典(Data Dictionary,DD)是关于数据的信息的集合,也就是对数据流图中所包含元素的定义的集合。 数据流图和数据字典共同构成系统的逻辑模型。
3.4.4 数据字典 数据字典的内容: 数据流 数据流分量(数据基本项) 数据存储(文件) 加工(处理) 其中: 数据流分量是组成数据流和数据存储的最小单位项; 源点和终点是为了帮助理解系统和外界接口而列入的,不在系统之内,故一般不在字典中说明。
3.4.4 数据字典 数据字典的使用符号: = 表示被定义为或等价于 或由……组成。 + 表示“与”(和),用来连接两个数据元素; = 表示被定义为或等价于 或由……组成。 + 表示“与”(和),用来连接两个数据元素; 例:X=a+b 表示X被定义为a和b组成。 […|…] 表示“或”,对[ ]中列举的数据元素可任选其中某一项; 例:X=[a|d] 表示X由a或d组成。 {…} 表示“重复”,对{…}中内容可以重复使用; 例:X={a} 表示X由零个或n个a组成。 m{…|…}n 或者{…}或者{…} 表示{…}中内容至少出现m次,最多出现n次。其中m,n为重复次数的上、下限。 例:X=2{B}6 或者X={B} 或者X={B} 表示X中至少出现2次B,最多出现6次B。 (…) 表示“可选”,对(…)中的内容可选、可不选;
数据字典举例 1)数据项也称数据元素,具有独立逻辑含义的最小数据单位。在数据字典中对其定义包括: 数据项的名称、编号、别名、简述; 数据项的取值范围; 数据项的长度。 例:数据项定义 数据项编号:A03-04 数据项名称:库存量 别 名:数量 简 述:某种配件的库存数量 长 度:6个字节 取 值 范围:0-999999
数据字典举例 2)数据流表明系统中数据的逻辑流向,可以是数据项或数据结构。 包括:数据流的名称及编号;简述;数据流的来源;数据流的去向;数据流的组成;数据流的流通量;高峰期流通量。 例:数据流定义 编 号:D03-08 数据流名称:发货单 简 述:销售科为用户开出的发货单 数据流来源: “开发货单”处理功能 数据流去向: 数据存储“订货单存档” 数据流组成:发货单数据结构 流 通 量:150份/天 高峰流通量:70份/每天上午9:00-11:00
数据字典举例 3)处理逻辑(加工):仅对数据流程图(DFD)中最底层的处理逻辑加以说明。 包括:处理逻辑名称及编号;简述;输入 ; 处理过程; 输出;处理频率。 例:处理逻辑定义 处理逻辑编号:P03-01; 处理逻辑名称:验收订货单 简述:确定用户的订货单是否填写正确 输入的数据流:订货单,来源:外部实体“用户”; 处理:检验定货单数据,查明是否符合供货范围 输出的数据流:合格的订货单,去向:处理逻辑 “确定发货量”;不合格的订货单,去向:外部项“用户” 处理频率:50次/天
数据字典举例 4)数据存储:数据流的暂停或永久保存的地方 包括:数据存储的编号;名称;简述;组成;关键字 相关的处理 例:数据存储定义 数据存储编号:F03—08 数据存储名称:库存账 简 述:存放配件的历年库存和单价 数据存储组成:配件编号 + 配件名称 + 单价+ 库存量 + 备注 关 键 字:配件编号 相关联的处理:P2(“确定发货量”), P3(“开发货单、修改库存”)
3.4.5 加工逻辑的描述 加工逻辑也称为“小说明”,是对数据流图中每个加工所作的说明。 描述加工逻辑一般用结构化语言、判定表和判定树。 3.4.5 加工逻辑的描述 加工逻辑也称为“小说明”,是对数据流图中每个加工所作的说明。 描述加工逻辑一般用结构化语言、判定表和判定树。 结构化语言 判定表 判定树
3.4.5 加工逻辑的描述 结构化语言 结构化语言介于自然语言与程序设计语言之间的语 言; 3.4.5 加工逻辑的描述 结构化语言 结构化语言介于自然语言与程序设计语言之间的语 言; 它既有结构化程序的清晰易读的优点,又有自然语 言简单易懂的优点
3.4.5 加工逻辑的描述 例3-5 某数据流图中有“下岗职工重新分配工作”的加工,指的是重新分配工作时,要根据下岗职工的年龄,文化程度,性别等情况分配不同的工作。 如果年龄在25岁以下者,初中文化程度脱产学习,高中文化程度当电工;年龄在25岁至40岁之间者,中学文化程度男性当钳工,女性当车工,大学文化程度的当技术员。年龄在40岁至50岁之间者,中学文化程度当交通协管员,大学文化程度当技术员。用结构化语言编写该加工的逻辑说明。
3.4.5 加工逻辑的描述 If 年龄〈=25 then if 文化程度=初中 then 脱产学习 endif 3.4.5 加工逻辑的描述 If 年龄〈=25 then if 文化程度=初中 then 脱产学习 endif if 文化程度=高中 then 电工 endif endif if 25〈年龄〈=40 then if 文化程度=中学 then if 性别=男 then 钳工 else 车工 if 文化程度=大学 then 技术员 endif if 40〈年龄〈=50 then if 文化程度=中学 then 交通协管员 endif if 文化程度=大学 then 技术员 endif 结构化语言编写该加工的逻辑说明
3.4.5 加工逻辑的描述 结构化语言的特点 关键字的固定语法,它提供了结构化控制结构、数据 说明和模块化的特点。 3.4.5 加工逻辑的描述 结构化语言的特点 关键字的固定语法,它提供了结构化控制结构、数据 说明和模块化的特点。 自然语言的自由语法,它描述处理特点。 数据说明的手段。应该既包括简单的数据结构,有包 括复杂的数据结构。 模块定义和调用技术,应该提供各种接口描述模式。
3.4.5 加工逻辑的描述 判定表 当算法中包含多重嵌套的条件选择时,用程序流程 图、盒图、PAD图或结构化语言都不易清楚地描述 ; 3.4.5 加工逻辑的描述 判定表 当算法中包含多重嵌套的条件选择时,用程序流程 图、盒图、PAD图或结构化语言都不易清楚地描述 ; 判定表却能清晰地表示复杂的条件组合与应做的动 作之间的对应关系。
3.4.5 加工逻辑的描述 一张判定表由4部分组成: 左上部列出所有条件; 左下部是所有可能做的动作; 右上部是表示各种条件组合的一个矩阵; 3.4.5 加工逻辑的描述 一张判定表由4部分组成: 左上部列出所有条件; 左下部是所有可能做的动作; 右上部是表示各种条件组合的一个矩阵; 右下部是和每种条件组合相对应的动作。 条件类别 条件组合 操作定义 操作执行
3.4.5 加工逻辑的描述 例:若年交易额4万元以上,且最近3个月无欠款的顾客,可享受10%的折扣;若近3个月有欠款,是本公司5年以上老顾客,可享受5%的折扣;若不是老顾客,只有2%的折扣;年订货量不足4万元者无折扣。
3.4.5 加工逻辑的描述 用判定表来表示顾客的折扣率 1 2 3 4 5 6 7 8 C1:交易额>=4万 Y N 3.4.5 加工逻辑的描述 用判定表来表示顾客的折扣率 1 2 3 4 5 6 7 8 C1:交易额>=4万 Y N C2:最近3个月无拖欠 C3:与本公司交易>=5年 A1:折扣率10% √ A2:折扣率5% A3:折扣率2% A4:无折扣
3.4.5 加工逻辑的描述 判定树 判定树是判定表的变种,也能清晰地表示复杂的条 件组合与应做的动作之间的对应关系; 3.4.5 加工逻辑的描述 判定树 判定树是判定表的变种,也能清晰地表示复杂的条 件组合与应做的动作之间的对应关系; 多年来判定树一直受到人们的重视,是一种比较常 用的系统分析和设计的工具。
3.4.5 加工逻辑的描述 一般形式为: 行动或策略 件 条 根 3.4.5 加工逻辑的描述 判定树的左边为树根,从左向右依次排列各条件,左边的条件比右边的优先考虑。根据每个条件的取值不同,树可以产生很多分支,各分支的最右端(即树梢)为不同的条件取值状态下采取的行动。 一般形式为: 根 条 件 行动或策略
3.4.5 加工逻辑的描述 3个月无欠款 10% 交易额>=4万元 5年以上老顾客 5% 3个月y有欠款 客户折扣率 3% 新顾客 3.4.5 加工逻辑的描述 客户折扣率 交易额<4万元 0% 交易额>=4万元 3个月无欠款 3个月y有欠款 10% 5年以上老顾客 新顾客 5% 3% 用判定树来表示顾客的折扣率
3.5 需求分析图形工具 3.5.1 层次方框图 3.5.2 Warnier图 3.5.3 IPO图 图形比文字叙述形象直观容易理解。 3.5.1 层次方框图 3.5.2 Warnier图 3.5.3 IPO图
3.5 需求分析图形工具 层次方框图: 层次方框图:用树形结构的一系列多层次的矩形框描述 数据的层次结构; 树形结构的顶层是一个单独的矩形框,它代表完整的数 据结构; 下面的各层矩形框代表这个数据的子集; 最底层的各个框代表组成这个数据的实际数据元素(不 能再分割的元素)。
3.5 需求分析图形工具 某大学组织机构层次方框图
3.5 需求分析图形工具 Warnier图: Warnier图:和层次方框图类似,Warnier图也用树形 结构描述信息,但是这种图形工具比层次方框图提供 了更丰富的描述手段; 特点:用Warnier图可以表明信息的逻辑组织,也可以 表示特定信息在某一类信息中是有条件地出现的。因 为重复和条件约束是说明软件处理过程的基础,所以 很容易把Warnier图转变成软件设计的工具。
3.5 需求分析图形工具 某大学组织机构Warnier图 系(32) 专业(P1) 学院(12) 科(12) 实验中心(9) 学院(12) 科(12) 实验中心(9) 某大学 室(2) 部(4) 科(P2) 处(6) 中心(P3) 某大学组织机构Warnier图
3.5 需求分析图形工具 IPO图: IPO图:是输入、处理、输出图的简称,它是美国IBM公 司发展完善起来的一种图形工具,能够方便地描绘输入数 据、对数据的处理和输出数据之间的关系。 基本形式:是在左边的框中列出有关的输入数据,在中间 的框中列出主要的处理,在右边的框中列出产生的输出数 据。在IPO图中还用类似向来富豪的粗大箭头清楚地指出 数据通信的情况。
3.5 需求分析图形工具 国家公务员考试成绩管理系统的IPO图 输入 处理 输出 考前处理 计算总分 按总分排序 录用工作 各种统计 输入 处理 输出 考前处理 计算总分 按总分排序 录用工作 各种统计 考生基本信息 考生成绩 考生准考证号 考生成绩单 总分名次表 录用通知书 各项统计结果 国家公务员考试成绩管理系统的IPO图
3.6 SA 方法的应用 1 项目说明 2 数据流图 3 数据字典 详细参见教材相关章节。
3.7 数据库内容的需求分析和描述 现有的系统应用中,80%以上的软件都会用到数据,因此,大量软件的设计中都会涉及到数据库内容的需求分析和设计问题。 3.7.1 数据库内容的需求分析 3.7.2 数据库内容的需求分析描述 2017年3月1日
指用户要求系统完成的功能、处理时间、方式等 包括数据库的安全性、完整性、一致性等限制; 3.7.1 数据库内容的需求分析 数据库需求分析的任务是调查、收集、分析并定义用户对数据库的各种要求,是整个数据库设计的基础和起点. 该阶段的需求工作主要从以下三个方面进行: (1)信息需求 (2)处理需求 (3)使用需求 指需要从数据库中获得的信息的内容和性质 指用户要求系统完成的功能、处理时间、方式等 包括数据库的安全性、完整性、一致性等限制; 输入/输出格式和多用户方面的限制等; 响应速度、故障回复等性能要求; 2017年3月1日
3.7.1 数据库内容的需求分析 本章前面几节所介绍的需求获取和需求分析的方法对于软件系统的数据需求一样适用. 3.7.1 数据库内容的需求分析 本章前面几节所介绍的需求获取和需求分析的方法对于软件系统的数据需求一样适用. 在需求分析基础上,对新系统中数据的逻辑模型通常采用实体—联系(Entity-Relationship, E-R)图来描述。 该阶段的需求工作主要包含2个步骤: (1)建立各局部应用的E-R模型 (2)建立全局E-R模型 2017年3月1日
3.7.2 数据库内容的需求分析描述 用画图方式表示的E-R模型称为E-R图,E-R模型的各类元素在E-R图中用不同形状的结点表示。 3.7.2 数据库内容的需求分析描述 用画图方式表示的E-R模型称为E-R图,E-R模型的各类元素在E-R图中用不同形状的结点表示。 构成E-R图的基本要素是实体型、属性和联系,其表示方法为 数据对象(实体):客观世界中存在的且可区分的事物,用矩形框代表实体; 联系:客观事物之间的联系(三类1:1,1:N,M:N),用连接相关实体的菱形框表示关系; 属性:实体或联系所具有的性质,用椭圆形或圆角矩形表示实体的属性。并直线把实体或联系与其属性连接起来。 2017年3月1日
3.7.2 数据库内容的需求分析描述 价格 借阅日期 借阅 借书人 图书 借书证号 姓名 单位 总编号 书名 分类号 作者 位置 m n 3.7.2 数据库内容的需求分析描述 价格 借阅日期 借阅 借书人 图书 借书证号 姓名 单位 总编号 书名 分类号 作者 位置 m n 图3. 12 借书人和图书之间借阅关系E-R图 2017年3月1日
3.8 需求规格说明书的 撰写 需求规格说明书的主要内容应该包括以下几项: 1.引言:编写目的、项目背景、定义、参考资料; 3.8 需求规格说明书的 撰写 需求规格说明书的主要内容应该包括以下几项: 1.引言:编写目的、项目背景、定义、参考资料; 2.任务概述:目标、运行环境、条件与约束; 3.数据描述:静态数据、动态数据、数据库描述、数据字典等 4.功能需求:功能划分、功能描述; 5.性能需求:数据精确度、时间特性、适应性; 6.运行需求:用户界面、硬件接口、软件接口、故障处理; 7.其它需求:包括可使用性、安全保密性、可维护性和可移植性等; 2017年3月1日
需求规格说明书提纲 3、具体需求 3.1 功能需求 3.1.1 规格说明 3.1.1.1 引言 3.1.1.2 输入 3.1.1.3 输出 3.1 功能需求 3.1.1 规格说明 3.1.1.1 引言 3.1.1.2 输入 3.1.1.3 输出 3.1.1.4 加工 3.1.2 外部接口 3.1.2.1 用户接口 3.1.2.2 硬件接口 3.1.2.3 软件接口 3.1.2.4 通讯接口 3.2 性能需求 3.2.1 数据精度 3.2.2 时间特性 3.2.3 适应性 3.3 设计约束 3.4 属性需求 3.4.1 安全性 3.4.2 可维护性 3.4.3 保密性 …… 附录 索引 1、引言 1.1 目的 1.2 背景 1.3 定义 1.4 参考资料 2、任务概述 2.1 产品描述 2.2 产品功能 2.3 用户特点 2.4 一般约束 2.5 假设与依据
本章小结 需求分析是软件生存周期一个十分重要的阶段,其根本任务是确定用户对软件系统的需求。它是项目开发的基础,它要确定软件系统做什么,具有什么功能、性能,有什么约束条件等。并用某种无二义性的描述形成需求规格证明书。 本章在对需求分析的任务、步骤、需求获取常用方法介绍的基础上,分别从面向过程和面向对象的角度阐述如何进行需求分析。重点介绍了描述系统逻辑模型的数据流图的分解、数据字典的内容及实现、加工逻辑描述的结构化语言、判定表和判定树等,之后介绍了需求分析图形工具:层次方框图、维纳图和IPO图,最后对涉及到数据库内容的需求分析方法和用来描述系统数据需求的工具E-R图做了详细介绍。 2017年3月1日
思考和练习 3.1 为什么要进行需求分析?需求分析要经过哪些步骤? 3.2 需求分析阶段的基本任务是什么?怎样理解分析阶段的任务是决定“做什么”,而不是“怎样做”? 3.3 什么是结构化分析方法?该方法使用什么描述工具? 3.4 什么是数据流图?其作用是什么?其中的基本符号各表示什么含义? 3.5 画数据流图的步骤是什么?应该注意什么事项? 3.6 什么是数据字典?其作用是什么?它有哪些条目? 3.7 描述加工逻辑有几种工具?各是什么?写出其优缺点。 2017年3月1日
思考和练习(续) 3.8 某高校计算机教材购销系统有以下功能: 学生购买书时,要先填写购书单,系统根据各班学生用表以及售书登记表审查有效性,如果有效,系统根据教材库存量表进一步判断书库是否有书,如果有书,系统把领书单返回给学生,学生凭书单到书库领书,对短缺的教材,系统用缺书单的形式通知书库,新书购进书库后,也有书库将进书通知返回给系统。请采用SA方法画出该系统的分层数据流图,并建立相应的数据字典。 3.9 某计算机公司为本科以上学历的人重新分配工作的政策是:年龄在25岁以下者,学历是本科男性要求报考研究生,女性则担任行政工作;年龄在25岁至45岁之间者,学历本科,不分男女,任中层领导职务,学历是硕士不分男女,任课题组组长;年龄在45岁以上者,学历本科,男性任研究人员,女性则担任资料员,学历是硕士不分男女,任课题组组长。请用结构化语言,判定表和判定树描述上述问题的加工逻辑。 2017年3月1日
思考和练习(续) 3.10 数据库内容的需求分析工作主要从哪几方面进行? 3.11 建立全局E-R模型时,各分E-R模型之间可能出现的冲突有哪些,应如何处理? 2017年3月1日
课堂讨论 按照第2章选择的软件开发项目,根据本章内容尝试进行需求分析的相关内容; Question? 2017年3月1日