赞
踩
卖肉的问:要啥? 买肉的答:要点肉。 卖肉的问:啥肉?精肉还是五花肉? 买肉的答:做饺子的。 卖肉的答:那来点五花肉吧。几斤?
要购买一辆汽车需要:能看光碟,带有导航系统,车价适中,节省燃油,良好的刹车系统等。
美国电气与电子工程师学会 (IEEE) 将需求定义为: 用户解决问题所需的条件或能力。
软件需求是指用户对软件所提出的功能性和非功能性的要求。前者定义了系统做什么,后者定义了系统工作时的特性。
软件需求的定义:
如何去理解上面的软件需求定义呢?
软件需求的定义包括了用户角度(系统的外部行为)和开发人员角度(系统的内部特性)两个方面,其中的关键在于需求一定要文档化。
从概念上讲,需求分析主要涉及以下三项活动或工作。
获取需求是否彻底与成功,直接关系到软件开发的成败。
获取需求为什么难?
软件问题的幽默画:
通常采用以下方法去获取用户需求:
1、访谈:用户面谈、问卷调查、现场考察等
1)用户面谈
一种理解业务功能和业务规则的最有效方法。
面谈过程需要认真的计划和准备,在面谈之前需要:
信息收集中的主要问题:
主题 | 对用户来说的问题 |
业务过程和操作是什么? | 你要干什么? |
业务过程应该怎样完成? | 如何完成它?或需要哪些步骤? |
需要什么样的信息? | 你要使用哪些信息?你要使用什么样的表单或报告? |
2)问卷调查
在完成最初的面谈和分析后,可作为一项协作技术可以收到良好的效果。
3)现场观察商业过程和工作流程
掌握用户如何实际使用一个系统以及到底用户需要哪些信息,最好的办法是亲自观察用户是如何完成实际工作的。
一般方法:
注意:现场考察可能造成用户紧张。
2、面向数据流自顶向下逐步求精(结构化分析:自顶向下,逐层细化的方法。)
从数据流图的输出端着手分析,这是因为系统的基本功能是产生这些输出的关键因素。
输出数据决定了系统必须具有的最基本的组成元素(包括功能和数据结构组成)。
3、简易的应用规格说明技术
前两种方法中,用户相对比较被动。 本技术是一种面向团队的需求获取方法,是一种主流技术。 它提倡用户与开发者密切合作、共同标识问题、提出解决方案,确定基本需求。
简易的应用规格说明技术流程:
它也不是万能药。但是它有以下优点:
4、快速原型法
快速建立起来的旨在演示目标系统主要功能的可运行的程序。 它是最准确、有效和强大的需求获取技术。
基本特性:
目前常用的方法有: 结构化分析方法和面向对象分析方法。
根据分析的结果,采用规定的规格描述模型或者规格描述语言编写需求规格说明书。
将软件需求进行严密的定义,并将其文书化的东西就是需求规格说明。
功能规格说明 性能规格说明 可靠性规格说明 接口规格说明 等等。
仅限于功能规格说明,将其加以严密的定义就不是一件简单的事情。
撰写需求规格说明书:
以下是需求规格说明书需要撰写内容的例子
1. 系统目标
2. 新系统的业务需求
●适用业务的构成 ●DFD新逻辑模型 ●系统化的对象范围,新规需求列表等
3. 新系统的数据需求
●ER图和规范化数据项目表(规范化结果) ●数据项目定义书(数据字典)
4. 新系统的质量需求,以及其他设计上的前提条件和制约事项
●根据需要加以描述与其他系统和外部的接口需求、监察和保密的需求、容量/性能需求、备份和恢复需求、移植需求、系统的扩展需求等。 ●另外,描述系统再利用和部品化相关的方针,以及与质量特征(功能性、可靠性、可用性、效率性、可维护性、可移植性)相关的前提或者特殊事项。
5. 平台(硬件/软件/网络)需求
●有关运行环境的需求 ●有关开发环境和手段的需求
6. 费用对效果
附录
●业务术语集 ●DFD现物理模型/ DFD现逻辑模型 ●保留事项/未决事项
等等。。
软件项目发起人。需要将需求传达给其他人,将软件开发委托给其他人。
开发软件的人。以确认发起人的意图为目的,或者,开发面向市场的软件产品的情况下,该产品的功能和动作需要去明确地表述。
用户:检查开发人员是否真正理解了和正确表达了需求。
设计人员:根据需求规格说明书开展设计和实现(编写代码、测试)工作。
检查人员:检查做成的软件是否满足规格说明,用户本身也包含其中。
结构化开发方法 (structure developing method) 是现有的软件开发方法中最成熟,应用最广泛的方法,主要特点是快速、自然和方便。
结构化开发方法由: 结构化分析方法 (SA法)、 结构化设计方法(SD法)、 结构化程序设计方法(SP法)构成的。
结构化分析 (Structure Analysis,SA法) 方法是面向数据流的需求分析方法,是20 世纪70年代末由 Demarco 、Yourdon及Constaintine等人提出和发展,并得到广泛的应用。它适合于分析大型的数据处理系统,特别是企事业的业务管理系统。
结构化分析方法采用数据流图(DFD),它是关注数据流构造方法的典型代表。
SA是面向对象方法之前的方法,尽管DFD没有被UML所采用,但是,由于它有以下特点,即使现在也是一种有效的方法。
SA法是一种“建模”的活动,主要是根据软件内部的数据传递、变换关系,自顶向下逐层分解,描绘出满足功能要求的软件模型。
模型,就是为了理解事物而对事物做出的一种抽象,是对事物的一种无歧义的书面描述。 在软件系统的结构化分析建模过程中,软件系统分析员应该从不同角度(功能角度、数据角度、行为角度)抽象出目标系统的特性,使用精确的表达方法(DFD、 ER、 STD、 IPO、DD等)构造系统的模型。
结构化分析模型的组成:
结构化分析方法创建的几个主要模型及关键元素如下:
根据上述模型整理出软件需求规格说明书。
对于一个复杂的系统,为了将复杂性降低到可以掌握的程度,可以把大问题分解成若干小问题,然后分别解决。(各个击破!)
分解可以分层进行,即先考虑问题最本质的属性,暂时把细节略去,然后再逐层添加细节,直至涉及最详细的内容,这种用最本质的属性表示一个系统的方法就是“抽象”。
名称定义:数据流图(Data Flow Diagram,DFD)
1.用自然语言描述业务场景
接单中心从〇〇公司接到了货物订单。
订单内容为4套N型配电盘。
接单中心在接到订货后,进行了库存调查,给〇〇公司回答了报价。
由于N型配电盘目前没有库存,所以系统自动向厂家发出了委托生产的请求。
在收到厂家交付的N型配电盘并入库后,系统自动发出出库指示,随后,由物流中心将4套N型配电盘配送到〇〇公司。
2.把握数据的产生和使用
DFD是通过数据流来把握业务全貌的,因此,
是重点要掌握的。
从刚才的例子看,数据的产生在以下两个地方:
数据的使用是在在给物流中心发出送货指示业务完了的地方。
3.把握数据的存储
接下来,整理出像「接单数据」、「库存数据」等这些长期或暂时需要保存的数据存储。
4.列举出所需要的处理
最后,整理出和上述的1~3相关的处理,完成DFD。
案例:
下面以任课教师收到课表后,根据课表安排的教学周次向实验室管理部门申请实验室的使用为例,说明结构化需求分析的步骤。
其手工操作的业务流程图如下:
通过对现实环境的调查研究,获取当前系统的物理模型。
前提:需要客户很好地协助,毫无遗漏地收集现有业务的工作流程和事务处理的手册,现有系统的报表/画面、文件和数据库格式等。
目的:整理出现有业务的内容、作用以及业务上存在的问题点。
在建立DFD现物理模型的同时,抽出现有业务所使用的全部数据项,将它们登录到数据字典中去。遇到没有用过的数据项,或者「同词异义」,或者「异词同义」的情况,此阶段不做整理,直接登录到数据字典中即可。 这些数据项都是从现有系统向新系统转换过程中的非常重要的信息。
何为数据字典(Data Dictionary 简称DD )?
数据字典的作用是: 对于数据流图中出现的所有被命名的图形元素作为一个词条以字典的方式加以定义,使得每一个图形元素的名字都有一个确切的解释。
使用数据字典的一个重要目的是,解决在系统开发过程中出现的以下两个问题:
“同词异义”和“异词同义”
数据字典的记述事项:
从DFD现物理模型中将谁(个人或组织、现有系统)、何时、怎样(手段或媒介)实施业务的所谓“物理上的要素”以及“非本质成分”去掉,提炼出所谓的DFD现逻辑模型。
前提:做好需求调查与整理。
方法:用自然语言或条目列表的方式将需求整理出来。如果采用迭代过程模型(例如:敏捷开发)实施开发的话,还需要对功能需求排列优先顺序。
No | 功能需求 | 优先级 | 备注 |
1 | 实现任课教师根据课表创建实验教学申请并安排实验项目功能。 | 高 | |
2 | 实现任课教师向指定的实验室管理部门提交实验申请的功能。 | 高 | |
3 | 实现实验室管理人员根据任课教师提交的实验教学申请编排实验室的功能。 | 高 | |
4 | 实现校历管理功能。 | 高 | 用于创建实验教学申请。 |
5 | 实现部门管理功能。 | 高 | 用于创建实验教学申请、实验室管理等。 |
6 | 实验室管理功能。 | 高 | 用于编排实验室。 |
7 | 实验设备管理功能。 | 中 | 用于实验室管理。 |
8 | 实现用户管理功能。 | 中 | 用于系统登录和权限管理。 |
9 | 实现系统登录功能。 | 中 | |
10 | 实现课程类型、实验设备类型等基础信息的管理功能。 | 低 |
前提:确定好功能需求的范围。
方法:
1.用分层次逐步细化求精的方式绘制DFD。
实验教学申请系统的顶层DFD:
实验教学申请系统的第二层DFD:
实验教学申请系统中的1.创建申请的第三层DFD:
2.对绘制好的最底层(最详细)的DFD的各个要素去进行必要的说明。
对数据存储进行说明
什么是IPO?
IPO是输入(Input)/处理或加工(Process)/输出(Output)图的简称,它是由美国IBM公司提出的一种图形工具。它的作用是能够方便地描绘输入数据、处理或加工数据、输出数据的关系。
在需求分析阶段,它可以用来描绘数据流图中处理或加工的过程。
在设计阶段,它可用来对模块结构图中的每个模块的输入、输出数据和数据加工进行说明。
IPO的形式:
如何描述IPO:对处理进行说明
采用IPO形式描述“1.1新建申请”的处理过程
3.将新产生的数据项追加到数据字典中。
将构建DFD新逻辑模型中产生的新的要素追加到下述数据字典中。
数据项名称 | 数据项含义 | 别名 | 数据项类型 | 长度 | 取值范围 | 取值含义 | 取值含义 | 取值范围 | 取值含义 | ||||||||||||
任课教师 | 需要申请实验教学的任课老师 | 任课老师 | |||||||||||||||||||
合适的申请 | 与课表安排的周次、星期、节次没有冲突的申请 | ||||||||||||||||||||
没有问题的申请 | 与课表安排的周次、星期、节次没有冲突的申请 | ||||||||||||||||||||
实验室管理人员B | 负责为申请的实验进行实验室编排的实验室管理人员 | 编排人员 |
下图是还未实施数据规范化的DFD:
下图是实施数据规范化后的DFD:
长处: 数据易于维护和管理。 同一数据结构(或者表)可以在多种场合被利用。
短处: 伴随着表结构数量的增加,管理负担也随之有所增加。 为了获得一组关联信息,需要遍历多个表结构,获取的效率会有所影响。
下面是目前使用的Word版实验教学申请表的模板。
通过这个模板我们可以得到实验教学申请的数据结构如下:(由于存在重复的数据项,所以是非规范型的。)
对包含重复数据项的非规范化的数据结构(或者表)按照「第一范式」、「第二范式」、「第三范式」的顺序实施规范化。到「第三范式」的情况下,就可以做到数据结构(或者表)不存在重复数据项了。
对下面的数据结构(或者表),按照上述步骤实施规范化该如何去做呢?
第一范式化:将下表中导出的数据项「金额」和「订单合计金额」删除,再将重复数据项「商品No」、「商品名」、「单价」、「数量」分解到另外的表中去。
第二范式化:由于订单明细表中的主键「商品No」可以决定「商品名」和「单价」,因此将其分解到另外的表中去。
第三范式化:由于订单表中的主键以外的「客户名」和「客户地址」由「客户代码」决定 ,因此将其分解到另外的表中去。
回到实验教学申请表的例子。
按照上面介绍的三个范式的要求可以把上述格式的一个数据结构分解为如下五个数据结构。
再次回到实验教学申请系统!
实验教学申请系统的第二层DFD
按照上面介绍的三个范式的要求我们把实验教学申请系统的数据存储进行规范化处理。
实体联系图又叫ERD(Entity Relationship Diagram)或实体-联系模型,它是在调查分析用户的需求之后,把用户对数据的要求用实体联系模型表达出来,明确描述应用系统的概念数据模型。
概念数据模型的实质,就是分析和梳理现实中的数据及其数据联系,为后续的数据库设计打好基础。
概念数据模型的构成: 实体 属性 联系
实体(Entity)表示一个离散对象。它是具有一系列不同性质或属性的事务。实体通常使用名词表示,如计算机、雇员、歌曲、数学定理等。 在ER模型中实体用矩形框表示,矩形框内写上实体名。
属性就是实体所拥有的特征。一个实体拥有多个属性。 在ER模型中属性用椭圆框表示,框内写上属性名,并用无向边与其实体相连。
联系描述了两个或更多实体相互如何关联。联系可以被(粗略地)认为是动词。如:雇员和部门之间的管理关联。 在ER模型中实体间的联系用菱形框表示,联系以适当的含义命名,名字写在菱形框中,用无向连线将参加联系的实体矩形框分别与菱形框相连,并在连线上标明联系的类型,即1-1、1-N或M-N。
按照上面介绍ER图的符号和含义,绘制得到实验教学申请系统的整体ER图(ER模型)如下。
除了上面绘制的整体ER模型以外,通常还需绘制各个实体所拥有的属性。例如,实验教学申请实体的属性如下。
层次方框图
层次方框图不仅可以反映系统的功能组成关系,还可以反映现实世界中的信息组成关系。因此,在数据建模中可以用来表示信息的组成关系。
Warnier图
它也是用来表示信息层次结构的图形工具。
它可以指出信息是重复出现的或者是有条件出现的。
图形包括:
确定系统综合要求和分析系统数据要求顺利完成之后即可导出详细的系统功能模型。
阶段性成果:
确定系统的动态变化的方式,采用状态转换图来描述。
阶段性成果: 状态转换图(STD,State Transition Diagram)
行为模型与状态转换图
为了反映事物的变化规律,在需求分析中有时需要建立系统的行为模型(动态模型)。
状态转换图通过描绘系统的状态及引起系统状态转换的事件,来表示系统的行为。
例如:上课铃响了,同学们应该进入教室准备上课。
状态转换图还指明了作为特定事件的结果,系统将做哪些动作(例如,处理数据)。
状态转换图-状态
状态代表系统的行为模式。
它规定了系统对事件的3种响应方式。
三种状态类型:初态、终态和中间态。
状态图可表示循环运行过程以及单程运行过程。
状态转换图-事件
某个特定时刻发生的“事情”。
它是对引起系统做动作或(和)从一个状态转换到另一个状态的外界事件的抽象。
它是控制信息,状态是受事件触发的。
状态转换图-状态转换图的符号
在状态转换图中,初态用实心圆表示,终态用一对同心圆(内圆为实心圆)表示。 中间状态用圆角矩形表示。可以用两条横线把它分成上,中,下3个部分。上部为状态的名称,是必填项。中部为状态变量的名字和值,是可选项。下部为活动表,也是可选项。 两个状态之间带箭头的连线称为状态转换。箭头指明了转换方向。
举例
将上述的阶段性成果汇总为“软件需求规格说明书”,以提交评审。
在可行性分析的基础上,较准确地估计系统的开发成本和进度。
修改开发计划。
通俗地说,需求分析的任务就是准确地定义未来系统的目标,确定为了满足用户需求的系统必须做什么。用 <需求规格说明书> 规范的形式准确地表达用户的需求。
需求分析阶段关键在于“理解”和“表达”。
“理解”是开发人员对系统需求的理解 (1)挖掘用户需求 (2)修正需求。
“表达”是对理解用逻辑模型描述出来,一方面能让用户看懂,另一方面能让设计人员和程序员理解。
做好需求分析任务所必备的四项基本技能:
- 确立需求分析的方法论 :如何没有确立需求分析的顺序、工作内容和成果物,按照自己的方式进行需求分析的话,就会出现有的项目成功有的项目失败的情况。确立方法论就可以减少项目失败的风险。
- 掌握图形表现工具 :绘制业务流程图、DFD、ER图和UML图,可以减少文字描述造成的模糊性。用图和客户进行讨论和沟通,可以更好地共有思考过程,容易与客户达成一致。
- 沟通的技能 :用户不积极参与,不认真听取我们的解决方案等,是沟通过程中常常发生的问题。为了解决这些问题,需要掌握与人沟通的技能。
- 了解行业・业务知识 :了解客户的业务规则、行业用语、竞争对手的经营状况等,这些不用说也应该知道的东西。 如果没有行业・业务知识,就和客户没有共同语言,也就无法了解客户的真实需求。
如果想了解可行性分析可以看这篇文章:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。