




已阅读5页,还剩114页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
软件工程,周志钊zhouzhizhao08,软件结构化设计,需求分析阶段所形成的数据流图、数据字典是软件总体设计的基础。软件总体设计是后续开发步骤及软件维护工作的基础。,软件设计任务,从工程管理的角度来看,软件设计分两步完成。概要设计,将软件需求转化为数据结构和软件的系统结构。详细设计,即过程设计。通过对结构表示进行细化,得到软件的详细的数据结构和算法。,软件设计方法,软件设计基础,说明与评审,总体设计的任务(步骤),概要地回答系统应如何实现,包括以下任务为每个可选的方案准备一份流程图,列出系统组成的物理元素,进行效益分析,制定实现方案的进度,选择最佳方案。为最佳方案进行软件结构设计。进行必要的数据库设计。分布式系统的网络设计。制定测试计划、设计文档和评审。,软件结构设计,基于SD的软件结构设计以模块为基础,在设计阶段以需求分析的结果为依据,从实现的角度将分析结果映射为模块,并组成模块的层次结构。具体步骤如下:,软件结构设计,(1)将一个复杂系统按功能划分成模块。(2)确定每个模块的功能。(3)确定模块间的调用关系。(4)确定模块间的接口,即模块间传递的信息。(5)评价模块结构划分的质量。,数据库设计,数据库设计是指数据存储文件的设计,包括以下三个方面:概念设计。用E-R模型来表示概念模型,该模型可作为数据库设计的主要依据。逻辑设计。将概念模型转换成DBMS的关系模型,定义数据项、类型、长度、相互关系物理设计。设计数据存储的物理细节,如存储结构、存取方法、索引建立等。,数据库设计,数据库设计步骤:,系统网络设计,网络系统设计包括网络方案的选取,网络系统配置,网络负载与容量分析,网络互连结构及通信介质的选择,拓扑结构的设计,网络应用模式及网络操作系统的选型,网络协议的选择,网络管理,远程用户等工作。,编写概要设计阶段的文档,概要设计阶段完成时应编写以下文档:概要设计说明书数据库设计说明书用户手册制定初步的测试计划,概要设计文档,概要设计说明(包括系统实现方案和软件模块结构)用户手册(根据总体设计阶段的结果,编写的初步的用户操作手册)测试计划(包括测试策略、测试方案、预测的测试结果、测试进度计划等)详细的实现计划数据库设计结果,总体设计评审,按国标GB8576-88的计算机软件产品开发文件编制指南规定,制定“总体设计说明书”、“数据库设计说明书”等。对设计是否完整实现需求中规定的功能、性能要求,设计方案的可行性、关键处理及内外部接口定义的正确性、有效性及各部分的一致性进行评审。,在详细设计过程中,需要完成的工作是:确定软件各个组成部分内的算法以及各部分的内部数据组织选定某种过程的表达形式来描述各种算法。进行详细设计的评审,详细设计,软件设计基础,自顶向下,逐步细化软件结构程序结构结构图模块化抽象化信息隐蔽,见书p5152,3.2.1节,设计基本原理,模块化:模块:又称构件,是能够单独命名并独立地完成一定功能的程序语句的集合。例如高级语言中的过程、函数、子程序等都可作为模块。模块化是软件的一个重要属性。模块化的特性提供了人们处理复杂的问题的一种方法,同时也使得软件能够被有效地管理。,模块化,有两个函数:C(x)表示问题x的复杂程度;E(x)表示解决问题x所需要的工作量(时间)。对于两个问题P1和P2,如果:C(P1)C(P2)则:E(P1)E(P2)公式:C(P1P2)C(P1)C(P2)E(P1P2)E(P1)E(P2)单独解决问题P1和P2所需的工作量之和,比把P1和P2合起来作为一个问题来解决时所需的工作量要少。(此为分治的基础),模块化与软件成本,成本/模块,模块:模块用矩形框表示,并用模块的名字标记它。,模块化,模块的调用关系和接口:模块之间用单向箭头联结,箭头从调用模块指向被调用模块。,模块间的信息传递:当一个模块调用另一个模块时,调用模块把数据或控制信息传送给被调用模块,以使被调用模块能够运行。而被调用模块在执行过程中又把它产生的数据或控制信息回送给调用模块。,在模块A的箭头尾部标以一个菱形符号,表示模块A有条件地调用另一个模块B。当一个在调用箭头尾部标以一个弧形符号,表示模块A反复调用模块C和模块D。,程序的系统结构图,模块独立性模块独立性,是指软件系统中每个模块只涉及软件要求的具体的子功能,而和软件系统中其它的模块的接口是简单的例如,若一个模块只具有单一的功能且与其它模块没有太多的联系,则称此模块具有模块独立性一般采用两个准则度量模块独立性。即模块间耦合和模块内聚。,耦合是模块之间的互相连接的紧密程度的度量。内聚是模块功能强度(一个模块内部各个元素彼此结合的紧密程度)的度量。模块独立性比较强的模块应是高内聚低耦合的模块。,模块的耦合,1.非直接耦合两个模块中任一个,都不依赖于对方能独立工作。,模块的耦合,2.数据耦合两个模块间通过参数交换信息,而信息仅限于数据。,模块的耦合,3.控制耦合当模块A向模块B所传递的信息控制了B的内部逻辑。,模块的耦合,4.特征耦合被调用模块可使用的数据多于其实际需要的数据。,模块的耦合,5.外部耦合若干模块均与同一个外部环境关联。如:I/O、格式、通信协议6.公共耦合两个或多个模块都和同一个公共数据域有关。,模块的耦合,7.内容耦合一个模块和另一个模块的内部属性有关(运行程序和内部数据)。,模块A中TRC:模块B中GOTOTRC,“耦合模块”的性能比较,模块的耦合,设计模块时,应以数据耦合为主,辅以控制耦合,消除公共耦合和内容耦合。,模块的耦合,例4-2:两个模块间通过全局变量、全局数据结构、通讯缓冲区和数据库文件等进行数据交换称为。A内容耦合B控制耦合C数据耦合D公共耦合,模块的耦合,例4-3:当模块之间需要传递的参数较少时,类型较好。A内容耦合B控制耦合C数据耦合D公共耦合,模块的内聚,模块的内聚,模块的内聚,模块的内聚,“内聚模块”的性能比较,内聚性与模块独立性的关系,软件设计原则,1.提高模块独立性争取低耦合、高内聚(增加内聚减少耦合)2.模块规模适中:50150条语句,过大不易理解;太小则接口开销过大。注意分解后不应降低模块的独立性。,软件设计原则,3.选择适当的深度、宽度、扇出和扇入,软件设计原则,深度=分层的层数。过大表示分工过细。宽度=同一层上模块数的最大值。过大表示系统复杂度大。扇出=一个模块直接调用控制的模块数。3fan-out9扇入=直接调用该模块的模块数在不破坏独立性的前提下,fan-in大的比较好。,软件设计原则,扇出过多,表示本模块过分复杂,缺少中间层。,扇入数大比较好,说明本模块为上层多个模块共享,重用率高。但不能把无关的功能凑在一起,降低内聚。,软件设计原则,4、作用域在控制域内控制域,M的控制域为M,A,B,C,作用域:A中的一个判定所影响的模块。,软件设计原则,5、降低接口的复杂程度:接口简单、含义明确,便于实现、测试、维护。接口复杂可能表明模块的独立性差。6、单出单入,避免内容耦合。7、模块功能可预测相同输入必产生相同输出。反例:模块中使用全局变量或静态变量,则可能导致不可预测。,模块接口举例,例4-4:求一元二次方程根的程序模块。模块1:Quad-Root(TBL,X)其中使用数组TBL传递方程系:TBL(1)=A,TBL(2)=B,TBL(3)=C;数组X返回方程的根。模块2:Quad-Root(A,B,C,ROOT1,ROOT2)对模块1而言,TBL,X意义不明确,而模块2简单明了,与模块功能一致,接口复杂程度较低。,软件结构图,软件结构图是软件系统的模块层次结构,反映了整个系统的功能实现,即将来程序的控制层次体系。同一个问题。可以设计、划分、组织不同的软件结构。软件结构图(StructureChart,SC),软件结构图,结构图的符号(1)方框代表模块,框内注明模块的名字或主要功能。(2)方框之间的大箭头或直线表示模块的调用关系。(3)带注释的小箭头表示模块调用时传递的信息及其方向。尾部加空心圆的小箭头表示传递数据信息,加实心圆的小箭头表示传递控制信息。,软件结构图,软件结构图基本符号,软件结构图的模块调用,软件结构图示例,软件结构图示例,设计基本原理,抽象:抽取各个事物本质的共同的基本的特征和行为,暂时忽略它们之间的细节和差异。一般采用分层次抽象的方法来控制软件开发过程的复杂性。当用模块化方法解决问题时,可以提出不同层次的抽象(LevelofAbstraction)。,设计基本原理,抽象,例4.1开发一个CAD软件的三个抽象层次。抽象层次I.对问题的术语表述。该软件包括一个计算机绘图界面,显示图形及数字化界面,实现直线、折线、园及各种几何图形的绘画、几何计算及所有剖面图和辅助视图。,抽象,抽象层次II.软件任务需求的描述。CADSoftwareTasksUserinteractiontask;2-Ddrawingcreationtask;Graphicsdisplaytask;Drawingfilemanagementtask;End,抽象,抽象层次III.程序过程表示。以“创建二维图形任务”为例PROCEDURE2-DdrawingcreationREPEATUNTIL(drawingcreationtaskterminates)Dowhile(digitizerinteractionoccurs)digitizerinterfacetask;Determinedrawingrequestcase:Linedrawingtask;Circledrawingtask;End,ENDREPETITION;,ENDPROCEDURE.,抽象,数据抽象:在不同层次上描述数据对象的细节,定义与该数据对象相关的操作。例如:在CAD软件中,定义叫做drawing的数据对象,可将其规定为一个抽象数据类型,定义它的内部细节为:,抽象,数据对象:TYPEdrawingISSTRUCTUREDEFINEDnumberISSTRINGLENTH(12);geometryDEFINEDnotesISSTRINGLENTH(256);bomDEFINEDENDdrawingTYPE;,抽象,数据抽象drawing本身由另外一些数据抽象构成,如geometry,bom。定义drawing的抽象数据类型后,可引用它来定义其它数据对象。,blueprintISINSTANCEOFdrawing;或schematicISINSTANCEOFdrawing;,信息隐藏,模块所包含的信息(过程和数据)对于其他模块来说应该是隐蔽的。也就是说,模块应当被这样规定和设计,使得包含在模块中的信息(过程或数据)对于其它不需要这些信息的模块来说,是不能访问的,或者说是“不可见”的。,信息隐藏,信息隐蔽对于软件的测试与维护都有很大的好处。因为对于软件的其它部分来说,绝大多数数据和过程都是隐蔽的,这样,在修改期间由于疏忽而引入的错误所造成的影响就可以局限在一个或几个模块内部,不至波及到软件的其他部分。,信息隐藏,模块内所含信息对那些不需要这些信息的模块不可访问,每个模块只完成一个相对独立的特定功能。,模块独立性(Moduleindependence)好设计的关键:每个模块完成一个相对独立的子功能,并且与其它模块间的接口简单。,独立性的度量:耦合(Coupling)&内聚(Cohesion),HIPO图,HIPO(hierarchyplusinput-process-output)是在层次结构图的基础上的一种描述每个模块输入、输出和模块内部处理(数据加工)功能的工具。由以下两部分组成:1.层次结构图-H图描述整个系统的设计结构以及各类模块之间的关系;2.IPO图描述了某个特定模块内部的处理过程和输入/输出关系。,HIPO图,销售管理系统的H图,HIPO图,HIPO图适合于描绘软件的层次结构,特别适合于在自顶向下设计时使用。在HIPO图里除顶层之外,每个方框里都加编号。编号的规律是,每个处理的下层处理的编号在其上层编号后加“.”号及序号,序号可用数字也可用英文字母表示。,HIPO图,例:确定能否供货模块的IPO图,结构化设计,结构化设计是以结构化分析的数据流图为基础,将数据流图按一定步骤映射成软件结构。与结构化分析相衔接,构成了完整的结构化分析、设计技术,是目前使用最广泛的软件设计方法之一。亦即面向数据流的设计方法。,数据流的类型,数据流图分为变换型和事务型两类。根据信息系统模型,信息一般以外部形式进入系统,通过系统处理后,离开系统。变换型数据流图是由输入、变换(处理)、输出三部分组成。变换型数据流图中数据的处理过程大致可分为3步,即输入数据、变换数据和输出数据。,变换型数据流图,面向数据流的设计方法,将变换型数据流图映射为软件结构图的方法将数据流图的输入、变换和输出部分分别转换为输入、变换和输出模块;在输入、变换和输出模块之上增加总控模块,以调度这3个模块,协调完成任务。转换后的软件结构图如图所示:,面向数据流的设计方法,总控模块的工作过程如下:调用输入模块,获取输入数据;调用加工模块,将获取的输入数据传给加工模块,获取加工模块加工好的数据;调用输出模块,将获取的加工好的数据传给输出模块,由输出模块输出该数据。,事务型数据流图,事务型数据流图有一个明显的事务中心,它接受一项事务,根据该事务的特点和性质,选择分配一个适当的处理单元,然后输出结果。所以,事务型数据流图由接受事务、事务中心和若干处理单元输出结果部分组成,如图所示。,面向数据流的设计方法,将事务型数据流图映射为软件结构图的方法是:将数据流图中的各个部分转换成软件结构图中的相应模块;增加调度模块,让它调度n个处理单元;让事务中心模块调度接受事务、调度和输出结果模块。,面向数据流的设计方法,转换后的软件结构图如图所示:调用接受事务模块,接受一项事务;调用调度模块选择分配处理单元,获取处理结果;调用输出模块输出结果。,面向数据流的设计方法,例4-5:变换映射,面向数据流的设计方法,确定数据流图中含有变换型特征还是事务型特征。来自教务员的统计数据通过3.6加工输入到计算机中,访问学生档案库,对访问的数据进行变换后再通过3.5加工输出给教务员,存在输入部分、输出部分和中心变换部分,显然,该数据流图是变换型的。,面向数据流的设计方法,区分输入流、输出流和中心变换部分,即标明流的边界。首先确定输入和输出部分的边界,剩下的就是变换部分。在上步中确定了数据流图是变换型的,接下来的工作就是将这3部分划分出来。该数据流图的边界划分如图所示:,面向数据流的设计方法,面向数据流的设计方法,第一层分解:进行一级“因子化”分解,设计顶层和第一层模块。,面向数据流的设计方法,第二层分解:进行二级“因子化”分解,设计中、下层模块。自顶向下,逐层细化,为每一个输入模块、输出模块、变换模块设计它们的从属模块。,采用优化方法,改进系统的初始结构图,直到符合要求。,面向数据流的设计方法,例4-6:事务映射,面向数据流的设计方法,确定数据流图中含有变换型特征还是事务型特征。事务流应映射到包含一个输入分支和一个分类事务处理分支的程序结构上。输入分支结构的开发与变换流的方法类似。分类事务处理分支结构包含一个调度模块,它调度和控制下属的操作模块。本例中所得的软件结构图如图所示。,面向数据流的设计方法,程序逻辑结构的描述,详细设计阶段主要采用结构化程序设计方法(StructuredProgramming,SP),与SA和SD方法相衔接。当前流行的表示程序逻辑结构的方式有3种:图形描述程序流程图、N-S图及PAD图语言描述过程设计语言PDL表格描述判定表及判定树,程序逻辑结构的描述,程序逻辑结构的描述,程序流程图(ProgramFlowChart)又称为程序框图。,程序逻辑结构的描述,例4-7:在对某科课程的成绩统计各分数段的人数时,程序流程图可如图表示,程序流程图的标准符号,循环的标准符号注解的使用,多出口判断,程序逻辑结构的描述,盒图也称为N-S图。这种表达方式取消了流程线,它强迫程序员以结构化方式思考和解决问题。,第一个任务第二个任务第三个任务,顺序结构,else部分,then部分,条件,F,T,if-then-else结构,do-while部分,循环条件,循环结构,程序逻辑结构的描述,在N-S图中,相应规定了5种图形构件:,程序逻辑结构的描述,例4-8:根据例4-7所示的流程图画出相应的N-S图。,示例,示例,N-S图的嵌套定义形式,程序逻辑结构的描述,当问题很复杂时,N-S图可能很大,可用分层N-S图表示,如图所示。,程序逻辑结构的描述,PAD(ProblemAnalysisDiagram,问题分析图),是日本日立公司提出的用结构化程序设计思想表现程序逻辑结构的图形工具。现在已被ISO认可。,PAD也设置了五种基本控制结构的图式,并允许递归使用。,问题分析图(PAD),对应于增量型循环结构fori:=n1ton2stepn3do在PAD中有相应的循环控制结构,PAD的扩充控制结构,程序逻辑结构的描述,过程设计语言PDL(ProgramDesignLanguage)PDL是一种用于描述功能模块的算法设计和加工细节的语言,称为设计程序用语言。1结构关键字+自然语言允许自然语言(如英语)的词汇与某种结构化程序设计语言(如Pascal、C、Ada等)的语法结构交织在一起。,程序逻辑结构的描述,2.语法、关键字(1)数据说明:TYPE(2)程序块:BEGINEND(3)子程序结构PROCEDURE(4)基本控制结构:顺序结构:选择结构IF-THEN-ELSE重复型结构:包括后测试型、先测试型、下标型三种:REPEATUNTILLDOWHILEDOFOR多路选择语句:CASEOF(5)输入/输出结构READ/WRITETO,程序逻辑结构的描述,一个PDL的原型,它可以建立在任意一个通用的结构化程序设计语言之上。基本成分包括:子程序定义、界面描述、数据说明、块结构、分支结构、循环结构和I/O结构。数据说明的形式为:TYPEIS其中:局部变量或全局变量;某个特定关键字(例如,SCALAR,ARRAY,LIST,STRING,STRUTURE等);说明此处定义的变量在该过程或整个程序中应如何使用。,程序逻辑结构的描述,可进行抽象数据类型的定义,例如:TYPEtable_1ISINSTACEOFsymbol_table而symbol_table在另一处已定义如下:TYPEsymbol_tableISSTRUCTUREDEFINED,程序逻辑结构的描述,PDL的块结构描述一个过程元素,即一个块内的所有语句将作为一个整体执行,形式为BEGINEND该PDL的分支结构有if-then-else和case两种形式,分别为IFTHENELSEENDIF,程序逻辑结构的描述,CASEOFWHENSELECTW
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年自动气体灭火系统项目提案报告
- 培训计划设计与实施指南
- 2025年特种作业类危险化学品安全作业氯碱电解工艺作业-磺化工艺作业参考题库含答案解析
- 2025年特种作业类危险化学品安全作业化工自动化控制仪表作业-合成氨工艺作业参考题库含答案解析
- 专题09 遵守社会规则(河北专用)5年(2021-2025)中考1年模拟《道德与法治》真题分类汇编
- 2025年建筑工程类环境影响评价工程师相关法律法规-技术导则与标准参考题库含答案解析
- 2025年建筑工程类注册安全工程师安全生产专业实务(金属非金属矿山安全)-安全生产法律法规参考题库含答案解析
- 清华夫妇做高考数学试卷
- 2025年建筑工程类建筑三类人员项目负责人(B证)-专职安全生产管理人员(C3证)参考题库含答案解析
- 南昌三中初一数学试卷
- 医疗护理员培训机构申报表
- 半导体器件的干法刻蚀技术考核试卷
- 农商行贷款合同(2024版)
- 论行政决策的科学化与民主化分析研究 公共管理专业
- 专家讲课劳务合同书
- 少儿舞蹈剧目分析报告总结
- 班组长团队管理能力考试题库-上(选择题)
- 储能柜质保协议
- 医学精美课件《颈肩痛腰腿痛》讲座
- 厨房设备备品备件、标准件及易损件清单
- 安全标准化班组建设
评论
0/150
提交评论