系统需求分析与定义

上传人:cn****1 文档编号:579818800 上传时间:2024-08-27 格式:PPT 页数:207 大小:912.09KB
返回 下载 相关 举报
系统需求分析与定义_第1页
第1页 / 共207页
系统需求分析与定义_第2页
第2页 / 共207页
系统需求分析与定义_第3页
第3页 / 共207页
系统需求分析与定义_第4页
第4页 / 共207页
系统需求分析与定义_第5页
第5页 / 共207页
点击查看更多>>
资源描述

《系统需求分析与定义》由会员分享,可在线阅读,更多相关《系统需求分析与定义(207页珍藏版)》请在金锄头文库上搜索。

1、系统需求分析与定义一、计算机系统分析一、计算机系统分析二、软件需求分析二、软件需求分析三、结构化分析方法三、结构化分析方法四、快速原型化方法四、快速原型化方法五、面向对象分析方法五、面向对象分析方法六、需求分析文档的原则和评审六、需求分析文档的原则和评审1一、计算机系统分析一、计算机系统分析1.1.基于计算机的系统基于计算机的系统v基于计算机的系统的系统元素包括硬件、软基于计算机的系统的系统元素包括硬件、软件、人、数据库、文档和过程。件、人、数据库、文档和过程。软件软件 计算机程序、数据结构、相关文档;计算机程序、数据结构、相关文档;硬件硬件 电子计算设备(如电子计算设备(如CPU,存储器)存

2、储器)和外部机电设备(如传感器、马达等);和外部机电设备(如传感器、马达等);人人 硬件和软件的用户;硬件和软件的用户;数据库数据库 一个大型的有组织的信息集合;一个大型的有组织的信息集合;2基于计算机系统的系统元素基于计算机系统的系统元素输入系统系统过程过程硬件硬件软件软件文档文档人人数据库数据库输出3文档文档 手册、表格和其它用以描述系统使手册、表格和其它用以描述系统使用和操作的信息;用和操作的信息;过程过程 定义每一种系统元素的特定使用步定义每一种系统元素的特定使用步骤,或系统驻留的过程性环境。骤,或系统驻留的过程性环境。系统的层次结构系统的层次结构基于计算机的系统本身可以成为一个基于计

3、算机的系统本身可以成为一个更大的基更大的基于计算机系统中的一个元素于计算机系统中的一个元素,并称为那个更大,并称为那个更大系统的系统的宏元素宏元素。4工厂自动化系统工厂自动化系统工厂自动化系统工厂自动化系统库存系统库存系统制造系统制造系统信息系统信息系统材料传输系统材料传输系统制造单元制造单元机器人机器人数据输入设备数据输入设备数控机床数控机床52. 2. 系统分析系统分析系统分析是一个问题求解活动,目的是系统分析是一个问题求解活动,目的是揭示揭示、分析所期望的功能分析所期望的功能,并把它们分配到各个单独并把它们分配到各个单独的系统元素中去的系统元素中去。1)与用户合作确认用户的目标和约束;与

4、用户合作确认用户的目标和约束;2)导出导出功能功能、性能性能、接口接口、设计约束设计约束和和信息结信息结构的表示构的表示;3)将它们分配到每一个系统元素中。将它们分配到每一个系统元素中。6系统分析的任务系统分析的任务1)识别用户要求识别用户要求2)评价系统的可行性评价系统的可行性3)进行经济分析和技术分析进行经济分析和技术分析4)把功能分配给硬件、软件、人、数据库和其把功能分配给硬件、软件、人、数据库和其他系统元素他系统元素5)建立成本和进度限制建立成本和进度限制6)生成系统规格说明,形成所有后续工程生成系统规格说明,形成所有后续工程的基的基的基的基础。础。础。础。71)识别用户要求)识别用户

5、要求分析员必须考虑以下问题:分析员必须考虑以下问题:vv 功能功能功能功能和和和和性能性能性能性能vv 可靠性可靠性可靠性可靠性和和和和质量质量质量质量vv 总的系统目标总的系统目标总的系统目标总的系统目标vv 成本成本成本成本与与与与进度限制进度限制进度限制进度限制vv 制造需求制造需求制造需求制造需求vv 市场与竞争情况市场与竞争情况市场与竞争情况市场与竞争情况vv 有效的技术有效的技术有效的技术有效的技术vv 将来可能的扩充将来可能的扩充将来可能的扩充将来可能的扩充识别希望的功能和性能范围识别希望的功能和性能范围; 确定系统的功能、性能、约束和接口确定系统的功能、性能、约束和接口;82)

6、 2) 可行性研究可行性研究可行性研究可行性研究经济可行性经济可行性技术可行性技术可行性法律可行性法律可行性用户操作可行性用户操作可行性可行性研究的步骤可行性研究的步骤1)确定项目的确定项目的规模规模和和目标目标2)研究研究当前正在运行的系统当前正在运行的系统3)建立建立新系统的高层逻辑模型新系统的高层逻辑模型94)导出和评价导出和评价各种方案各种方案5)推荐推荐可行的方案可行的方案6)编写编写可行性研究可行性研究报告报告经济可行性经济可行性 成本成本效益分析效益分析成本估算成本估算专家估算技术(专家估算技术(Delphi技术)技术)成本估算模型(成本估算模型(COCOMO)效益估算效益估算投

7、资回收期投资回收期10纯收入纯收入投资回收率投资回收率技术可行性技术可行性 技术风险分析技术风险分析技术解决方案的实用性技术解决方案的实用性使用的技术实用化程度使用的技术实用化程度技术解决方案合理程度技术解决方案合理程度技术资源的可用性技术资源的可用性参与人员的工作基础参与人员的工作基础基础硬件基础硬件/软件的可用性软件的可用性软件工具实用性软件工具实用性11法律可行性法律可行性 侵权和责任问题侵权和责任问题专利法专利法著作权法著作权法软件保护条例软件保护条例用户操作可行性用户操作可行性用户类型:用户类型:外行型熟练型专家型外行型熟练型专家型操作习惯操作习惯使用单位的计算机使用情况使用单位的计

8、算机使用情况使用单位的规章制度使用单位的规章制度123 3)功能分配给系统元素的原则)功能分配给系统元素的原则对同一功能,可以分配不同的系统元素。对同一功能,可以分配不同的系统元素。为选取最有效的分配方案,使用一组权衡准则为选取最有效的分配方案,使用一组权衡准则进行评价进行评价a.a.项目考虑项目考虑 在预估的成本与进度范围内所选的系统在预估的成本与进度范围内所选的系统配置能否实现?配置能否实现?与成本与进度估算相关的风险有哪些?与成本与进度估算相关的风险有哪些?b.b.商业考虑商业考虑所选的系统配置是最可能有效益的解决所选的系统配置是最可能有效益的解决方案吗?方案吗?13能否成功地占领市场?

9、能否成功地占领市场?最终的报偿是否能表明所冒的开发风险最终的报偿是否能表明所冒的开发风险是值得的?是值得的?c.c.技术分析技术分析是否具备开发所有系统元素的技术实力是否具备开发所有系统元素的技术实力?能否确保功能和性能得到满足?能否确保功能和性能得到满足?能否对系统配置进行充分的维护?能否对系统配置进行充分的维护?是否具备技术资源?是否具备技术资源?与技术相关的风险有哪些?与技术相关的风险有哪些?d.d.生产评估生产评估14生产工具与设备是否有效?生产工具与设备是否有效?必需的过程是否短缺?必需的过程是否短缺?是否充分地实施了质量保证?是否充分地实施了质量保证?e.e.人员问题人员问题开发人

10、员是否得到培训?开发人员是否得到培训?用户是否了解这个系统将要做什么?用户是否了解这个系统将要做什么?f.f.环境接口环境接口所提交的系统配置与系统的外部环境的所提交的系统配置与系统的外部环境的接口是否合适?接口是否合适?15机器与机器、人与机器之间的通信是否机器与机器、人与机器之间的通信是否以智能方式处理?以智能方式处理?g.g.法律考虑法律考虑这种配置是否会引入违法的责任风险?这种配置是否会引入违法的责任风险?对责任问题是否给予了足够的保护?对责任问题是否给予了足够的保护?是否存在潜在的破坏是否存在潜在的破坏问题?问题?16二、软件需求分析二、软件需求分析需求分析是一项软件工程活动,其目的

11、是:需求分析是一项软件工程活动,其目的是:清楚地理解所要解决的问题,完整地获取用清楚地理解所要解决的问题,完整地获取用户要求;户要求;刻划出软件的功能和性能;刻划出软件的功能和性能;指明软件与其他系统元素的接口;指明软件与其他系统元素的接口;建立软件必须满足的约束。建立软件必须满足的约束。1. 1. 软件需求分析的目的软件需求分析的目的 17需求分析是一项软件工程活动,它包括:需求分析是一项软件工程活动,它包括:1)需求获取需求获取刻划出软件的刻划出软件的功能功能和和性能性能;指明软件与其他系统元素的指明软件与其他系统元素的接口接口;建立软件必须满足的建立软件必须满足的约束约束。2)需求建模需

12、求建模需求分析建立起来的模型为日后软件设计需求分析建立起来的模型为日后软件设计人员提供了可被翻译成人员提供了可被翻译成数据数据、体系结构体系结构、接口接口和和处理过程处理过程设计的模型。设计的模型。2.2. 需求分析的任务需求分析的任务183)需求规格说明需求规格说明需求规格说明为开发人员和用户提供软件需求规格说明为开发人员和用户提供软件开发完成时质量评价的依据。开发完成时质量评价的依据。4)需求评审需求评审需求分析研究的对象是需求分析研究的对象是用户的要求用户的要求。必须必须全面理解全面理解用户的各项要求,用户的各项要求,准确表准确表达达被接受的用户要求。被接受的用户要求。只有经过确切描述的

13、软件需求才能成为只有经过确切描述的软件需求才能成为软件设计的基础。软件设计的基础。 19软件开发是要实现软件开发是要实现目标系统的物理模型目标系统的物理模型。需求。需求分析的任务就是借助于分析的任务就是借助于当前系统的逻辑模型导当前系统的逻辑模型导出目标系统的逻辑模型出目标系统的逻辑模型,解决目标系统,解决目标系统 “做什做什么么” 的问题。的问题。目标系统目标系统当前系统当前系统物理模型物理模型逻辑模型逻辑模型模型化模型化抽象化抽象化物理模型物理模型逻辑模型逻辑模型具体化具体化实例化实例化理理解解需需求求导导出出怎么做怎么做做什么做什么20物理模型物理模型( (实施模型、实施模型、 技术模型

14、技术模型) )逻辑模型逻辑模型( (本质模型、本质模型、 概念模型概念模型) )当前当前系统系统描述现实系统是如何描述现实系统是如何在物理上实现的。在物理上实现的。描述重要的业务功能,不描述重要的业务功能,不考虑系统是如何实施的。考虑系统是如何实施的。目标目标系统系统描述新系统是如何实描述新系统是如何实施的(包括技术)。施的(包括技术)。描述新系统的主要业务功描述新系统的主要业务功能和用户新的需求,不考能和用户新的需求,不考虑系统应如何实施。虑系统应如何实施。21n需求分析的过程可以分成四个阶段:需求分析的过程可以分成四个阶段:1)需求获取需求获取研究系统的研究系统的可行性分析报告可行性分析报

15、告和和软件项目软件项目实施计划实施计划。从系统角度来理解软件并评审用于产生从系统角度来理解软件并评审用于产生计划估算的计划估算的软件范围是否恰当软件范围是否恰当;通过调研确定通过调研确定对目标系统的需求对目标系统的需求;提出这些提出这些需求实现条件需求实现条件,以及,以及需求应达需求应达到的标准到的标准。3. 需求分析的过程22建建立立分分析析所所需需要要的的沟沟通通途途径径,以以保保证证能能顺利地对问题进行分析。顺利地对问题进行分析。管理人员管理人员用户用户分析人员分析人员软件开发组软件开发组软件需求说明软件需求说明软件实施计划软件实施计划原型原型软件实施计划软件实施计划软件实施计划软件实施

16、计划软件需求说明软件需求说明软件需求说明软件需求说明原型原型原型原型232)需求建模需求建模 进行各种要求的进行各种要求的一致性一致性检查;检查;逐步细化所有的逐步细化所有的软件功能软件功能;分解分解数据域数据域,分配给各个子功能;,分配给各个子功能;找找出出系系统统各各成成分分之之间间的的联联系系、接接口口特特性性和和设计限制设计限制。判判断断是是否否存存在在不不合合理理的的用用户户要要求求或或用用户尚未提出的潜在要求。户尚未提出的潜在要求。综综合合成成系系统统的的解解决决方方案案,给给出出目目标标系系统的详细逻辑模型。统的详细逻辑模型。24常用的分析方法常用的分析方法面向数据流的结构化分析

17、方法面向数据流的结构化分析方法 (SA)面向数据结构的面向数据结构的Jackson方法方法 (JSD)面向数据结构的结构化数据系统开发方法面向数据结构的结构化数据系统开发方法 (DSSD)面向对象的分析方法面向对象的分析方法 (OOA) 等等253)编制需求分析阶段的文档编制需求分析阶段的文档软件需求规格说明;软件需求规格说明;初步的用户手册;初步的用户手册;确认测试计划;确认测试计划;修改和完善软件开发计划。修改和完善软件开发计划。4)需求评审(确认)需求评审(确认)作作为为需需求求分分析析阶阶段段工工作作的的复复查查手手段段,应应该该对对功功能能的的正正确确性性、文文档档的的一一致致性性、

18、完完备备性性、准准确确性性和和清清晰晰性性,以以及及其其他他需求给予评价。需求给予评价。261)1)需需要要能能够够表表达达和和理理解解问问题题的的信信息息域域和和功功能域能域v信息流信息流:数据和控制通过一个系统时的变:数据和控制通过一个系统时的变化方式。两个功能之间的数据化方式。两个功能之间的数据/控制传递就控制传递就确定了功能间的接口。确定了功能间的接口。 v信息内容信息内容:单个数据或控制对象,它们构:单个数据或控制对象,它们构成了某个更大的由软件变换生成的信息的成了某个更大的由软件变换生成的信息的集合。集合。v信息结构信息结构:各种数据和控制项的内部组织。:各种数据和控制项的内部组织

19、。4.4. 需求分析的原则需求分析的原则272)2)以以层层次次化化的的方方式式对对问问题题进进行行分分解解和和不不断细化断细化纵纵向向分分解解横向分解横向分解283)3)给出系统的逻辑视图和物理视图给出系统的逻辑视图和物理视图v软软件件需需求求的的逻逻辑辑视视图图给给出出的的是是软软件件要要达达到到的的功功能能和和要要处处理理的的数数据据之之间间的的关关系系,而而不不是实现的细节。是实现的细节。v软件需求的逻辑描述是软件设计的基础。软件需求的逻辑描述是软件设计的基础。v软软件件需需求求的的物物理理视视图图给给出出的的是是处处理理功功能能和和数数据据结结构构的的实实际际表表现现形形式式,这这往

20、往往往是是由由设设备本身决定的,因此推迟到设计阶段考虑。备本身决定的,因此推迟到设计阶段考虑。295.5. 需求获取需求获取需求获取是在需求获取是在问题问题及其及其最终解决方案最终解决方案之间架之间架设桥梁的第一步。设桥梁的第一步。获取需求的一个必不可少的结果是对项目中获取需求的一个必不可少的结果是对项目中描述的客户需求的普遍理解。一旦理解了需描述的客户需求的普遍理解。一旦理解了需求,分析人员求,分析人员、开发人员和客户就能探索出开发人员和客户就能探索出描述这些需求的多种解决方案。描述这些需求的多种解决方案。需求获取技术包括两方面的工作:需求获取技术包括两方面的工作:需求获取技术包括两方面的工

21、作:需求获取技术包括两方面的工作:1)建立获取用户要求的方法的框架;建立获取用户要求的方法的框架;建立获取用户要求的方法的框架;建立获取用户要求的方法的框架;2)支持和监控需求获取的过程的机制。支持和监控需求获取的过程的机制。支持和监控需求获取的过程的机制。支持和监控需求获取的过程的机制。301 1)软件需求的层次软件需求的层次a.业务需求业务需求反映了组织或客户开展相关业务的工作流和业反映了组织或客户开展相关业务的工作流和业务规则,是对系统、产品高层次的目标要求,务规则,是对系统、产品高层次的目标要求,与该组织或客户的业务领域有关。与该组织或客户的业务领域有关。b.用户需求用户需求 描述用户

22、使用软件需要完成哪些任务,可通过描述用户使用软件需要完成哪些任务,可通过用例用例 (use case) 图或场景说明加以阐明。图或场景说明加以阐明。c.功能功能非功能需求非功能需求 定义了开发人员必须实现的软件功能,而非功定义了开发人员必须实现的软件功能,而非功能需求如表所示能需求如表所示:31322 2)需求获取技术的基本特征)需求获取技术的基本特征一种好的需求获取技术,对于规范需求获取一种好的需求获取技术,对于规范需求获取活动,高效准确地获取需求定义,是十分重活动,高效准确地获取需求定义,是十分重要的。要的。好的需求获取技术,应具有如下基本特征:好的需求获取技术,应具有如下基本特征:a.提

23、供便于沟通的工具,如易于理解的语言;提供便于沟通的工具,如易于理解的语言;b.提供定义系统边界的方法;提供定义系统边界的方法;c.提供支持抽象的机制,如提供支持抽象的机制,如“分解分解”、“映映射射”等;等;33d.鼓励分析员使用面向问题的术语思考问题,鼓励分析员使用面向问题的术语思考问题,编写文档;编写文档;e.为分析员提供多种可供选择的解决方案;为分析员提供多种可供选择的解决方案;f.适应需求的变化。适应需求的变化。适于以上特征的需求获取方法:适于以上特征的需求获取方法:v基于数据流图的结构化分析方法;基于数据流图的结构化分析方法;v基于用例(基于用例(use case)的的建模方法。建模

24、方法。需求获取技术的关键点在于:需求获取技术的关键点在于:a.深入浅出深入浅出 需求获取要尽可能全面、细致。需求获取要尽可能全面、细致。34获获取取的的需需求求是是个个全全集集,系系统统真真正正实实现现的的是是个个子子集集。细细致致地地调调研研并并不不表表明明在在分分析析时时将将调调研研内内容容都都纳纳入入到到新新系系统统中中, 但但有有利利于于以以后的扩充。后的扩充。b.以流程为主线以流程为主线 在在与与用用户户交交流流的的过过程程中中,应应该该用用流流程程将将所所有有的的内内容容串串起起来来。如如信信息息、组组织织结结构构、处处理规则等。这样便于交流沟通。理规则等。这样便于交流沟通。流流程

25、程的的描描述述既既要要有有宏宏观观,又又要要有有微微观观。即即要要强强调调总总体体的的业业务务流流程程、全全生生存存期期的的业业务务流流程程,又又要要对对流流程程细细化化,有有分分支支的的业业务务流流程。程。353 3)需求获取应遵循的原则)需求获取应遵循的原则抽象和分解是在人们认识世界和改造世界的抽象和分解是在人们认识世界和改造世界的长期实践中总结出来的行之有效的原则,在长期实践中总结出来的行之有效的原则,在需求获取的过程中需遵循的三个原则:需求获取的过程中需遵循的三个原则:a.分解分解:捕获问题空间的整体:捕获问题空间的整体部分关系。如部分关系。如问题子问题分解;问题子问题分解;b.抽象抽

26、象:捕获问题空间的一般化:捕获问题空间的一般化特殊化关系。特殊化关系。如问题的不同变型;如问题的不同变型;c.投影投影:捕获问题空间的多维视图。即从不:捕获问题空间的多维视图。即从不同角度考察。同角度考察。364 4)需求获取的步骤)需求获取的步骤软件开发项目和组织文化的不同,对于需求软件开发项目和组织文化的不同,对于需求开发没有一个简单的、公式化的途径。开发没有一个简单的、公式化的途径。下面列出下面列出9个步骤,用以指导需求获取活动。个步骤,用以指导需求获取活动。1)定义项目的视图和范围定义项目的视图和范围 包括组织结构图、包括组织结构图、各部门的岗位各部门的岗位/角色列表。角色列表。2)确

27、定用户类确定用户类 包括人员包括人员/责任矩阵。责任矩阵。3)确定目标系统的业务工作流确定目标系统的业务工作流 包括物流、包括物流、资金流、信息流,建立业务工作流模型。资金流、信息流,建立业务工作流模型。374)运用需求获取技术开发用例(或数据流图)运用需求获取技术开发用例(或数据流图)并设置优先级并设置优先级 用以掌握主要业务规则。用以掌握主要业务规则。 5)收集来自用户的质量特性信息和其他非功收集来自用户的质量特性信息和其他非功能需求能需求 将性能、安全性、可靠性等需求将性能、安全性、可靠性等需求和其他设计约束结合业务规则,形成功能和其他设计约束结合业务规则,形成功能需求。需求。6)分类在

28、用例(或数据流图)中涉及的数据分类在用例(或数据流图)中涉及的数据 包括数据的组成和数据之间的关系。包括数据的组成和数据之间的关系。7)详细拟订用例(或数据流图)详细拟订用例(或数据流图) 建立功能建立功能模型,并进行审查,用以澄清需求获取的模型,并进行审查,用以澄清需求获取的参与者对需求的理解。参与者对需求的理解。388)开发并评估界面原型开发并评估界面原型 设想输入设备、输设想输入设备、输出设备、显示风格、显示方式、输出格式出设备、显示风格、显示方式、输出格式等,建立接口规范和信息流传输规则。等,建立接口规范和信息流传输规则。9)从功能描述中开发概念测试用例从功能描述中开发概念测试用例 用

29、测试用测试用例来验证用例(或数据流图)、功能需用例来验证用例(或数据流图)、功能需求和原型。求和原型。39需求获取可能是软件开发中最困难、最关键、需求获取可能是软件开发中最困难、最关键、最易出错及最需要交流的方面。表现在:最易出错及最需要交流的方面。表现在:v需求的不稳定性需求的不稳定性:在整个软件生存周期内:在整个软件生存周期内软件需求会随着时间的推移发生变化;软件需求会随着时间的推移发生变化;v需求的不准确性需求的不准确性:用户和开发人员的认识:用户和开发人员的认识会随着使用系统实现业务流程的实践逐步会随着使用系统实现业务流程的实践逐步提高,一开始不可能设想得面面俱到。提高,一开始不可能设

30、想得面面俱到。需求获取只有通过有效的客户需求获取只有通过有效的客户/开发者的合作开发者的合作才能成功。才能成功。 405 5)针对信息系统的需求调研方法)针对信息系统的需求调研方法a.调调研研用用户户的的组组织织结结构构、岗岗位位设设置置、职职责责定定义义,从从功功能能上上区区分分有有多多少少个个子子系系统统,划划分分系统的大致范围,明确系统的目标。系统的大致范围,明确系统的目标。b.调调研研每每个个子子系系统统的的工工作作流流程程、功功能能与与处处理理规规则则,收收集集原原始始信信息息资资料料,用用数数据据流流来来表表示物流、资金流、信息流三者的关系。示物流、资金流、信息流三者的关系。c.

31、对对调调研研内内容容事事先先准准备备,针针对对不不同同管管理理层层次次的的用用户户询询问问不不同同的的问问题题,列列出出问问题题清清单单。将将操操作作层层、管管理理层层、决决策策层层的的需需求求既既联联系系又区分开来,形成一个需求的层次。又区分开来,形成一个需求的层次。41d.对对与与用用户户沟沟通通的的情情况况及及时时总总结结归归纳纳,整整理理调调研研结结果果,初初步步构构成成需需求求基基线线。若若基基线线符符合合要要求,则需求获取完成。求,则需求获取完成。需求调研的主要手段:需求调研的主要手段:v发调查表;发调查表;v召开调查会;召开调查会;v向用户领域的专家个别咨询;向用户领域的专家个别

32、咨询;v实地考察,实地考察,v跟踪现场业务流程;跟踪现场业务流程;v查阅与待开发系统有关的资料;查阅与待开发系统有关的资料;v使用各种调查工具等。使用各种调查工具等。426 6)需求整理与表达的方法)需求整理与表达的方法采用采用穷举方法穷举方法可以避免遗漏。可以避免遗漏。采用采用归纳方法归纳方法,通过对各种情况进行综合分类,通过对各种情况进行综合分类可以使问题条理化。可以使问题条理化。采用采用抽象方法抽象方法,可以发现问题的实质,抓住问,可以发现问题的实质,抓住问题的主要矛盾,忽略其次要矛盾。题的主要矛盾,忽略其次要矛盾。需求整理可以多种手段共用,如组织结构图、需求整理可以多种手段共用,如组织

33、结构图、业务流程图、多叉树、关系矩阵、文字叙述、业务流程图、多叉树、关系矩阵、文字叙述、表格、图形等。需求描述包括组织结构与岗位表格、图形等。需求描述包括组织结构与岗位定义、业务流程、处理规则、数据项、功能以定义、业务流程、处理规则、数据项、功能以及上述及上述 5 个方面的关系。个方面的关系。43n结构化分析方法最初只是着眼于数据流,自顶结构化分析方法最初只是着眼于数据流,自顶向下,逐层分解,建立系统的处理流程,以向下,逐层分解,建立系统的处理流程,以数数据流图据流图和和数据字典数据字典为主要工具,建立系统的逻为主要工具,建立系统的逻辑模型。辑模型。n扩充后,将建模技术扩展到数据建模、功能建扩

34、充后,将建模技术扩展到数据建模、功能建模和行为建模,模和行为建模,以实体以实体-关系图关系图、数据流图数据流图和和控制流图控制流图、状态状态-迁移图迁移图为工具,为工具,数据字典数据字典为为核心,从不同视点建立系统的分析模型。核心,从不同视点建立系统的分析模型。三、结构化分析方法三、结构化分析方法44结构化分析的分析模型结构化分析的分析模型实体实体关系图关系图状态状态迁移图迁移图数据流数据流图图数据对象描述数据对象描述加工规格说明加工规格说明数据数据字典字典控制规格说明控制规格说明451. 1. 数据建模数据建模n数据模型包括三种互相关联的信息:数据模型包括三种互相关联的信息:数据对象数据对象

35、,描述对象的描述对象的属性属性,描述对象间相互连接的,描述对象间相互连接的关系关系。n在需求分析阶段描述数据对象和它们之间的关在需求分析阶段描述数据对象和它们之间的关系,使用了系,使用了E- -R图图。n例如,在教学管理中,一个教师可以教授零门、例如,在教学管理中,一个教师可以教授零门、一门或多门课程,每位学生也需要学习几门课一门或多门课程,每位学生也需要学习几门课程。因此,教学管理中涉及的对象(实体型)程。因此,教学管理中涉及的对象(实体型)有有学生学生、教师教师和和课程课程。46教学数据模型教学数据模型学号学号 姓名姓名 专业专业 性别性别 学生学生职工号职工号姓名姓名专业专业职称职称年龄

36、年龄教师教师课程号课程号 课程名课程名 学分学分 学时学时 课程课程学号学号学号学号课程号课程号课程号课程号成绩成绩成绩成绩选课选课47实例的关联有三种:一对一实例的关联有三种:一对一 (1:1); 一对多一对多(1:m);多对多多对多(n:m)。这种实例的关联称为这种实例的关联称为“基数基数”。基数表明了。基数表明了“重复性重复性”。教师教师学生学生教授教授基数基数:一位教师一位教师 基数基数:多位学生多位学生参与度参与度: :必须必须 参与度参与度: :可选可选48E-RE-R图中表示实体关联的符号如下:图中表示实体关联的符号如下:XY一个一个X与一个与一个Y相关联相关联一个一个X与一个或

37、多个与一个或多个Y相关联相关联XY一个一个X与零个或一个与零个或一个Y相关联相关联XY一个一个X与零个与零个, 一个或多个一个或多个Y相关联相关联XY一个一个X与一个与一个Y或或Z相关联相关联XYZ一个一个X与一个与一个Y与与Z相关联相关联XYZ492. 2. 功能建模和数据流图功能建模和数据流图n最初最初, , 结构化分析方法仅讨论数据流建模。目结构化分析方法仅讨论数据流建模。目标系统被表示成如图所示的数据变换流程图。标系统被表示成如图所示的数据变换流程图。系统的功能体现在核心的数据变换中。系统的功能体现在核心的数据变换中。外部实体外部实体外部实体外部实体外部实体外部实体外部实体外部实体目标

38、目标系统系统输入信息输入信息输入信息输入信息输出信息输出信息输出信息输出信息501 1)功能建模的思想)功能建模的思想n功能建模就是用抽象模型的概念,按照软件功能建模就是用抽象模型的概念,按照软件内部内部数据传递数据传递、变换变换的关系,的关系,自顶向下逐层自顶向下逐层分解分解,直到找到满足功能要求的所有可实现,直到找到满足功能要求的所有可实现的软件为止。的软件为止。n根据根据DeMarco的论述,功能模型使用了的论述,功能模型使用了数据数据流图流图来表达系统内数据的运动情况,而数据来表达系统内数据的运动情况,而数据流的变换则用结构化英语、判定表与判定树流的变换则用结构化英语、判定表与判定树来

39、描述。来描述。512 2)数据流图中的主要图形元素)数据流图中的主要图形元素数据加工数据加工 (数据变换数据变换)数据源或数据潭数据源或数据潭 (外部实体外部实体)数据流数据流数据存储文件数据存储文件或或或或52分层的数据流图分层的数据流图533 3)数据流图的层次结构)数据流图的层次结构为了表达数据处理过程,需要采用为了表达数据处理过程,需要采用层次结构层次结构的的数据流图。按照系统的层次结构进行数据流图。按照系统的层次结构进行逐步分解逐步分解,并以分层的数据流图反映这种结构关系。并以分层的数据流图反映这种结构关系。顶层流图顶层流图仅包含仅包含一个加工一个加工,它代表被开发系统。,它代表被开

40、发系统。它的输入流是该系统的输入数据,输出流是系它的输入流是该系统的输入数据,输出流是系统所输出数据统所输出数据底层流图底层流图是指其是指其加工不需再做分解加工不需再做分解的数据流图,的数据流图,它处在最底层它处在最底层中间层流图中间层流图则表示则表示对其上层父图的细化对其上层父图的细化。它的。它的每一加工可能继续细化,形成子图。每一加工可能继续细化,形成子图。544 4)功能建模的步骤功能建模的步骤对考生送来的报名单进行检查对考生送来的报名单进行检查;对合格的报名单编好准考证号后将准考证送给对合格的报名单编好准考证号后将准考证送给考生,并将汇总后的考生名单送给阅卷站考生,并将汇总后的考生名单

41、送给阅卷站;对阅卷站送来的成绩单进行检查,并根据考试对阅卷站送来的成绩单进行检查,并根据考试中心制定的合格标准审定合格者中心制定的合格标准审定合格者;制作考生通知单(含成绩及合格制作考生通知单(含成绩及合格/不合格标志)不合格标志)送给考生送给考生;按地区进行成绩分类统计和试题难度分析,产按地区进行成绩分类统计和试题难度分析,产生统计分析表。生统计分析表。实例实例 考务处理系统的功能考务处理系统的功能55顶层数据流图顶层数据流图考生考务处理系统考试中心阅卷站不合格报名表报名表准考证考生通知单成绩单合格标准错误成绩单考生名单统计分析表顶层图封闭在外部顶层图封闭在外部实体之间,反映系实体之间,反映

42、系统与外部的交互。统与外部的交互。56这个数据流图只是一个高层的这个数据流图只是一个高层的系统逻辑模型系统逻辑模型,它反映了目标系统要实现的功能以及系统与外它反映了目标系统要实现的功能以及系统与外界的关系。界的关系。该图或称为上下文环境图或语境图(该图或称为上下文环境图或语境图(Context Diagram)数据流图绘制步骤数据流图绘制步骤1)首先确定系统的首先确定系统的输入输入和和输出输出2)根据考务处理业务,画出根据考务处理业务,画出顶层数据流图顶层数据流图,以,以反映最主要业务处理流程反映最主要业务处理流程3)经过分析,考务业务处理的经过分析,考务业务处理的主要功能主要功能应当应当57

43、有有登记报名单登记报名单、统计成绩统计成绩两大项。两大项。主要数据主要数据流输入的源点流输入的源点和和输出终点输出终点是是考生考生、考试中心考试中心和和阅卷站阅卷站。4)然后从输入端开始,根据考务业务工作流,然后从输入端开始,根据考务业务工作流,画出数据流流经的各加工框,逐步画到输出画出数据流流经的各加工框,逐步画到输出端,得到第端,得到第1层数据流图。层数据流图。5)画加工的内部:用画第画加工的内部:用画第1层图同样的方法画出每层图同样的方法画出每个加工的个加工的DFD子图。子图。6)重复重复第第 5 步步,直至图中的尚未分解的加工都足,直至图中的尚未分解的加工都足够简单。至此得到够简单。至

44、此得到分层数据流图分层数据流图。58报名表准考证1登记报名表2统计成绩不合格报名表考生通知单成绩单统计分析表第第1 1层数据流图层数据流图考生名册合格标准考生名单错误成绩单59第第2 2层数据流图层数据流图 ( (a)a)1.1 检查报名表报名表准考证1.2编准考证号码不合格报名表考生名册考生名单合格报名表1.3登记考生合格报名表60第第2 2层数据流图层数据流图 ( (b)b)2.1检查成绩单2.2审定合格者考生名册正确成绩单2.3制作通知单2.4分析统计成绩2.5分析试题难度试题得分表考生通知单难度分析表合格标准分类统计表成绩单错误成绩单经审定的成绩单615 5)绘制数据流图的原则)绘制数

45、据流图的原则n数据流图上所有图形符号数据流图上所有图形符号只限于只限于前述四种基本前述四种基本图形元素,它们图形元素,它们的命名应反映其实际含义的命名应反映其实际含义; ;n数据流图的顶层图上的数据流必须封闭在外部数据流图的顶层图上的数据流必须封闭在外部实体之间;实体之间;n每个加工每个加工至少有一个输入数据流和一个输出数至少有一个输入数据流和一个输出数据流据流;允允许许一一个个加加工工有有多多条条数数据据流流流流向向另另一一个个加加工工,也也允允许许一一个个加加工工有有两两个个相相同同的的输输出出数数据据流流流流向向两个不同的加工。两个不同的加工。62在在数数据据流流图图中中,需需按按层层给

46、给加加工工框框编编号号。编编号号表表明该加工所处层次及上下层的亲子关系;明该加工所处层次及上下层的亲子关系;n规定任何一个数据流子图必须与它上一层的一规定任何一个数据流子图必须与它上一层的一个加工对应,两者的输入数据流和输出数据流个加工对应,两者的输入数据流和输出数据流必须一致。此即必须一致。此即父图与子图的平衡父图与子图的平衡;n如果一个数据文件仅在展开的数据流子图中使如果一个数据文件仅在展开的数据流子图中使用,可以在父图中不画出;用,可以在父图中不画出;n可以在数据流图中加入物质流,帮助用户理解可以在数据流图中加入物质流,帮助用户理解数据流图;数据流图;n数据流图中不可夹带控制流,但针对实

47、时系统数据流图中不可夹带控制流,但针对实时系统可以加入控制流,成为数据流图的扩展形式。可以加入控制流,成为数据流图的扩展形式。63 数据流和控制流举例数据流和控制流举例 (使用(使用WardWard和和mellormellor符号)符号)监控固监控固件和操件和操作接口作接口每个固件状态每个固件状态动作动作警告警告机器人机器人初始化初始化控制控制操作命令操作命令部件状态缓冲器部件状态缓冲器位置位置命令命令开始开始/停止停止处理处理机器人机器人命令命令机器人命令文件机器人命令文件操作设置操作设置处理活动处理活动记录机器记录机器人动作人动作位串位串64数据和控制模型的关系数据和控制模型的关系 DFD

48、加工规格说明加工规格说明加工模型加工模型DFD控制规格说明控制规格说明控制模型控制模型数据输出数据输出数据条件数据条件数据输入数据输入控制输入控制输入控制输出控制输出加工加工激活者激活者653. 3. 行为建模行为建模n行为建模给出需求分析方法的所有操作原则,行为建模给出需求分析方法的所有操作原则,但只有结构化分析方法的扩充版本才提供这种但只有结构化分析方法的扩充版本才提供这种建模的符号。建模的符号。1)状态迁移图状态迁移图2)Petri网网661 1)状态迁移图)状态迁移图例如例如, 有关有关CPU分配的进程的状态迁移。分配的进程的状态迁移。t2t3t4t1运行运行就绪就绪等待等待67状态迁

49、移图是描述系统的状态如何响应外部的状态迁移图是描述系统的状态如何响应外部的事件进行推移的一种图形表示。事件进行推移的一种图形表示。v “”表示可得到的系统表示可得到的系统状态状态v “”表示从一种状态向另一种状态的表示从一种状态向另一种状态的迁移迁移。S2S1S3t1t2t3t4t4t3t2t1事件事件状态状态S1 S2 S3S3S2S3S1682 2)PetriPetri网网Petri网已广泛地应用于硬件与软件系统的开发网已广泛地应用于硬件与软件系统的开发中,它适用于描述与分析相互独立、协同操作中,它适用于描述与分析相互独立、协同操作的处理系统,也就是并发执行的处理系统。的处理系统,也就是并

50、发执行的处理系统。Petri网简称网简称PNG (Petri Net Graph),它有两它有两种结点:种结点: 位置位置:符号符号“”,表示系统,表示系统状态状态。 转移转移:符号符号 “|”, 表示系统中的表示系统中的事件事件。 有向边有向边“”表示表示向转移的输入向转移的输入,或,或从转移从转移的输出的输出。69标记标记,或称,或称令牌令牌 (token),是表明系统当前处于是表明系统当前处于什么状态的标志。什么状态的标志。Petri网网可能的变化有:可能的变化有:70进程进程 得到资源得到资源 占用资源运行占用资源运行 释放资源释放资源 不用资源运行不用资源运行PR1 LOCK R 处

51、理处理11 UNLOCK R 处理处理12PR2 LOCK R 处理处理21 UNLOCK R 处理处理22例如,处理两个进程例如,处理两个进程PR1和和PR2的同步问题(此的同步问题(此时两个进程共用一个资源时两个进程共用一个资源R):):71724. 4. 数据字典数据字典n数据字典是结构化分析方法的核心。与各模型数据字典是结构化分析方法的核心。与各模型的图形表示配合,能清楚地表达数据处理的要的图形表示配合,能清楚地表达数据处理的要求求n词条描述词条描述 对于在模型中每一个被命名的图对于在模型中每一个被命名的图形元素,均加以定义,其内容有形元素,均加以定义,其内容有: 名字名字,别名别名或

52、编号或编号,分类分类,描述描述,定义定义,位置位置,其它其它,等。等。73(1)数据流词条描述)数据流词条描述数据流名:数据流名:说明:简要介绍它产生的原因和结果说明:简要介绍它产生的原因和结果数据流来源:来自何方数据流来源:来自何方数据流去向:去向何处数据流去向:去向何处数据流组成:数据结构数据流组成:数据结构数据量流通量:数据量,流通量数据量流通量:数据量,流通量1 1)词条描述)词条描述74(2)数据元素词条描述)数据元素词条描述类型:数字类型:数字(离散值,连续值离散值,连续值),文字,文字(编码编码类型类型)长度:长度:取值范围:取值范围:相关的数据元素及数据结构:相关的数据元素及数

53、据结构:(3)数据文件词条描述)数据文件词条描述数据文件名:数据文件名:简述:存放的是什么数据简述:存放的是什么数据输入数据:输入数据:输出数据输出数据: 75数据文件组成:数据结构数据文件组成:数据结构存储方式:顺序,直接,关键码存储方式:顺序,直接,关键码存取频率:存取频率: (4)加工逻辑词条描述)加工逻辑词条描述加工名:加工名:加工编号:反映该加工的层次加工编号:反映该加工的层次简要描述:加工逻辑及功能简述简要描述:加工逻辑及功能简述输入数据流:输入数据流:输出数据流:输出数据流:加工逻辑:简述加工程序,加工顺序加工逻辑:简述加工程序,加工顺序76(5)数据源及数据谭词条描述)数据源及

54、数据谭词条描述名称:外部实体名名称:外部实体名简要描述:什么外部实体简要描述:什么外部实体有关数据流:有关数据流:数目:数目:772 2)数据结构的描述)数据结构的描述 符符 号号 含含 义义 举举 例例 被定义为被定义为 与与 x = ab.,. 或或 .|. 或或 x = a , b,x = a | b . 或或 m.n 重复重复 x = a, x = 3a8(.) 可选可选 x = (a)“.” 基本数据元素基本数据元素 x = “a” . 连结符连结符 x = 1.978存折格式存折格式79存折户名所号帐号开户日性质存折户名所号帐号开户日性质(印印密密)1存取行存取行50户名户名2字母

55、字母24所号所号“001”.“999” 帐号帐号“00000001”.“99999999”开户日年月日开户日年月日性质性质“1”.“6” 注:注:“1”表示普通户,表示普通户,“5”表示工资户等表示工资户等印密印密“0” 注:印密在存折上不显示注:印密在存折上不显示存取行日期(摘要)支出存入余额存取行日期(摘要)支出存入余额操作复核操作复核803 3)基本加工逻辑说明)基本加工逻辑说明 对数据流图的每一个基本加工,必须有一个基对数据流图的每一个基本加工,必须有一个基本加工逻辑说明。本加工逻辑说明。基本加工逻辑说明必须描述基本加工如何把基本加工逻辑说明必须描述基本加工如何把输输入数据流变换为输出

56、数据流入数据流变换为输出数据流的加工规则。的加工规则。加工逻辑说明必须描述实现加工的策略而不是加工逻辑说明必须描述实现加工的策略而不是实现加工的细节。实现加工的细节。加工逻辑说明中包含的信息应是充足的,完备加工逻辑说明中包含的信息应是充足的,完备的,有用的,无冗余的。的,有用的,无冗余的。描述加工逻辑说明的工具:结构化语言、决策描述加工逻辑说明的工具:结构化语言、决策表、决策树。表、决策树。81(1) (1) 结构化语言结构化语言结构化语言是一种伪码,它的词汇表由结构化语言是一种伪码,它的词汇表由命令动词命令动词数据字典中定义的名字数据字典中定义的名字有限的自定义词有限的自定义词逻辑关系词逻辑

57、关系词 IF_THEN_ELSE、SWITCH、WHILE_DO、FOR、DO_WHILE等组成。等组成。它是一种介于自然语言和形式化语言之间的语它是一种介于自然语言和形式化语言之间的语言。用以消除在语法上的歧义性。言。用以消除在语法上的歧义性。82语言的语言的正文用基本控制结构进行分割正文用基本控制结构进行分割,加工中,加工中的的操作用自然语言短语来表示操作用自然语言短语来表示。其基本控制结构有三种:其基本控制结构有三种:v简单陈述句结构:简单陈述句结构:避免复合语句;避免复合语句;v重复结构:重复结构:while_do、for_do或或do_while结结构。构。v判定结构:判定结构:if

58、_then_else 或或switch_do 结构;结构;用结构化语言描述的规格说明的正文可以在计用结构化语言描述的规格说明的正文可以在计算机上编辑,不必过多地考虑语言的在语法上算机上编辑,不必过多地考虑语言的在语法上的限制,使得分析员可以集中考虑加工的策略的限制,使得分析员可以集中考虑加工的策略或规则。或规则。83商店业务处理系统中商店业务处理系统中“检查发货单检查发货单”if 发货单金额超过发货单金额超过$500 then if 欠款超过了欠款超过了60天天 then 在偿还欠款前不予批准在偿还欠款前不予批准 else (欠款未超期)欠款未超期) 发批准书,发货单发批准书,发货单 else

59、 (发货单金额未超过发货单金额未超过$500) if 欠款超过欠款超过60天天 then 发批准书,发货单及赊欠报告发批准书,发货单及赊欠报告 else (欠款未超期)欠款未超期) 发批准书,发货单发批准书,发货单 84(2) (2) 决策表决策表如果数据流图的加工需要依赖于如果数据流图的加工需要依赖于多个逻辑条件多个逻辑条件的取值的取值,使用决策表来描述比较合适。,使用决策表来描述比较合适。条件茬条件茬条件项条件项动作茬动作茬动作项动作项规则规则单个单个条件条件单个单个动作动作85以以“检查发货单检查发货单”为例为例操操在偿还欠款前在偿还欠款前不予批准不予批准 作作 发出批准书发出批准书 发

60、出发货单发出发货单 发出赊欠报告发出赊欠报告 1234条条 发货单金额发货单金额 $500 $500 $500 $500件件 赊欠情况赊欠情况 60天天60天天 60天天60天天86(3) (3) 判定树判定树判定树也是用来表达加工逻辑的一种工具。有判定树也是用来表达加工逻辑的一种工具。有时侯它比判定表更直观。时侯它比判定表更直观。检检查查发发货货单单金额金额$500金额金额 $500 欠款欠款60天天不发出批准书不发出批准书 欠款欠款 60天天发货单发货单发出批准书、发出批准书、 欠款欠款60天天发出批准书、发出批准书、发货单及赊欠报告发货单及赊欠报告 欠款欠款 60天天发出批准书、发出批准

61、书、发货单发货单87这是一种有效驾驭风险的技术。通过原型这是一种有效驾驭风险的技术。通过原型v可以增进软件者和用户对系统服务需求的理可以增进软件者和用户对系统服务需求的理解,使比较含糊的具有不确定性的解,使比较含糊的具有不确定性的软件需求软件需求(主要是功能)明确化(主要是功能)明确化。v可以容易地确定可以容易地确定系统的性能系统的性能,确认,确认各项主要各项主要系统服务的可应用性系统服务的可应用性,确认系统设计的可行,确认系统设计的可行性,确认系统作为产品的结果。性,确认系统作为产品的结果。v有的原型可以直接成为产品,有的略加修改有的原型可以直接成为产品,有的略加修改就可成为最终系统的一个组

62、成部分。就可成为最终系统的一个组成部分。四、快速原型化方法四、快速原型化方法881)探索型探索型: 目的是要弄清对目标系统的要求,确定所希望目的是要弄清对目标系统的要求,确定所希望的特性,并探讨多种方案的可行性。的特性,并探讨多种方案的可行性。2)实验型实验型: 这种原型用于大规模开发和实现之前,考核方这种原型用于大规模开发和实现之前,考核方案是否合适,规格说明是否可靠。案是否合适,规格说明是否可靠。3)进化型进化型: 这种原型的目的不在于改进规格说明,而是将这种原型的目的不在于改进规格说明,而是将系统建造得易于变化,在改进原型的过程中,系统建造得易于变化,在改进原型的过程中,逐步将原型进化成

63、最终系统。逐步将原型进化成最终系统。1. 1. 原型分类原型分类892. 2. 原型使用策略原型使用策略软件原型支持需求工程的两项活动:软件原型支持需求工程的两项活动:v需求获取需求获取v需求有效性验证需求有效性验证其他用途:其他用途:v用户培训用户培训v系统测试系统测试原型开发主要分类:原型开发主要分类:v进化式原型开发进化式原型开发v抛弃式原型开发抛弃式原型开发901 1)进化式原型开发)进化式原型开发基本思路是:先给出一个系统的最初实现,基本思路是:先给出一个系统的最初实现,让用户去使用和评价,不断进行细化和改善,让用户去使用和评价,不断进行细化和改善,经过多次这样的反复过程后形成最终的

64、完善经过多次这样的反复过程后形成最终的完善的系统。的系统。开发抽象描述开发抽象描述建立原型系统建立原型系统使用原型系统使用原型系统系统充分吗系统充分吗?交付系统交付系统否否是是912 2)抛弃式原型开发)抛弃式原型开发基本思路是:原型的根本作用是弄清楚需求和基本思路是:原型的根本作用是弄清楚需求和为风险评估提供补充信息。通过评估后,原型为风险评估提供补充信息。通过评估后,原型被抛弃,重新规划和实施系统的开发。被抛弃,重新规划和实施系统的开发。框架需求框架需求开发原型开发原型确定系统确定系统评估原型评估原型开发软件开发软件问题问题可可验证系统验证系统问题问题可可交付的软件系统交付的软件系统可复用

65、构件可复用构件923. 3. 原型开发技术原型开发技术1)可执行规格说明可执行规格说明2)基于场景基于场景 (scenario) 的设计的设计3)自动程序设计自动程序设计4)专用语言专用语言5)可复用可复用(reusable)的软件的软件6)简化假设简化假设931 1)可执行规格说明)可执行规格说明可执行规格说明是用于需求规格说明的一种自可执行规格说明是用于需求规格说明的一种自动化技术。使用这种方法,人们可以直接观察动化技术。使用这种方法,人们可以直接观察他们用语言规定的任何系统性行为。包括他们用语言规定的任何系统性行为。包括a)代数规格说明代数规格说明b)有限状态模型有限状态模型c)可执行的

66、数据流图可执行的数据流图94a)a)代数规格说明代数规格说明使用集合、定义于这些集合上的函数和定义于使用集合、定义于这些集合上的函数和定义于这些函数上的方程来描述对象。规格说明的操这些函数上的方程来描述对象。规格说明的操作语义用这些方程表示。作语义用这些方程表示。举例:定义一个无界的栈及其操作举例:定义一个无界的栈及其操作NEW_STACK: StackPUSH:Stack,Element StackPOP: Stack (Element | Undefined)POP( NEW_STACK ( ) ) UndefinedPOP( PUSH( Stack,elem) ) elem95b)b)有

67、限状态模型有限状态模型parnas提出的使用最广泛的一种可执行规格说提出的使用最广泛的一种可执行规格说明形式。从一个初始状态开始明形式。从一个初始状态开始接收输入接收输入,到,到产产生输出生输出,状态状态在在推移变化推移变化。施加在状态元素上。施加在状态元素上的约束确定了有效状态的推移。的约束确定了有效状态的推移。举例:建立用户程序对话举例:建立用户程序对话96startgoofinfobyenew entryreportenterquithelpprint97c)c)可执行的数据流图可执行的数据流图数据流图是基于结构化开发方法的结构化规数据流图是基于结构化开发方法的结构化规格说明。格说明。用

68、一种可执行的语言程序代替定义处理逻辑用一种可执行的语言程序代替定义处理逻辑的结构化英语,数据流图就成为由可执行语的结构化英语,数据流图就成为由可执行语言程序模块组成的网络,在一定环境或工具言程序模块组成的网络,在一定环境或工具的支持下就可成为一个可以执行的原型系统的支持下就可成为一个可以执行的原型系统。982 2)基于场景的设计)基于场景的设计场景是指用户界面的原型。场景是指用户界面的原型。一个场景用以一个场景用以模拟在系统运行期间用户经历的模拟在系统运行期间用户经历的事件事件。它提供了它提供了输入输入处理处理输出的屏幕格式和输出的屏幕格式和有关对话的模型有关对话的模型。因此,软件开发人员能够

69、给。因此,软件开发人员能够给用户显示系统的逼真的视图,使用户得以判断用户显示系统的逼真的视图,使用户得以判断是否符合他的意图。是否符合他的意图。分析员与用户的沟通往往通过演示场景。分析员与用户的沟通往往通过演示场景。可在任一场景中使用一套可复用的软件模块,可在任一场景中使用一套可复用的软件模块,以表达某一方面的要求。以表达某一方面的要求。99可使用一种原型语言来描述原型系统。原型可使用一种原型语言来描述原型系统。原型开发过程中用这种语言来定义开发过程中用这种语言来定义屏幕屏幕数据项数据项相关的操作相关的操作从系统的外部描述开始,开发与数据库从系统的外部描述开始,开发与数据库的接口的接口错误处理

70、和恢复过程错误处理和恢复过程等系统的与外部视图一致的细节。等系统的与外部视图一致的细节。1003 3)自动程序设计)自动程序设计在程序自动生成环境的支持下,利用计算机实在程序自动生成环境的支持下,利用计算机实现软件的开发。现软件的开发。可以自动或半自动地把用户的非过程式问题规可以自动或半自动地把用户的非过程式问题规格说明转换为某种高级语言程序:格说明转换为某种高级语言程序:1)演绎综合手段:演绎综合手段:基于数学推理的构造式证明。基于数学推理的构造式证明。2)程序变换手段:程序变换手段:将一程序转换成另一功能等价的程序,并将一程序转换成另一功能等价的程序,并保持其正确性不变。保持其正确性不变。

71、1013)实例推广手段:实例推广手段:从实例特征出发,将它推广为待编程序从实例特征出发,将它推广为待编程序的特征,最后得到程序。的特征,最后得到程序。4)过程化手段:过程化手段:研究甚高级语言的编译和知识的过程化研究甚高级语言的编译和知识的过程化。1024 4)专用语言)专用语言专用语言是应用领域的模型化语言。专用语言是应用领域的模型化语言。在原型开发中使用专用语言,可方便用户和软在原型开发中使用专用语言,可方便用户和软件开发者在计划中的系统特性方面的交流。件开发者在计划中的系统特性方面的交流。1035 5)软件复用技术)软件复用技术利用可复用的模块,做出适当的组合,就可得利用可复用的模块,做

72、出适当的组合,就可得到快速构造的原型系统。到快速构造的原型系统。为了快速地构造原型,这些模块为了快速地构造原型,这些模块v必须有简单而清晰的界面;必须有简单而清晰的界面;v应当尽量不依赖其它的模块或数据结构;应当尽量不依赖其它的模块或数据结构;v应具有一些通用的功能。应具有一些通用的功能。1046 6)简化假设)简化假设在开发过程中为使设计者迅速得到一个简化的在开发过程中为使设计者迅速得到一个简化的系统,可以预设一些使得问题简化的假设。尽系统,可以预设一些使得问题简化的假设。尽管这些假设可能实际上并不能成立,但它们在管这些假设可能实际上并不能成立,但它们在原型开发过程中可以使开发者的注意力集中

73、在原型开发过程中可以使开发者的注意力集中在一些主要的方面。一些主要的方面。1051. 1. 为什么要采用面向对象技术为什么要采用面向对象技术五、面向对象分析方法五、面向对象分析方法1)系统可维护性的要求系统可维护性的要求在系统中,功能往往是未来可能变化的因素,在系统中,功能往往是未来可能变化的因素,而问题领域的实体则不会有太多的变化。将这而问题领域的实体则不会有太多的变化。将这些实体作为对象构建系统,可以构造一个稳定些实体作为对象构建系统,可以构造一个稳定的系统。因为未来的功能变化只需改变对象内的系统。因为未来的功能变化只需改变对象内部的操作的实现,修改是局部的。部的操作的实现,修改是局部的。

74、2)系统可复用性的需要系统可复用性的需要代码级的复用使得开发者得以利用已有的程序代码级的复用使得开发者得以利用已有的程序106实现新的程序。软件开发实践期望不仅在代码实现新的程序。软件开发实践期望不仅在代码级,而且在设计级、框架级,甚至系统级都能级,而且在设计级、框架级,甚至系统级都能够复用。面向对象技术中的封装性、继承性、够复用。面向对象技术中的封装性、继承性、类属性等支持各种级别的复用。类属性等支持各种级别的复用。同一类中所有实例共享数据结构和行为同一类中所有实例共享数据结构和行为特征;特征;同一应用中所有实例通过继承共享数据同一应用中所有实例通过继承共享数据结构和行为特征;结构和行为特征

75、;不同应用中所有实例通过复用共享数据不同应用中所有实例通过复用共享数据结构和行为特征。结构和行为特征。3)程序无关性的期望程序无关性的期望107任何机器环境下,使用任意程序语言所编的程任何机器环境下,使用任意程序语言所编的程序,希望都能够通用。与机器相关的成分应该序,希望都能够通用。与机器相关的成分应该与处理逻辑无关。与处理逻辑无关。面向对象方法采用对象(类的实例面向对象方法采用对象(类的实例)作为系统作为系统的基本构造单位。类的多态性以及动态绑定技的基本构造单位。类的多态性以及动态绑定技术,是面向对象方法有别于结构化方法的实质术,是面向对象方法有别于结构化方法的实质性突破。它提倡接口和实现分

76、开的设计理念并性突破。它提倡接口和实现分开的设计理念并提供程序机制,为程序无关性的理想奠定了基提供程序机制,为程序无关性的理想奠定了基础。础。1082. 2. 什么是面向对象什么是面向对象Peter Coad 和和 Edward Yourdon 提提出出面面向向对对象象方方法的概念:法的概念: 面向对象面向对象 = 对象对象 + 分类分类 + 继承(继承(inheritance) + 消息通信(消息通信(communication with messages)采用这四个概念开发的软件系统是面向对象的。采用这四个概念开发的软件系统是面向对象的。 。一个面向对象的程序的每一成份应是一个面向对象的程

77、序的每一成份应是对象对象,计,计算是通过新的算是通过新的对象的建立对象的建立和和对象之间的通信对象之间的通信来来执行的执行的。1091 1)对象)对象(objectobject)对象是系统中用来描述客观事物的一个实体,对象是系统中用来描述客观事物的一个实体,是构成系统的一个基本单位,由一组属性和是构成系统的一个基本单位,由一组属性和一组对属性进行操作的服务组成。一组对属性进行操作的服务组成。对象对象 = = 对象名对象名+ +数据数据( (属性属性)+)+操作操作( (行为行为) )属性属性一般只能通过执行对象的操作来改变。一般只能通过执行对象的操作来改变。操作操作又称为方法或服务,它描述了对

78、象执行又称为方法或服务,它描述了对象执行的功能,若通过消息传递,还可以为其他对的功能,若通过消息传递,还可以为其他对象使用。象使用。110(50, 60)(50, 85)(35, 60)(35, 85)(50, 45)(60, 35)(56, 10)(46, 37)(10, 50)(20, 20)(23, 30)计算机窗口中的三个多边形计算机窗口中的三个多边形111drawmove( x, y)contains?(aPoint)(10, 50)(20, 20)(23, 30)triangledrawmove( x, y)contains?(aPoint)(46, 37)(50, 45)(60,

79、 35)(56, 10)quadrilateral1drawmove( x, y)contains?(aPoint)(35, 60)(35, 85)(50, 85)(50, 60)quadrilateral2表示多边形的三个对象表示多边形的三个对象1122 2)类)类(classificationclassification)把具有相同特征把具有相同特征(属性)和行为(操作)的对(属性)和行为(操作)的对象归在一起就形成了类象归在一起就形成了类 (class) 。类的定义包括一组数据属性和在数据上的一组类的定义包括一组数据属性和在数据上的一组合法操作。合法操作。在一个类中,每个对象都是类的实例

80、在一个类中,每个对象都是类的实例(Instance),它们都可使用类中的函数。它们都可使用类中的函数。类定义了各个实例所共有的结构,使用类的构类定义了各个实例所共有的结构,使用类的构造函数,可以在创建该类的实例时初始化这个造函数,可以在创建该类的实例时初始化这个实例的状态(实例变量)。实例的状态(实例变量)。113由两个四边形对象导出一个类由两个四边形对象导出一个类drawmove( x, y)contains?(aPoint)(46, 37)(50, 45)(60, 35)(56, 10)quadrilateral1drawmove( x, y)contains?(aPoint)(35, 6

81、0)(35, 85)(50, 85)(50, 60)quadrilateral2drawmove( x, y)contains?(aPoint)point1point2point3point4quadrilateral1143 3)消息)消息(messagesmessages)消息是一个实例与另一个实例之间传递的信息,消息是一个实例与另一个实例之间传递的信息,要求该实例执行类中定义的某个操作。要求该实例执行类中定义的某个操作。消息的使用类似于函数调用,消息中指定了某一消息的使用类似于函数调用,消息中指定了某一个实例,一个操作名和一个参数表个实例,一个操作名和一个参数表 (可能是空的可能是空的)

82、。接收消息的实例执行消息中指定的操作,并将形接收消息的实例执行消息中指定的操作,并将形式参数与参数表中相应的实参值结合起来。式参数与参数表中相应的实参值结合起来。消息有消息有 4 类:发送对象激活接收对象;发送对象类:发送对象激活接收对象;发送对象传送信息给接收对象;发送对象询问接收对象;传送信息给接收对象;发送对象询问接收对象;发送对象请求接收对象提供服务发送对象请求接收对象提供服务。1154 4)继承()继承(inheritanceinheritance)类类与与类类之之间间可可能能具具有有的的一一般般化化和和特特殊殊化化关关系系:即即 “is-a”关关系系,特特殊殊化化类类是是一一般般化

83、化类类的的子子类类,一一般般化化类类是是特特殊殊化化类类的的父父类类。在在这这种种关关系系下下形形成一种层次的关联。这就是继承关系。成一种层次的关联。这就是继承关系。交通工具交通工具轮船轮船汽车汽车飞机飞机116继承是父类和子类之间共享数据和方法的机制。继承是父类和子类之间共享数据和方法的机制。在定义和实现一个类时,可以在一个现成的类在定义和实现一个类时,可以在一个现成的类的基础上来进行,把这个现成类所定义的内容的基础上来进行,把这个现成类所定义的内容作为自己的内容,并加入若干新的内容。作为自己的内容,并加入若干新的内容。父类父类A和它的子类和它的子类B之间的继承关系之间的继承关系继承部分继承

84、部分增加部分增加部分从从A继承继承父父类类 A子子类类 B117分类分类只从一个父类得到继承,叫做只从一个父类得到继承,叫做“单重继承单重继承”。一一个个子子类类有有两两个个或或更更多多个个父父类类,则则称称“多多重重继承继承”。汽车汽车大客车大客车载重车载重车油罐车油罐车汽车汽车起重机起重机起重车起重车多多( (重重) )继承继承单单( (重重) )继承继承1185 5)多态)多态不同的对象对同一消息有不同的实现。不同的对象对同一消息有不同的实现。多态的实现受到继承的支持:利用类的继承的多态的实现受到继承的支持:利用类的继承的层次关系,把具有通用功能的消息存放在高层层次关系,把具有通用功能的

85、消息存放在高层次,而不同的实现这一功能的行为放在较低层次,而不同的实现这一功能的行为放在较低层次,在这些低层次上生成的对象能够给通用消次,在这些低层次上生成的对象能够给通用消息以不同的响应。息以不同的响应。参参数数多多态态:即即模模板板化化的的多多态态,通通过过参参数数代代换换确定所用的数据类型。确定所用的数据类型。包包含含多多态态:常常见见的的例例子子就就是是子子类类型型化化,即即一一个类型是另一个类型的子类型。个类型是另一个类型的子类型。1193. 3. 面向对象分析(面向对象分析(OOAOOA)面面向向对对象象分分析析(Object-Oriented Analysis),简称简称OOA。

86、OOA的目的:的目的:理解应用问题理解应用问题;确定系统的功能、性能要求。确定系统的功能、性能要求。面向对象面向对象分析法与结构化分析法之间的差别:分析法与结构化分析法之间的差别:1)结结构构化化分分析析方方法法中中的的E-R图图,关关注注实实体体的的属属性性和和相相互互间间的的关关系系;而而面面向向对对象象的的分分析析,除除此之外还要关注实体的行为。此之外还要关注实体的行为。1202)结结构构化化分分析析的的数数据据流流图图,将将数数据据和和加加工工处处理理分分开开;而而面面向向对对象象的的分分析析是是将将数数据据实实体体和和他他们的处理动作视为不可分割的整体来考虑的。们的处理动作视为不可分

87、割的整体来考虑的。3)结结构构化化分分析析方方法法建建造造系系统统的的元元素素是是基基于于功功能能,或或加加工工处处理理的的;而而面面向向对对象象分分析析方方法法建建造造系系统的基本元素是封装了操作的对象类。统的基本元素是封装了操作的对象类。因因此此,面面向向对对象象的的结结果果比比较较容容易易理理解解和和管管理理,便便于于修修改改,早早期期阶阶段段的的修修改改容容易易提提高高软软件件的的可可靠性靠性。1214. 4. 面向对象分析的活动面向对象分析的活动1)发现合适的对象发现合适的对象2)类和对象的标识类和对象的标识3)类和对象的细化类和对象的细化4)标识结构标识结构5)标识主题标识主题6)

88、标识属性标识属性7)标识实例连接标识实例连接8)标识服务和消息标识服务和消息1221 1)发现合适的对象)发现合适的对象面向对象技术应能显著提高软件开发的质量和面向对象技术应能显著提高软件开发的质量和生产率,但这种好处只有在正确标识了对象集生产率,但这种好处只有在正确标识了对象集合的基础上才能得以实现。合的基础上才能得以实现。没有一个规范的建立对象的方法,软件开发人没有一个规范的建立对象的方法,软件开发人员只能盲目地建立对象。员只能盲目地建立对象。发现对象的方法发现对象的方法对象存储数据并具有职能(即服务)。传统的对象存储数据并具有职能(即服务)。传统的系统分析工具的主要功能是定义数据或说明处

89、系统分析工具的主要功能是定义数据或说明处理,对发现对象具有非常重要的作用。理,对发现对象具有非常重要的作用。123有有 3 种非常有用的传统系统分析工具:数据流种非常有用的传统系统分析工具:数据流图、实体关系图以及状态迁移图,涉及了系统图、实体关系图以及状态迁移图,涉及了系统的的 3 个不同的、相互独立的方面(处理过程、个不同的、相互独立的方面(处理过程、数据和控制),称为三视图模型数据和控制),称为三视图模型 3VM (3-View Modeling)。)。对象是与应用领域的有关概念紧密结合在一起对象是与应用领域的有关概念紧密结合在一起的。概念的处理主要是基于自然语言:书面语的。概念的处理主

90、要是基于自然语言:书面语或口语。或口语。 将语言规则应用到软件系统分析中的处理方法将语言规则应用到软件系统分析中的处理方法称为称为基于语言的信息分析基于语言的信息分析(Linguisticbased Information Analysis,简称简称LIA)。)。 1243VM和和LIA有别于且独立于面向对象分析,这些有别于且独立于面向对象分析,这些技术的应用是一个不断反复的过程。目的就是在技术的应用是一个不断反复的过程。目的就是在实际应用中最大限度地降低对象标识的主观性。实际应用中最大限度地降低对象标识的主观性。将将3VM和和LIA应用于发现对象的过程见图。应用于发现对象的过程见图。客户执行

91、LIA建立3VM建立OOA模型设计处理资源库资源工作表格用户对话OOA模型3VM125(1) (1) 三视图模型(三视图模型(3 3VMVM)a.实体关系模型实体关系模型实体关系图实体关系图(ERD)是是OOA的一个有力的前哨。的一个有力的前哨。实体很有可能成为对象;实体很有可能成为对象;实体的属性则表示成最终要由对象进行存储的数实体的属性则表示成最终要由对象进行存储的数据;据;实体之间的关系有可能将建立实体之间的关系有可能将建立“关联对象关联对象”。表示关系(连接)的基数,以及因果条件可能成表示关系(连接)的基数,以及因果条件可能成为维持这些关系的服务。为维持这些关系的服务。ERD的问题的问

92、题:v标识的实体可能与应用领域概念无关;标识的实体可能与应用领域概念无关;v对于那些不存储数据的对象显得无能为力。对于那些不存储数据的对象显得无能为力。126b.数据流模型数据流模型 有两种形式的数据流模型有两种形式的数据流模型a)上下文图上下文图 确定一个全局的系统边界;确定一个全局的系统边界;外部实体就是候选对象;外部实体就是候选对象;对象集合都必须阐明这些上下文图中的数据对象集合都必须阐明这些上下文图中的数据流是如何被接收、处理及生成的。流是如何被接收、处理及生成的。b)分层的数据流图分层的数据流图待开发系统的功能可待开发系统的功能可分解成为一些基本单元分解成为一些基本单元,这些基本单元

93、可看成是基本处理规格说明这些基本单元可看成是基本处理规格说明(PPSs) 。PPSs最后必须对应于对象的方法或服务。最后必须对应于对象的方法或服务。127c.状态迁移模型状态迁移模型 有两种形式的状态迁移模型有两种形式的状态迁移模型:a)事件响应模型事件响应模型标识出系统必须识别的所发生的每一个标识出系统必须识别的所发生的每一个 事件,事件,以及系统必须作出的预期响应的事件;以及系统必须作出的预期响应的事件;标识一系列的识别事件的对象、产生响应的标识一系列的识别事件的对象、产生响应的对象。对象。b) 状态迁移图状态迁移图能标识事件识别对象和对事件产生响应的对能标识事件识别对象和对事件产生响应的

94、对象;象;有助于标识保存状态信息的属性。有助于标识保存状态信息的属性。注意:并非所有注意:并非所有3VM工具对每个系统都是有用的。工具对每个系统都是有用的。128(2) (2) 基于语言的信息分析基于语言的信息分析(LIALIA)3VM技术并不能专门用于指导正确地标识出新系技术并不能专门用于指导正确地标识出新系统的对象集合。统的对象集合。基于语言的信息分析基于语言的信息分析(LIA)在发现对象方面给出在发现对象方面给出了大量的指导。了大量的指导。LIA的目的是标识出应用领域的概念空间及这些的目的是标识出应用领域的概念空间及这些概念之间的关系。概念之间的关系。有两种十分有效的有两种十分有效的LI

95、A技术:技术:a.短语频率分析短语频率分析 (Phrase Frequency Analysis,简称简称PFA)b.矩阵分析矩阵分析 (Matrix Analysis,简称简称MA ) 129a. a. 短语频率分析(短语频率分析(PFAPFA)短语频率分析搜索选定的问题陈述(资源文本)短语频率分析搜索选定的问题陈述(资源文本),标识可以表示问题领域概念的术语。,标识可以表示问题领域概念的术语。PFA是标识概念而不是标识语法单元。是标识概念而不是标识语法单元。PFA清单的建立基本上是一个客观的过程,甚至清单的建立基本上是一个客观的过程,甚至可以自动处理。但可能大多数标识出来的概念可以自动处理

96、。但可能大多数标识出来的概念是与目标系统无关的。是与目标系统无关的。PFA的优点就在于能广泛地标识问题领域的概念的优点就在于能广泛地标识问题领域的概念集合,并对它们进行评估,判定哪些与目标软集合,并对它们进行评估,判定哪些与目标软件无关。件无关。130 accepted subscriptionboard of advisorscorrespondence address accompanied paymentbrown wrapper, plaincost, shipping accounting departmentbulk shipmentcountry actual expiratio

97、n datebureau, subscription servicecountry, foreign additional subscriptioncheck paymentcredit card order address, corporatecommision, subscriptioncredit card payment address, correspondenceservicecurrent author address, homecompany subscriptioncustomer address, subscriptioncomplimentary subscription

98、database advisors, board ofcomplimentary subscriptiondate, actual expiration agency, subscription servicequerydate, expiration agreement,complimentary subscriptiondate, expired distributor-publisherreviewdaleted, complimentary annual subscription price complimentary subscriptionsubscription articled

99、eleteddepartment, accounting associated siteconstituent copiesdepartment, corporate authorcontinued subscriptiondirect subscription author, contributingcontributing authordiscount, subscription 131PFA将将名词名词和和动词动词标识为标识为候选实体和属性候选实体和属性。但。但由于由于名词动词的标识是非常主观的名词动词的标识是非常主观的,可根据,可根据什么是名词或动词,以及根据分析员的理解,什么是名词或

100、动词,以及根据分析员的理解,才能确定哪些名词或动词是要找的。才能确定哪些名词或动词是要找的。对于任一有用的应用领域资源,对于任一有用的应用领域资源,PFA可能会产可能会产生一个长长的概念的清单生一个长长的概念的清单。许多被标识出的概念因与目标软件无关而被丢许多被标识出的概念因与目标软件无关而被丢弃,但其它的则会成为弃,但其它的则会成为OOA模型的成份。模型的成份。将将PFA清单转换为清单转换为OOAOOD工作表格工作表格。列出。列出对各个概念的理解和选择,这将有助于对象的对各个概念的理解和选择,这将有助于对象的选出。选出。132Small Bytes 订阅系统订阅系统 OOAOOD 工作表格工

101、作表格 条条 目目 (0) (1) (2) (3) (4) (5) (6) (7) (8) 注注 释释 ACCEPTION SUBSCRI PTION SUBSCRIPTION的属性的属性 ACCOMPANIED PA YMENT 对对payment的不同类型不加的不同类型不加 以区分以区分 ACCOUNTING DEPAR TMENT 已超出已超出SBSS 的应用领域的应用领域 ACTUAL EXPIRATION DATE SUBSCRIPTION的属性的属性 ADDITIONAL SU B SCRIPTION SUBSCRIPTION的可能属的可能属 性性 , 或可能是派生类型或可能是派生

102、类型-基基 类型结构类型结构 ARTICLE ASSOCIATED SITE SITE 的属性的属性 AUTHOR .(0) 不适用不适用 , 可能无关可能无关, 超出指定系统的环境超出指定系统的环境(4) 可能描述对象的服务可能描述对象的服务(1) 可能的对象类可能的对象类(5) 与实现相关与实现相关 , 可能是属于问题领域部分的条目可能是属于问题领域部分的条目(2) 可能是派生类型基类型结构的一部分可能是派生类型基类型结构的一部分(6) 可能是属于人机交互部分的条目可能是属于人机交互部分的条目包括泛化特化结构和整体部分结构包括泛化特化结构和整体部分结构(7) 可能是属于任务管理部分的条目可

103、能是属于任务管理部分的条目(3) 可能描述对象类的属性或实例关系可能描述对象类的属性或实例关系(8) 可能是属于数据管理部分的条目可能是属于数据管理部分的条目 133b. b. 矩阵分析(矩阵分析(MAMA)通常是在初始对象标识出来后再使用。通常是在初始对象标识出来后再使用。矩阵的行和列是应用领域的概念。矩阵的行和列是应用领域的概念。矩阵中的元素表示了相对应的行与列上的概念之矩阵中的元素表示了相对应的行与列上的概念之间的关联关系。间的关联关系。分析员标识出应用领域的关系(事务规则)分析员标识出应用领域的关系(事务规则); 而而且还可能会发现新的在初始的且还可能会发现新的在初始的PFA中没有产生

104、的中没有产生的对象。对象。134SBSS 应用应用领域领域部分部分二维二维MA表表135发现对象过程发现对象过程用用OOAOOD工作表格为指南,对照工作表格为指南,对照3VM标识标识的各种成份检查应用领域的各种概念。的各种成份检查应用领域的各种概念。例如,查阅部分事件表,有一个事件,叫做例如,查阅部分事件表,有一个事件,叫做“评审赠阅清单的时间评审赠阅清单的时间”。翻查翻查SBSS的的OOA/OOD工作表格工作表格,查找与这个查找与这个事件相关联的应用领域的概念,发现事件相关联的应用领域的概念,发现“赠阅评赠阅评审审”最合适。最合适。最后决定把最后决定把“赠阅评审赠阅评审”作为作为SBSS的一

105、个对象。的一个对象。136这个对象是一个这个对象是一个“事件识别者事件识别者”对象,它不存对象,它不存储任何数据,所以用实体关系模型不能发现这储任何数据,所以用实体关系模型不能发现这样的对象。样的对象。任何一个系统中的对象必须是事件的识别者或任何一个系统中的对象必须是事件的识别者或事件的响应者。如果一个对象既不能识别事件事件的响应者。如果一个对象既不能识别事件的发生,也不能响应任一事件,它就不是属于的发生,也不能响应任一事件,它就不是属于这个系统的对象。这个系统的对象。这也是一个这也是一个反复迭代反复迭代的过程。对这个模型所进的过程。对这个模型所进行的不断细化的过程中,可能会删除一些已存行的不

106、断细化的过程中,可能会删除一些已存在的对象或建立一些新的对象。在的对象或建立一些新的对象。1372 2)类和对象的标识)类和对象的标识对象应该具有记忆其自身状态的能力。对象应该具有记忆其自身状态的能力。而且对而且对象的属性应当是系统所关心的,或是系统正常象的属性应当是系统所关心的,或是系统正常运行所必需的。运行所必需的。对象应当具有有意义的服务(操作),可用以对象应当具有有意义的服务(操作),可用以修改对象本身的状态(属性值)。修改对象本身的状态(属性值)。而且对象可而且对象可以利用其服务为系统中的其它对象提供外部服以利用其服务为系统中的其它对象提供外部服务。务。对象应当具有多个有意义的属性。

107、对象应当具有多个有意义的属性。仅有一个属仅有一个属性的对象最好表示为其他对象的属性。性的对象最好表示为其他对象的属性。138为对象定义的属性应适合于对象的所有实例。为对象定义的属性应适合于对象的所有实例。如果对象的某一个实例不具备某属性,则意味如果对象的某一个实例不具备某属性,则意味着应用领域中存在尚未发现的继承关系。应该着应用领域中存在尚未发现的继承关系。应该利用继承关系将原来的对象和特殊的实例区分利用继承关系将原来的对象和特殊的实例区分为两个对象。为两个对象。为对象定义的有关服务应适合于对象的所有实为对象定义的有关服务应适合于对象的所有实例。例。对象应是软件分析模型的必要成分,与设计和对象

108、应是软件分析模型的必要成分,与设计和实现方法无关。实现方法无关。在面向对象的分析活动中,对对象的识别和筛在面向对象的分析活动中,对对象的识别和筛选取决于应用问题及其背景。也取决于分析员选取决于应用问题及其背景。也取决于分析员的主观思维。的主观思维。139例如,例如,ECSECS的应用领域概念的应用领域概念需要注意的是:需要注意的是:必须区分一个概念是属于应用必须区分一个概念是属于应用问题的范畴,还是实现的范畴。问题的范畴,还是实现的范畴。考虑与电梯有关的所有事务的清单。考虑与电梯有关的所有事务的清单。可以删去可以删去其中一些很明显是关于其中一些很明显是关于ECS如何实现的而不是如何实现的而不是

109、用于说明它干什么的条目用于说明它干什么的条目。例如电梯线路、电。例如电梯线路、电梯中断和电梯轮等。梯中断和电梯轮等。清单中有些东西显然很重要,会成为对象、属清单中有些东西显然很重要,会成为对象、属性、结构或服务。如性、结构或服务。如电梯容量电梯容量、电梯号电梯号和和电梯电梯位置位置等,就可以成为电梯的属性。等,就可以成为电梯的属性。分析时需注意理解词汇用法上的问题。分析时需注意理解词汇用法上的问题。140例如,电梯控制系统,电梯控制程序和电梯例如,电梯控制系统,电梯控制程序和电梯控制器有什么不同?它们是一回事吗?考虑控制器有什么不同?它们是一回事吗?考虑是否需要在是否需要在ECS中设置一个基本

110、对象,由中设置一个基本对象,由它提供一些控制和智能协调?它提供一些控制和智能协调?是否要为每一部电梯配置管理程序?是否要为每一部电梯配置管理程序?是否这些功能由电梯调度程序来实现?是否这些功能由电梯调度程序来实现?又例如,又例如,在在列出的所有与电梯按钮有关的条列出的所有与电梯按钮有关的条目,考虑目,考虑所有的单词在应用领域是否有意义?所有的单词在应用领域是否有意义?是否有些单词是用户随便用来描述问题的是否有些单词是用户随便用来描述问题的? ( press和和push真的有区别吗?真的有区别吗?)141哪些单词是与实现有关的?哪些单词是与实现有关的?一个对象一个对象BUTTON是否仅具有属性是

111、否仅具有属性up和和down,是否还有别的想法?是否还有别的想法?可能对清单的其它部分还需要讨论。例如,是可能对清单的其它部分还需要讨论。例如,是否区分否区分乘客乘客和和即将上电梯的乘客即将上电梯的乘客。目前可以不去考虑将来可能会增添的功能,例目前可以不去考虑将来可能会增添的功能,例如安置红外线检测器如安置红外线检测器。1423 3)类和对象的细化)类和对象的细化标识了标识了OOA模型候选对象的初始清单和其他结模型候选对象的初始清单和其他结构后,可以通过建立初始的构后,可以通过建立初始的OOA模型的对象类模型的对象类来细化这个清单。来细化这个清单。将将PFA表转换成表转换成OOA/OOD工作表

112、格非常有效。工作表格非常有效。它可以将每一个被标识的应用领域的概念归于它可以将每一个被标识的应用领域的概念归于某一特定的面向对象模型的成分。某一特定的面向对象模型的成分。在发现和细化对象过程中仍使用三视图模型。在发现和细化对象过程中仍使用三视图模型。a)事件响应图事件响应图标识出系统必须对其响应的事件,标识出系统必须对其响应的事件,及由谁来识别这个事件,谁来响应这个事件。及由谁来识别这个事件,谁来响应这个事件。143b)实体关系图实体关系图对于实现事务数据处理的应用来对于实现事务数据处理的应用来说,可以帮助人们发现在初步的评审中忽略说,可以帮助人们发现在初步的评审中忽略了的对象。了的对象。c)

113、如果系统中有许多看起来相互无关联的事情如果系统中有许多看起来相互无关联的事情在进行,那么这个系统应可以划分成多个子在进行,那么这个系统应可以划分成多个子系统,系统,用上下文图来帮助确定要选择的对象用上下文图来帮助确定要选择的对象和类和类。d)在细化过程中可能会发现一些在初步分析中在细化过程中可能会发现一些在初步分析中没有被用户标识出来的概念,这些新的概念没有被用户标识出来的概念,这些新的概念有可能成为对象。有可能成为对象。e)对于每一个最终得到的对象,可写一个简短对于每一个最终得到的对象,可写一个简短的描述的描述,说明类的成员关系。,说明类的成员关系。144ECSECS的三视图模型的三视图模型

114、使用使用上下文图上下文图可以直接帮助我们确定可以直接帮助我们确定ECS系统系统被封闭在那些外部实体的范围内。被封闭在那些外部实体的范围内。目的地目的地按钮面板按钮面板召唤召唤按钮面板按钮面板电梯电梯楼层楼层传感器传感器超载超载传感器传感器目的地目的地按钮面板按钮面板到达到达按钮面板按钮面板召唤召唤按钮面板按钮面板马达马达电梯控电梯控制系统制系统目的地请求目的地请求召唤请求召唤请求电梯状态电梯状态楼层消息楼层消息超载状况超载状况修改到达修改到达修改目的地修改目的地修改召唤修改召唤马达命令马达命令145因为因为ECS不需要存储重要的或复杂的数据,只不需要存储重要的或复杂的数据,只需储存电梯到达楼层

115、、当前召唤、要到达的目需储存电梯到达楼层、当前召唤、要到达的目的地等信息,所以的地等信息,所以ERD不是很重要。不是很重要。楼层楼层电梯电梯召唤召唤目的地目的地联系联系联系联系联系联系联系联系ECS的的ERD146 ECSECS的的的的事件响应模型事件响应模型事件响应模型事件响应模型最有用。它说明了最有用。它说明了最有用。它说明了最有用。它说明了所有可所有可所有可所有可能发生的事件能发生的事件能发生的事件能发生的事件以及以及以及以及系统对这些事件应作出什么系统对这些事件应作出什么系统对这些事件应作出什么系统对这些事件应作出什么响应响应响应响应。这些事件包括:这些事件包括:这些事件包括:这些事件

116、包括:a)某一确定时刻发生的事件。某一确定时刻发生的事件。某一确定时刻发生的事件。某一确定时刻发生的事件。b)系统能够识别的事件。系统能够识别的事件。系统能够识别的事件。系统能够识别的事件。事件的描述应详细到与应用领域和用户的陈述事件的描述应详细到与应用领域和用户的陈述事件的描述应详细到与应用领域和用户的陈述事件的描述应详细到与应用领域和用户的陈述一致。并由用户来评价。一致。并由用户来评价。一致。并由用户来评价。一致。并由用户来评价。ECSECS的事件响应模型的事件响应模型147148标识事件的三个准则:标识事件的三个准则:a)发生在某一确定的时刻;发生在某一确定的时刻;b)能够检测出事件的发

117、生;能够检测出事件的发生;c)能够能够找到事先定制好的响应。找到事先定制好的响应。如果具备这三个条件,就可以纳入事件响应模如果具备这三个条件,就可以纳入事件响应模型中。型中。在上下文中使用在上下文中使用事务分离原则事务分离原则:分析模型与设分析模型与设计模型分开建立。计模型分开建立。例如,在事件响应模型中没有对例如,在事件响应模型中没有对按钮按钮和和指示灯指示灯进行讨论,因为它们属于实现技术的范畴,放进行讨论,因为它们属于实现技术的范畴,放在在OOD模型模型中考虑。中考虑。149状态迁移图状态迁移图主要用于描述电梯等对象的可能状主要用于描述电梯等对象的可能状态的变化,也属于态的变化,也属于EC

118、S的控制视图。的控制视图。空闲空闲停止停止超载超载忙忙开锁开锁加锁加锁上人上人下人下人运行运行到达到达运行运行开锁开锁上人上人1501)决策表决策表是描述处理的一种形式。在是描述处理的一种形式。在ECS中它中它用于表示与调度或分派电梯有关的处理。例用于表示与调度或分派电梯有关的处理。例如如ECS的部分决策表如图所示。在图中,的部分决策表如图所示。在图中,DPA (对于当前电梯对于当前电梯) 目的地在当前楼层之上目的地在当前楼层之上DPB (对于当前电梯对于当前电梯) 目的地在当前楼层之下目的地在当前楼层之下DPC (对于当前电梯对于当前电梯) 目的地即为当前楼层目的地即为当前楼层SPU 当前电

119、梯上行方向有召唤当前电梯上行方向有召唤SPD 当前电梯下行方向有召唤当前电梯下行方向有召唤CD 电梯方向电梯方向 (在到达当前楼层时在到达当前楼层时)SD 状态方向状态方向 (在到达当前楼层时在到达当前楼层时)FLR SCHD 当前楼层的某部电梯的调度楼层当前楼层的某部电梯的调度楼层USD 修改状态方向修改状态方向 (到达当前楼层之后到达当前楼层之后)151152对象和类的细化的原则对象和类的细化的原则标识对象标识对象 从从OOA/OOD工作表格入手,查阅工作表格,工作表格入手,查阅工作表格,对照对照3VM审定每个条目,初步标识对象。审定每个条目,初步标识对象。a)实体关系图中的实体实体关系图

120、中的实体代表在系统中存储的数代表在系统中存储的数据,它们是否在工作表格上有相应的条目?据,它们是否在工作表格上有相应的条目?如果有,就将其标识为对象。如果有,就将其标识为对象。b)检查检查事件响应模型中的事件事件响应模型中的事件,看其是否在工,看其是否在工作表格上有相应(或相似)的条目?如果有,作表格上有相应(或相似)的条目?如果有,该事件成为事件识别者对象。该事件成为事件识别者对象。c)对模型的响应者做类似的处理。对模型的响应者做类似的处理。153d)检查检查上下文图中的外部实体上下文图中的外部实体,如果与工作表,如果与工作表格中的条目有关,它们有可能成为外部界面格中的条目有关,它们有可能成

121、为外部界面的对象。的对象。e)如果有如果有数据流图数据流图,应查看,应查看基本处理基本处理,研究这,研究这些基本处理可以标识在工作表格的哪些条目些基本处理可以标识在工作表格的哪些条目中。中。严格审查每一个候选对象严格审查每一个候选对象对每一个候选对象,需要回答下列问题:对每一个候选对象,需要回答下列问题:每个对象都每个对象都具有一定的功能具有一定的功能吗?吗?其他对象是否其他对象是否要求该对象执行某些功能要求该对象执行某些功能?每个对象每个对象存储信息存储信息吗?吗?154其它对象是否要求这个对象其它对象是否要求这个对象报告它所存储的报告它所存储的信息信息?是否每个对象都是否每个对象都封装了一

122、些对外隐藏的信息封装了一些对外隐藏的信息?是否每个对象都是否每个对象都有一个生存期有一个生存期,描述了其产,描述了其产生、生存期中的各种状态及其最后的消亡?生、生存期中的各种状态及其最后的消亡?如果向应用领域的专家描述这个候选对象,如果向应用领域的专家描述这个候选对象,他能否马上明白这个他能否马上明白这个对象的重要性对象的重要性?对于每个候选对象,不要求每个问题的回答都对于每个候选对象,不要求每个问题的回答都是肯定的,但是肯定的,但不能全都是否定的不能全都是否定的。155再回到系统,写下发生在你所描述的系统范畴再回到系统,写下发生在你所描述的系统范畴之外的所有可能事件,回答下列问题:之外的所有

123、可能事件,回答下列问题:哪些事件你的系统能够识别?哪些事件你的系统能够识别?哪些事件你的系统必须作出响应?(可能需哪些事件你的系统必须作出响应?(可能需要画出系统的上下文图)要画出系统的上下文图)对于列出的每一个可能发生的事件,哪些候对于列出的每一个可能发生的事件,哪些候选对象能够识别这个事件?那些候选对象产选对象能够识别这个事件?那些候选对象产生系统响应?生系统响应?是否所有的候选对象都涉及到了?是否所有的候选对象都涉及到了?还需要建立其它对象吗?还需要建立其它对象吗?156是否存在既不能识别所发生的事件,又不能是否存在既不能识别所发生的事件,又不能产生系统响应的对象?如果有,这些对象的产生

124、系统响应的对象?如果有,这些对象的功能又是什么?功能又是什么? 你的系统是否需要与其他系统或其他人相关你的系统是否需要与其他系统或其他人相关?是否标识了介于接口之间的对象?(不要与是否标识了介于接口之间的对象?(不要与实现接口的对象,如实现接口的对象,如GUI对象或网络对象混对象或网络对象混淆)淆)扮演对象的角色,设身处地审视每个候选对象。扮演对象的角色,设身处地审视每个候选对象。 去掉它会如何?去掉它会如何? 能否真正复用到?能否真正复用到?157最终选定的最终选定的ECSECS的对象集合的对象集合E-R图图中的实体,基本被选作为对象;中的实体,基本被选作为对象;上下文图上下文图中的外部实体

125、,大部分被选作为对象;中的外部实体,大部分被选作为对象;从从事件事件-响应模型响应模型中选定部分对象。中选定部分对象。到达事件到达事件召唤事件召唤事件到达面板到达面板召唤面板召唤面板楼层楼层目的地事件目的地事件目的地面板目的地面板超载传感器超载传感器电梯电梯电梯马达电梯马达158没有成为没有成为ECS对象的条目对象的条目大楼大楼 它不属于应用领域范畴。它不属于应用领域范畴。按钮按钮 它属人机界面部分,属它属人机界面部分,属OOD模型。模型。门门 门由电梯机械系统管理,电梯只需报告它门由电梯机械系统管理,电梯只需报告它什么时候就绪即可。什么时候就绪即可。电梯调度电梯调度 它不是电梯调度系统的基本

126、成分,它不是电梯调度系统的基本成分,是实现系统的技术。是实现系统的技术。楼层传感器楼层传感器 属于实现部分,它的与实现无关属于实现部分,它的与实现无关的版本就是的版本就是到达事件到达事件。指示灯指示灯 属于人机界面部分。属于人机界面部分。1594) 4) 标识结构:组织对象标识结构:组织对象结构标识了对象之间的组装和继承关系。结构标识了对象之间的组装和继承关系。在在OOA分析中,标识结构是处理分析中,标识结构是处理OOA模型复杂模型复杂性的机制之一。性的机制之一。典型的结构有两种:典型的结构有两种:a.泛化泛化特化结构特化结构(Gen Spec结构结构)b.整体整体部分结构部分结构(Whole

127、 Part结构结构)前者标识了前者标识了继承继承关系,后者标识了关系,后者标识了聚合聚合关系。关系。160泛化泛化- -特化关系特化关系整体整体- -部分关系部分关系1.*1.*11161泛化泛化特化结构特化结构父对象父对象(泛化对象)(泛化对象)的属性或特征可以为其所的属性或特征可以为其所有的子对象有的子对象(特化对象)(特化对象)共享共享,就是泛化,就是泛化 特特化关系或一般化化关系或一般化 特殊化关系。特殊化关系。父对象和子对象之间的这种属性共享称之为继父对象和子对象之间的这种属性共享称之为继承性。承性。继承适合于结构、表格和定义,不适用于值。继承适合于结构、表格和定义,不适用于值。例如

128、,例如,“赠阅赠阅”是是“订阅订阅”的特化,它们之间的特化,它们之间共享了许多属性和服务。如共享了许多属性和服务。如“订阅状态订阅状态”。“赠阅赠阅”和和“订阅订阅”可以共享可以共享“订阅状态订阅状态”的定的定义义,但不能共享但不能共享“订阅状态订阅状态”的特定值。的特定值。162以特殊化的视点来看,一个以特殊化的视点来看,一个泛化泛化 特化结构特化结构可可以看作是以看作是“is a”或或“is a kind of”结构。例如,结构。例如, a Truck Vehicle is a Vehicle a Truck Vehicle is a kind of Vehicle在在泛化泛化 特化结构特

129、化结构中,使用中,使用继承继承将较一般化的将较一般化的属性和服务放在一般化的类和对象中。属性和服务放在一般化的类和对象中。一般来讲,可以从各个子对象中抽出共性,构一般来讲,可以从各个子对象中抽出共性,构成父对象,建立泛化成父对象,建立泛化 特化结构。又可以以父特化结构。又可以以父对象为基础,派生出新的子对象。对象为基础,派生出新的子对象。163整体整体部分结构部分结构从整体的视点来看,一个从整体的视点来看,一个整体整体 部分结构部分结构可看可看作一个作一个“has a”或或“is a part of”结构。例如,结构。例如, Vehicle has a Engine Engine is a p

130、art of Vehicle其中,其中,Vehicle是整体对象,是整体对象,Engine是局部对象。是局部对象。164整体整体部分结构的种类部分结构的种类应当寻找什么应当寻找什么总体总体 部分部分(Assembly-Parts)关联,如关联,如飞飞机机 发动机发动机之间的关系。之间的关系。包容包容 内含内含(Container-Content)关联,如关联,如飞机飞机 飞行员飞行员之间的关系。之间的关系。集合集合 成员成员(Collection-Members)关联,关联,如如机构机构 职员职员之间的关系。之间的关系。165ECSECS的结构的结构标识结构总会追加一些尚未被标识的对象,如标识

131、结构总会追加一些尚未被标识的对象,如没有实例的父对象。没有实例的父对象。 OOAOOD工作表格可以用于标识整体工作表格可以用于标识整体 部分部分关系和泛化关系和泛化 特化关系。特化关系。LIA 可以不同方式使用。可以不同方式使用。物理部件与物理关联物理部件与物理关联 可以利用整体可以利用整体可以利用整体可以利用整体- - - -部分关系描述与电梯和楼层有关部分关系描述与电梯和楼层有关部分关系描述与电梯和楼层有关部分关系描述与电梯和楼层有关的各个对象之间的关系。的各个对象之间的关系。的各个对象之间的关系。的各个对象之间的关系。 166 ECS的的整体整体- -部分部分 关系关系 物理部件物理部件

132、 物理关联物理关联11111111超载传感器超载传感器电梯马达电梯马达目的地面板目的地面板到达面板到达面板电梯电梯11召唤面板召唤面板楼层楼层167 ECSECS的的的的泛化泛化泛化泛化- - - -特化特化特化特化 关系关系关系关系用于识别不同类事用于识别不同类事件中的共同性。件中的共同性。电梯事件电梯事件召唤事件召唤事件到达事件到达事件目的地事件目的地事件面板面板到达面板到达面板目的地面板目的地面板1685 5)标识主题)标识主题对于复杂的应用,可能会识别出大量的对象,对于复杂的应用,可能会识别出大量的对象,但分析员同时能处理的对象却不宜过多。因此但分析员同时能处理的对象却不宜过多。因此引

133、入主题机制。引入主题机制。通过建立多个主题,可以处理规模比较大的复通过建立多个主题,可以处理规模比较大的复杂模型。降低系统的复杂性。杂模型。降低系统的复杂性。每个主题可以看作为一个子模型,甚至是一个每个主题可以看作为一个子模型,甚至是一个子系统。在分析的某一时刻,分析人员只需重子系统。在分析的某一时刻,分析人员只需重点关注某个特定的主题域。点关注某个特定的主题域。可以可以 依据子领域、子系统,甚至组织或地域区依据子领域、子系统,甚至组织或地域区分主题。分主题。169定义主题的策略定义主题的策略将所有标识出来的有意义的对象,按关系耦合将所有标识出来的有意义的对象,按关系耦合的紧密程度,划分为一组

134、,定义主题。的紧密程度,划分为一组,定义主题。这些主这些主题在现实世界应当是自然的。题在现实世界应当是自然的。根据主题,将需求分析任务分配给分析组成员。根据主题,将需求分析任务分配给分析组成员。随着需求分析的进展,对应用领域的理解逐步随着需求分析的进展,对应用领域的理解逐步深入,可根据分析的中间结果,对主题的划分深入,可根据分析的中间结果,对主题的划分和定义进行动态调整。和定义进行动态调整。对于大型的应用,甚至对于大型的应用,甚至可以通过多级子主题,可以通过多级子主题,将某些主题包含的内容进一步细分。将某些主题包含的内容进一步细分。170将将每每一种结构(包括整体一种结构(包括整体- -部分结

135、构、泛化部分结构、泛化- -特特化结构)中最上层的类提升成为主题,而且很化结构)中最上层的类提升成为主题,而且很可能泛化可能泛化- -特特化结构的成分会被分解成不同的子化结构的成分会被分解成不同的子主题主题;将各不属于任何结构的类提升主题将各不属于任何结构的类提升主题;检查在相同或类似的问题领域中以前做面向对检查在相同或类似的问题领域中以前做面向对象分析的结果,看是否有可直接复用的主题。象分析的结果,看是否有可直接复用的主题。171ECSECS的主题层的主题层ECS中存在两种结构,可以分为两个主题:中存在两种结构,可以分为两个主题:中存在两种结构,可以分为两个主题:中存在两种结构,可以分为两个

136、主题:电梯管理主题电梯管理主题电梯管理主题电梯管理主题 用于控制硬件;用于控制硬件;用于控制硬件;用于控制硬件;电梯调度主题电梯调度主题电梯调度主题电梯调度主题 检测事件发生,对电梯做相检测事件发生,对电梯做相检测事件发生,对电梯做相检测事件发生,对电梯做相应的调度。应的调度。应的调度。应的调度。电梯管理电梯管理电梯管理电梯管理目的地面板目的地面板超载传感器超载传感器到达面板到达面板电梯马达电梯马达面板面板电梯电梯172对于比较小的模型,象对于比较小的模型,象ECS,多个主题的使用多个主题的使用并不是必须的。并不是必须的。电梯控制电梯控制电梯控制电梯控制电梯事件电梯事件到达事件到达事件召唤事件

137、召唤事件召唤面板召唤面板楼层楼层目的地事件目的地事件1736 6)标识属性)标识属性对象所保存的信息称为它的属性,通常把它们对象所保存的信息称为它的属性,通常把它们封装在对象内部。封装在对象内部。类的属性所描述的是状态信息,每个实例的属类的属性所描述的是状态信息,每个实例的属性值表达了该实例的具体状态值。性值表达了该实例的具体状态值。实例连接可以看成是一种事务规则或应用领域实例连接可以看成是一种事务规则或应用领域限制,表达了一个类的实例与其它类的实例的限制,表达了一个类的实例与其它类的实例的可能对应关系。可能对应关系。 174标识属性的策略标识属性的策略分析人员应从问题陈述中搞清:哪些性质在当

138、分析人员应从问题陈述中搞清:哪些性质在当前问题的背景下完全刻画了被标识的某个对象前问题的背景下完全刻画了被标识的某个对象?通常,属性对应于带定语的名词。如通常,属性对应于带定语的名词。如“文件的文件的密码密码”、“学生的出生年月学生的出生年月”等等。等等。属性在问题陈述中不一定有完整的显式的描述,属性在问题陈述中不一定有完整的显式的描述,要识别出所关心的潜在属性,需要对应用领域要识别出所关心的潜在属性,需要对应用领域有深刻的理解。有深刻的理解。对象的导出属性应当略去。例如,对象的导出属性应当略去。例如,对象的导出属性应当略去。例如,对象的导出属性应当略去。例如,“ “年龄年龄年龄年龄” ”是是

139、是是由属性由属性由属性由属性“ “出生年月出生年月出生年月出生年月” ”与与与与系统当前日期导出。因系统当前日期导出。因系统当前日期导出。因系统当前日期导出。因此,此,此,此,“ “年龄年龄年龄年龄” ”不应作为人的基本属性。不应作为人的基本属性。不应作为人的基本属性。不应作为人的基本属性。175如果在标识属性的过程中发生以下情况,应考如果在标识属性的过程中发生以下情况,应考虑调整对象识别的结果:虑调整对象识别的结果:如果属性只适应于对象的某些实例,而不适如果属性只适应于对象的某些实例,而不适应于对象的另外一些实例,则往往意味着存应于对象的另外一些实例,则往往意味着存在另一类对象,而且这两类对

140、象之间可能存在另一类对象,而且这两类对象之间可能存在着继承关系。在着继承关系。仅有一个属性的对象可以标识为其它对象的仅有一个属性的对象可以标识为其它对象的属性。属性。对于对象的某一个属性,如果该对象的某一对于对象的某一个属性,如果该对象的某一个特定实例会有多重属性值,则应当将该对个特定实例会有多重属性值,则应当将该对象分为几个对象。象分为几个对象。176标识属性的方法标识属性的方法有多种标识属性的方法有多种标识属性的方法OOAOOD工作表格工作表格中大量所中大量所标识的概念都标识的概念都可以表达事物的特性可以表达事物的特性(如学生)、(如学生)、存储数据的存储数据的需求需求, 都可以成为封装的

141、属性都可以成为封装的属性。数据视图数据视图 ERD中中实体可能对应于某一对象实体可能对应于某一对象。这样,这样,实体属性就会简单地成为对象属性实体属性就会简单地成为对象属性 。如果如果实体实体(如人)(如人)不只对应于一类对象不只对应于一类对象,那么,那么这个实体的属性必须分配到这个实体的属性必须分配到OOA模型的不同模型的不同类的对象之中类的对象之中。177ECSECS的属性的属性1781797 7)标识实例连接)标识实例连接实例连接指明一个类中的对象是如何与另一个实例连接指明一个类中的对象是如何与另一个类中的对象相连的。类中的对象相连的。这一过程中的一个重要工作就是为每一个实例这一过程中的

142、一个重要工作就是为每一个实例连接连接定义定义重复度重复度(1:1, 1:m, m:m)和和参与度参与度(可可选的或强制的选的或强制的)。当标识完实例连接之后,可能需要对对象进行当标识完实例连接之后,可能需要对对象进行调整。例如,在调整。例如,在OOA模型中允许有多对多的关模型中允许有多对多的关系存在,这是应用领域中要求的。想要消除多系存在,这是应用领域中要求的。想要消除多对多的关系,可能会产生新的对象。对多的关系,可能会产生新的对象。180多对多的实例连接通常可以通过第三个对象分解多对多的实例连接通常可以通过第三个对象分解为两个一对多的实例连接。当这第三个对象在应为两个一对多的实例连接。当这第

143、三个对象在应用领域中有实际含义时,就找到了用领域中有实际含义时,就找到了 一个新的对一个新的对象。否则就应保持原来的多对多关系,以防止产象。否则就应保持原来的多对多关系,以防止产生错误。生错误。对象之间标识相互关系时,对象之间标识相互关系时,MA是一个非常有用是一个非常有用的工具。的工具。 在标识出一个对象的初始集合后,就可以构造出在标识出一个对象的初始集合后,就可以构造出一个一个MA矩阵。矩阵。矩阵的各行行头和各列是已标识的对象。矩阵的矩阵的各行行头和各列是已标识的对象。矩阵的每个矩阵项表示相关对象之间可能的限制。每个矩阵项表示相关对象之间可能的限制。181通过检查问题描述,或与用户交流等,

144、来填写通过检查问题描述,或与用户交流等,来填写这个矩阵,标识对象之间的相互关系。这个矩阵,标识对象之间的相互关系。ECSECS的实例连接的实例连接下图中的实例连接表明了下图中的实例连接表明了ECS必须遵守的基本必须遵守的基本的应用领域规则。的应用领域规则。182电梯管理电梯管理电梯管理电梯管理电梯控制电梯控制电梯控制电梯控制111110:m0:m0:m1:m1:m电梯电梯楼层楼层超载传感器超载传感器电梯马达电梯马达到达面板到达面板面板面板目的地面板目的地面板目的地事件目的地事件电梯事件电梯事件到达事件到达事件召唤面板召唤面板召唤事件召唤事件183一个到达事件精确地与一部电梯相关联一个到达事件精

145、确地与一部电梯相关联 1一部电梯与零个或多个到达事件相关联一部电梯与零个或多个到达事件相关联 0:m一个目的地事件精确地与一个目的地面板相关一个目的地事件精确地与一个目的地面板相关联联 1一个目的地面板与零个或多个目的地事件相关一个目的地面板与零个或多个目的地事件相关联联 0:m一个召唤事件精确地与一个召唤面板相关联一个召唤事件精确地与一个召唤面板相关联 1一个召唤面板与零个或多个召唤事件相关联一个召唤面板与零个或多个召唤事件相关联 0:m电梯与楼层是多对多的实例连接,意味着所有电梯与楼层是多对多的实例连接,意味着所有的电梯与所有的楼层都可以相关联的电梯与所有的楼层都可以相关联 1:m, 1:

146、m184在大型的复杂的模型中,常常有我们没有发现在大型的复杂的模型中,常常有我们没有发现的冗余实例连接。如果发现有一个闭合的环,的冗余实例连接。如果发现有一个闭合的环,肯定在这个环中有一个冗余的实例连接。这取肯定在这个环中有一个冗余的实例连接。这取决于每个实例连接的参与度和重复度。决于每个实例连接的参与度和重复度。185目的地面板目的地面板超载传感器超载传感器电梯马达电梯马达电电 梯梯面面 板板到达面板到达面板电梯管理电梯管理电梯管理电梯管理到达事件到达事件电梯事件电梯事件楼楼 层层目的地事件目的地事件召唤面板召唤面板召唤事件召唤事件电梯控制电梯控制电梯控制电梯控制10:m0:m0:m1868

147、 8)标识服务与消息)标识服务与消息前面所建立的前面所建立的OOA模型中的每一个成分表示的模型中的每一个成分表示的是应用领域中的某一个静态方面。是应用领域中的某一个静态方面。现在建立对象之间的动态关系,它们可表示为现在建立对象之间的动态关系,它们可表示为对象所执行的服务以及对象之间传递的消息。对象所执行的服务以及对象之间传递的消息。建立动态关系的目的是要说明所标识的各种对建立动态关系的目的是要说明所标识的各种对象是如何共同协作,使系统运作起来象是如何共同协作,使系统运作起来 。首先标识在每个对象中必须的一组服务首先标识在每个对象中必须的一组服务;然后将服务与对象的属性相比较,验证其一然后将服务

148、与对象的属性相比较,验证其一致性。如果已经标识了对象的属性,那么每致性。如果已经标识了对象的属性,那么每个属性必然关联到某个服务个属性必然关联到某个服务; ;187画出对象之间的消息通信路径画出对象之间的消息通信路径,协调系统的,协调系统的行为。行为。自底向上的方法:自底向上的方法:访问每一个对象,给出访问每一个对象,给出在对象生存期中从建立到消亡的所有状态。在对象生存期中从建立到消亡的所有状态。每一状态的改变都关联到对象之间消息的每一状态的改变都关联到对象之间消息的传递。从对象着手,逐渐向上分析。传递。从对象着手,逐渐向上分析。 自顶向下的方法:自顶向下的方法:一个对象必须识别某个一个对象必

149、须识别某个系统中发生或出现的事件,产生发送给其系统中发生或出现的事件,产生发送给其它对象的消息,由那些对象作出响应。所它对象的消息,由那些对象作出响应。所以可以从系统行为着手,然后逐渐分析到以可以从系统行为着手,然后逐渐分析到对象。对象。188引入一个标识和描述对象之间相互通信的工具:引入一个标识和描述对象之间相互通信的工具:序列图序列图。对于每一个事件,序列图表明了由哪一个对象对于每一个事件,序列图表明了由哪一个对象来识别事件的发生,产生什么消息;其它哪些来识别事件的发生,产生什么消息;其它哪些对象接收这些消息,并产生什么响应。对象接收这些消息,并产生什么响应。在序列图中对象的特殊符号:在序

150、列图中对象的特殊符号:事件识别者对象事件识别者对象事件识别者对象事件识别者对象包含有询问包含有询问包含有询问包含有询问/ / / /决策算法服务的对象决策算法服务的对象决策算法服务的对象决策算法服务的对象189序列序列图的表示方法图的表示方法各各EROI图的对象图的对象各种事件各种事件各种事件各种事件源点源点源点源点源点源点源点源点目的地目的地目的地目的地目的地目的地目的地目的地(无回应)无回应)无回应)无回应)(有回应)有回应)有回应)有回应)对象到对象的消息对象到对象的消息190.消息的次序没有意义,消息的次序没有意义,各个消息可以同时发送各个消息可以同时发送 总是领先于总是领先于总是领先

151、于总是领先于 .以不确定的次序接收消息以不确定的次序接收消息(可以是同时发生的)(可以是同时发生的)A B C D E 1 2 3 4 5 6 7 8例例时时序序191ECSECS的服务的服务真正能体现真正能体现真正能体现真正能体现ECS的是对象间的动态行为的是对象间的动态行为的是对象间的动态行为的是对象间的动态行为 即即即即服服服服务务务务和和和和消息消息消息消息. .为给模型中的每个对象分配合适的服务,需要解为给模型中的每个对象分配合适的服务,需要解为给模型中的每个对象分配合适的服务,需要解为给模型中的每个对象分配合适的服务,需要解决系统的控制问题:哪个对象负责系统的全局行决系统的控制问题

152、:哪个对象负责系统的全局行决系统的控制问题:哪个对象负责系统的全局行决系统的控制问题:哪个对象负责系统的全局行为?是否需要一个集中控制对象?为?是否需要一个集中控制对象?为?是否需要一个集中控制对象?为?是否需要一个集中控制对象?实际上,有实际上,有实际上,有实际上,有两个关键问题两个关键问题两个关键问题两个关键问题摆在分析人员面前:摆在分析人员面前:摆在分析人员面前:摆在分析人员面前:哪个(哪些)对象哪个(哪些)对象哪个(哪些)对象哪个(哪些)对象“ “记忆记忆记忆记忆” ”当前还未处理的召当前还未处理的召当前还未处理的召当前还未处理的召唤请求和目的地请求?唤请求和目的地请求?唤请求和目的地

153、请求?唤请求和目的地请求?哪个(哪些)对象哪个(哪些)对象哪个(哪些)对象哪个(哪些)对象包含有包含有包含有包含有分派电梯至所需楼层分派电梯至所需楼层分派电梯至所需楼层分派电梯至所需楼层的算法的算法的算法的算法?192如何实现系统的控制?集中方式还是非集中方如何实现系统的控制?集中方式还是非集中方式?有式?有 4 种选择。种选择。每一个每一个“楼层楼层 (FLOOR)”的实例记忆它是否有的实例记忆它是否有尚未处理的尚未处理的目的地请求目的地请求和或和或召唤请求召唤请求。乘客乘客请求都与某一特定楼层有关请求都与某一特定楼层有关,分派策略都分派策略都是每到一个楼层时作出的是每到一个楼层时作出的。电

154、梯的全部任务就。电梯的全部任务就是从一个楼层到另一个楼层。有必要记忆电梯是从一个楼层到另一个楼层。有必要记忆电梯将要去的楼层。将要去的楼层。 好处好处:将:将召唤电梯召唤电梯和和分派电梯分派电梯的机制封装在同的机制封装在同一个对象一个对象“楼层楼层”中,可以增强中,可以增强“楼层楼层”的内的内聚性聚性。193每一个每一个“目的地面板目的地面板”(在电梯中)的实例和(在电梯中)的实例和“召唤面板召唤面板”(在楼层中)的实例都能记忆相(在楼层中)的实例都能记忆相应的请求。应的请求。确应如此,因为根据问题陈述,需要面板指示确应如此,因为根据问题陈述,需要面板指示灯显示这些请求的状态。如果由灯显示这些

155、请求的状态。如果由“楼层楼层”负责负责作出分派决策,它也需要向作出分派决策,它也需要向“面板面板”对象询问对象询问是否有尚未处理的请求。是否有尚未处理的请求。 好处:这样做与好处:这样做与好处:这样做与好处:这样做与对象的职责对象的职责对象的职责对象的职责相一致,可以提高相一致,可以提高相一致,可以提高相一致,可以提高复用性。复用性。复用性。复用性。每个每个“电梯电梯”的实例都能记忆其的实例都能记忆其目的地目的地。这是有问题的这是有问题的: 如果一部电梯要从如果一部电梯要从 1 层上到层上到 49194层层,但由于中间楼层的召唤请求很可能会停下来,但由于中间楼层的召唤请求很可能会停下来为这些楼

156、层服务。为这些楼层服务。 但但“电梯电梯”对象至少应能记忆它的运动方向(上对象至少应能记忆它的运动方向(上升升 / / 下降)。下降)。 采用集中控制的方法。建立一个采用集中控制的方法。建立一个“电梯调度电梯调度”或或“电梯控制电梯控制”的对象记忆所有尚未对其服务的请的对象记忆所有尚未对其服务的请求。实际上,不建立这样的对象,也能让电梯系求。实际上,不建立这样的对象,也能让电梯系统按用户定义的方式来运作,将系统中所有复杂统按用户定义的方式来运作,将系统中所有复杂问题都集中于一个对象,这样做是很有弊端的。问题都集中于一个对象,这样做是很有弊端的。结论:结论:目的地请求目的地请求和和召唤请求召唤请

157、求应相应地由应相应地由“目的目的地面板地面板”和和“召唤面板召唤面板” 类来管理类来管理 。195如何分派一部电梯可以封装在三个地方:如何分派一部电梯可以封装在三个地方:“电梯调度电梯调度”对象:可以在设计时考虑引入该对象:可以在设计时考虑引入该对象,在分析阶段不采用这种方法。对象,在分析阶段不采用这种方法。每部每部“电梯电梯”可以可以轮询各个楼层轮询各个楼层,确定是否有确定是否有未被处理的召唤请求和目的地请求未被处理的召唤请求和目的地请求,从而决定从而决定自己的运行方向自己的运行方向。这要求电梯之间能相互通信,。这要求电梯之间能相互通信,协商决定由哪一部电梯来响应一个给定的请求。协商决定由哪

158、一部电梯来响应一个给定的请求。这是可行的,但未采用。这是可行的,但未采用。由由“楼层楼层”作出分派决策。每当有电梯到达某作出分派决策。每当有电梯到达某一楼层时,楼层之间通过相互协商作出决策。一楼层时,楼层之间通过相互协商作出决策。这种方案可以增强大多数类的复用性。这种方案可以增强大多数类的复用性。196403938E 3736353433S 3231EE 1 E(1)(2)(3)(4)(5)电梯启用电梯启用楼层楼层楼层楼层发出发出发出发出电梯电梯电梯电梯可用可用可用可用消息消息消息消息有召唤请求有召唤请求有召唤请求有召唤请求(6)我要我要我要我要你的你的你的你的电梯电梯电梯电梯我已我已我已我已

159、发出发出发出发出电梯电梯电梯电梯调度和分派电梯的策略调度和分派电梯的策略电梯电梯1,2 和和 4 停在第停在第1层,当前没有使用。层,当前没有使用。电梯电梯 3 停在第停在第37层。层。第第32层有一个召唤请层有一个召唤请求。其它楼层无召唤求。其它楼层无召唤请求。请求。电梯电梯 3 就绪时执行脚就绪时执行脚本如右。本如右。197ECSECS的运行走查的运行走查ECS的运行走查实质上就是系统运行的场景,的运行走查实质上就是系统运行的场景,它描述为完成某一种功能在系统中所发生的一它描述为完成某一种功能在系统中所发生的一系列事件序列。系列事件序列。对于每个事件都给出了序列图,并带有系统如对于每个事件

160、都给出了序列图,并带有系统如何识别事件发生,以及如何生成合适的响应的何识别事件发生,以及如何生成合适的响应的文本描述。文本描述。从系统的运行走查,能够以大量的细节来描述从系统的运行走查,能够以大量的细节来描述系统,而不必编写程序代码。系统,而不必编写程序代码。198ECS/OOA 序列图序列图第一个事件:召唤电梯第一个事件:召唤电梯到到达达事事件件到到达达面面板板目目的的地地面面板板目目的的地地事事件件电电梯梯电电梯梯马马达达楼楼层层超超载载传传感感器器召召唤唤事事件件召召唤唤面面板板1 召唤电梯召唤电梯 1.1 检测是否按下召唤按钮检测是否按下召唤按钮 1.2 建立召唤事件,记下楼层,上升建

161、立召唤事件,记下楼层,上升/下降下降 1.2.1 发送单向消息给与召唤楼层相关联的召唤面板发送单向消息给与召唤楼层相关联的召唤面板 1.2.1.1 刷新与召唤楼层相关联的召唤面板刷新与召唤楼层相关联的召唤面板 1.3 召唤事件结束召唤事件结束199ECS/OOA 序列图序列图第二个事件:目的地请求第二个事件:目的地请求到到达达事事件件到到达达面面板板目目的的地地面面板板目目的的地地事事件件电电梯梯电电梯梯马马达达楼楼层层超超载载传传感感器器召召唤唤事事件件召召唤唤面面板板2 目的地请求目的地请求 2.1 检测是否按下目的地按钮检测是否按下目的地按钮 2.2 建立目的地事件,记下电梯标识,目的地

162、楼层建立目的地事件,记下电梯标识,目的地楼层 2.2.1 发送单向消息给与电梯相关联的目的地面板发送单向消息给与电梯相关联的目的地面板 2.2.1.1 刷新与电梯相关联的目的地面板刷新与电梯相关联的目的地面板 2.3 目的地事件结束目的地事件结束200ECS/OOA 序列图序列图第三个事件:电梯到达调度的楼层第三个事件:电梯到达调度的楼层到到达达事事件件到到达达面面板板目目的的地地面面板板目目的的地地事事件件电电梯梯电电梯梯马马达达楼楼层层超超载载传传感感器器召召唤唤事事件件召召唤唤面面板板3 电梯到达调度的楼层电梯到达调度的楼层 3.1 检测是否有电梯到达检测是否有电梯到达 3.2 建立到达

163、事件,记下电梯标识,到达楼层建立到达事件,记下电梯标识,到达楼层 3.2.1 发送单向消息给与电梯相关联的到达面板发送单向消息给与电梯相关联的到达面板 3.2.1.1 刷新与电梯相关联的到达面板刷新与电梯相关联的到达面板 3.2.2 发送单向消息给与到达楼层相关联的楼层发送单向消息给与到达楼层相关联的楼层 3.2.2.1 楼层接收消息楼层接收消息,发送双向消息给电梯发送双向消息给电梯,更新电梯状态更新电梯状态201ECS/OOA 序列图序列图第三个事件:电梯到达调度的楼层第三个事件:电梯到达调度的楼层到到达达事事件件到到达达面面板板目目的的地地面面板板目目的的地地事事件件电电梯梯电电梯梯马马达

164、达楼楼层层超超载载传传感感器器召召唤唤事事件件召召唤唤面面板板 3.2.2.2 发送双向消息给与电梯相关联的目的地面板发送双向消息给与电梯相关联的目的地面板,检测检测 3.2.2.3 发送双向消息给与到达楼层相关联的召唤面板发送双向消息给与到达楼层相关联的召唤面板,更新更新 3.2.3 可能存在一个有关楼层的目的地请求可能存在一个有关楼层的目的地请求,可能存在一个召可能存在一个召 唤请求唤请求,此时有一算法此时有一算法,确定若在到达楼层且正应答一个确定若在到达楼层且正应答一个 召唤时召唤时,电梯是否停下来。算法更新召唤面板电梯是否停下来。算法更新召唤面板,发送消息发送消息 发送消息给电梯发送消

165、息给电梯,更新电梯状态。电梯发送消息给马达更新电梯状态。电梯发送消息给马达, 3.3 到达事件结束到达事件结束 使马达停止使马达停止,开门开门 202六、六、需求分析文档的原则和评审需求分析文档的原则和评审软件需求规格说明的内容软件需求规格说明的内容1)用用户户的的特特点点 :列列出出本本软软件件的的最最终终用用户户的的特特点点,以以及及本本软软件件的的预预期期使使用用频频度度。这这些些是是软软件件设设计计的重要约束。的重要约束。2)假假定定和和约约束束:列列出出进进行行本本软软件件开开发发工工作作的的假假定定和约束,例如经费限制、开发期限等。和约束,例如经费限制、开发期限等。3)需求规定需求

166、规定 对功能的规定对功能的规定1. 1. 软件需求规格说明软件需求规格说明203对性能的规定(精度、时间特性、灵活性)对性能的规定(精度、时间特性、灵活性)输人输出要求输人输出要求数据管理能力要求数据管理能力要求 故障处理要求故障处理要求其其他他如如安安全全保保密密要要求求,使使用用方方便便要要求求,可可维维护护性性、可可补补充充性性、易易读读性性、可可靠靠性性、运运行行环环境可转换性等特殊要求等。境可转换性等特殊要求等。 4)运行环境规定运行环境规定 设备设备支持软件支持软件接口接口控制控制2042. 2. 软件需求规格说明的原则软件需求规格说明的原则1)功能与实现分离,描述要功能与实现分离

167、,描述要“做什么做什么”而不是而不是“怎怎样实现样实现”2)要求使用面向处理的规格说明语言,从而得到要求使用面向处理的规格说明语言,从而得到“做什么做什么”的规格说明。的规格说明。3)如果目标软件只是一个大系统中的一个元素,那如果目标软件只是一个大系统中的一个元素,那么整个大系统也包括在规格说明的描述之中。么整个大系统也包括在规格说明的描述之中。4)系统规格说明必须是一个认识的模型,而不是设系统规格说明必须是一个认识的模型,而不是设计或实现的模型。计或实现的模型。5)规格说明必须容许不完备性并允许扩充。规格说明必须容许不完备性并允许扩充。205需求评审的内容:需求评审的内容:1)系统定义的目标

168、是否与用户的要求一致;系统定义的目标是否与用户的要求一致;2)系统需求分析阶段提供的文档资料是否齐全;系统需求分析阶段提供的文档资料是否齐全;3)文文档档中中的的所所有有描描述述是是否否完完整整、清清晰晰、准准确确反反映映用户要求;用户要求;4)与与所所有有其其它它系系统统成成分分的的重重要要接接口口是是否否都都已已经经描描述;述;5)主主要要功功能能是是否否已已包包括括在在规规定定的的软软件件范范围围之之内,是否都已充分说明;内,是否都已充分说明;3. 3. 需求评审需求评审2066)软软件件的的行行为为和和它它必必须须处处理理的的信信息息、必必须须完完成成的功能是否一致;的功能是否一致;7)设计的约束条件或限制条件是否符合实际;设计的约束条件或限制条件是否符合实际;8)是否考虑了开发的技术风险;是否考虑了开发的技术风险;9)是是否否详详细细制制定定了了检检验验标标准准,它它们们能能否否对对系系统统定义是否成功进行确认;定义是否成功进行确认;207

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 资格认证/考试 > 自考

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号