软件工程讲义-03

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

1软件工程第三章软件设计授课老师:清华大学计算机系殷人昆yinrk432@sina.compasswordqhdxjsjx2软件设计的概念软件设计的基本目标是用比较抽象概括的方式确定目标系统如何完成预定的任务,即软件设计是确定系统的物理模型。从技术观点来看,软件设计包括软件结构设计、数据设计、接口设计、过程设计。从工程管理角度来看,软件设计分两步完成:概要设计和详细设计。3将分析模型转换为设计数据字典数据流图实体关系图状态转换图加工规格说明控制规格说明数据对象描述过程设计接口设计体系结构设计数据设计4概要设计将软件需求转化为软件体系结构、确定系统级接口、全局数据结构或数据库模式。详细设计确立每个模块的实现算法和局部数据结构,用适当方法表示算法和数据结构的细节。5数据设计将实体–关系图中描述的对象和关系,以及数据字典中描述的详细数据内容转化为数据结构的定义。体系结构设计定义软件系统各主要成份之间的关系。接口设计根据数据流图定义软件内部各成份之间、软件与其它协同系统之间及软件与用户之间的交互机制。过程设计则是把结构成份转换成软件的过程性描述。6衡量设计的技术原则:设计出来的结构应是分层结构。设计应当模块化。设计应当包含数据抽象和过程抽象。设计应当建立具有具有独立功能的模块。设计应当建立能够降低模块与外部环境之间复杂连接的接口。设计应能根据软件需求信息,建立可驱动可复用的方法。衡量设计的原则7模块独立性用两个准则度量模块独立性,即模块间的耦合和模块的内聚。内聚性:内聚是一个模块内部各个元素彼此结合的紧密程度的度量。耦合性:耦合是模块间互相连接的紧密程度的度量,它取决于各个模块之间接口的复杂度、调用方式以及哪些信息通过接口。8非直接数据标记控制外部公共内容耦合耦合耦合耦合耦合耦合耦合耦合性模块独立性模块间的耦合9模块内聚巧合逻辑时间过程通信信息功能内聚内聚内聚内聚内聚内聚内聚内聚性模块独立性10结构化设计方法基本概念结构化设计(structureddesign,SD)是一种面向数据流的设计方法,它可以与SA方法衔接。结构化设计的基本思想是将系统设计成由相对独立、功能单一的模块组成的结构。11信息流的类型在需求分析阶段,面向数据流的SA方法产生数据流图DFD。在系统设计阶段,面向数据流的SD方法将DFD转换成程序结构图。信息流的定义:DFD中从系统的输入数据流到系统的输出数据流的一连串连续变换。DFD信息流的分类:变换流与事务流。12变换流工作原理信息沿着输入通路进入系统,同时将信息的外部形式转换成内部表示,然后通过变换中心(也称主加工)处理,再沿着输出通路转换成外部形式离开系统。具有这种特性的信息流称为变换流。组成变换流型DFD可以分成:输入+变换(主加工)+输出13事务流工作原理信息沿着输入通路到达一个事务中心,事务中心根据输入信息(即事务)的类型在若干个动作序列(称为活动流)中选择一个来执行,这种信息流称为事务流。特征事务流有明显的事务中心,各活动流以事务中心为起点呈辐射状流出。14变换分析变换分析是从变换流型的DFD导出系统结构图步骤1)确定输入流和输出流,孤立出变换中心;2)第一级分解:设计模块结构的顶层和第一层;3)第二级分解:设计中、下层模块。151)确定输入流和输出流,孤立出变换中心变换分析的第一步辅助加工主加工辅助加工逻辑输入变换中心物理输入逻辑输出物理输出输入流输出流162)第一级分解:设计模块结构的顶层和第一层变换流型DFD可映射成下图所示的系统结构图:顶层模块:其功能就是整个系统的功能;输入控制模块:接收所有的输入数据;变换控制模块:实现输入到输出的变换;输出控制模块:产生所有的输出数据。顶层模块输出控制变换控制输入控制变换分析的第一级分解173)第二级分解:设计中、下层模块输入控制模块的分解:从变换中心的边界开始,沿着每条输入通路,把输入通路上的每个加工映射成输入控制模块的一个低层模块。输出控制模块的分解:从变换中心的边界开始,沿着每条输出通路,把输出通路上的每个加工映射成输出控制模块的一个低层模块。变换控制模块的分解:变换控制模块通常没有通用的分解方法,应根据DFD中变换部分的实际情况进行设计。18事务分析事务分析是从事务流型DFD导出系统结构图。步骤:1)确定事务中心和每条活动流的流特性2)将事务流型DFD映射成高层的系统结构3)进一步分解191)确定事务中心和每条活动流的流特性右图为事务流型DFD的一般形式。事务中心(图中的T):位于活动流的起点,活动流从该点成辐射状流出。活动流:是信息流,可以是变换流也可以是另一事务流。事务流型的DFD的组成:输入流+事务中心+若干条活动流T输入流事务流活动流20右图为事务流型DFD的高层结构形式。顶层模块:其功能就是整个系统的功能。接收模块:接收输入数据,对应输入流。发送模块:调度模块,控制下层的所有活动模块。活动流模块:对应活动流,是该活动流映射成的结构图中的顶层模块。2)将事务流型DFD映射成高层系统结构顶层模块接收发送活动流1活动流2活动流n…事务流型DFD的高层系统结构213)进一步分解接收模块:类同于变换分析中输入控制模块的分解。活动流模块:根据其流特性(变换流或事务流)进一步采用变换分析或事务分析进行分解。22SD方法的设计步骤1)复查并细化数据流图;2)确定DFD的信息流类型(变换流或事务流);3)根据流类型分别实施变换分析或事务分析;4)根据系统设计的原则对系统结构图进行优化。23系统结构图的基本符号模块调用数据控制信息转接符号系统结构图的基本符号选择(判断)重复24模块调用示例(a)调用(b)判断调用(c)循环调用25数据:模块之间传送的数据用带空心圆的箭头表示,并在旁边标上数据名。控制信息:控制信息与数据的主要区别是前者只反映数据的某种状态。模块间的数据传递AB(a)xyz查职工简历读人事文件(b)职工号简历数据无此职工26变换型系统结构27事务型系统结构28混合系统结构29变换设计是软件系统结构设计的主要方法。一般,一个大型的软件系统是变换型结构和事务型结构的混合结构。所以,我们通常利用以变换设计为主,事务设计为辅的方式进行软件结构设计。301)模块功能完善化一个完整的模块应当有以下几部分:执行规定的功能部分;出错处理的部分;函数在完成数据加工或结束时,应当给它的调用者返回一个状态码。2)消除重复功能,改善软件结构3)模块的作用范围应在控制范围之内改进系统结构的启发式原则314)尽可能减少高扇出结构。5)避免或减少使用病态联接。直接病态联接公共数据域病态联接通信模块病态联接6)模块的大小要适中。7)设计功能可预测的模块32系统总体结构设计根据系统分析的要求和组织的实际情况,对新系统的总体结构形式和可利用的资源进行大致设计,这是一种宏观、总体上的设计和规划。系统总体设计的主要内容:1)系统结构设计原则2)子系统划分3)系统模块结构设计4)数据存储设计33子系统划分划分原则子系统要具有相对独立性子系统之间数据的依赖性尽量小子系统划分的结果应使数据冗余较小子系统的设置应考虑今后管理发展的需要子系统的划分应便于系统分阶段实现子系统的划分应考虑到各类资源的充分利用35系统模块结构设计模块:组成系统的基本单位,系统中任何一个处理功能都可以看成是一个模块。特点:可以组合、分解和更换。分类标准:根据模块功能具体化程度划分分类:逻辑模块和物理模块逻辑模块:在系统逻辑模型中定义的处理功能。物理模块:即逻辑模块的具体化,可以是36一个计算机程序、子程序或若干条程序语句,也可以是人工过程的某项具体工作。模块的四要素:输入和输出:模块的输入来源和输出去向都是同一个调用者,即一个模块从调用者那里取得输入,进行加工后再把输出返回给调用者。处理功能:模块把输入转换成输出所作工作。37内部数据:仅供该模块本身引用的数据。程序代码:用来实现模块功能的程序。模块特性外部特性:反映了模块的外貌,即前两个要素,结构化设计考虑外部特性。内部特性:即后两个要素,其具体实现在系统实施阶段完成。38数据存储设计数据结构组织和数据库或文件设计:根据数据的不同用途、使用要求、统计渠道、安全保密性等,来决定数据的整体组织形式、表或文件的形式,以及决定数据的结构、类别、载体、组织方式、保密级别等。任务:建立数据的整体关系结构、数据资源分布确定数据的安全保密性:一般有4种不同方式(只读、只写、删除、修改)。39在过程设计阶段,要决定各个模块的实现算法,并精确地表达这些算法。对每个模块规定的功能以及算法的设计,给出适当的算法描述:图形工具:程序流程图,N-S,PAD,HIPO表格工具:判定表语言工具:PDL,HIPO过程设计(详细设计)401)程序流程图ABABPA1P=1A2=2An=nTSPFFSPT顺序型选择型先判断重复型后判断重复型多分支选择型412)N-S图ABPFTABPFTAwhile-doPAdo-whilePAP=1=2…=nA1A2…An顺序型选择型(1)选择型(2)先判断重复型后判断重复型多分支选择型423)问题分析图(PAD)S1SA1A2AnPPP=1=2=nwhilePSSS1S2S2untilP选择型顺序型多分支选择型先判断重复型后判断重复型434)PDL(ProgramDesignLanguage)PDL是一种用于描述功能模块的算法设计和加工细节的语言。称为设计程序用语言。它是一种伪码。伪码的语法规则分为“外语法”和“内语法”。PDL具有严格的关键字外语法,用于定义控制结构和数据结构,同时它的表示实际操作和条件的内语法可使用自然语言的词汇。44示例:拼词检查程序PROCEDUREspellcheckBEGIN--*splitdocumentintosinglewordsLOOPgetnextwordaddwordtowordlistinsortorderEXITWHENallwordsprocessedENDLOOP--*lookupwordsindictionaryLOOPgetwordfromwordlist45IFwordnotindictionaryTHEN--*displaywordsnotindictionarydisplaywordpromptonuserterminalIFuserresponsesayswordOKTHENaddwordtogoodwordlistELSEaddwordtobadwordlistENDIFENDIFEXITWHENallwordsprocessedENDLOOP46--*createanewwordsdictionarydictionary:=mergedictionaryandgoodwordlistENDspellcheck为了区别关键字,规定关键字一律大写,其它单词一律小写。内语法使用自然语言来描述处理特性。内语法比较灵活,只要写清楚就可以,不必考虑语法错,以利于人们可把主要精力放在描述算法的逻辑上。

1 / 45
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功