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












