系统需求分析与定义课件_第1页
系统需求分析与定义课件_第2页
系统需求分析与定义课件_第3页
系统需求分析与定义课件_第4页
系统需求分析与定义课件_第5页
已阅读5页,还剩202页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

系统需求分析与定义一、计算机系统分析二、软件需求分析三、结构化分析方法四、快速原型化方法五、面向对象分析方法六、需求分析文档的原则和评审1软件工程系统需求分析与定义一、计算机系统分析1软件工程一、计算机系统分析基于计算机的系统基于计算机的系统的系统元素包括硬件、软件、人、数据库、文档和过程。软件计算机程序、数据结构、相关文档;硬件电子计算设备(如CPU,存储器)和外部机电设备(如传感器、马达等);人硬件和软件的用户;数据库一个大型的有组织的信息集合;2软件工程一、计算机系统分析基于计算机的系统2软件工程基于计算机系统的系统元素输入系统过程硬件软件文档人数据库输出3软件工程基于计算机系统的系统元素输入系统过程硬件软件文档人数据库输出文档手册、表格和其它用以描述系统使用和操作的信息;过程定义每一种系统元素的特定使用步骤,或系统驻留的过程性环境。系统的层次结构基于计算机的系统本身可以成为一个更大的基于计算机系统中的一个元素,并称为那个更大系统的宏元素。4软件工程文档手册、表格和其它用以描述系统使用和操作的信息;系工厂自动化系统工厂自动化系统库存系统制造系统信息系统材料传输系统制造单元机器人数据输入设备数控机床5软件工程工厂自动化系统工厂自动化系统库存系统制造系统信息系统材料传输2.系统分析系统分析是一个问题求解活动,目的是揭示、分析所期望的功能,并把它们分配到各个单独的系统元素中去。与用户合作确认用户的目标和约束;导出功能、性能、接口、设计约束和信息结构的表示;将它们分配到每一个系统元素中。6软件工程2.系统分析系统分析是一个问题求解活动,目的是揭示、分析所系统分析的任务识别用户要求评价系统的可行性进行经济分析和技术分析把功能分配给硬件、软件、人、数据库和其他系统元素建立成本和进度限制生成系统规格说明,形成所有后续工程的基础。7软件工程系统分析的任务识别用户要求7软件工程1)识别用户要求分析员必须考虑以下问题:功能和性能可靠性和质量总的系统目标成本与进度限制制造需求

市场与竞争情况有效的技术将来可能的扩充识别希望的功能和性能范围;确定系统的功能、性能、约束和接口;8软件工程1)识别用户要求分析员必须考虑以下问题:功能和性能制造需2)可行性研究可行性研究经济可行性技术可行性法律可行性用户操作可行性可行性研究的步骤确定项目的规模和目标研究当前正在运行的系统建立新系统的高层逻辑模型9软件工程2)可行性研究可行性研究9软件工程导出和评价各种方案推荐可行的方案编写可行性研究报告经济可行性

成本–效益分析成本估算专家估算技术(Delphi技术)成本估算模型(COCOMO)效益估算投资回收期10软件工程导出和评价各种方案经济可行性成本–效益分析成本估算10软件纯收入投资回收率技术可行性技术风险分析技术解决方案的实用性使用的技术实用化程度技术解决方案合理程度技术资源的可用性参与人员的工作基础基础硬件/软件的可用性软件工具实用性11软件工程纯收入技术可行性技术风险分析技术解决方案的实用性11软件法律可行性侵权和责任问题专利法著作权法软件保护条例用户操作可行性用户类型:外行型/熟练型/专家型操作习惯使用单位的计算机使用情况使用单位的规章制度12软件工程法律可行性侵权和责任问题专利法用户操作可行性用户类型:外3)功能分配给系统元素的原则对同一功能,可以分配不同的系统元素。为选取最有效的分配方案,使用一组权衡准则进行评价项目考虑

在预估的成本与进度范围内所选的系统配置能否实现?与成本与进度估算相关的风险有哪些?商业考虑所选的系统配置是最可能有效益的解决方案吗?13软件工程3)功能分配给系统元素的原则对同一功能,可以分配不同的系统元能否成功地占领市场?最终的报偿是否能表明所冒的开发风险是值得的?技术分析是否具备开发所有系统元素的技术实力?能否确保功能和性能得到满足?能否对系统配置进行充分的维护?是否具备技术资源?与技术相关的风险有哪些?生产评估14软件工程能否成功地占领市场?14软件工程生产工具与设备是否有效?必需的过程是否短缺?是否充分地实施了质量保证?人员问题开发人员是否得到培训?用户是否了解这个系统将要做什么?环境接口所提交的系统配置与系统的外部环境的接口是否合适?15软件工程生产工具与设备是否有效?15软件工程机器与机器、人与机器之间的通信是否以智能方式处理?法律考虑这种配置是否会引入违法的责任风险?对责任问题是否给予了足够的保护?是否存在潜在的破坏问题?16软件工程机器与机器、人与机器之间的通信是否以智能方式处理?16软件工二、软件需求分析需求分析是一项软件工程活动,其目的是:清楚地理解所要解决的问题,完整地获取用户要求;刻划出软件的功能和性能;指明软件与其他系统元素的接口;建立软件必须满足的约束。1.软件需求分析的目的

17软件工程二、软件需求分析需求分析是一项软件工程活动,其目的是:1.需求分析是一项软件工程活动,它包括:需求获取刻划出软件的功能和性能;指明软件与其他系统元素的接口;建立软件必须满足的约束。需求建模 需求分析建立起来的模型为日后软件设计人员提供了可被翻译成数据、体系结构、接口和处理过程设计的模型。2.需求分析的任务18软件工程需求分析是一项软件工程活动,它包括:2.需求分析的任务18需求规格说明 需求规格说明为开发人员和用户提供软件开发完成时质量评价的依据。需求评审需求分析研究的对象是用户的要求。必须全面理解用户的各项要求,准确表达被接受的用户要求。只有经过确切描述的软件需求才能成为软件设计的基础。

19软件工程需求规格说明19软件工程软件开发是要实现目标系统的物理模型。需求分析的任务就是借助于当前系统的逻辑模型导出目标系统的逻辑模型,解决目标系统“做什么”的问题。目标系统当前系统物理模型逻辑模型模型化抽象化物理模型逻辑模型具体化实例化理解需求导出怎么做做什么20软件工程软件开发是要实现目标系统的物理模型。需求分析的任务就是借助于物理模型(实施模型、技术模型)逻辑模型(本质模型、概念模型)当前系统描述现实系统是如何在物理上实现的。描述重要的业务功能,不考虑系统是如何实施的。目标系统描述新系统是如何实施的(包括技术)。描述新系统的主要业务功能和用户新的需求,不考虑系统应如何实施。21软件工程物理模型逻辑模型当前描述现实系统是如何在物理上实现的。描述重需求分析的过程可以分成四个阶段:需求获取研究系统的可行性分析报告和软件项目实施计划。从系统角度来理解软件并评审用于产生计划估算的软件范围是否恰当;通过调研确定对目标系统的需求;提出这些需求实现条件,以及需求应达到的标准。3.需求分析的过程22软件工程需求分析的过程可以分成四个阶段:3.需求分析的过程22软件建立分析所需要的沟通途径,以保证能顺利地对问题进行分析。管理人员用户分析人员软件开发组软件需求说明软件实施计划原型软件实施计划软件实施计划软件需求说明软件需求说明原型原型23软件工程建立分析所需要的沟通途径,以保证能顺利地对问题进行分析。管理需求建模

进行各种要求的一致性检查;逐步细化所有的软件功能;分解数据域,分配给各个子功能;找出系统各成分之间的联系、接口特性和设计限制。判断是否存在不合理的用户要求或用户尚未提出的潜在要求。综合成系统的解决方案,给出目标系统的详细逻辑模型。24软件工程需求建模24软件工程常用的分析方法面向数据流的结构化分析方法(SA)面向数据结构的Jackson方法(JSD)面向数据结构的结构化数据系统开发方法(DSSD)面向对象的分析方法(OOA)等25软件工程常用的分析方法面向数据流的结构化分析方法(SA)25软件工编制需求分析阶段的文档软件需求规格说明;初步的用户手册;确认测试计划;修改和完善软件开发计划。需求评审(确认)作为需求分析阶段工作的复查手段,应该对功能的正确性、文档的一致性、完备性、准确性和清晰性,以及其他需求给予评价。26软件工程编制需求分析阶段的文档26软件工程需要能够表达和理解问题的信息域和功能域信息流:数据和控制通过一个系统时的变化方式。两个功能之间的数据/控制传递就确定了功能间的接口。信息内容:单个数据或控制对象,它们构成了某个更大的由软件变换生成的信息的集合。信息结构:各种数据和控制项的内部组织。4.需求分析的原则27软件工程需要能够表达和理解问题的信息域和功能域4.需求分析的原则2以层次化的方式对问题进行分解和不断细化纵向分解横向分解28软件工程以层次化的方式对问题进行分解和不断细化纵横向分解28软件工程给出系统的逻辑视图和物理视图软件需求的逻辑视图给出的是软件要达到的功能和要处理的数据之间的关系,而不是实现的细节。软件需求的逻辑描述是软件设计的基础。软件需求的物理视图给出的是处理功能和数据结构的实际表现形式,这往往是由设备本身决定的,因此推迟到设计阶段考虑。29软件工程给出系统的逻辑视图和物理视图29软件工程5.需求获取需求获取是在问题及其最终解决方案之间架设桥梁的第一步。获取需求的一个必不可少的结果是对项目中描述的客户需求的普遍理解。一旦理解了需求,分析人员、开发人员和客户就能探索出描述这些需求的多种解决方案。需求获取技术包括两方面的工作:建立获取用户要求的方法的框架;支持和监控需求获取的过程的机制。30软件工程5.需求获取需求获取是在问题及其最终解决方案之间架设桥梁的1)软件需求的层次业务需求

反映了组织或客户开展相关业务的工作流和业务规则,是对系统、产品高层次的目标要求,与该组织或客户的业务领域有关。用户需求

描述用户使用软件需要完成哪些任务,可通过用例(usecase)图或场景说明加以阐明。功能―非功能需求

定义了开发人员必须实现的软件功能,而非功能需求如表所示:31软件工程1)软件需求的层次业务需求31软件工程32软件工程32软件工程2)需求获取技术的基本特征一种好的需求获取技术,对于规范需求获取活动,高效准确地获取需求定义,是十分重要的。好的需求获取技术,应具有如下基本特征:提供便于沟通的工具,如易于理解的语言;提供定义系统边界的方法;提供支持抽象的机制,如“分解”、“映射”等;33软件工程2)需求获取技术的基本特征一种好的需求获取技术,对于规范需求鼓励分析员使用面向问题的术语思考问题,编写文档;为分析员提供多种可供选择的解决方案;适应需求的变化。适于以上特征的需求获取方法:基于数据流图的结构化分析方法;基于用例(usecase)的建模方法。需求获取技术的关键点在于:深入浅出

需求获取要尽可能全面、细致。34软件工程鼓励分析员使用面向问题的术语思考问题,编写文档;34软件工程

获取的需求是个全集,系统真正实现的是个子集。细致地调研并不表明在分析时将调研内容都纳入到新系统中,但有利于以后的扩充。以流程为主线

在与用户交流的过程中,应该用流程将所有的内容串起来。如信息、组织结构、处理规则等。这样便于交流沟通。 流程的描述既要有宏观,又要有微观。即要强调总体的业务流程、全生存期的业务流程,又要对流程细化,有分支的业务流程。35软件工程 获取的需求是个全集,系统真正实现的是个子集。细致地调研并不3)需求获取应遵循的原则抽象和分解是在人们认识世界和改造世界的长期实践中总结出来的行之有效的原则,在需求获取的过程中需遵循的三个原则:分解:捕获问题空间的整体–部分关系。如问题/子问题分解;抽象:捕获问题空间的一般化–特殊化关系。如问题的不同变型;投影:捕获问题空间的多维视图。即从不同角度考察。36软件工程3)需求获取应遵循的原则抽象和分解是在人们认识世界和改造世界4)需求获取的步骤软件开发项目和组织文化的不同,对于需求开发没有一个简单的、公式化的途径。下面列出9个步骤,用以指导需求获取活动。定义项目的视图和范围包括组织结构图、各部门的岗位/角色列表。确定用户类包括人员/责任矩阵。确定目标系统的业务工作流包括物流、资金流、信息流,建立业务工作流模型。37软件工程4)需求获取的步骤软件开发项目和组织文化的不同,对于需求开发运用需求获取技术开发用例(或数据流图)并设置优先级

用以掌握主要业务规则。收集来自用户的质量特性信息和其他非功能需求

将性能、安全性、可靠性等需求和其他设计约束结合业务规则,形成功能需求。分类在用例(或数据流图)中涉及的数据包括数据的组成和数据之间的关系。详细拟订用例(或数据流图)

建立功能模型,并进行审查,用以澄清需求获取的参与者对需求的理解。38软件工程运用需求获取技术开发用例(或数据流图)并设置优先级用开发并评估界面原型

设想输入设备、输出设备、显示风格、显示方式、输出格式等,建立接口规范和信息流传输规则。从功能描述中开发概念测试用例

用测试用例来验证用例(或数据流图)、功能需求和原型。39软件工程开发并评估界面原型设想输入设备、输出设备、显示风格、需求获取可能是软件开发中最困难、最关键、最易出错及最需要交流的方面。表现在:需求的不稳定性:在整个软件生存周期内软件需求会随着时间的推移发生变化;需求的不准确性:用户和开发人员的认识会随着使用系统实现业务流程的实践逐步提高,一开始不可能设想得面面俱到。需求获取只有通过有效的客户/开发者的合作才能成功。40软件工程需求获取可能是软件开发中最困难、最关键、最易出错及最需要交流5)针对信息系统的需求调研方法调研用户的组织结构、岗位设置、职责定义,从功能上区分有多少个子系统,划分系统的大致范围,明确系统的目标。调研每个子系统的工作流程、功能与处理规则,收集原始信息资料,用数据流来表示物流、资金流、信息流三者的关系。对调研内容事先准备,针对不同管理层次的用户询问不同的问题,列出问题清单。将操作层、管理层、决策层的需求既联系又区分开来,形成一个需求的层次。41软件工程5)针对信息系统的需求调研方法调研用户的组织结构、岗位设置、对与用户沟通的情况及时总结归纳,整理调研结果,初步构成需求基线。若基线符合要求,则需求获取完成。需求调研的主要手段:发调查表;召开调查会;向用户领域的专家个别咨询;实地考察,跟踪现场业务流程;查阅与待开发系统有关的资料;使用各种调查工具等。42软件工程对与用户沟通的情况及时总结归纳,整理调研结果,初步构成需求基6)需求整理与表达的方法采用穷举方法可以避免遗漏。采用归纳方法,通过对各种情况进行综合分类可以使问题条理化。采用抽象方法,可以发现问题的实质,抓住问题的主要矛盾,忽略其次要矛盾。需求整理可以多种手段共用,如组织结构图、业务流程图、多叉树、关系矩阵、文字叙述、表格、图形等。需求描述包括组织结构与岗位定义、业务流程、处理规则、数据项、功能以及上述5个方面的关系。43软件工程6)需求整理与表达的方法采用穷举方法可以避免遗漏。43软件工结构化分析方法最初只是着眼于数据流,自顶向下,逐层分解,建立系统的处理流程,以数据流图和数据字典为主要工具,建立系统的逻辑模型。扩充后,将建模技术扩展到数据建模、功能建模和行为建模,以实体-关系图、数据流图和控制流图、状态-迁移图为工具,数据字典为核心,从不同视点建立系统的分析模型。三、结构化分析方法44软件工程结构化分析方法最初只是着眼于数据流,自顶向下,逐层分解,建立结构化分析的分析模型实体—关系图状态—迁移图数据流图数据对象描述加工规格说明数据字典控制规格说明45软件工程结构化分析的分析模型实体—状态—迁移图数据流图数据对象描述加1.数据建模数据模型包括三种互相关联的信息:数据对象,描述对象的属性,描述对象间相互连接的关系。在需求分析阶段描述数据对象和它们之间的关系,使用了E-R图。例如,在教学管理中,一个教师可以教授零门、一门或多门课程,每位学生也需要学习几门课程。因此,教学管理中涉及的对象(实体型)有学生、教师和课程。46软件工程1.数据建模数据模型包括三种互相关联的信息:数据对象,描教学数据模型学号姓名专业性别……学生职工号姓名专业职称年龄教师课程号课程名学分学时……课程学号课程号成绩选课47软件工程教学数据模型学号姓名专业性别……学生实例的关联有三种:一对一(1:1);一对多(1:m);多对多(n:m)。这种实例的关联称为“基数”。基数表明了“重复性”。教师学生教授基数:一位教师基数:多位学生参与度:必须参与度:可选48软件工程实例的关联有三种:一对一(1:1);一对多(1:m);多E-R图中表示实体关联的符号如下:XY一个X与一个Y相关联一个X与一个或多个Y相关联XY一个X与零个或一个Y相关联XY一个X与零个,一个或多个Y相关联XY一个X与一个Y或Z相关联XYZ一个X与一个Y与Z相关联XYZ49软件工程E-R图中表示实体关联的符号如下:XY一个X与一个Y相关联一2.功能建模和数据流图最初,结构化分析方法仅讨论数据流建模。目标系统被表示成如图所示的数据变换流程图。系统的功能体现在核心的数据变换中。外部实体外部实体外部实体外部实体目标系统输入信息输入信息输出信息输出信息50软件工程2.功能建模和数据流图最初,结构化分析方法仅讨论数据流建1)功能建模的思想功能建模就是用抽象模型的概念,按照软件内部数据传递、变换的关系,自顶向下逐层分解,直到找到满足功能要求的所有可实现的软件为止。根据DeMarco的论述,功能模型使用了数据流图来表达系统内数据的运动情况,而数据流的变换则用结构化英语、判定表与判定树来描述。51软件工程1)功能建模的思想功能建模就是用抽象模型的概念,按照软件内部2)数据流图中的主要图形元素数据加工(数据变换)数据源或数据潭(外部实体)数据流数据存储文件或或52软件工程2)数据流图中的主要图形元素数据加工(数据变换)数据源或数分层的数据流图53软件工程分层的数据流图53软件工程3)数据流图的层次结构为了表达数据处理过程,需要采用层次结构的数据流图。按照系统的层次结构进行逐步分解,并以分层的数据流图反映这种结构关系。顶层流图仅包含一个加工,它代表被开发系统。它的输入流是该系统的输入数据,输出流是系统所输出数据底层流图是指其加工不需再做分解的数据流图,它处在最底层中间层流图则表示对其上层父图的细化。它的每一加工可能继续细化,形成子图。54软件工程3)数据流图的层次结构为了表达数据处理过程,需要采用层次结构4)功能建模的步骤对考生送来的报名单进行检查;对合格的报名单编好准考证号后将准考证送给考生,并将汇总后的考生名单送给阅卷站;对阅卷站送来的成绩单进行检查,并根据考试中心制定的合格标准审定合格者;制作考生通知单(含成绩及合格/不合格标志)送给考生;按地区进行成绩分类统计和试题难度分析,产生统计分析表。实例考务处理系统的功能55软件工程4)功能建模的步骤对考生送来的报名单进行检查;实例考务处顶层数据流图考生考务处理系统考试中心阅卷站不合格报名表报名表准考证考生通知单成绩单合格标准错误成绩单考生名单统计分析表顶层图封闭在外部实体之间,反映系统与外部的交互。56软件工程顶层数据流图考考务考阅卷站不合格报名表报名表准考证考生通知单这个数据流图只是一个高层的系统逻辑模型,它反映了目标系统要实现的功能以及系统与外界的关系。该图或称为上下文环境图或语境图(ContextDiagram)数据流图绘制步骤首先确定系统的输入和输出根据考务处理业务,画出顶层数据流图,以反映最主要业务处理流程经过分析,考务业务处理的主要功能应当57软件工程这个数据流图只是一个高层的系统逻辑模型,它反映了目标系统要实 有登记报名单、统计成绩两大项。主要数据流输入的源点和输出终点是考生、考试中心和阅卷站。然后从输入端开始,根据考务业务工作流,画出数据流流经的各加工框,逐步画到输出端,得到第1层数据流图。画加工的内部:用画第1层图同样的方法画出每个加工的DFD子图。重复第5步,直至图中的尚未分解的加工都足够简单。至此得到分层数据流图。58软件工程 有登记报名单、统计成绩两大项。主要数据流输入的源点和输出终报名表准考证1登记报名表2统计成绩不合格报名表考生通知单成绩单统计分析表第1层数据流图考生名册合格标准考生名单错误成绩单59软件工程报名表准考证12不合格考生通知单成绩单统计分析表第1层数据流第2层数据流图(a)1.1

检查报名表报名表准考证1.2编准考证号码不合格报名表考生名册考生名单合格报名表1.3登记考生合格报名表60软件工程第2层数据流图(a)1.1报名表准考证1.2不合格考生名第2层数据流图(b)2.1检查成绩单2.2审定合格者考生名册正确成绩单2.3制作通知单2.4分析统计成绩2.5分析试题难度试题得分表考生通知单难度分析表合格标准分类统计表成绩单错误成绩单经审定的成绩单61软件工程第2层数据流图(b)2.12.2考生名册正确2.32.425)绘制数据流图的原则数据流图上所有图形符号只限于前述四种基本图形元素,它们的命名应反映其实际含义;数据流图的顶层图上的数据流必须封闭在外部实体之间;每个加工至少有一个输入数据流和一个输出数据流;允许一个加工有多条数据流流向另一个加工,也允许一个加工有两个相同的输出数据流流向两个不同的加工。62软件工程5)绘制数据流图的原则数据流图上所有图形符号只限于前述四种基在数据流图中,需按层给加工框编号。编号表明该加工所处层次及上下层的亲子关系;规定任何一个数据流子图必须与它上一层的一个加工对应,两者的输入数据流和输出数据流必须一致。此即父图与子图的平衡;如果一个数据文件仅在展开的数据流子图中使用,可以在父图中不画出;可以在数据流图中加入物质流,帮助用户理解数据流图;数据流图中不可夹带控制流,但针对实时系统可以加入控制流,成为数据流图的扩展形式。63软件工程在数据流图中,需按层给加工框编号。编号表明该加工所处层次及上

数据流和控制流举例(使用Ward和mellor符号)监控固件和操作接口每个固件状态动作警告机器人初始化控制操作命令部件状态缓冲器位置命令开始/停止处理机器人命令机器人命令文件操作设置处理活动记录机器人动作位串64软件工程数据流和控制流举例监控固每个固件状态动作机器人初始数据和控制模型的关系

DFD加工规格说明加工模型DFD控制规格说明控制模型数据输出数据条件数据输入控制输入控制输出加工激活者65软件工程数据和控制模型的关系DFD加工规格说明加工模型DFD控制规3.行为建模行为建模给出需求分析方法的所有操作原则,但只有结构化分析方法的扩充版本才提供这种建模的符号。状态迁移图Petri网66软件工程3.行为建模行为建模给出需求分析方法的所有操作原则,但只有1)状态迁移图例如,有关CPU分配的进程的状态迁移。t2t3t4t1运行就绪等待67软件工程1)状态迁移图例如,有关CPU分配的进程的状态迁移。t2状态迁移图是描述系统的状态如何响应外部的事件进行推移的一种图形表示。“○”表示可得到的系统状态“→”表示从一种状态向另一种状态的迁移。S2S1S3t1t2t3t4t4t3t2t1事件状态S1S2S3S3S2S3S168软件工程状态迁移图是描述系统的状态如何响应外部的事件进行推移的一种图2)Petri网Petri网已广泛地应用于硬件与软件系统的开发中,它适用于描述与分析相互独立、协同操作的处理系统,也就是并发执行的处理系统。Petri网简称PNG(PetriNetGraph),它有两种结点:位置:符号“○”,表示系统状态。转移:符号“|”,表示系统中的事件。有向边“

”表示向转移的输入,或从转移的输出。69软件工程2)Petri网Petri网已广泛地应用于硬件与软件系统的开标记,或称令牌(token),是表明系统当前处于什么状态的标志。Petri网可能的变化有:70软件工程标记,或称令牌(token),是表明系统当前处于什么状态的进程得到资源占用资源运行释放资源不用资源运行PR1LOCKR处理11UNLOCKR处理12PR2LOCKR处理21UNLOCKR处理22例如,处理两个进程PR1和PR2的同步问题(此时两个进程共用一个资源R):71软件工程进程得到资源占用资源运行释放资源不用资源运行PR172软件工程72软件工程4.数据字典数据字典是结构化分析方法的核心。与各模型的图形表示配合,能清楚地表达数据处理的要求词条描述——对于在模型中每一个被命名的图形元素,均加以定义,其内容有:

名字,别名或编号,分类,描述,定义,位置,其它,等。73软件工程4.数据字典数据字典是结构化分析方法的核心。与各模型的图(1)数据流词条描述数据流名:说明:简要介绍它产生的原因和结果数据流来源:来自何方数据流去向:去向何处数据流组成:数据结构数据量流通量:数据量,流通量1)词条描述74软件工程(1)数据流词条描述1)词条描述74软件工程(2)数据元素词条描述类型:数字(离散值,连续值),文字(编码类型)长度:取值范围:相关的数据元素及数据结构:(3)数据文件词条描述数据文件名:简述:存放的是什么数据输入数据:输出数据:

75软件工程(2)数据元素词条描述75软件工程数据文件组成:数据结构存储方式:顺序,直接,关键码存取频率:

(4)加工逻辑词条描述加工名:加工编号:反映该加工的层次简要描述:加工逻辑及功能简述输入数据流:输出数据流:加工逻辑:简述加工程序,加工顺序76软件工程数据文件组成:数据结构76软件工程(5)数据源及数据谭词条描述名称:外部实体名简要描述:什么外部实体有关数据流:数目:77软件工程(5)数据源及数据谭词条描述77软件工程2)数据结构的描述

符号

含义

举例=被定义为+与

x=a+b[...,...]或[...|...]或

x=[a,b],x=[a|b]{...}或m{...}n重复

x={a},x=3{a}8(...)可选

x=(a)“...”基本数据元素

x=“a”.. 连结符

x=1..978软件工程2)数据结构的描述符号 含存折格式79软件工程存折格式79软件工程存折=户名+所号+帐号+开户日+性质+(印密)+1{存取行}50户名=2{字母}24所号=“001”..“999”帐号=“00000001”..“99999999”开户日=年+月+日性质=“1”..“6”

注:“1”表示普通户,“5”表示工资户等印密=“0”

注:印密在存折上不显示存取行=日期+(摘要)+支出+存入+余额+操作+复核80软件工程存折=户名+所号+帐号+开户日+性质+(印密)+1{存取行}3)基本加工逻辑说明

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

IF_THEN_ELSE、SWITCH、WHILE_DO、FOR、DO_WHILE等组成。它是一种介于自然语言和形式化语言之间的语言。用以消除在语法上的歧义性。82软件工程(1)结构化语言结构化语言是一种伪码,它的词汇表由82软语言的正文用基本控制结构进行分割,加工中的操作用自然语言短语来表示。其基本控制结构有三种:简单陈述句结构:避免复合语句;重复结构:while_do、for_do或do_while结构。判定结构:if_then_else或switch_do结构;用结构化语言描述的规格说明的正文可以在计算机上编辑,不必过多地考虑语言的在语法上的限制,使得分析员可以集中考虑加工的策略或规则。83软件工程语言的正文用基本控制结构进行分割,加工中的操作用自然语言短语商店业务处理系统中“检查发货单”if发货单金额超过$500then

if欠款超过了60天then在偿还欠款前不予批准

else

(欠款未超期)发批准书,发货单

else

(发货单金额未超过$500)

if欠款超过60天then发批准书,发货单及赊欠报告else

(欠款未超期)发批准书,发货单

84软件工程商店业务处理系统中“检查发货单”if发货单金额超过$500(2)决策表如果数据流图的加工需要依赖于多个逻辑条件的取值,使用决策表来描述比较合适。条件茬条件项动作茬动作项规则单个条件单个动作85软件工程(2)决策表如果数据流图的加工需要依赖于多个逻辑条件的取值以“检查发货单”为例操在偿还欠款前不予批准

作发出批准书

发出发货单

发出赊欠报告

1234条发货单金额>

$500>$500≤

$500≤

$500件赊欠情况>60天≤60天>60天≤60天86软件工程以“检查发货单”为例在偿还欠款前不予批准作发出批准书(3)判定树判定树也是用来表达加工逻辑的一种工具。有时侯它比判定表更直观。检查发货单金额>$500金额

$500

欠款>60天不发出批准书

欠款

60天发货单发出批准书、

欠款>60天发出批准书、发货单及赊欠报告

欠款

60天发出批准书、发货单87软件工程(3)判定树判定树也是用来表达加工逻辑的一种工具。有时侯它这是一种有效驾驭风险的技术。通过原型可以增进软件者和用户对系统服务需求的理解,使比较含糊的具有不确定性的软件需求(主要是功能)明确化。可以容易地确定系统的性能,确认各项主要系统服务的可应用性,确认系统设计的可行性,确认系统作为产品的结果。有的原型可以直接成为产品,有的略加修改就可成为最终系统的一个组成部分。四、快速原型化方法88软件工程这是一种有效驾驭风险的技术。通过原型四、快速原型化方法88软探索型: 目的是要弄清对目标系统的要求,确定所希望的特性,并探讨多种方案的可行性。实验型: 这种原型用于大规模开发和实现之前,考核方案是否合适,规格说明是否可靠。进化型: 这种原型的目的不在于改进规格说明,而是将系统建造得易于变化,在改进原型的过程中,逐步将原型进化成最终系统。1.原型分类89软件工程探索型:1.原型分类89软件工程2.原型使用策略软件原型支持需求工程的两项活动:需求获取需求有效性验证其他用途:用户培训系统测试原型开发主要分类:进化式原型开发抛弃式原型开发90软件工程2.原型使用策略软件原型支持需求工程的两项活动:90软件工1)进化式原型开发基本思路是:先给出一个系统的最初实现,让用户去使用和评价,不断进行细化和改善,经过多次这样的反复过程后形成最终的完善的系统。开发抽象描述建立原型系统使用原型系统系统充分吗?交付系统否是91软件工程1)进化式原型开发基本思路是:先给出一个系统的最初实现,让用2)抛弃式原型开发基本思路是:原型的根本作用是弄清楚需求和为风险评估提供补充信息。通过评估后,原型被抛弃,重新规划和实施系统的开发。框架需求开发原型确定系统评估原型开发软件问题可验证系统问题可交付的软件系统可复用构件92软件工程2)抛弃式原型开发基本思路是:原型的根本作用是弄清楚需求和为3.原型开发技术可执行规格说明基于场景(scenario)的设计自动程序设计专用语言可复用(reusable)的软件简化假设93软件工程3.原型开发技术可执行规格说明93软件工程1)可执行规格说明可执行规格说明是用于需求规格说明的一种自动化技术。使用这种方法,人们可以直接观察他们用语言规定的任何系统性行为。包括代数规格说明有限状态模型可执行的数据流图94软件工程1)可执行规格说明可执行规格说明是用于需求规格说明的一种自动代数规格说明使用集合、定义于这些集合上的函数和定义于这些函数上的方程来描述对象。规格说明的操作语义用这些方程表示。举例:定义一个无界的栈及其操作NEW_STACK:

StackPUSH:Stack,Element

StackPOP:Stack

(Element|Undefined)POP(NEW_STACK())=UndefinedPOP(PUSH(Stack,elem))=elem95软件工程代数规格说明使用集合、定义于这些集合上的函数和定义于这些函数有限状态模型parnas提出的使用最广泛的一种可执行规格说明形式。从一个初始状态开始接收输入,到产生输出,状态在推移变化。施加在状态元素上的约束确定了有效状态的推移。举例:建立用户/程序对话96软件工程有限状态模型parnas提出的使用最广泛的一种可执行规格说明startgoofinfobyenewentryreport‘enter’‘quit’‘help’‘print’97软件工程startgoofinfobyenewentryrepor可执行的数据流图数据流图是基于结构化开发方法的结构化规格说明。用一种可执行的语言程序代替定义处理逻辑的结构化英语,数据流图就成为由可执行语言程序模块组成的网络,在一定环境或工具的支持下就可成为一个可以执行的原型系统。98软件工程可执行的数据流图数据流图是基于结构化开发方法的结构化规格说明2)基于场景的设计场景是指用户界面的原型。一个场景用以模拟在系统运行期间用户经历的事件。它提供了输入─处理─输出的屏幕格式和有关对话的模型。因此,软件开发人员能够给用户显示系统的逼真的视图,使用户得以判断是否符合他的意图。分析员与用户的沟通往往通过演示场景。可在任一场景中使用一套可复用的软件模块,以表达某一方面的要求。99软件工程2)基于场景的设计场景是指用户界面的原型。99软件工程可使用一种原型语言来描述原型系统。原型开发过程中用这种语言来定义屏幕数据项相关的操作从系统的外部描述开始,开发与数据库的接口错误处理和恢复过程 等系统的与外部视图一致的细节。100软件工程可使用一种原型语言来描述原型系统。原型开发过程中用这种语言来3)自动程序设计在程序自动生成环境的支持下,利用计算机实现软件的开发。可以自动或半自动地把用户的非过程式问题规格说明转换为某种高级语言程序:演绎综合手段:基于数学推理的构造式证明。程序变换手段:将一程序转换成另一功能等价的程序,并保持其正确性不变。101软件工程3)自动程序设计在程序自动生成环境的支持下,利用计算机实现软实例推广手段:从实例特征出发,将它推广为待编程序的特征,最后得到程序。过程化手段:研究甚高级语言的编译和知识的过程化。102软件工程实例推广手段:102软件工程4)专用语言专用语言是应用领域的模型化语言。在原型开发中使用专用语言,可方便用户和软件开发者在计划中的系统特性方面的交流。103软件工程4)专用语言专用语言是应用领域的模型化语言。103软件工程5)软件复用技术利用可复用的模块,做出适当的组合,就可得到快速构造的原型系统。为了快速地构造原型,这些模块必须有简单而清晰的界面;应当尽量不依赖其它的模块或数据结构;应具有一些通用的功能。104软件工程5)软件复用技术利用可复用的模块,做出适当的组合,就可得到快6)简化假设在开发过程中为使设计者迅速得到一个简化的系统,可以预设一些使得问题简化的假设。尽管这些假设可能实际上并不能成立,但它们在原型开发过程中可以使开发者的注意力集中在一些主要的方面。105软件工程6)简化假设在开发过程中为使设计者迅速得到一个简化的系统,可1.为什么要采用面向对象技术五、面向对象分析方法系统可维护性的要求 在系统中,功能往往是未来可能变化的因素,而问题领域的实体则不会有太多的变化。将这些实体作为对象构建系统,可以构造一个稳定的系统。因为未来的功能变化只需改变对象内部的操作的实现,修改是局部的。系统可复用性的需要

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

任何机器环境下,使用任意程序语言所编的程序,希望都能够通用。与机器相关的成分应该与处理逻辑无关。 面向对象方法采用对象(类的实例)作为系统的基本构造单位。类的多态性以及动态绑定技术,是面向对象方法有别于结构化方法的实质性突破。它提倡接口和实现分开的设计理念并提供程序机制,为程序无关性的理想奠定了基础。108软件工程 任何机器环境下,使用任意程序语言所编的程序,希望都能够通用2.什么是面向对象PeterCoad和EdwardYourdon提出面向对象方法的概念:面向对象=对象+分类 +继承(inheritance) +消息通信(communicationwithmessages)采用这四个概念开发的软件系统是面向对象的。

。一个面向对象的程序的每一成份应是对象,计算是通过新的对象的建立和对象之间的通信来执行的。109软件工程2.什么是面向对象PeterCoad和Edward1)对象(object)对象是系统中用来描述客观事物的一个实体,是构成系统的一个基本单位,由一组属性和一组对属性进行操作的服务组成。

对象=对象名+数据(属性)+操作(行为)属性一般只能通过执行对象的操作来改变。操作又称为方法或服务,它描述了对象执行的功能,若通过消息传递,还可以为其他对象使用。110软件工程1)对象(object)对象是系统中用来描述客观事物的一个实(50,60)(50,85)(35,60)(35,85)(50,45)(60,35)(56,10)(46,37)(10,50)(20,20)(23,30)计算机窗口中的三个多边形111软件工程(50,60)(50,85)(35,60)(35,8drawmove(x,y)contains?(aPoint)(10,50)(20,20)(23,30)triangledrawmove(x,y)contains?(aPoint)(46,37)(50,45)(60,35)(56,10)quadrilateral1drawmove(x,y)contains?(aPoint)(35,60)(35,85)(50,85)(50,60)quadrilateral2表示多边形的三个对象112软件工程draw(10,50)triangledraw(46,32)类(classification)把具有相同特征(属性)和行为(操作)的对象归在一起就形成了类(class)。类的定义包括一组数据属性和在数据上的一组合法操作。在一个类中,每个对象都是类的实例(Instance),它们都可使用类中的函数。类定义了各个实例所共有的结构,使用类的构造函数,可以在创建该类的实例时初始化这个实例的状态(实例变量)。113软件工程2)类(classification)把具有相同特征(属性)由两个四边形对象导出一个类drawmove(x,y)contains?(aPoint)(46,37)(50,45)(60,35)(56,10)quadrilateral1drawmove(x,y)contains?(aPoint)(35,60)(35,85)(50,85)(50,60)quadrilateral2drawmove(x,y)contains?(aPoint)point1point2point3point4quadrilateral114软件工程由两个四边形对象导出一个类draw(46,37)quadr3)消息(messages)消息是一个实例与另一个实例之间传递的信息,要求该实例执行类中定义的某个操作。消息的使用类似于函数调用,消息中指定了某一个实例,一个操作名和一个参数表(可能是空的)。接收消息的实例执行消息中指定的操作,并将形式参数与参数表中相应的实参值结合起来。消息有4类:发送对象激活接收对象;发送对象传送信息给接收对象;发送对象询问接收对象;发送对象请求接收对象提供服务。115软件工程3)消息(messages)消息是一个实例与另一个实例之间传4)继承(inheritance)类与类之间可能具有的一般化和特殊化关系:即“is-a”关系,特殊化类是一般化类的子类,一般化类是特殊化类的父类。在这种关系下形成一种层次的关联。这就是继承关系。交通工具轮船汽车飞机116软件工程4)继承(inheritance)类与类之间可能具有的一般化继承是父类和子类之间共享数据和方法的机制。在定义和实现一个类时,可以在一个现成的类的基础上来进行,把这个现成类所定义的内容作为自己的内容,并加入若干新的内容。父类A和它的子类B之间的继承关系继承部分增加部分从A继承父类A子类B117软件工程继承是父类和子类之间共享数据和方法的机制。在定义和实现一个类分类只从一个父类得到继承,叫做“单重继承”。一个子类有两个或更多个父类,则称“多重继承”。汽车大客车载重车油罐车汽车起重机起重车多(重)继承单(重)继承118软件工程分类汽车大客车载重车油罐车汽车起重机起重车多(重)继承单(重5)多态不同的对象对同一消息有不同的实现。多态的实现受到继承的支持:利用类的继承的层次关系,把具有通用功能的消息存放在高层次,而不同的实现这一功能的行为放在较低层次,在这些低层次上生成的对象能够给通用消息以不同的响应。参数多态:即模板化的多态,通过参数代换确定所用的数据类型。包含多态:常见的例子就是子类型化,即一个类型是另一个类型的子类型。119软件工程5)多态不同的对象对同一消息有不同的实现。119软件工程3.面向对象分析(OOA)面向对象分析(Object-OrientedAnalysis),简称OOA。OOA的目的:理解应用问题;确定系统的功能、性能要求。面向对象分析法与结构化分析法之间的差别:结构化分析方法中的E-R图,关注实体的属性和相互间的关系;而面向对象的分析,除此之外还要关注实体的行为。120软件工程3.面向对象分析(OOA)面向对象分析(Object-Or结构化分析的数据流图,将数据和加工处理分开;而面向对象的分析是将数据实体和他们的处理动作视为不可分割的整体来考虑的。结构化分析方法建造系统的元素是基于功能,或加工处理的;而面向对象分析方法建造系统的基本元素是封装了操作的对象类。因此,面向对象的结果比较容易理解和管理,便于修改,早期阶段的修改容易提高软件的可靠性。121软件工程结构化分析的数据流图,将数据和加工处理分开;而面向对象的分析4.面向对象分析的活动发现合适的对象类和对象的标识类和对象的细化标识结构标识主题标识属性标识实例连接标识服务和消息122软件工程4.面向对象分析的活动发现合适的对象122软件工程1)发现合适的对象面向对象技术应能显著提高软件开发的质量和生产率,但这种好处只有在正确标识了对象集合的基础上才能得以实现。没有一个规范的建立对象的方法,软件开发人员只能盲目地建立对象。发现对象的方法对象存储数据并具有职能(即服务)。传统的系统分析工具的主要功能是定义数据或说明处理,对发现对象具有非常重要的作用。123软件工程1)发现合适的对象面向对象技术应能显著提高软件开发的质量和生有3种非常有用的传统系统分析工具:数据流图、实体关系图以及状态迁移图,涉及了系统的3个不同的、相互独立的方面(处理过程、数据和控制),称为三视图模型3VM(3-ViewModeling)。对象是与应用领域的有关概念紧密结合在一起的。概念的处理主要是基于自然语言:书面语或口语。

将语言规则应用到软件系统分析中的处理方法称为基于语言的信息分析(Linguistic-basedInformationAnalysis,简称LIA)。

124软件工程有3种非常有用的传统系统分析工具:数据流图、实体关系图以3VM和LIA有别于且独立于面向对象分析,这些技术的应用是一个不断反复的过程。目的就是在实际应用中最大限度地降低对象标识的主观性。将3VM和LIA应用于发现对象的过程见图。客户执行LIA建立3VM建立OOA模型设计处理资源库资源工作表格用户对话OOA模型3VM125软件工程3VM和LIA有别于且独立于面向对象分析,这些技术的应用是一(1)三视图模型(3VM)实体关系模型

实体关系图(ERD)是OOA的一个有力的前哨。实体很有可能成为对象;实体的属性则表示成最终要由对象进行存储的数据;实体之间的关系有可能将建立“关联对象”。表示关系(连接)的基数,以及因果条件可能成为维持这些关系的服务。

ERD的问题:标识的实体可能与应用领域概念无关;对于那些不存储数据的对象显得无能为力。126软件工程(1)三视图模型(3VM)实体关系模型126软件工程数据流模型 有两种形式的数据流模型上下文图

确定一个全局的系统边界;外部实体就是候选对象;对象集合都必须阐明这些上下文图中的数据流是如何被接收、处理及生成的。分层的数据流图待开发系统的功能可分解成为一些基本单元,这些基本单元可看成是基本处理规格说明(PPSs)。PPSs最后必须对应于对象的方法或服务。127软件工程数据流模型127软件工程状态迁移模型

有两种形式的状态迁移模型:事件响应模型标识出系统必须识别的所发生的每一个事件,以及系统必须作出的预期响应的事件;标识一系列的识别事件的对象、产生响应的对象。状态迁移图能标识事件识别对象和对事件产生响应的对象;有助于标识保存状态信息的属性。注意:并非所有3VM工具对每个系统都是有用的。128软件工程状态迁移模型128软件工程(2)基于语言的信息分析(LIA)3VM技术并不能专门用于指导正确地标识出新系统的对象集合。基于语言的信息分析(LIA)在发现对象方面给出了大量的指导。LIA的目的是标识出应用领域的概念空间及这些概念之间的关系。有两种十分有效的LIA技术:短语频率分析(PhraseFrequencyAnalysis,简称PFA)矩阵分析(MatrixAnalysis,简称MA)129软件工程(2)基于语言的信息分析(LIA)3VM技术并不能专门用a.短语频率分析(PFA)短语频率分析搜索选定的问题陈述(资源文本),标识可以表示问题领域概念的术语。PFA是标识概念而不是标识语法单元。PFA清单的建立基本上是一个客观的过程,甚至可以自动处理。但可能大多数标识出来的概念是与目标系统无关的。PFA的优点就在于能广泛地标识问题领域的概念集合,并对它们进行评估,判定哪些与目标软件无关。130软件工程a.短语频率分析(PFA)短语频率分析搜索选定的问题陈述acceptedsubscriptionboardofadvisorscorrespondenceaddressaccompaniedpaymentbrownwrapper,plaincost,shippingaccountingdepartmentbulkshipmentcountryactualexpirationdatebureau,subscriptionservicecountry,foreignadditionalsubscriptioncheckpaymentcreditcardorderaddress,corporatecommision,subscriptioncreditcardpaymentaddress,correspondence

servicecurrentauthoraddress,homecompanysubscriptioncustomeraddress,subscriptioncomplimentarysubscriptiondatabaseadvisors,boardofcomplimentarysubscriptiondate,actualexpirationagency,subscriptionservice

querydate,expirationagreement,complimentarysubscriptiondate,expireddistributor-publisher

reviewdaleted,complimentaryannualsubscriptionpricecomplimentarysubscription

subscriptionarticle

deleteddepartment,accountingassociatedsiteconstituentcopiesdepartment,corporateauthorcontinuedsubscriptiondirectsubscriptionauthor,contributingcontributingauthordiscount,subscription

…131软件工程acceptedsubscriptionboardofPFA将名词和动词标识为候选实体和属性。但由于名词/动词的标识是非常主观的,可根据什么是名词或动词,以及根据分析员的理解,才能确定哪些名词或动词是要找的。对于任一有用的应用领域资源,PFA可能会产生一个长长的概念的清单。许多被标识出的概念因与目标软件无关而被丢弃,但其它的则会成为OOA模型的成份。将PFA清单转换为OOA/OOD工作表格。列出对各个概念的理解和选择,这将有助于对象的选出。132软件工程PFA将名词和动词标识为候选实体和属性。但由于名词/动词的标

SmallBytes

订阅系统

OOA/OOD

工作表格

目(0)(1)(2)(3)(4)(5)(6)(7)(8)

释ACCEPTIONSUBSCRIPTION

×SUBSCRIPTION的属性ACCOMPANIEDPAYMENT

×

对payment的不同类型不加

以区分ACCOUNTINGDEPARTMENT

×

已超出SBSS的应用领域ACTUALEXPIRATIONDATE

×SUBSCRIPTION的属性ADDITIONALSUBSCRIPTION

×

×SUBSCRIPTION的可能属

性,或可能是派生类型-基

类型结构ARTICLE

×ASSOCIATEDSITE

×SITE的属性AUTHOR

×

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

133软件工程SmallBytes订阅系统OOA/OODb.矩阵分析(MA)通常是在初始对象标识出来后再使用。矩阵的行和列是应用领域的概念。矩阵中的元素表示了相对应的行与列上的概念之间的关联关系。分析员标识出应用领域的关系(事务规则);而且还可能会发现新的在初始的PFA中没有产生的对象。134软件工程b.矩阵分析(MA)通常是在初始对象标识出来后再使用。1SBSS应用领域部分二维MA表135软件工程SBSS应用领域部分二维MA表135软件工程发现对象过程用OOA/OOD工作表格为指南,对照3VM标识的各种成份检查应用领域的各种概念。例如,查阅部分事件表,有一个事件,叫做“评审赠阅清单的时间”。翻查SBSS的OOA/OOD工作表格,查找与这个事件相关联的应用领域的概念,发现“赠阅评审”最合适。最后决定把“赠阅评审”作为SBSS的一个对象。136软件工程发现对象过程用OOA/OOD工作表格为指南,对照3VM标识的这个对象是一个“事件识别者”对象,它不存储任何数据,所以用实体关系模型不能发现这样的对象。任何一个系统中的对象必须是事件的识别者或事件的响应者。如果一个对象既不能识别事件的发生,也不能响应任一事件,它就不是属于这个系统的对象。这也是一个反复迭代的过程。对这个模型所进行的不断细化的过程中,可能会删除一些已存在的对象或建立一些新的对象。137软件工程这个对象是一个“事件识别者”对象,它不存储任何数据,所以用实2)类和对象的标识对象应该具有记忆其自身状态的能力。而且对象的属性应当是系统所关心的,或是系统正常运行所必需的。对象应当具有有意义的服务(操作),可用以修改对象本身的状态(属性值)。而且对象可以利用其服务为系统中的其它对象提供外部服务。对象应当具有多个有意义的属性。仅有一个属性的对象最好表示为其他对象的属性。138软件工程2)类和对象的标识对象应该具有记忆其自身状态的能力。而且对象为对象定义的属性应适合于对象的所有实例。如果对象的某一个实例不具备某属性,则意味着应用领域中存在尚未发现的继承关系。应该利用继承关系将原来的对象和特殊的实例区分为两个对象。为对象定义的有关服务应适合于对象的所有实例。对象应是软件分析模型的必要成分,与设计和实现方法无关。在面向对象的分析活动中,对对象的识别和筛选取决于应用问题及其背景。也取决于分析员的主观思维。139软件工程为对象定义的属性应适合于对象的所有实例。如果对象的某一个实例例如,ECS的应用领域概念需要注意的是:必须区分一个概念是属于应用问题的范畴,还是实现的范畴。考虑与电梯有关的所有事务的清单。可以删去其中一些很明显是关于ECS如何实现的而不是用于说明它干什么的条目。例如电梯线路、电梯中断和电梯轮等。清单中有些东西显然很重要,会成为对象、属性、结构或服务。如电梯容量、电梯号和电梯位置等,就可以成为电梯的属性。分析时需注意理解词汇用法上的问题。140软件工程例如,ECS的应用领域概念需要注意的是:必须区分一个概念是属例如,电梯控制系统,电梯控制程序和电梯控制器有什么不同?它们是一回事吗?考虑是否需要在ECS中设置一个基本对象,由它提供一些控制和智能协调?是否要为每一部电梯配置管理程序?是否这些功能由电梯调度程序来实现?又例如,在列出的所有与电梯按钮有关的条目,考虑所有的单词在应用领域是否有意义?是否有些单词是用户随便用来描述问题的?

(press和push真的有区别吗?)141软件工程例如,电梯控制系统,电梯控制程序和电梯控制器有什么不同?它们哪些单词是与实现有关的?一个对象BUTTON是否仅具有属性up和down,是否还有别的想法?可能对清单的其它部分还需要讨论。例如,是否区分乘客和即将上电梯的乘客。目前可以不去考虑将来可能会增添的功能,例如安置红外线检测器。142软件工程哪些单词是与实现有关的?142软件工程3)类和对象的细化标识了OOA模型候选对象的初始清单和其他结构后,可以通过建立初始的OOA模型的对象类来细化这个清单。将PFA表转换成OOA/OOD工作表格非常有效。它可以将每一个被标识的应用领域的概念归于某一特定的面向对象模型的成分。在发现和细化对象过程中仍使用三视图模型。事件响应图标识出系统必须对其响应的事件,及由谁来识别这个事件,谁来响应这个事件。143软件工程3)类和对象的细化标识了OOA模型候选对象的初始清单和其他结实体关系图对于实现事务数据处理的应用来说,可以帮助人们发现在初步的评审中忽略了的对象。如果系统中有许多看起来相互无关联的事情在进行,那么这个系统应可以划分成多个子系统,用上下文图来帮助确定要选择的对象和类。在细化过程中可能会发现一些在初步分析中没有被用户标识出来的概念,这些新的概念有可能成为对象。对于每一个最终得到的对象,可写一个简短的描述,说明类的成员关系。144软件工程实体关系图对于实现事务数据处理的应用来说,可以帮助人们发现在ECS的三视图模型使用上下文图可以直接帮助我们确定ECS系统被封闭在那些外部实体的范围内。目的地按钮面板召唤按钮面板电梯楼层传感器超载传感器目的地按钮面板到达按钮面板召唤按钮面板马达电梯控制系统目的地请求召唤请求电梯状态楼层消息超载状况修改到达修改目的地修改召唤马达命令145软件工程ECS的三视图模型使用上下文图可以直接帮助我们确定ECS系统因为ECS不需要存储重要的或复杂的数据,只需储存电梯到达楼层、当前召唤、要到达的目的地等信息,所以ERD不是很重要。楼层电梯召唤目的地联系联系联系联系ECS的ERD146软件工程因为ECS不需要存储重要的或复杂的数据,只需储存电梯到达楼层

ECS的事件响应模型最有用。它说明了所有可能发生的事件以及系统对这些事件应作出什么响应。 这些事件包括:某一确定时刻发生的事件。系统能够识别的事件。

事件的描述应详细到与应用领域和用户的陈述一致。并由用户来评价。 ECS的事件响应模型147软件工程ECS的事件响应模型最有用。它说明了所有可能发生的事件以及148软件工程148软件工程标识事件的三个准则:发生在某一确定的时刻;能够检测出事件的发生;能够找到事先定制好的响应。如果具备这三个条件,就可以纳入事件响应模型中。在上下文中使用事务分离原则:分析模型与设计模型分开建立。例如,在事件响应模型中没有对按钮和指示灯进

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论