《软件设计的任务.ppt》由会员分享,可在线阅读,更多相关《软件设计的任务.ppt(108页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、软件设计的任务 把需求变换成软件表示的过程l l数据结构l l软件的系统结构设计过程设计过程l l制定规范制定规范l l总体设计总体设计l l处理设计处理设计l l数据结构设计数据结构设计l l可靠性设计可靠性设计l l编写文档编写文档l l评审评审l l设计是后续开发步骤及软件维护工作的设计是后续开发步骤及软件维护工作的基础。如果没有设计,只能建立一个不基础。如果没有设计,只能建立一个不稳定的系统结构稳定的系统结构制定规范制定规范l l确认用户要求能否实现l l选择合适的设计方法l l规定设计文档的编制标准l l规定编码的信息形式,与硬件的接口规约2.软件系统结构的总体设计软件系统结构的总体
2、设计l基于功能层次结构建立系统。基于功能层次结构建立系统。l l将系统按功能划分成模块的层次将系统按功能划分成模块的层次结构结构l l确定每个模块的功能确定每个模块的功能l l确定模块间的调用关系确定模块间的调用关系l l确定模块间的接口确定模块间的接口l l评估模块划分的质量评估模块划分的质量,导出模块导出模块结构的规则结构的规则3.处理设计处理设计l l确定为实现系统的功能需求所必需的算确定为实现系统的功能需求所必需的算法,评估算法的性能法,评估算法的性能l l确定为满足系统的性能需求所必需的算确定为满足系统的性能需求所必需的算法和模块间的控制方式法和模块间的控制方式l l确定外部信号的接
3、收发送形式确定外部信号的接收发送形式4.数据结构设计数据结构设计l l确定软件涉及的文件系统的结构以及数确定软件涉及的文件系统的结构以及数据库的模式、子模式,进行数据完整性据库的模式、子模式,进行数据完整性和安全性的设计和安全性的设计l l确定输入,输出文件的详细的数据结构确定输入,输出文件的详细的数据结构l l结合算法设计,确定算法所必需的逻辑结合算法设计,确定算法所必需的逻辑数据结构及其操作数据结构及其操作l l确定对逻辑数据结构所必需的那些操作确定对逻辑数据结构所必需的那些操作的程序模块的程序模块(软件包软件包)l l若需要与操作系统或调度程序接口所必若需要与操作系统或调度程序接口所必须
4、的控制表等数据时,确定其详细的数须的控制表等数据时,确定其详细的数据结构和使用规则据结构和使用规则5.可靠性设计可靠性设计l l可靠性设计也叫做质量设计可靠性设计也叫做质量设计l l在运行过程中,为了适应环境的变化和在运行过程中,为了适应环境的变化和用户新的要求,需经常对软件进行改造用户新的要求,需经常对软件进行改造和修正。在软件开发的一开始就要确定和修正。在软件开发的一开始就要确定软件可靠性和其它质量指标,考虑相应软件可靠性和其它质量指标,考虑相应措施,以使得软件易于修改和易于维护。措施,以使得软件易于修改和易于维护。6.编写系统设计阶段的文档编写系统设计阶段的文档l概要设计阶段完成时应编写
5、以概要设计阶段完成时应编写以下文档:下文档:l l系统设计说明书系统设计说明书l l数据库设计说明书数据库设计说明书l l用户手册用户手册l l制定初步的测试计划制定初步的测试计划7.概要设计评审概要设计评审l l可追溯性可追溯性:确认该设计是否复盖了所有:确认该设计是否复盖了所有已确定的软件需求,软件每一成份是否已确定的软件需求,软件每一成份是否可追溯到某一项需求可追溯到某一项需求l l接口接口:确认该软件的内部接口与外部接:确认该软件的内部接口与外部接口是否已经明确定义。模块是否满足高口是否已经明确定义。模块是否满足高内聚和低耦合的要求。模块作用范围是内聚和低耦合的要求。模块作用范围是否在
6、其控制范围之内否在其控制范围之内l l风险风险:确认该设计在现有技术条件下和:确认该设计在现有技术条件下和预算范围内是否能按时实现预算范围内是否能按时实现l l实用性实用性:确认该设计对于需求的解决方:确认该设计对于需求的解决方案是否实用案是否实用l l技术清晰度技术清晰度:确认该设计是否以一种易:确认该设计是否以一种易于翻译成代码的形式表达于翻译成代码的形式表达l l可维护性可维护性:确认该设计是否考虑了方便:确认该设计是否考虑了方便未来的维护未来的维护l l质量质量:确认该设计是否表现出良好的质:确认该设计是否表现出良好的质量特征量特征l l各种选择方案各种选择方案:看是否考虑过其:看是否
7、考虑过其它方案,比较各种选择方案的标它方案,比较各种选择方案的标准是什么准是什么l l限制限制:评估对该软件的限制是否:评估对该软件的限制是否现实,是否与需求一致现实,是否与需求一致l l其它具体问题其它具体问题:对于文档、可测:对于文档、可测试性、设计过程试性、设计过程.等进行评估等进行评估自顶向下,逐步细化自顶向下,逐步细化l将软件的体系结构按自顶向将软件的体系结构按自顶向下方式,对各个层次的过程下方式,对各个层次的过程细节和数据细节逐层细化,细节和数据细节逐层细化,直到用程序设计语言的语句直到用程序设计语言的语句能够实现为止,从而最后确能够实现为止,从而最后确立整个的体系结构。立整个的体
8、系结构。软件设计的原则软件设计的原则软件结构软件结构l l软件结构包括两部分。程序模块的层次软件结构包括两部分。程序模块的层次结构和数据的结构结构和数据的结构l l软件的体系结构通过一个划分过程来完软件的体系结构通过一个划分过程来完成。该划分过程从需求分析确立的目标成。该划分过程从需求分析确立的目标系统的模型出发,对整个问题进行分割,系统的模型出发,对整个问题进行分割,使其每个部分用一个或几个软件成份加使其每个部分用一个或几个软件成份加以解决,整个问题就解决了以解决,整个问题就解决了(2)举例:程序结构程序结构l l程序结构表明了程序各个部件程序结构表明了程序各个部件(模块模块)的组的组织情况
9、,是软件的过程表示。织情况,是软件的过程表示。结构图结构图l结构图反映程序中模块之间的结构图反映程序中模块之间的层次调用关系和联系:它以特层次调用关系和联系:它以特定的符号表示模块、模块间的定的符号表示模块、模块间的调用关系和模块间信息的传递调用关系和模块间信息的传递模块:模块用矩形框表示,并模块:模块用矩形框表示,并用模块的名字标记它。用模块的名字标记它。模块的调用关系和接口:模块之模块的调用关系和接口:模块之间用单向箭头联结,箭头从调用模间用单向箭头联结,箭头从调用模块指向被调用模块。块指向被调用模块。模块间的信息传递:当一个模模块间的信息传递:当一个模块调用另一个模块时,调用模块调用另一
10、个模块时,调用模块把数据或控制信息传送给被块把数据或控制信息传送给被调用模块,以使被调用模块能调用模块,以使被调用模块能够运行。而被调用模块在执行够运行。而被调用模块在执行过程中又把它产生的数据或控过程中又把它产生的数据或控制信息回送给调用模块制信息回送给调用模块在模块在模块A的箭头尾部标以一个菱形符的箭头尾部标以一个菱形符号,表示模块号,表示模块A有条件地调用另一个模有条件地调用另一个模块块B。当一个在调用箭头尾部标以一个当一个在调用箭头尾部标以一个弧形符号,表示模块弧形符号,表示模块A反复调用模块反复调用模块C和模块和模块D。程序的系统结构图程序的系统结构图模块化模块化l l软件系统的模块
11、化是指整个软件被软件系统的模块化是指整个软件被划分成若干单独命名和可编址的部划分成若干单独命名和可编址的部分,称之为模块。这些模块可以被分,称之为模块。这些模块可以被组装起来以满足整个问题的需求。组装起来以满足整个问题的需求。l l把问题子问题的分解与软件开发把问题子问题的分解与软件开发中的系统子系统或系统模块对中的系统子系统或系统模块对应起来,就能够把一个大而复杂的应起来,就能够把一个大而复杂的软件系统划分成易于理解的比较单软件系统划分成易于理解的比较单纯的模块结构。纯的模块结构。抽象化抽象化l软件系统进行模块设计时,可有软件系统进行模块设计时,可有不同的抽象层次。不同的抽象层次。l在最高的
12、抽象层次上,可以使用在最高的抽象层次上,可以使用问题所处环境的语言概括地描述问题所处环境的语言概括地描述问题的解法。问题的解法。l在较低的抽象层次上,则采用过在较低的抽象层次上,则采用过程化的方法。程化的方法。(1)过程的抽象过程的抽象在软件工程中,从系统定义到实现,每进在软件工程中,从系统定义到实现,每进展一步都可以看做是对软件解决方法的抽展一步都可以看做是对软件解决方法的抽象化过程的一次细化。象化过程的一次细化。在软件需求分析阶段,用在软件需求分析阶段,用“问题所处环问题所处环境的为大家所熟悉的术语境的为大家所熟悉的术语”来描述软件的来描述软件的解决方法。解决方法。在从概要设计到详细设计的
13、过程中,抽在从概要设计到详细设计的过程中,抽象化的层次逐次降低。当产生源程序时到象化的层次逐次降低。当产生源程序时到达最低抽象层次。达最低抽象层次。例例:开发一个开发一个CAD软件的三层抽象软件的三层抽象l l抽象层次抽象层次.用问题所处环境的术语来用问题所处环境的术语来描述这个软件描述这个软件:该软件包括一个计算机绘图界面,向绘该软件包括一个计算机绘图界面,向绘图员显示图形,以及一个数字化仪界面,图员显示图形,以及一个数字化仪界面,用以代替绘图板和丁字尺。所有直线、用以代替绘图板和丁字尺。所有直线、折线、矩形、圆及曲线的描画、所有的折线、矩形、圆及曲线的描画、所有的几何计算、所有的剖面图和辅
14、助视图都几何计算、所有的剖面图和辅助视图都可以用这个可以用这个CAD软件实现软件实现。l抽象层次抽象层次.任务需求的描述。任务需求的描述。CADSOFTWARETASKSuserinteractiontask;2-Ddrawingcreationtask;graphicsdisplaytask;drawingfilemanagementtask;end.在这个抽象层次上,未给出在这个抽象层次上,未给出“怎样做怎样做”的信息,不能直接实现。的信息,不能直接实现。l l抽象层次抽象层次.程序过程表示。以程序过程表示。以2-D(二维二维)绘图生成任务为例绘图生成任务为例:PROCEDUREPROCE
15、DURE:2-Ddrawingcreation2-DdrawingcreationREPEATUNTIL(drawingcreationtaskREPEATUNTIL(drawingcreationtaskterminates)terminates)DOWHILE(digitizerinteractionoccurs)DOWHILE(digitizerinteractionoccurs)digitizerinterfacetask;digitizerinterfacetask;DETERMINEdrawingrequestCASE;DETERMINEdrawingrequestCASE;lin
16、eline:linedrawingtask;linedrawingtask;rectanglerectangle:rectangledrawingtask;rectangledrawingtask;circlecircle:circledrawingtask;circledrawingtask;(2)数据抽象数据抽象在不同层次上描述数据对象的细节,定在不同层次上描述数据对象的细节,定义与该数据对象相关的操作。义与该数据对象相关的操作。例如,在例如,在CAD软件中,定义一个叫做软件中,定义一个叫做drawing的数据对象。可将的数据对象。可将drawing规规定为一个抽象数据类型,定义它的内部定
17、为一个抽象数据类型,定义它的内部细节为细节为:TYPEdrawingISSTRUCTUREDEFINDnumber IS STRING LENGTH(12);geometryDEFINDnotes IS STRING LENGTH(256);BOMDEFINDENDdrawingTYPE;l l数据抽象数据抽象drawing本身由另外一些数据抽象,本身由另外一些数据抽象,如如geometry、BOM(billofmaterials)构成构成l l定义定义drawing的抽象数据类型之后,可引用它的抽象数据类型之后,可引用它来定义其它数据对象,而不必涉及来定义其它数据对象,而不必涉及drawin
18、g的的内部细节内部细节l l例如,定义例如,定义:blue-printISINSTANCEOFdrawing;或或schematicISINSTANCEOFdrawing;信息隐蔽信息隐蔽l l由由parnas方法提倡的信息隐蔽是指,方法提倡的信息隐蔽是指,每个模块的实现细节对于其它模块来说每个模块的实现细节对于其它模块来说是隐蔽的。也就是说,模块中所包含的是隐蔽的。也就是说,模块中所包含的信息(包括数据和过程)不允许其它不信息(包括数据和过程)不允许其它不需要这些信息的模块使用。需要这些信息的模块使用。模块的独立性模块的独立性l模块(模块(Module)“模块模块”,又称,又称“组件组件”。
19、它一。它一般具有如下三个基本属性般具有如下三个基本属性:l l功能:描述该模块实现什么功功能:描述该模块实现什么功能能l l逻辑:描述模块内部怎么做逻辑:描述模块内部怎么做l l状态:该模块使用时的环境和状态:该模块使用时的环境和条件条件l l在描述一个模块时,还必须按模块的外在描述一个模块时,还必须按模块的外部特性与内部特性分别描述部特性与内部特性分别描述l l模块的外部特性模块的外部特性l l模块的模块名、参数表、其中的输入模块的模块名、参数表、其中的输入参数和输出参数,以及给程序以至整参数和输出参数,以及给程序以至整个系统造成的影响个系统造成的影响l l模块的内部特性模块的内部特性l l
20、完成其功能的程序代码和仅供该模块完成其功能的程序代码和仅供该模块内部使用的数据内部使用的数据l l模块独立性模块独立性l l模块独立性模块独立性,是指软件系统中每个模是指软件系统中每个模块只涉及软件要求的具体的子功能块只涉及软件要求的具体的子功能,而和软件系统中其它的模块的接口是而和软件系统中其它的模块的接口是简单的简单的l l例如例如,若一个模块只具有单一的功能若一个模块只具有单一的功能且与其它模块没有太多的联系且与其它模块没有太多的联系,则称则称此模块具有模块独立性此模块具有模块独立性l l一般采用两个准则度量模块独立性。一般采用两个准则度量模块独立性。即模块间耦合和模块内聚即模块间耦合和
21、模块内聚l l耦合是模块之间的互相连接的紧密耦合是模块之间的互相连接的紧密程度的度量。程度的度量。l l内聚是模块功能强度内聚是模块功能强度(一个模块内部一个模块内部各个元素彼此结合的紧密程度各个元素彼此结合的紧密程度)的度的度量。量。l l模块独立性比较强的模块应是高内聚模块独立性比较强的模块应是高内聚低耦合的模块。低耦合的模块。模块间的耦合模块间的耦合 c 模块内聚模块内聚软件体系结构软件体系结构 软件设计的一个目标是建立软件软件设计的一个目标是建立软件的体系结构表示。将这个表示当作一的体系结构表示。将这个表示当作一个框架,从事更详细的设计活动。个框架,从事更详细的设计活动。系统结构系统结
22、构l l体系结构设计的第一步是将系统分解为体系结构设计的第一步是将系统分解为 一系列相互作用的子系统。一系列相互作用的子系统。l l在最抽象层次,系统可视为一个块图。在最抽象层次,系统可视为一个块图。图中每个盒子表示一个子系统。图中每个盒子表示一个子系统。l l每个盒子内的盒子表明子系统本身还可每个盒子内的盒子表明子系统本身还可分解为子系统。分解为子系统。l l箭头表示一个子系统向另一子系统传送箭头表示一个子系统向另一子系统传送数据或控制数据或控制。组装机器人控制系统的块图组装机器人控制系统的块图视觉系统视觉系统对象识对象识别系统别系统手臂控制器手臂控制器机械抓控制器机械抓控制器组装选组装选择
23、系统择系统组装系统组装系统传送带控制器传送带控制器结构化设计方法结构化设计方法l l首先研究、分析和审查数据流图。首先研究、分析和审查数据流图。从软件的需求规格说明中弄清数据从软件的需求规格说明中弄清数据流加工的过程,对于发现的问题及流加工的过程,对于发现的问题及时解决。时解决。l l然后根据数据流图决定问题的类型。然后根据数据流图决定问题的类型。数据处理问题典型的类型有两种:数据处理问题典型的类型有两种:变换型和事务型。针对两种不同的变换型和事务型。针对两种不同的类型分别进行分析处理。类型分别进行分析处理。l由数据流图推导出系统的初始由数据流图推导出系统的初始结构图。结构图。l利用一些启发式
24、原则来改进系利用一些启发式原则来改进系统的初始结构图,直到得到符统的初始结构图,直到得到符合要求的结构图为止。合要求的结构图为止。l修改和补充数据词典。修改和补充数据词典。l制定测试计划。制定测试计划。在系统结构图中的模块在系统结构图中的模块l传入模块传入模块从下属模块取得数从下属模块取得数据,经过某些处理,再将其传据,经过某些处理,再将其传送给上级模块。它传送的数据送给上级模块。它传送的数据流叫做逻辑输入数据流。流叫做逻辑输入数据流。l传出模块传出模块从上级模块获得数从上级模块获得数据,进行某些处理,再将其传据,进行某些处理,再将其传送给下属模块。它传送的数据送给下属模块。它传送的数据流叫做
25、逻辑输出数据流。流叫做逻辑输出数据流。l l变换模块变换模块它从上级模块取得数据,它从上级模块取得数据,进行特定的处理,转换成其它形式,进行特定的处理,转换成其它形式,再传送回上级模块。它加工的数据再传送回上级模块。它加工的数据流叫做变换数据流。流叫做变换数据流。l l协调模块协调模块对所有下属模块进行协对所有下属模块进行协调和管理的模块。调和管理的模块。变换型系统结构图l l变换型数据处理问题的工作过程大变换型数据处理问题的工作过程大致分为三步,即取得数据,变换数致分为三步,即取得数据,变换数据和给出数据。据和给出数据。l l相应于取得数据、变换数据、给出相应于取得数据、变换数据、给出数据,
26、变换型系统结构图由输入、数据,变换型系统结构图由输入、中心变换和输出等三部分组成。中心变换和输出等三部分组成。变换分析变换分析l l变换分析方法由以下四步组成:变换分析方法由以下四步组成:l l重画数据流图;重画数据流图;l l区分有效区分有效(逻辑逻辑)输入、有效输入、有效(逻辑逻辑)输输出和中心变换部分;出和中心变换部分;l l进行一级分解,设计上层模块;进行一级分解,设计上层模块;l l进行二级分解,设计输入、输出和中进行二级分解,设计输入、输出和中心变换部分的中、下层模块。心变换部分的中、下层模块。在选择模块设计的次序时,必须在选择模块设计的次序时,必须对一个模块的全部直接下属模块都对
27、一个模块的全部直接下属模块都设计完成设计完成之后,才之后,才能转向另能转向另一个模块一个模块的下层模的下层模块的设计。块的设计。设计原则设计原则在设计下层模块时,应考虑模块的在设计下层模块时,应考虑模块的耦合和内聚问题,以提高初始结构图耦合和内聚问题,以提高初始结构图的质量。的质量。使用使用“黑箱黑箱”技术技术:在设计当前模块在设计当前模块时,时,先把这个模块的所有下层模块定先把这个模块的所有下层模块定义成义成“黑箱黑箱”,在设计中利用它们时,在设计中利用它们时,暂时不考虑其内部结构和实现。在这暂时不考虑其内部结构和实现。在这一步定义好的一步定义好的“黑箱黑箱”,在下一步就,在下一步就可以对它
28、们进行设计和加工。这样,可以对它们进行设计和加工。这样,又会导致更多的又会导致更多的“黑箱黑箱”。最后,全。最后,全部部“黑箱黑箱”的内容和结构应完全被确的内容和结构应完全被确定。定。在模块划分时,一个模块的直接下属模在模块划分时,一个模块的直接下属模块一般在块一般在5个左右。如果直接下属模块超个左右。如果直接下属模块超过过10个,可设立中间层次。个,可设立中间层次。如果出现了以下情况,就停止模块的功如果出现了以下情况,就停止模块的功能分解:能分解:当模块不能再细分为明显的子任务时;当模块不能再细分为明显的子任务时;当分解成用户提供的模块或程序库的子当分解成用户提供的模块或程序库的子程序时;程
29、序时;当模块的界面是输入输出设备传送的当模块的界面是输入输出设备传送的信息时;信息时;当模块不宜再分解得过小时。当模块不宜再分解得过小时。事务流事务流基本系统模型意味着变换流,因此,原则上基本系统模型意味着变换流,因此,原则上所有信息流都可以归结为这一类。但是,当数据所有信息流都可以归结为这一类。但是,当数据流图具有和图类似的形状时,这种数据流是流图具有和图类似的形状时,这种数据流是“以以事务为中心的事务为中心的”,也就是说,数据沿输入通路到,也就是说,数据沿输入通路到达一个处理达一个处理T,这个处理根据输入数据的类型在这个处理根据输入数据的类型在若干个动作序列中选出一个来执行。这类数据流若干
30、个动作序列中选出一个来执行。这类数据流应该划为一类特殊的数据流,称为事务流。图中应该划为一类特殊的数据流,称为事务流。图中的处理的处理T称为事务中心,它完成下述任务:称为事务中心,它完成下述任务:(1)接收输入数据(输入数据又称为事务)接收输入数据(输入数据又称为事务)(2)分析每个事务以确定它的类型;)分析每个事务以确定它的类型;(3)根据事务类型选取一条活动通路。)根据事务类型选取一条活动通路。图 事务流事务分析事务分析l l在很多软件应用中,存在某种作业在很多软件应用中,存在某种作业数据流,它可以引发一个或多个处数据流,它可以引发一个或多个处理,这些处理能够完成该作业要求理,这些处理能够
31、完成该作业要求的功能。这种数据流就叫做事务。的功能。这种数据流就叫做事务。l l与变换分析一样,事务分析也是从与变换分析一样,事务分析也是从分析数据流图开始,自顶向下,逐分析数据流图开始,自顶向下,逐步分解,建立系统到结构图。步分解,建立系统到结构图。事务型系统结构图事务型系统结构图l l它接受一项事务,根据事务处理的特点和性质,它接受一项事务,根据事务处理的特点和性质,它接受一项事务,根据事务处理的特点和性质,它接受一项事务,根据事务处理的特点和性质,选择分派一个适当的处理单元,然后给出结果。选择分派一个适当的处理单元,然后给出结果。选择分派一个适当的处理单元,然后给出结果。选择分派一个适当
32、的处理单元,然后给出结果。l l在事务型系统结构图中,事务中心模块按所接在事务型系统结构图中,事务中心模块按所接在事务型系统结构图中,事务中心模块按所接在事务型系统结构图中,事务中心模块按所接受的事务的类型,选择某一事务处理模块执行。受的事务的类型,选择某一事务处理模块执行。受的事务的类型,选择某一事务处理模块执行。受的事务的类型,选择某一事务处理模块执行。各事务处理模块并列。每个事务处理模块可能各事务处理模块并列。每个事务处理模块可能各事务处理模块并列。每个事务处理模块可能各事务处理模块并列。每个事务处理模块可能要调用若干个操作模块,而操作模块又可能调要调用若干个操作模块,而操作模块又可能调
33、要调用若干个操作模块,而操作模块又可能调要调用若干个操作模块,而操作模块又可能调用若干个细节模块。用若干个细节模块。用若干个细节模块。用若干个细节模块。事务分析过程事务分析过程识别事务源识别事务源利用数据流图和数据词典,从利用数据流图和数据词典,从问题定义和需求分析的结果中,问题定义和需求分析的结果中,找出各种需要处理的事务。通找出各种需要处理的事务。通常,事务来自物理输入装置。常,事务来自物理输入装置。有时,设计人员还必须区别系有时,设计人员还必须区别系统的输入、中心加工和输出中统的输入、中心加工和输出中产生的事务。产生的事务。规定适当的事务型结构规定适当的事务型结构在确定了该数据流图具有事
34、务型特征之在确定了该数据流图具有事务型特征之后,根据模块划分理论,建立适当的事后,根据模块划分理论,建立适当的事务型结构。务型结构。识别各种事务和它们定义的操作。识别各种事务和它们定义的操作。从问题定义和需求分析中找出的事务及从问题定义和需求分析中找出的事务及其操作所必需的全部信息,对于系统内其操作所必需的全部信息,对于系统内部产生的事务,必须仔细地定义它们的部产生的事务,必须仔细地定义它们的操作。操作。注意利用公用模块注意利用公用模块在事务分析的过程中,如果不同事务的在事务分析的过程中,如果不同事务的一些中间模块可由具有类似的语法和语一些中间模块可由具有类似的语法和语义的若干个低层模块组成,
35、则可以把这义的若干个低层模块组成,则可以把这些低层模块构造成公用模块。些低层模块构造成公用模块。对每一事务,或对联系密切的一组事对每一事务,或对联系密切的一组事务,建立一个事务处理模块;务,建立一个事务处理模块;如果发现在系统中有类似的事务,可以如果发现在系统中有类似的事务,可以把它们组成一个事务处理模块。把它们组成一个事务处理模块。对事务处理模块规定它们全部的下层对事务处理模块规定它们全部的下层操作模块操作模块对操作模块规定它们的全部细节模块对操作模块规定它们的全部细节模块变换分析是软件系统结构设计的主要方变换分析是软件系统结构设计的主要方法。法。一般,一个大型的软件系统是变换一般,一个大型
36、的软件系统是变换型结构和事务型结构的混合结构。所以,型结构和事务型结构的混合结构。所以,我们通常利用以变换分析为主,事务分我们通常利用以变换分析为主,事务分析为辅的方式进行软件结构设计。析为辅的方式进行软件结构设计。设计过程设计过程图图 说明了使用面向数据流方法逐步设计的过程。说明了使用面向数据流方法逐步设计的过程。图 面向数据流方法的设计过程假设的仪表板将完成下述功能:假设的仪表板将完成下述功能:通过模通过模-数转换实现传感器和微处理机接口;数转换实现传感器和微处理机接口;在发光二极管面板上显示数据;在发光二极管面板上显示数据;指示每小时英里数(指示每小时英里数(mileh),),行驶的里程
37、,每加仑行驶的里程,每加仑油行驶的英里数(油行驶的英里数(mileGal)等等;等等;指示加速或减速;指示加速或减速;超速警告:如果车速超过超速警告:如果车速超过55mileh,则发出超速警告则发出超速警告铃声。铃声。在软件需求分析阶段应该对上述每条要求以及系统的其在软件需求分析阶段应该对上述每条要求以及系统的其他特点进行全面的分析评价,建立起必要的文档资料,特他特点进行全面的分析评价,建立起必要的文档资料,特别是数据流图。别是数据流图。实例分析实例分析设计步骤设计步骤第第1步步复查基本系统模型。复查基本系统模型。复查的目的是确保系统的输入数据和输出数据符合实际。复查的目的是确保系统的输入数据
38、和输出数据符合实际。第第2步步复查并精化数据流图。复查并精化数据流图。数字仪表板系统的数据流图假假设设在在需需求求分分析析阶阶段段产产生生的的数数字字仪仪表表板板系系统统的的数数据据流流图图如如图图所所示示。这这个个数数据据流流图图对对于于软软件件结结构构设设计计的的“第第一一次次分分割割”而而言言已已经经足足够够详详细细了了,因因此此不不需需要要精精化化就就可可以以进进行行下下一一个个设设计计步步骤骤。第第3步步分析确定数据流的类型。分析确定数据流的类型。一一般般地地说说,一一个个系系统统中中的的所所有有信信息息流流都都可可以以认认为为是是变变换换流流,但但是是,当当遇遇到到有有明明显显事事
39、务务特特性性的的信信息息流流时时,建建议议采采用用事事务务分分析析方方法法进进行行设设计计。在在这这一一步步设设计计人人员员应应该该根根据据数数据据流流图图中中占占优优势势的的属属性性,确确定定数数据据流流的的全全局局特特性性。此此外外还还应应该该把把具具有有和和全全局局特特性性不不同同的的特特点点的的局局部部区区域域孤孤立立出出来来,以以后后可可以以按按照照这这些些子子数数据据流流的的特特点点精精化化根根据据全全局局特特性性得得出出的软件结构。的软件结构。从从图图可可以以看看出出,数数据据沿沿着着两两条条输输入入通通路路进进入入系系统统,然然后后沿沿着着五五条条通通路路离离开开,没没有有明明
40、显显的的事事务务中中心心。因因此此可可以以认认为这个信息流具有变换流的总特征。为这个信息流具有变换流的总特征。第第4步步 确确定定输输入入流流和和输输出出流流的的边边界界,从从而而孤孤立立出出变变换换中中心心。对对于于汽汽车车数数字字仪仪表表板板的的例例子子,设设计计人人员员确确定定的的流流的的边边界界如如图图所所示示图 具有边界的数据流图第第5步步完成完成“第一级分解第一级分解”。软件结构代表对控制的自顶向下的分配,所谓分解就是分软件结构代表对控制的自顶向下的分配,所谓分解就是分配控制的过程。配控制的过程。对于变换流的情况,数据流图被映射成一个特殊的软件结对于变换流的情况,数据流图被映射成一
41、个特殊的软件结构,这个结构控制输入、变换和输出等信息处理过程。图说明构,这个结构控制输入、变换和输出等信息处理过程。图说明了第一级分解的方法。位于软件结构最顶层的控制模块了第一级分解的方法。位于软件结构最顶层的控制模块Cm协协调下述从属的控制功能:调下述从属的控制功能:图 第一级分解的方法输入信息处理控制模块输入信息处理控制模块Ca,协调对所有输入数据的协调对所有输入数据的接收;接收;变换中心控制模块变换中心控制模块Ct,管理对内部形式的数据的所管理对内部形式的数据的所有操作;有操作;输出信息处理控制模块输出信息处理控制模块Ce,协调输出信息的产生过协调输出信息的产生过程。程。虽然图意味着一个
42、三叉的控制结构,但是,对一个虽然图意味着一个三叉的控制结构,但是,对一个大型系统中的复杂数据流可以用两个或多个模块完成上大型系统中的复杂数据流可以用两个或多个模块完成上述一个模块的控制功能。应该在能够完成控制功能并且述一个模块的控制功能。应该在能够完成控制功能并且保持好的耦合和内聚特性的前提下,尽量使第一级控制保持好的耦合和内聚特性的前提下,尽量使第一级控制中的模块数目取最小值。中的模块数目取最小值。对于数字仪表板的例子,第一级分解得出的结构如对于数字仪表板的例子,第一级分解得出的结构如图所示。每个控制模块的名字表明了为它所控制的那些图所示。每个控制模块的名字表明了为它所控制的那些模块的功能。
43、模块的功能。图 数字仪表板系统的第一级分解第第6步步 完成完成“第二级分解第二级分解”。所谓第二级分解就是把数据流图中的每个处理映射成所谓第二级分解就是把数据流图中的每个处理映射成软件结构中一个适当的模块。完成第二级分解的方法是,软件结构中一个适当的模块。完成第二级分解的方法是,从变换中心的边界开始沿着输入通路向外移动,把输入通从变换中心的边界开始沿着输入通路向外移动,把输入通路中每个处理映射成软件结构中路中每个处理映射成软件结构中Ca控制下的一个低层模控制下的一个低层模块;然后沿输出通路向外移动,把输出通路中每个处理映块;然后沿输出通路向外移动,把输出通路中每个处理映射成直接或间接受模块射成
44、直接或间接受模块Ce控制的一个低层模块;最后把控制的一个低层模块;最后把变换中心内的每个处理映射成受变换中心内的每个处理映射成受Ct控制的一个模块。图控制的一个模块。图3表示进行第二级分解的普遍途径。表示进行第二级分解的普遍途径。图 第二级分解的方法 虽然图描绘了在数据流图中的处理和软件结构中的模虽然图描绘了在数据流图中的处理和软件结构中的模块之间的一对一的映射关系,但是,不同的映射经常出现。块之间的一对一的映射关系,但是,不同的映射经常出现。应该根据实际情况以及应该根据实际情况以及“好好”设计的标准,进行实际的第设计的标准,进行实际的第二级分解。二级分解。对对于于数数字字仪仪表表板板系系统统
45、的的例例子子,第第二二级级分分解解的的结结果果分分别用图别用图16,17和和18描绘。描绘。图16 未经精化的输入结构图17 未经精化的变换结构图18 未经精化的输出结构这三张图表示对软件结构的初步设计结果。虽然图中这三张图表示对软件结构的初步设计结果。虽然图中每个模块的名字表明了它的基本功能,但是仍然应该为每每个模块的名字表明了它的基本功能,但是仍然应该为每个模块写一个简要说明,描述:个模块写一个简要说明,描述:进出该模块的信息(接口描述);进出该模块的信息(接口描述);模块内部的信息;模块内部的信息;过程陈述,包括主要判定点及任务等;过程陈述,包括主要判定点及任务等;对约束和特殊特点的简短
46、讨论。对约束和特殊特点的简短讨论。这些描述是第一代的设计规格说明,在这个设计时期进一这些描述是第一代的设计规格说明,在这个设计时期进一步的精化和补充是经常发生的。步的精化和补充是经常发生的。第第7步步使使用用设设计计度度量量和和启启发发式式规规则则对对第第一一次次分分割割得得到到的的软件结构进一步精化。软件结构进一步精化。对第一次分割得到的软件结构,总可以根据模块独立对第一次分割得到的软件结构,总可以根据模块独立原理进行精化。为了产生合理的分解,得到尽可能高的内原理进行精化。为了产生合理的分解,得到尽可能高的内聚、尽可能松散的耦合,最重要的是,为了得到一个易于聚、尽可能松散的耦合,最重要的是,
47、为了得到一个易于实现、易于测试和易于维护的软件结构,应该对初步分割实现、易于测试和易于维护的软件结构,应该对初步分割得到的模块进行再分解或合并。得到的模块进行再分解或合并。具体到数字仪表板的例子,对于从前面的设计步骤具体到数字仪表板的例子,对于从前面的设计步骤得到的软件结构,还可以做许多修改。下面是某些可能得到的软件结构,还可以做许多修改。下面是某些可能的修改:的修改:输入结构中的模块输入结构中的模块“转换成转换成rmin”和和“收集收集Signals”可以合并;可以合并;模块模块“确定加速减速确定加速减速”可以放在模块可以放在模块“计算计算mileh”下面,以减少耦合;下面,以减少耦合;模块
48、模块“加速减速显示加速减速显示”可以相应地放在模块可以相应地放在模块“显示显示mileh”的下面。的下面。图 精化后的数字仪表板系统的软件结构经过上述修改后的软件结构如图所示。经过上述修改后的软件结构如图所示。上上述述七七个个设设计计步步骤骤的的目目的的是是,开开发发出出软软件件的的整整体体表表示示。也也就就是是说说,一一旦旦确确定定了了软软件件结结构构就就可可以以把把它它作作为为一一个个整整体体来来复复查查,从从而而能能够够评评价价和和精精化化软软件件结结构构。在在这这个个时时期期进进行行修修改改只只需需要要很很少少的的附附加加工工作作,但但是是却却能能够够对对软软件件的的质质量量特特别是软
49、件的可维护性产生深远的影响。别是软件的可维护性产生深远的影响。思思考考上上述述设设计计途途径径和和“写写程程序序”的的差差别别。如如果果程程序序代代码码是是对对软软件件的的惟惟一一描描述述,那那么么软软件件开开发发人人员员将将很很难难站站在在全全局局的的高高度度来来评评价价和和精精化化软软件件,而而且且事事实实上上也也不不能能做做到到“既既见见树木又见森林树木又见森林”。面向对象的设计方法面向对象的设计方法l l面向对象面向对象=对象对象+类类+继承继承+通信通信l l面向对象的特性面向对象的特性1.1.模块化、信息隐蔽、数据抽象模块化、信息隐蔽、数据抽象2.2.继承性继承性面向对象软件设计模
50、型面向对象软件设计模型l l对象模型l l功能模型l l动态模型对象模型对象模型l l描述系统的静态结构描述系统的静态结构l l可以看作扩充的可以看作扩充的E-R图图l l包括系统的类、对象、以及其属性、类与包括系统的类、对象、以及其属性、类与对象之间的关系对象之间的关系动态模型动态模型l l描述时序、改变的状态描述时序、改变的状态l l着重于控制逻辑着重于控制逻辑l l包括状态图、事件追踪图包括状态图、事件追踪图状态图状态图l l描述每一个类对象的动态行为1.书的状态图2.借阅凭证的状态图借阅凭证的状态图 事件事件l l事件表示在某一特定的时间或空间出现的能够引发状态改变的一种运动变化。l