《软件工程第三章软件设计》由会员分享,可在线阅读,更多相关《软件工程第三章软件设计(47页珍藏版)》请在金锄头文库上搜索。
1、软件工程软件工程第三章第三章 软件设计软件设计 password qhdxjsjx 1软件工程第三章软件设计软件设计的概念软件设计的概念n软软件件设设计计的的基基本本目目标标是是用用比比较较抽抽象象概概括括的的方方式式确确定定目目标标系系统统如如何何完完成成预预定定的的任任务务,即即软软件件设设计是确定系统的物理模型。计是确定系统的物理模型。n从从技技术术观观点点来来看看,软软件件设设计计包包括括软软件件结结构构设设计计、数据设计、接口设计、过程设计。数据设计、接口设计、过程设计。n从从工工程程管管理理角角度度来来看看,软软件件设设计计分分两两步步完完成成:概要设计和详细设计。概要设计和详细设
2、计。2软件工程第三章软件设计将分析模型转换为设计将分析模型转换为设计数据字典数据字典数数据据流流图图实实体体关关系系图图状态转换图状态转换图加加工工规规格格说说明明控控制制规规 格格说说明明数数据据对对象象描描述述过程设计过程设计接口设计接口设计体系结构设计体系结构设计数据设计数据设计3软件工程第三章软件设计概要设计将软件需求概要设计将软件需求转化为软件体系结构、确转化为软件体系结构、确定系统级接口、全局数据结构或数据库模式。定系统级接口、全局数据结构或数据库模式。详细设计确立每个模块的实现算法和局部数据详细设计确立每个模块的实现算法和局部数据结构,用适当方法表示算法和数据结构的细节。结构,用
3、适当方法表示算法和数据结构的细节。4软件工程第三章软件设计数据设计将实体数据设计将实体关系图中描述的对象和关系,关系图中描述的对象和关系,以及数据字典中描述的详细数据内容转化为数以及数据字典中描述的详细数据内容转化为数据结构的定义。据结构的定义。体系结构设计定义软件系统各主要成份之间的体系结构设计定义软件系统各主要成份之间的关系。关系。接口设计根据数据流图定义软件内部各成份之接口设计根据数据流图定义软件内部各成份之间、软件与其它协同系统之间及软件与用户之间、软件与其它协同系统之间及软件与用户之间的交互机制。间的交互机制。过程设计则是把结构成份转换成软件的过程性过程设计则是把结构成份转换成软件的
4、过程性描述。描述。5软件工程第三章软件设计衡量设计的技术原则:衡量设计的技术原则:v 设计出来的结构应是分层结构。设计出来的结构应是分层结构。v 设计应当模块化。设计应当模块化。v 设计应当包含数据抽象和过程抽象。设计应当包含数据抽象和过程抽象。v 设计应当建立具有具有独立功能的模块。设计应当建立具有具有独立功能的模块。v 设计应当建立能够降低模块与外部环境之间设计应当建立能够降低模块与外部环境之间复杂连接的接口。复杂连接的接口。v 设计应能根据软件需求信息,建立可驱动可设计应能根据软件需求信息,建立可驱动可复用的方法。复用的方法。衡量设计的原则衡量设计的原则6软件工程第三章软件设计模块独立性
5、模块独立性n用两个准则度量模块独立性,即模块间的耦合用两个准则度量模块独立性,即模块间的耦合和模块的内聚。和模块的内聚。n内聚性内聚性:内聚是一个模块内部各个元素彼此结内聚是一个模块内部各个元素彼此结合的紧密程度的度量。合的紧密程度的度量。n耦合性耦合性: 耦合是模块间互相连接的紧密程度的耦合是模块间互相连接的紧密程度的度量,它取决于各个模块之间接口的复杂度、度量,它取决于各个模块之间接口的复杂度、调用方式以及哪些信息通过接口。调用方式以及哪些信息通过接口。7软件工程第三章软件设计非直接非直接 数据数据 标记标记 控制控制 外部外部 公共公共 内容内容 耦合耦合 耦合耦合 耦合耦合 耦合耦合
6、耦合耦合 耦合耦合 耦合耦合耦合性耦合性耦合性耦合性模块独立性模块独立性模块独立性模块独立性模块间的耦合模块间的耦合8软件工程第三章软件设计模块内聚模块内聚巧合巧合 逻辑逻辑 时间时间 过程过程 通信通信 信息信息 功能功能内聚内聚 内聚内聚 内聚内聚 内聚内聚 内聚内聚 内聚内聚 内聚内聚内聚性内聚性内聚性内聚性模块独立性模块独立性模块独立性模块独立性9软件工程第三章软件设计结构化设计方法结构化设计方法 基本概念基本概念 结构化设计(结构化设计(structured design,SD)是一种是一种面向数据流的设计方法,它可以面向数据流的设计方法,它可以与与SA方法衔方法衔接。接。结构化设计
7、的基本思想是将系统设计成由相结构化设计的基本思想是将系统设计成由相对独立、功能单一的模块组成的结构。对独立、功能单一的模块组成的结构。 10软件工程第三章软件设计信息流的类型信息流的类型 在在需需求求分分析析阶阶段段,面面向向数数据据流流的的SA方方法法产产生生数据流图数据流图DFD。在在系系统统设设计计阶阶段段,面面向向数数据据流流的的SD方方法法将将DFD转换成程序结构图。转换成程序结构图。信信息息流流的的定定义义:DFD中中从从系系统统的的输输入入数数据据流流到系统的输出数据流的一连串连续变换。到系统的输出数据流的一连串连续变换。DFD信息流的分类:变换流与事务流。信息流的分类:变换流与
8、事务流。 11软件工程第三章软件设计变换流变换流 工作原理工作原理信信息息沿沿着着输输入入通通路路进进入入系系统统,同同时时将将信信息息的的外外部部形形式式转转换换成成内内部部表表示示,然然后后通通过过变变换换中中心心(也也称称主主加加工工)处处理理,再再沿沿着着输输出出通通路路转转换换成成外外部部形形式式离离开开系系统统。具具有有这这种种特特性性的的信信息息流流称称为变换流。为变换流。组成组成变换流变换流型型DFD可以分成:可以分成:输入变换(主加工)输出输入变换(主加工)输出 12软件工程第三章软件设计事务流事务流 工作原理工作原理 信信息息沿沿着着输输入入通通路路到到达达一一个个事事务务
9、中中心心,事事务务中中心心根根据据输输入入信信息息(即即事事务务)的的类类型型在在若若干干个个动动作作序序列列(称称为为活活动动流流)中中选选择择一一个个来来执执行,这种信息流称为事务流。行,这种信息流称为事务流。特征特征事事务务流流有有明明显显的的事事务务中中心心,各各活活动动流流以以事事务务中心为起点呈辐射状流出。中心为起点呈辐射状流出。 13软件工程第三章软件设计变换分析变换分析 变换分析是从变换流型的变换分析是从变换流型的DFD导出系统结构导出系统结构图图步骤步骤1)确定输入流和输出流,孤立出变换中心;确定输入流和输出流,孤立出变换中心;2)第一级分解:设计模块结构的顶层和第一第一级分
10、解:设计模块结构的顶层和第一层;层;3)第二级分解:设计中、下层模块。第二级分解:设计中、下层模块。 14软件工程第三章软件设计1)确定输入流和输出流,)确定输入流和输出流,孤立出变换中心孤立出变换中心变换分析的第一步变换分析的第一步辅助加工辅助加工主加工主加工辅助加工辅助加工逻辑逻辑输入输入变换中心变换中心物理物理输入输入逻辑逻辑输出输出物理物理输出输出输入流输入流输出流输出流15软件工程第三章软件设计2)第一级分解:)第一级分解:设计模块结构的顶层和第一层设计模块结构的顶层和第一层变换流型变换流型DFD可映射成下图所示的系统结构图:可映射成下图所示的系统结构图:v 顶层模块:其功能就是整个
11、系统的功能;顶层模块:其功能就是整个系统的功能;v 输入控制模块:接收所有的输入数据;输入控制模块:接收所有的输入数据;v 变换控制模块:实现输入到输出的变换;变换控制模块:实现输入到输出的变换;v 输出控制模块:产生所有的输出数据。输出控制模块:产生所有的输出数据。顶层模块顶层模块输出控制输出控制变换控制变换控制输入控制输入控制变换分析的第一级分解变换分析的第一级分解变换分析的第一级分解变换分析的第一级分解16软件工程第三章软件设计3)第二级分解:设计中、下层模块)第二级分解:设计中、下层模块输输入入控控制制模模块块的的分分解解:从从变变换换中中心心的的边边界界开开始始,沿沿着着每每条条输输
12、入入通通路路,把把输输入入通通路路上上的的每每个个加加工工映射成输入控制模块的一个低层模块。映射成输入控制模块的一个低层模块。输输出出控控制制模模块块的的分分解解:从从变变换换中中心心的的边边界界开开始始,沿沿着着每每条条输输出出通通路路,把把输输出出通通路路上上的的每每个个加加工工映射成输出控制模块的一个低层模块。映射成输出控制模块的一个低层模块。变变换换控控制制模模块块的的分分解解:变变换换控控制制模模块块通通常常没没有有通通用用的的分分解解方方法法,应应根根据据DFD中中变变换换部部分分的的实实际情况进行设计。际情况进行设计。17软件工程第三章软件设计事务分析事务分析事事务务分分析析是是
13、从从事事务务流流型型DFD导导出出系系统统结结构构图。图。步骤:步骤:1)确定事务中心和每条活动流的流特性确定事务中心和每条活动流的流特性 2)将事务流型将事务流型DFD映射成高层的系统结构映射成高层的系统结构3)进一步分解进一步分解 18软件工程第三章软件设计1)确定事务中心和每条活动流的流特性)确定事务中心和每条活动流的流特性 右图为事务流型右图为事务流型DFD的一般形式。的一般形式。事务中心事务中心(图中的(图中的T):):位于活动流的起点,位于活动流的起点,活动流从该点成辐射状流出。活动流从该点成辐射状流出。活动流活动流:是信息流,:是信息流,可以是变换流可以是变换流也可以是另一事务流
14、。也可以是另一事务流。事务流型的事务流型的DFD的组成:的组成: 输入流事务中心若干条活动流输入流事务中心若干条活动流 T输入流输入流事务流事务流活动流活动流19软件工程第三章软件设计右图为事务流型右图为事务流型DFD的高层结构形式。的高层结构形式。顶层模块顶层模块:其功能就是整个系统的功能。:其功能就是整个系统的功能。接收模块接收模块:接收输入数据,对应输入流。:接收输入数据,对应输入流。发送模块发送模块:调度模块,:调度模块, 控制下层的所有活动模块。控制下层的所有活动模块。活动流模块活动流模块:对应活动流,:对应活动流, 是该活动流映射成的是该活动流映射成的 结构图中的顶层模块。结构图中
15、的顶层模块。 2)将事务流型)将事务流型DFD映射成高层系统结构映射成高层系统结构顶层模块顶层模块顶层模块顶层模块接收接收接收接收发送发送发送发送活动流活动流活动流活动流1 1 1 1活动流活动流活动流活动流2 2活动流活动流活动流活动流n n事务流型事务流型DFD的高层系统结构的高层系统结构20软件工程第三章软件设计3)进一步分解)进一步分解接接收收模模块块:类类同同于于变变换换分分析析中中输输入入控控制制模模块块的分解。的分解。活活动动流流模模块块:根根据据其其流流特特性性(变变换换流流或或事事务务流流)进进一一步步采采用用变变换换分分析析或或事事务务分分析析进进行行分分解。解。 21软件
16、工程第三章软件设计SD方法的设计步骤方法的设计步骤1)复查并细化数据流图;复查并细化数据流图;2)确定确定DFD的信息流类型(变换流或事务流);的信息流类型(变换流或事务流);3)根据流类型分别实施变换分析或事务分析;根据流类型分别实施变换分析或事务分析;4)根据系统设计的原则对系统结构图进行优化。根据系统设计的原则对系统结构图进行优化。 22软件工程第三章软件设计系统结构图的基本符号系统结构图的基本符号模块模块调用调用数据数据控制信息控制信息转接符号转接符号系统结构图的基本符号系统结构图的基本符号选择(判断)选择(判断)重复重复23软件工程第三章软件设计模块调用示例模块调用示例(a) 调用调
17、用(b) 判断调用判断调用(c) 循环调用循环调用24软件工程第三章软件设计数数据据:模模块块之之间间传传送送的的数数据据用用带带空空心心圆圆的的箭箭头头表示,并在旁边标上数据名。表示,并在旁边标上数据名。控控制制信信息息:控控制制信信息息与与数数据据的的主主要要区区别别是是前前者者只反映数据的某种状态。只反映数据的某种状态。模块间的数据传递模块间的数据传递AB(a)xyz查职工简历查职工简历读人事文件读人事文件(b)职工号职工号简历数据简历数据无此职工无此职工25软件工程第三章软件设计变换型系统结构变换型系统结构26软件工程第三章软件设计事务型系统结构事务型系统结构27软件工程第三章软件设计
18、混合系统结构混合系统结构28软件工程第三章软件设计变换设计是软件系统结构设计的主要方法。变换设计是软件系统结构设计的主要方法。一般,一个大型的软件系统是变换型结构和一般,一个大型的软件系统是变换型结构和事务型结构的混合结构。所以,我们通常利事务型结构的混合结构。所以,我们通常利用以变换设计为主,事务设计为辅的方式进用以变换设计为主,事务设计为辅的方式进行软件结构设计。行软件结构设计。29软件工程第三章软件设计1)模块功能完善化模块功能完善化 一个完整的模块应当有以下几部分:一个完整的模块应当有以下几部分:v执行规定的功能部分;执行规定的功能部分;v出错处理的部分出错处理的部分;v函数在完成数据
19、加工或结束时,应当给函数在完成数据加工或结束时,应当给它的调用者返回一个状态码。它的调用者返回一个状态码。2)消除重复功能,改善软件结构消除重复功能,改善软件结构3)模块的作用范围应在控制范围之内模块的作用范围应在控制范围之内改进系统结构的启发式原则改进系统结构的启发式原则30软件工程第三章软件设计4)尽可能减少高扇出结构。尽可能减少高扇出结构。5)避免或减少使用病态联接。避免或减少使用病态联接。v直接病态联接直接病态联接v公共数据域病态联接公共数据域病态联接v通信模块病态联接通信模块病态联接6)模块的大小要适中。模块的大小要适中。7)设计功能可预测的模块设计功能可预测的模块31软件工程第三章
20、软件设计系统总体结构设计系统总体结构设计根据系统分析的要求和组织的实际情况,对新根据系统分析的要求和组织的实际情况,对新系统的总体结构形式和可利用的资源进行大致系统的总体结构形式和可利用的资源进行大致设计,这是一种宏观、总体上的设计和规划。设计,这是一种宏观、总体上的设计和规划。系统总体设计的主要内容:系统总体设计的主要内容:1)系统结构设计原则系统结构设计原则2)子系统划分子系统划分3)系统模块结构设计系统模块结构设计4)数据存储设计数据存储设计32软件工程第三章软件设计子系统划分子系统划分划分原则划分原则v子系统要具有相对独立性子系统要具有相对独立性 v子系统之间数据的依赖性尽量小子系统之
21、间数据的依赖性尽量小 v子系统划分的结果应使数据冗余较小子系统划分的结果应使数据冗余较小v子系统的设置应考虑今后管理发展的需要子系统的设置应考虑今后管理发展的需要 v子系统的划分应便于系统分阶段实现子系统的划分应便于系统分阶段实现 v子系统的划分应考虑到各类资源的充分利用子系统的划分应考虑到各类资源的充分利用33软件工程第三章软件设计系统模块结构设计系统模块结构设计模模块块:组组成成系系统统的的基基本本单单位位,系系统统中中任任何何一一个处理功能都可以看成是一个模块。个处理功能都可以看成是一个模块。特点:可以组合、分解和更换。特点:可以组合、分解和更换。分类标准:根据模块功能具体化程度划分分类
22、标准:根据模块功能具体化程度划分分类:逻辑模块和物理模块分类:逻辑模块和物理模块v逻逻辑辑模模块块:在在系系统统逻逻辑辑模模型型中中定定义义的的处处理理功能。功能。v物理模块:即逻辑模块的具体化,可以是物理模块:即逻辑模块的具体化,可以是35软件工程第三章软件设计一一个个计计算算机机程程序序、子子程程序序或或若若干干条条程程序序语语句,也可以是人工过程的某项具体工作。句,也可以是人工过程的某项具体工作。模块的四要素:模块的四要素:v输输入入和和输输出出:模模块块的的输输入入来来源源和和输输出出去去向向都都是是同同一一个个调调用用者者,即即一一个个模模块块从从调调用用者者那那里里取取得得输输入入
23、,进进行行加加工工后后再再把把输输出出返返回回给调用者。给调用者。v处处理理功功能能:模模块块把把输输入入转转换换成成输输出出所所作作工工作。作。36软件工程第三章软件设计v内部数据内部数据:仅供该模块本身引用的数据。:仅供该模块本身引用的数据。v程序代码程序代码:用来实现模块功能的程序。:用来实现模块功能的程序。模块特性模块特性v外外部部特特性性:反反映映了了模模块块的的外外貌貌,即即前前两两个个要素,结构化设计考虑外部特性。要素,结构化设计考虑外部特性。v内内部部特特性性:即即后后两两个个要要素素,其其具具体体实实现现在在系统实施阶段完成。系统实施阶段完成。 37软件工程第三章软件设计数据
24、存储设计数据存储设计 数据结构组织和数据库或文件设计:数据结构组织和数据库或文件设计:根根据据数数据据的的不不同同用用途途、使使用用要要求求、统统计计渠渠道道、安安全全保保密密性性等等,来来决决定定数数据据的的整整体体组组织织形形式式、表表或或文文件件的的形形式式,以以及及决决定定数数据据的的结结构构、类类别、载体、组织方式、保密级别等。别、载体、组织方式、保密级别等。任务:任务:建立数据的整体关系结构、数据资源分布建立数据的整体关系结构、数据资源分布确确定定数数据据的的安安全全保保密密性性:一一般般有有4种种不不同同方方式(只读、只写、删除、修改式(只读、只写、删除、修改)。)。38软件工程
25、第三章软件设计n在过程设计阶段,要决定各个模块的实现算法,在过程设计阶段,要决定各个模块的实现算法,并精确地表达这些算法。并精确地表达这些算法。n对每个模块规定的功能以及算法的设计,给出对每个模块规定的功能以及算法的设计,给出适当的算法描述:适当的算法描述:v图形工具:程序流程图,图形工具:程序流程图, N-S ,PAD, HIPOv表格工具:判定表表格工具:判定表v语言工具:语言工具: PDL , HIPO过程设计(详细设计)过程设计(详细设计)39软件工程第三章软件设计1) 程序流程图程序流程图ABABPA1P=1A2=2An=nTSPFFSPT顺序型顺序型选择型选择型先判断先判断重复型重
26、复型后判断后判断重复型重复型多分支选择型多分支选择型40软件工程第三章软件设计2) N- -S 图图ABPFTABPFTAwhile-do PAdo-while PAP= 1 = 2 = nA1 A2 An顺序型顺序型选择型选择型(1)选择型选择型(2)先判断重复型先判断重复型后判断重复型后判断重复型多分支选择型多分支选择型41软件工程第三章软件设计3) 问题分析图问题分析图 (PAD)S1SA1A2AnPPP=1=2=nwhile PSSS1S2S2until P选择型选择型顺序型顺序型多分支选择型多分支选择型先判断重复型先判断重复型后判断重复型后判断重复型42软件工程第三章软件设计4) P
27、DL (Program Design Language)PDL是一种用于描述功能模块的算法设计和加是一种用于描述功能模块的算法设计和加工细节的语言。称为设计程序用语言。它是一工细节的语言。称为设计程序用语言。它是一种伪码。种伪码。伪码的语法规则分为伪码的语法规则分为“外语法外语法”和和“内语法内语法”。PDL具有严格的关键字外语法,用于定义控制具有严格的关键字外语法,用于定义控制结构和数据结构,同时它的表示实际操作和条结构和数据结构,同时它的表示实际操作和条件的内语法可使用自然语言的词汇。件的内语法可使用自然语言的词汇。43软件工程第三章软件设计示例示例: 拼词检查程序拼词检查程序PROCED
28、URE spellcheckBEGIN -* split document into single words LOOP get next word add word to word list in sortorder EXIT WHEN all words processed END LOOP -* look up words in dictionary LOOP get word from word list44软件工程第三章软件设计 IF word not in dictionary THEN -* display words not in dictionary display word
29、 prompt on user terminal IF user response says word OK THEN add word to good word list ELSE add word to bad word list ENDIF ENDIF EXIT WHEN all words processedEND LOOP45软件工程第三章软件设计 -* create a new words dictionary dictionary :merge dictionary and good word listEND spellcheck 为了区别关键字,规定关键字一律大写,其为了区别关
30、键字,规定关键字一律大写,其为了区别关键字,规定关键字一律大写,其为了区别关键字,规定关键字一律大写,其它单词一律小写。它单词一律小写。它单词一律小写。它单词一律小写。 内语法使用自然语言来描述处理特性。内语内语法使用自然语言来描述处理特性。内语内语法使用自然语言来描述处理特性。内语内语法使用自然语言来描述处理特性。内语法比较灵活,只要写清楚就可以,不必考虑法比较灵活,只要写清楚就可以,不必考虑法比较灵活,只要写清楚就可以,不必考虑法比较灵活,只要写清楚就可以,不必考虑语法错,以利于人们可把主要精力放在描述语法错,以利于人们可把主要精力放在描述语法错,以利于人们可把主要精力放在描述语法错,以利于人们可把主要精力放在描述算法的逻辑上。算法的逻辑上。算法的逻辑上。算法的逻辑上。46软件工程第三章软件设计此课件下载可自行编辑修改,供参考!此课件下载可自行编辑修改,供参考!感谢你的支持,我们会努力做得更好!感谢你的支持,我们会努力做得更好!