1、1/56第二篇:传统软件工程方法学第二篇:传统软件工程方法学第第3 3章章 结构化分析结构化分析第第4 4章章 结构化设计结构化设计第第5 5章章 结构化实现结构化实现2/56第第3 3章章 结构化分析结构化分析(Structured Analysis,SAStructured Analysis,SA)n结构化分析过程和准则结构化分析过程和准则n与用户通信获取用户需求的方法与用户通信获取用户需求的方法n分析建模与规格说明分析建模与规格说明n实体实体-关系图关系图n数据流图数据流图n状态转化图状态转化图n数据字典数据字典3/563.1 3.1 概述概述n需求分析研究对象:软件项目的用户要求需求分
2、析研究对象:软件项目的用户要求n需求分析的任务:需求分析的任务:n建立分析模型建立分析模型 n编写编写需求说明需求说明 n需求分析的过程需求分析的过程n需求获取(问题识别)需求获取(问题识别)n需求提炼(求精)需求提炼(求精)n需求描述(建模、规格说明)需求描述(建模、规格说明)n需求验证(复审)需求验证(复审)4/56软件需求内容软件需求内容软件需求包括三个不同的层次软件需求包括三个不同的层次n业务需求业务需求n用户需求用户需求n功能需求功能需求 *非功能需求非功能需求5/56n从不同的角度来看,需求具有不同的层次,即业务需从不同的角度来看,需求具有不同的层次,即业务需求、用户需求、功能需求
3、和非功能需求等求、用户需求、功能需求和非功能需求等n以一个字处理程序为例以一个字处理程序为例n业务需求可能是:业务需求可能是:“用户能有效地纠正文档中的拼写错误用户能有效地纠正文档中的拼写错误”n对应的用户需求可能是对应的用户需求可能是“找出文档中的拼写错误并通过一个找出文档中的拼写错误并通过一个提供的替换项列表来供选择替换拼错的词提供的替换项列表来供选择替换拼错的词”n该拼写检查器还有许多功能需求,如找到并高亮度提示错该拼写检查器还有许多功能需求,如找到并高亮度提示错词的操作;显示提供替换词的对话框以及实现整个文档范词的操作;显示提供替换词的对话框以及实现整个文档范围的替换围的替换6/56非
4、功能需求(非功能需求(non-functional requirement)n从各个角度对系统的约束和限制,反映了应用对从各个角度对系统的约束和限制,反映了应用对软件系统质量和特性的额外要求软件系统质量和特性的额外要求n包括过程需求、产品需求和外部需求包括过程需求、产品需求和外部需求n过程需求有交付、实现方法和标准等需求过程需求有交付、实现方法和标准等需求n产品需求包含性能、可用性、实用性、可靠性、可移产品需求包含性能、可用性、实用性、可靠性、可移植性、安全保密性、容错性等方面的需求植性、安全保密性、容错性等方面的需求n外部需求有法规、成本、操作性等需求外部需求有法规、成本、操作性等需求7/5
5、6需求需求分析模型分析模型n模型模型 为了理解事物而对事物做出的一种抽象,是对事为了理解事物而对事物做出的一种抽象,是对事物的一种无歧义的书面描述。它通常由一组物的一种无歧义的书面描述。它通常由一组图形图形符号符号和组织这些符号的和组织这些符号的规则规则组成。组成。n结构化分析须建模型结构化分析须建模型:n数据模型数据模型n功能模型功能模型n行为模型行为模型8/56问题识别问题识别n参考当前系统建立目标系统模型,解决目参考当前系统建立目标系统模型,解决目标系统标系统 “做什么做什么”的问题。的问题。9/56结构化分析方法结构化分析方法 n面向面向数据流数据流进行需求分析的方法进行需求分析的方法
6、n具体说:用抽象模型的概念,按照软件内具体说:用抽象模型的概念,按照软件内部部数据传递数据传递、变换变换的关系,的关系,自顶向下自顶向下逐层逐层分解,直到找到满足功能要求的所有可实分解,直到找到满足功能要求的所有可实现的软件为止现的软件为止n适合于数据处理类型软件的需求分析适合于数据处理类型软件的需求分析n工具:实体工具:实体-关系图、数据流图、状态转化关系图、数据流图、状态转化图、数据字典图、数据字典10/56结构化分析准则结构化分析准则n必须理解和表示问题的必须理解和表示问题的信息信息域域 建立数据模型建立数据模型n必须定义软件应完成的必须定义软件应完成的功能功能 建立功能模型建立功能模型
7、n必须表示作为外部事件结果的软件必须表示作为外部事件结果的软件行为行为 建立行为模型建立行为模型n必须对描述信息、功能和行为的模型进行必须对描述信息、功能和行为的模型进行分解分解用用层次层次的方式展开细节的方式展开细节n分析分析过程过程应该从要素信息移向实现细节应该从要素信息移向实现细节11/56第第3 3章章 结构化分析结构化分析(Structured Analysis,SAStructured Analysis,SA)n结构化分析过程和准则结构化分析过程和准则n与用户通信获取用户需求的方法与用户通信获取用户需求的方法n分析建模与规格说明分析建模与规格说明n实体实体-关系图关系图n数据流图数
8、据流图n状态转化图状态转化图n数据字典数据字典12/563.2 3.2 与用户通信的技术与用户通信的技术3.2.1 3.2.1 访谈(会谈)访谈(会谈)n正式访谈(提出事先准备好的问题)正式访谈(提出事先准备好的问题)n非正式访谈(可自由回答的开放式问题)非正式访谈(可自由回答的开放式问题)n分发调查表(准确、有针对性)分发调查表(准确、有针对性)n情景分析(对用户运用目标系统解决某个情景分析(对用户运用目标系统解决某个具体问题的方法和结果进行分析)具体问题的方法和结果进行分析)13/563.2.2 3.2.2 简易的应用规格说明技术简易的应用规格说明技术n主流技术:面向团队的需求收集法主流技
9、术:面向团队的需求收集法 (联合需求计划联合需求计划JRP)n基本准则基本准则n在中立地点举行由开发者和用户双方出席的会议在中立地点举行由开发者和用户双方出席的会议n制定准备会议和参加会议的规则制定准备会议和参加会议的规则n提出议事日程(涵盖要点、鼓励自由思维)提出议事日程(涵盖要点、鼓励自由思维)n由由“协调人协调人”主持会议主持会议n使用使用“定义机制定义机制”(工作表、图表)(工作表、图表)n目标:标识问题、提出方案、商讨方法、指定初步目标:标识问题、提出方案、商讨方法、指定初步需求需求14/56 基本方法及过程基本方法及过程n初步访谈,对问题及解决方案形成总体认识初步访谈,对问题及解决
10、方案形成总体认识n开发者与用户同写开发者与用户同写“产品需求产品需求”n选定会议时间、地点、协调人、双方代表选定会议时间、地点、协调人、双方代表n会议前将会议前将“产品需求产品需求”分发给每位与会者复审分发给每位与会者复审n形成议题列表:系统功能、性能、约束条件形成议题列表:系统功能、性能、约束条件n小组讨论议题列表,形成小型规格说明小组讨论议题列表,形成小型规格说明n讨论小型规格说明,形成产品的确认标准讨论小型规格说明,形成产品的确认标准n讨论产品的确认标准,起草完整的规格说明讨论产品的确认标准,起草完整的规格说明15/56会议设施会议设施16/5617/563.2.3 3.2.3 软件原型
11、软件原型n要点要点n实现主要的、可见的功能实现主要的、可见的功能n省略省略“隐含隐含”功能功能n特性特性n快速(快速(“做什么做什么”)n易于修改易于修改n方法和工具方法和工具n4 4GTGT(DBDB查询语言、应用系统生成器)查询语言、应用系统生成器)n可重用软件构件可重用软件构件n形式化规格说明和原型环境形式化规格说明和原型环境18/56第第3 3章章 结构化分析结构化分析(Structured Analysis,SAStructured Analysis,SA)n结构化分析过程和准则结构化分析过程和准则n与用户通信获取用户需求的方法与用户通信获取用户需求的方法n分析建模与规格说明分析建模
12、与规格说明n实体实体-关系图关系图n数据流图数据流图n状态转化图状态转化图n数据字典数据字典19/563.3 3.3 分析建模与规格说明分析建模与规格说明3.3.1 3.3.1 分析建模分析建模n基本目标基本目标n描述用户的需求描述用户的需求n为软件设计工作奠定基础为软件设计工作奠定基础n定义一组需求(以此为标准验收产品)定义一组需求(以此为标准验收产品)n分析模型的结构分析模型的结构20/56分析模型的结构分析模型的结构分析模型的元素分析模型的元素数据字典数据字典(DDDD):核心核心(软件使用和产生的所有数据对象软件使用和产生的所有数据对象)实体实体-关系图关系图(ERDERD):描述数据
13、对象之间的关系描述数据对象之间的关系数据流图数据流图(DFDDFD)指明数据在系统中移动时怎样被变换指明数据在系统中移动时怎样被变换描述变换数据流的功能和子功能描述变换数据流的功能和子功能DFDDFD中每个功能的描述在中每个功能的描述在“处理规格说明处理规格说明”中中状态转换图状态转换图(STDSTD)指明作为外部事件结果的系统行为指明作为外部事件结果的系统行为22/563.3.2 3.3.2 软件需求规格说明软件需求规格说明n需求规格说明:分析阶段的需求规格说明:分析阶段的最终成果最终成果n通过建立通过建立n完整的信息描述完整的信息描述n详细的功能和行为描述详细的功能和行为描述n性能需求和设
14、计约束的说明性能需求和设计约束的说明n合适的验收标准合适的验收标准给出目标软件的各种需求给出目标软件的各种需求n简略大纲简略大纲作为软件需求规格说明的框架作为软件需求规格说明的框架23/56软件需求规格说明大纲软件需求规格说明大纲 A.A.系统参考文献系统参考文献 B.B.整体描述整体描述 C.C.软件项目约束软件项目约束 A.A.信息内容信息内容 B.B.信息流信息流 1.1.数据流数据流 2.2.控制流控制流 A.A.功能分解功能分解 B.B.功能描述功能描述1.1.处理说明处理说明 2.2.限制限制 3.3.性能需求性能需求 4.4.设计约束设计约束 5.5.支撑图支撑图 C.C.控制描
15、述控制描述 1.1.控制规格说明控制规格说明 2.2.设计约束设计约束 A.A.系统状态系统状态 B.B.事件和动作事件和动作 A.A.性能范围性能范围 B.B.测试种类测试种类 C.C.期望的软件响应期望的软件响应 D.D.特殊的考虑特殊的考虑 24/56第第3 3章章 结构化分析结构化分析(Structured Analysis,SAStructured Analysis,SA)n结构化分析过程和准则结构化分析过程和准则n与用户通信获取用户需求的方法与用户通信获取用户需求的方法n分析建模与规格说明分析建模与规格说明n实体实体-关系图关系图n数据流图数据流图n状态转化图状态转化图n数据字典数
16、据字典25/563.4 3.4 实体实体关系图关系图(Entity-Relationship Diagram,Entity-Relationship Diagram,ERDERD)nERDERD用于数据建模用于数据建模(data modeling)n数据模型包含信息数据模型包含信息n数据数据对象对象n描述数据对象的描述数据对象的属性属性n数据对象之间相互连接的数据对象之间相互连接的关系关系26/563.4.13.4.1 数据对象数据对象n数据对象:需被目标系统所理解的数据对象:需被目标系统所理解的复合信息复合信息的表示。的表示。复合信息是具有若干不同特征或属性的复合信息是具有若干不同特征或属性
17、的事物事物n数据对象举例:数据对象举例:n外部实体(显示器)外部实体(显示器)n事物(报表)事物(报表)n角色(学生)角色(学生)n行为(打电话)行为(打电话)n事件(单击鼠标)事件(单击鼠标)n单位(研究生院)单位(研究生院)n地点(教室)地点(教室)n结构(文件)结构(文件)n只封装了数据,不包含作用于这些数据上的操作只封装了数据,不包含作用于这些数据上的操作 数据对象彼数据对象彼此间是有此间是有关联的!关联的!27/563.4.23.4.2 属性属性n属性:定义了数据对象的性质。属性:定义了数据对象的性质。n属性用途:属性用途:为数据对象的实例命名;为数据对象的实例命名;描述该实例;描述
18、该实例;引用另一个数据对象的实例。引用另一个数据对象的实例。n如学生数据对象的属性可以有学号、姓名、性别、如学生数据对象的属性可以有学号、姓名、性别、出生年月、籍贯等。出生年月、籍贯等。n必须将数据对象的一个属性或几个属性定义为必须将数据对象的一个属性或几个属性定义为“标识标识符符”,即当希望找到数据对象的某个实例时,标识符属,即当希望找到数据对象的某个实例时,标识符属性成为性成为关键字关键字(key)key),书写为书写为_ _idid。n例如在例如在“学生学生”数据对象中用数据对象中用“学号学号”做关键字做关键字28/563.4.33.4.3 关系关系n关系:数据对象彼此之间相互连接的方式
19、。关系:数据对象彼此之间相互连接的方式。n如学生如学生“张鹏张鹏”选修课程选修课程“软件工程软件工程”与与“计算机网络计算机网络”,学生与课程的实例通过学生与课程的实例通过“选修选修”关联起来。关联起来。n关联种类:关联种类:一对一一对一(1:1)(1:1);一对多一对多(1:(1:N)N);多对多多对多(M:N)M:N)。n如如1 1位教师带位教师带3030位同学,就是位同学,就是1:1:N N的关系。的关系。n关联可能有属性关联可能有属性n如学生如学生“学学”某门课程所取得的某门课程所取得的“”29/56教师教师学生学生管带管带30/563.4.4 3.4.4 实体实体关系图关系图(ERD
20、ERD)nERDERD 作用作用:用于建立:用于建立数据模型数据模型(ERER模型)模型)nERDERD基本成分基本成分n实体(数据对象)(矩形框)实体(数据对象)(矩形框)n属性(椭圆形或圆角矩形)属性(椭圆形或圆角矩形)n关系(菱形框)关系(菱形框)n学校教学管理(成绩管理)学校教学管理(成绩管理)ERDERD31/56某学校教学管理某学校教学管理ERDERD32/56学号学号 姓名姓名 专业专业 性别性别学生学生职工号职工号姓名姓名专业专业职称职称年龄年龄教师教师课程号课程号 课程名课程名 学分学分 学时学时 课程课程选课选课33/56第第3 3章章 结构化分析结构化分析(Structu
21、red Analysis,SAStructured Analysis,SA)n结构化分析过程和准则结构化分析过程和准则n与用户通信获取用户需求的方法与用户通信获取用户需求的方法n分析建模与规格说明分析建模与规格说明n实体实体-关系图关系图n数据流图数据流图n状态转化图状态转化图n数据字典数据字典34/563.5 3.5 数据流图数据流图(Data Flow Diagram,DFD)n最初,结构化分析方法仅讨论数据流建模。最初,结构化分析方法仅讨论数据流建模。目标系统被表示成如图所示的数据变换流程目标系统被表示成如图所示的数据变换流程图。系统的图。系统的功能功能体现在核心的数据变换中。体现在核心
22、的数据变换中。外部实体外部实体外部实体外部实体外部实体外部实体外部实体外部实体目标目标系统系统输入信息输入信息输入信息输入信息输出信息输出信息输出信息输出信息35/56功能建模与数据流图功能建模与数据流图n功能建模的基本思想:功能建模的基本思想:用抽象模型的概念,按照软件内部数据传用抽象模型的概念,按照软件内部数据传递、变换的关系,自顶向下逐层分解,直递、变换的关系,自顶向下逐层分解,直到找到满足到找到满足功能功能要求的所有可实现的软件要求的所有可实现的软件为止。为止。n功能模型:功能模型:使用使用 DFDDFD 来表达数据流从输入到输出的来表达数据流从输入到输出的移移动变换动变换过程。过程。
23、36/56数据流图(数据流图(DFDDFD)nDFD从信息传递和处理的角度,以图形的方式描绘从信息传递和处理的角度,以图形的方式描绘信信息流息流和和数据数据从输入移动到输出的过程中所经受的从输入移动到输出的过程中所经受的变换变换nDFD可以按自顶向下、逐步分解的方法表示内容不断可以按自顶向下、逐步分解的方法表示内容不断增加的数据流和功能细节增加的数据流和功能细节nDFD中没有物理元素,是系统中没有物理元素,是系统逻辑功能逻辑功能的图形表示的图形表示nDFD既提供了既提供了功能建模功能建模的机制,也提供了的机制,也提供了信息流建模信息流建模的机制,从而可以建立起系统或软件的功能模型的机制,从而可
24、以建立起系统或软件的功能模型37/56 3.5.1 3.5.1 数据流图符号数据流图符号四种基本符号及其含义四种基本符号及其含义38/56 表明多个数据流与加工之间关系的符号表明多个数据流与加工之间关系的符号 39/56分层分层DFD40/5641/5642/563.5.2 DFD例子:定货系统例子:定货系统(需求描述需求描述)n一家工厂的采购部每天需要一张一家工厂的采购部每天需要一张定货报表定货报表,报,报表按零件编号排序,表中列出所有需要再次定表按零件编号排序,表中列出所有需要再次定货的零件。货的零件。n每个需要再次定货的零件应列出下述每个需要再次定货的零件应列出下述数据数据:零:零件编号
25、、零件名称、定货数量、目前价格、主件编号、零件名称、定货数量、目前价格、主要供应者、次要供应者。要供应者、次要供应者。n零件入库或出库称为零件入库或出库称为事务事务,通过放在仓库中的,通过放在仓库中的终端将事务报告给定货系统。当某种零件的库终端将事务报告给定货系统。当某种零件的库存量少于库存量临界值时就应该再次定货。存量少于库存量临界值时就应该再次定货。43/56完成完成DFDDFD的步骤及要点的步骤及要点n从问题描述中提取从问题描述中提取DFD的的四种成分四种成分:n数据源点和终点数据源点和终点n处理(加工)处理(加工)n数据流和存储数据流和存储n不是所有数据存储和数据流都能直接从问题描述中
26、不是所有数据存储和数据流都能直接从问题描述中提取出来提取出来n按自外向内、自顶向下、逐层细化、完善求精的方按自外向内、自顶向下、逐层细化、完善求精的方法画出法画出DFDn当进一步分解涉及如何当进一步分解涉及如何具体实现具体实现一个功能时就一个功能时就不不应应该再该再分解分解了了n对对DFD层细化时必须保持信息连续性层细化时必须保持信息连续性44/56表表3.13.145/56基本系统模型基本系统模型46/56功能级数据流图功能级数据流图47/56系统主要功能进一步细化后的系统主要功能进一步细化后的DFDDFD48/563.5.3 命名命名n数据流和数据存储数据流和数据存储n名字应代表其整个内容
27、而非其某些成分名字应代表其整个内容而非其某些成分n不使用空洞的、缺乏具体含义的名字不使用空洞的、缺乏具体含义的名字n处理处理n 先为数据流命名,再为与之关联的处理命名先为数据流命名,再为与之关联的处理命名n名字应反映整个处理的功能而非其部分功能名字应反映整个处理的功能而非其部分功能n仅包含仅包含一个动词一个动词,否则应分解处理,否则应分解处理n数据源点数据源点/终点终点49/56第第3 3章章 结构化分析结构化分析(Structured Analysis,SAStructured Analysis,SA)n结构化分析过程和准则结构化分析过程和准则n与用户通信获取用户需求的方法与用户通信获取用户
28、需求的方法n分析建模与规格说明分析建模与规格说明n实体实体-关系图关系图n数据流图数据流图n状态转化图状态转化图n数据字典数据字典50/563.6 状态转换图(状态转换图(STD)nSTD:通过描述系统的通过描述系统的状态状态及引起系统状及引起系统状态转换的态转换的事件事件,来表示系统的,来表示系统的行为行为。n状态:任何可以被观察到的系统行为模式,状态:任何可以被观察到的系统行为模式,它规定了系统对事件的响应方式。它规定了系统对事件的响应方式。n一个状态代表系统的一种行为模式。一个状态代表系统的一种行为模式。n事件:引起系统状态转换的事件:引起系统状态转换的控制信息控制信息。n系统对事件的响
29、应:动作或改变系统状态系统对事件的响应:动作或改变系统状态51/56STD STD 符号表示符号表示n圆形或椭圆形框圆形或椭圆形框-系统状态(框内系统状态(框内标注状态名)标注状态名)n箭头线箭头线-状态转换方向(线上标注状态转换方向(线上标注事件名)事件名)n实心圆实心圆-初始状态初始状态n同心圆同心圆-最终状态最终状态事件事件条件条件1状态状态1do:行为行为1状态状态2do:行为行为2结束结束事件事件初始初始事件事件52/56例子:电话系统例子:电话系统STDSTD53/56第第3 3章章 结构化分析结构化分析(Structured Analysis,SAStructured Analy
30、sis,SA)n结构化分析过程和准则结构化分析过程和准则n与用户通信获取用户需求的方法与用户通信获取用户需求的方法n分析建模与规格说明分析建模与规格说明n实体实体-关系图关系图n数据流图数据流图n状态转化图状态转化图n数据字典数据字典54/563.7 数据字典数据字典(Data Dictionary,DDData Dictionary,DD)nDDDD:所有与系统相关的数据元素的有组织的所有与系统相关的数据元素的有组织的列表列表,它包含了对这些数据元素的它包含了对这些数据元素的精确的、精确的、严格的定义严格的定义,使得用户和系统分析员对于输,使得用户和系统分析员对于输入、输出、存储成分和中间计
31、算结果有共同入、输出、存储成分和中间计算结果有共同的理解。的理解。n目的:分析模型中包含了对数据对象、功能目的:分析模型中包含了对数据对象、功能和控制的表示。每一表示中,数据对象和控和控制的表示。每一表示中,数据对象和控制信息都有重要作用。为表示每个制信息都有重要作用。为表示每个数据对象数据对象和和控制信息控制信息的的特性特性,建立,建立DDDD 。55/56DDDD内容(内容(词条描述词条描述)n名字:数据、控制项、数据存储或外部实体的名字:数据、控制项、数据存储或外部实体的主要名称。主要名称。n别名:第一项中对象的其他名字。别名:第一项中对象的其他名字。n使用地点与方式:使用数据或控制项的
32、处理的使用地点与方式:使用数据或控制项的处理的列表,以及使用这些对象的方式。列表,以及使用这些对象的方式。n内容描述:描述数据或控制项内容的符号。内容描述:描述数据或控制项内容的符号。n补充信息:关于数据类型、预置值、限制等。补充信息:关于数据类型、预置值、限制等。对象?加工?数据流?数据文件?外部实体?对象?加工?数据流?数据文件?外部实体?控制项(事件控制项(事件状态)?状态)?56/56DDDD内容(内容(内容描述)内容描述)n定义数据的方法定义数据的方法n自顶向下分解数据自顶向下分解数据n当无须进一步定义、相关人员都清楚其当无须进一步定义、相关人员都清楚其含义时结束分解含义时结束分解n
33、数据元素组成数据的方式数据元素组成数据的方式n顺序:顺序:A+Bn选择:选择:A|Bn重复:重复:1Ann可选可选:(:(A)57/56DDDD内容(内容(数据结构描述)数据结构描述)x=ab.,.或或.|.x=a,b,x=a|b.或或 m.n x=a,x=3a8(.)x=(a)“.”x=“a”.x=1.9限制重复次数举例限制重复次数举例 表示允许重复表示允许重复3-53-5次次 表示恰好重复表示恰好重复 3 3 次次 表示至少出现表示至少出现 1 1 次次表示允许重复表示允许重复0 0至任意至任意次次F1:航班信息文件航空公司名称航班号起点终点日期 起飞时间降落时间航空公司名称2字母4 字母
34、“A”“Z”航班号3十进制数字3十进制数字“0”.“9”起点终点1汉字10 日期年月日 年2000201920192019 月“01”.“12”日“01”.“31”起飞时间降落时间时分 时“00”.“23”分“00”.“59”补充例题补充例题DDDD实例:实例:航班信息航班信息文件文件 重复项:起点终点1汉字10 航空公司名称2字母4 航班号3十进制数字3 组合项:日期年月日 起飞时间降落时间时分选择项:年2000201920192019原数据项:字母“A”.“Z”十进制数字“0”.“9”时“00”.“23”分“00”.“59”月“01”.“12”日“01”.“31”航班信息文件航班信息文件61/563.8 小结小结n传统传统SE方法学使用方法学使用结构化结构化分析技术完成分析技术完成用户需求分析的工作用户需求分析的工作n需求分析需求分析过程过程:发现、求精、建模、规格:发现、求精、建模、规格说明、复审说明、复审n发现发现需求(发现需求(发现+求精):访谈、简易应求精):访谈、简易应用规格说明技术、快速原型用规格说明技术、快速原型n描述描述需求(需求(ERD、DFD、STD、DD、规规格说明)格说明)62/56THANK YOUTHANK YOU!