软件工程导论第3章.ppt
《软件工程导论第3章.ppt》由会员分享,可在线阅读,更多相关《软件工程导论第3章.ppt(95页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第第3章章 需求分析需求分析3.1 需求分析的任务需求分析的任务3.2 与用户沟通获取需求的方法与用户沟通获取需求的方法3.3 分析建模与规格说明分析建模与规格说明3.4 实体实体-联系图联系图3.5 数据规范化数据规范化3.6 状态转换图状态转换图3.7 其他图形工具其他图形工具3.8 验证软件需求验证软件需求3.9 小结小结习题习题需求分析是软件定义时期的最后一个阶段,它的基本需求分析是软件定义时期的最后一个阶段,它的基本任务是准确地回答任务是准确地回答“系统必须做什么系统必须做什么?”这个问题。这个问题。需求分析的任务还不是确定系统怎样完成它的工作,需求分析的任务还不是确定系统怎样完成它
2、的工作,而仅仅是确定系统必须完成哪些工作,也就是对目标而仅仅是确定系统必须完成哪些工作,也就是对目标系统提出完整、准确、清晰、具体的要求。系统提出完整、准确、清晰、具体的要求。在需求分析阶段结束之前,系统分析员应该写出软件在需求分析阶段结束之前,系统分析员应该写出软件需求规格说明书,以书面形式准确地描述软件需求。需求规格说明书,以书面形式准确地描述软件需求。在分析软件需求和书写软件需求规格说明书的过程中,在分析软件需求和书写软件需求规格说明书的过程中,分析员和用户都起着关键的、必不可少的作用。只有分析员和用户都起着关键的、必不可少的作用。只有用户才真正知道自己需要什么,但是他们并不知道怎用户才
3、真正知道自己需要什么,但是他们并不知道怎样用软件实现自己的需求,用户必须把他们对软件的样用软件实现自己的需求,用户必须把他们对软件的需求尽量准确、具体地描述出来;分析员知道怎样用需求尽量准确、具体地描述出来;分析员知道怎样用软件实现人们的需求,但是在需求分析开始时他们对软件实现人们的需求,但是在需求分析开始时他们对用户的需求并不十分清楚,必须通过与用户沟通获取用户的需求并不十分清楚,必须通过与用户沟通获取用户对软件的需求。用户对软件的需求。需求分析和规格说明是一项十分艰巨复杂的工作。用需求分析和规格说明是一项十分艰巨复杂的工作。用户与分析员之间需要沟通的内容非常多,在双方交流户与分析员之间需要
4、沟通的内容非常多,在双方交流信息的过程中很容易出现误解或遗漏,也可能存在二信息的过程中很容易出现误解或遗漏,也可能存在二义性。因此,不仅在整个需求分析过程中应该采用行义性。因此,不仅在整个需求分析过程中应该采用行之有效的通信技术,集中精力过细地工作,而且必须之有效的通信技术,集中精力过细地工作,而且必须严格审查验证需求分析的结果。严格审查验证需求分析的结果。尽管目前有许多不同的用于需求分析的结构化分析方尽管目前有许多不同的用于需求分析的结构化分析方法,但是,所有这些分析方法都遵守下述准则:法,但是,所有这些分析方法都遵守下述准则:(1)必须理解并描述问题的信息域,根据这条准则应必须理解并描述问
5、题的信息域,根据这条准则应该建立数据模型。该建立数据模型。(2)必须定义软件应完成的功能,这条准则要求建立必须定义软件应完成的功能,这条准则要求建立功能模型。功能模型。(3)必须描述作为外部事件结果的软件行为,这条准必须描述作为外部事件结果的软件行为,这条准则要求建立行为模型。则要求建立行为模型。(4)必须对描述信息、功能和行为的模型进行分解,必须对描述信息、功能和行为的模型进行分解,用层次的方式展示细节。用层次的方式展示细节。1.功能需求功能需求这方面的需求指定系统必须提供的服务。通过需求分这方面的需求指定系统必须提供的服务。通过需求分析应该划分出系统必须完成的所有功能。析应该划分出系统必须
6、完成的所有功能。2.性能需求性能需求性能需求指定系统必须满足的定时约束或容量约束,性能需求指定系统必须满足的定时约束或容量约束,通常包括速度通常包括速度(响应时间响应时间)、信息量速率、主存容量、信息量速率、主存容量、磁盘容量、安全性等方面的需求。磁盘容量、安全性等方面的需求。3.1 需求分析的任务需求分析的任务 3.1.1 确定对系统的综合要求确定对系统的综合要求3.可靠性和可用性需求可靠性和可用性需求可靠性需求定量地指定系统的可靠性。可靠性需求定量地指定系统的可靠性。可用性与可靠性密切相关,它量化了用户可以使用系可用性与可靠性密切相关,它量化了用户可以使用系统的程度。统的程度。4.出错处理
7、需求出错处理需求这类需求说明系统对环境错误应该怎样响应。例如,这类需求说明系统对环境错误应该怎样响应。例如,如果它接收到从另一个系统发来的违反协议格式的消如果它接收到从另一个系统发来的违反协议格式的消息,应该做什么息,应该做什么?注意,上述这类错误并不是由该应注意,上述这类错误并不是由该应用系统本身造成的。用系统本身造成的。在某些情况下,在某些情况下,“出错处理出错处理”指的是当应用系统发现指的是当应用系统发现它自己犯下一个错误时所采取的行动。但是,应该有它自己犯下一个错误时所采取的行动。但是,应该有选择地提出这类出错处理需求。我们的目的是开发出选择地提出这类出错处理需求。我们的目的是开发出正
8、确的系统,而不是用无休止的出错处理代码掩盖自正确的系统,而不是用无休止的出错处理代码掩盖自己的错误。总之,对应用系统本身错误的检测应该仅己的错误。总之,对应用系统本身错误的检测应该仅限于系统的关键部分,而且应该尽可能少。限于系统的关键部分,而且应该尽可能少。5.接口需求接口需求接口需求描述应用系统与它的环境通信的格式。常见接口需求描述应用系统与它的环境通信的格式。常见的接口需求有:用户接口需求;硬件接口需求;软件的接口需求有:用户接口需求;硬件接口需求;软件接口需求;通信接口需求。接口需求;通信接口需求。6.约束约束设计约束或实现约束描述在设计或实现应用系统时应设计约束或实现约束描述在设计或实
9、现应用系统时应遵守的限制条件。在需求分析阶段提出这类需求,并遵守的限制条件。在需求分析阶段提出这类需求,并不是要取代设计不是要取代设计(或实现或实现)过程,只是说明用户或环境过程,只是说明用户或环境强加给项目的限制条件。常见的约束有:精度;工具强加给项目的限制条件。常见的约束有:精度;工具和语言约束;设计约束;应该使用的标准;应该使用和语言约束;设计约束;应该使用的标准;应该使用的硬件平台。的硬件平台。7.逆向需求逆向需求逆向需求说明软件系统不应该做什么。理论上有无限逆向需求说明软件系统不应该做什么。理论上有无限多个逆向需求,我们应该仅选取能澄清真实需求且可多个逆向需求,我们应该仅选取能澄清真
10、实需求且可消除可能发生的误解的那些逆向需求。消除可能发生的误解的那些逆向需求。8.将来可能提出的要求将来可能提出的要求应该明确地列出那些虽然不属于当前系统开发范畴,应该明确地列出那些虽然不属于当前系统开发范畴,但是据分析将来很可能会提出来的要求。这样做的目但是据分析将来很可能会提出来的要求。这样做的目的是,在设计过程中对系统将来可能的扩充和修改预的是,在设计过程中对系统将来可能的扩充和修改预做准备,以便一旦确实需要时能比较容易地进行这种做准备,以便一旦确实需要时能比较容易地进行这种扩充和修改。扩充和修改。任何一个软件系统本质上都是信息处理系统,系统必任何一个软件系统本质上都是信息处理系统,系统
11、必须处理的信息和系统应该产生的信息在很大程度上决须处理的信息和系统应该产生的信息在很大程度上决定了系统的面貌,对软件设计有深远影响,因此,必定了系统的面貌,对软件设计有深远影响,因此,必须分析系统的数据要求,这是软件需求分析的一个重须分析系统的数据要求,这是软件需求分析的一个重要任务。分析系统的数据要求通常采用建立数据模型要任务。分析系统的数据要求通常采用建立数据模型的方法的方法(见见3.4节节)。3.1.2 分析系统的数据要求分析系统的数据要求复杂的数据由许多基本的数据元素组成,数据结构表复杂的数据由许多基本的数据元素组成,数据结构表示数据元素之间的逻辑关系。利用数据字典可以全面示数据元素之
12、间的逻辑关系。利用数据字典可以全面准确地定义数据,但是数据字典的缺点是不够形象直准确地定义数据,但是数据字典的缺点是不够形象直观。为了提高可理解性,常常利用图形工具辅助描绘观。为了提高可理解性,常常利用图形工具辅助描绘数据结构。常用的图形工具有层次方框图和数据结构。常用的图形工具有层次方框图和Warnier图,在本章第图,在本章第3.7节中将简要地介绍这两种图形工具。节中将简要地介绍这两种图形工具。软件系统经常使用各种长期保存的信息,这些信息通软件系统经常使用各种长期保存的信息,这些信息通常以一定方式组织并存储在数据库或文件中,为减少常以一定方式组织并存储在数据库或文件中,为减少数据冗余,避免
13、出现插入异常或删除异常,简化修改数据冗余,避免出现插入异常或删除异常,简化修改数据的过程,通常需要把数据结构规范化数据的过程,通常需要把数据结构规范化(见见3.5节节)。综合上述两项分析的结果可以导出系统的详细的逻辑综合上述两项分析的结果可以导出系统的详细的逻辑模型,通常用数据流图、实体模型,通常用数据流图、实体-联系图、状态转换图、联系图、状态转换图、数据字典和主要的处理算法描述这个逻辑模型。数据字典和主要的处理算法描述这个逻辑模型。3.1.3 导出系统的逻辑模型导出系统的逻辑模型根据在分析过程中获得的对系统的更深入更具体的了根据在分析过程中获得的对系统的更深入更具体的了解,可以比较准确地估
14、计系统的成本和进度,修正以解,可以比较准确地估计系统的成本和进度,修正以前制定的开发计划。前制定的开发计划。3.1.4 修正系统开发计划修正系统开发计划访谈是最早开始使用的获取用户需求的技术,也是迄访谈是最早开始使用的获取用户需求的技术,也是迄今为止仍然广泛使用的需求分析技术。今为止仍然广泛使用的需求分析技术。访谈有两种基本形式,分别是正式的和非正式的访谈。访谈有两种基本形式,分别是正式的和非正式的访谈。正式访谈时,系统分析员将提出一些事先准备好的具正式访谈时,系统分析员将提出一些事先准备好的具体问题。在非正式访谈中,分析员将提出一些用户可体问题。在非正式访谈中,分析员将提出一些用户可以自由回
15、答的开放性问题,以鼓励被访问人员说出自以自由回答的开放性问题,以鼓励被访问人员说出自己的想法。己的想法。3.2 与用户沟通获取需求的方法与用户沟通获取需求的方法 3.2.1 访谈访谈当需要调查大量人员的意见时,向被调查人分发调查当需要调查大量人员的意见时,向被调查人分发调查表是一个十分有效的做法。经过仔细考虑写出的书面表是一个十分有效的做法。经过仔细考虑写出的书面回答可能比被访者对问题的口头回答更准确。分析员回答可能比被访者对问题的口头回答更准确。分析员仔细阅读收回的调查表,然后再有针对性地访问一些仔细阅读收回的调查表,然后再有针对性地访问一些用户,以便向他们询问在分析调查表时发现的新问题。用
16、户,以便向他们询问在分析调查表时发现的新问题。在访问用户的过程中使用情景分析技术往往非常有效。在访问用户的过程中使用情景分析技术往往非常有效。所谓情景分析就是对用户将来使用目标系统解决某个所谓情景分析就是对用户将来使用目标系统解决某个具体问题的方法和结果进行分析。具体问题的方法和结果进行分析。情景分析技术的用处主要体现在下述两个方面:情景分析技术的用处主要体现在下述两个方面:(1)它能在某种程度上演示目标系统的行为,从而便它能在某种程度上演示目标系统的行为,从而便于用户理解,而且还可能进一步揭示出一些分析员目于用户理解,而且还可能进一步揭示出一些分析员目前还不知道的需求。前还不知道的需求。(2
17、)由于情景分析较易为用户所理解,使用这种技术由于情景分析较易为用户所理解,使用这种技术能保证用户在需求分析过程中始终扮演一个积极主动能保证用户在需求分析过程中始终扮演一个积极主动的角色。需求分析的目标是获知用户的真实需求,而的角色。需求分析的目标是获知用户的真实需求,而这一信息的惟一来源是用户,因此,让用户起积极主这一信息的惟一来源是用户,因此,让用户起积极主动的作用对需求分析工作获得成功是至关重要的。动的作用对需求分析工作获得成功是至关重要的。软件系统本质上是信息处理系统,而任何信息处理系软件系统本质上是信息处理系统,而任何信息处理系统的基本功能都是把输入数据转变成需要的输出信息。统的基本功
18、能都是把输入数据转变成需要的输出信息。数据决定了需要的处理和算法,看来数据显然是需求数据决定了需要的处理和算法,看来数据显然是需求分析的出发点。在可行性研究阶段许多实际的数据元分析的出发点。在可行性研究阶段许多实际的数据元素被忽略了,当时分析员还不需要考虑这些细节,现素被忽略了,当时分析员还不需要考虑这些细节,现在是定义这些数据元素的时候了。在是定义这些数据元素的时候了。3.2.2 面向数据流自顶向下求精面向数据流自顶向下求精结构化分析方法就是面向数据流自顶向下逐步求精进结构化分析方法就是面向数据流自顶向下逐步求精进行需求分析的方法。通过可行性研究已经得出了目标行需求分析的方法。通过可行性研究
19、已经得出了目标系统的高层数据流图,需求分析的目标之一就是把数系统的高层数据流图,需求分析的目标之一就是把数据流和数据存储定义到元素级。为了达到这个目标,据流和数据存储定义到元素级。为了达到这个目标,通常从数据流图的输出端着手分析,这是因为系统的通常从数据流图的输出端着手分析,这是因为系统的基本功能是产生这些输出,输出数据决定了系统必须基本功能是产生这些输出,输出数据决定了系统必须具有的最基本的组成元素。具有的最基本的组成元素。输出数据是由哪些元素组成的呢输出数据是由哪些元素组成的呢?通过调查访问不难通过调查访问不难搞清这个问题。那么,每个输出数据元素又是从哪里搞清这个问题。那么,每个输出数据元
20、素又是从哪里来的呢来的呢?既然它们是系统的输出,显然它们或者是从既然它们是系统的输出,显然它们或者是从外面输入到系统中来的,或者是通过计算由系统中产外面输入到系统中来的,或者是通过计算由系统中产生出来的。沿数据流图从输出端往输入端回溯,应该生出来的。沿数据流图从输出端往输入端回溯,应该能够确定每个数据元素的来源,与此同时也就初步定能够确定每个数据元素的来源,与此同时也就初步定义了有关的算法。但是,可行性研究阶段产生的是高义了有关的算法。但是,可行性研究阶段产生的是高层数据流图,许多具体的细节没有包括在里面,因此层数据流图,许多具体的细节没有包括在里面,因此沿数据流图回溯时常常遇到下述问题:为了
21、得到某个沿数据流图回溯时常常遇到下述问题:为了得到某个数据元素需要用到数据流图中目前还没有的数据元素,数据元素需要用到数据流图中目前还没有的数据元素,或者得出这个数据元素需要用的算法尚不完全清楚。或者得出这个数据元素需要用的算法尚不完全清楚。为了解决这些问题,往往需要向用户和其他有关人员为了解决这些问题,往往需要向用户和其他有关人员请教,他们的回答使分析员对目标系统的认识更深入请教,他们的回答使分析员对目标系统的认识更深入更具体了,系统中更多的数据元素被划分出来了,更更具体了,系统中更多的数据元素被划分出来了,更多的算法被搞清楚了。通常把分析过程中得到的有关多的算法被搞清楚了。通常把分析过程中
22、得到的有关数据元素的信息记录在数据字典中,把对算法的简明数据元素的信息记录在数据字典中,把对算法的简明描述记录在描述记录在IPO图图(见见3.7节节)中。通过分析而补充的数中。通过分析而补充的数据流、数据存储和处理,应该添加到数据流图的适当据流、数据存储和处理,应该添加到数据流图的适当位置上。位置上。必须请用户对上述分析过程中得出的结果仔细地复查,必须请用户对上述分析过程中得出的结果仔细地复查,数据流图是帮助复查的极好工具。从输入端开始,分数据流图是帮助复查的极好工具。从输入端开始,分析员借助数据流图、数据字典和析员借助数据流图、数据字典和IPO图向用户解释输图向用户解释输入数据是怎样一步一步
23、地转变成输出数据的。这些解入数据是怎样一步一步地转变成输出数据的。这些解释集中反映了通过前面的分析工作分析员所获得的对释集中反映了通过前面的分析工作分析员所获得的对目标系统的认识。这些认识正确吗目标系统的认识。这些认识正确吗?有没有遗漏有没有遗漏?用户用户应该注意倾听分析员的报告,并及时纠正和补充分析应该注意倾听分析员的报告,并及时纠正和补充分析员的认识。复查过程验证了已知的元素,补充了未知员的认识。复查过程验证了已知的元素,补充了未知的元素,填补了文档中的空白。的元素,填补了文档中的空白。反复进行上述分析过程,分析员越来越深入地定义了反复进行上述分析过程,分析员越来越深入地定义了系统中的数据
24、和系统应该完成的功能。为了追踪更详系统中的数据和系统应该完成的功能。为了追踪更详细的数据流,分析员应该把数据流图扩展到更低的层细的数据流,分析员应该把数据流图扩展到更低的层次。通过功能分解可以完成数据流图的细化。次。通过功能分解可以完成数据流图的细化。对数据流图细化之后得到一组新的数据流图,不同的对数据流图细化之后得到一组新的数据流图,不同的系统元素之间的关系变得更清楚了。对这组新数据流系统元素之间的关系变得更清楚了。对这组新数据流图的分析追踪可能产生新的问题,这些问题的答案可图的分析追踪可能产生新的问题,这些问题的答案可能又在数据字典中增加一些新条目,并且可能导致新能又在数据字典中增加一些新
25、条目,并且可能导致新的或精化的算法描述。随着分析过程的进展,经过问的或精化的算法描述。随着分析过程的进展,经过问题和解答的反复循环,分析员越来越深入具体地定义题和解答的反复循环,分析员越来越深入具体地定义了目标系统,最终得到对系统数据和功能要求的满意了目标系统,最终得到对系统数据和功能要求的满意了解。图了解。图3.1粗略地概括了上述分析过程。粗略地概括了上述分析过程。图图3.1 面向数据流自顶向下求精过程面向数据流自顶向下求精过程使用传统的访谈或面向数据流自顶向下求精方法定义使用传统的访谈或面向数据流自顶向下求精方法定义需求时,用户处于被动地位而且往往有意无意地与开需求时,用户处于被动地位而且
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 软件工程 导论
限制150内