结构化软件设计_第1页
结构化软件设计_第2页
结构化软件设计_第3页
结构化软件设计_第4页
结构化软件设计_第5页
已阅读5页,还剩73页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

结构化设计(shèjì)共七十八页现实(xiànshí)世界计算机世界(shìjiè)结构化开发方法结构化分析SA结构化设计SD结构化编程SPOOAOODOOP面向对象开发方法共七十八页技术观点数据设计系统结构设计过程设计详细设计

概要设计管理观点软件设计任务(rènwu)共七十八页软件设计方法(fāngfǎ)分类分类代表面向数据流的设计或者过程驱动的设计结构化设计方法面向数据结构的设计或者数据驱动设计LCP,JSP,DSSD面向对象设计Coad,Yourdon结构化设计方法(fāngfǎ)(StructuredDesign,SD)基于模块化、自顶向下逐层细化、结构化程序设计等程序设计技术上发展起来的。共七十八页结构化设计(shèjì)结构化设计(StructuredDesign,简称SD)是一种(yīzhǒnɡ)将结构化分析得到的数据流图映射成软件体系结构的设计方法映射DFD(问题结构)软件系统的结构(程序结构)Sc图共七十八页结构化设计(shèjì)强调模块化、自顶向下逐步求精、信息隐蔽、高内聚低耦合等设计准则分为概要设计和详细设计两大步骤概要设计是对软件系统的总体设计,采用结构化设计方法,其任务是:将系统分解成模块,确定每个模块的功能、接口(模块间传递的数据)及其调用关系,并用模块及其对模块的调用来构建软件(ruǎnjiàn)的体系结构详细设计是对模块实现细节的设计,采用结构化程序设计(StructuredProgramming,简称SP)方法SA、SD和SP构成完整的结构化方法体系共七十八页结构图(SC)用结构图(StructureChert)来描述软件系统的体系结构描述一个(yīɡè)软件系统由哪些模块组成,以及模块之间的调用关系结构图的基本成分有:模块、调用和数据共七十八页模块(mókuài)模块(module):指具有一定功能的可以用模块名调用的一组程序语句,如函数、子程序等它们是组成程序的基本单元一个模块具有其外部特征和内部特征外部特征包括:模块的接口(模块名、输入(shūrù)/输出参数、返回值等)和模块的功能内部特征包括:模块的内部数据和完成其功能的程序代码在SD中,我们只关注模块的外部特征,而忽略其内部特征共七十八页调用(diàoyòng)和数据调用(call):用从一个模块指向另一个模块的箭头来表示,其含义是前者调用了后者为了方便,有时常用直线(zhíxiàn)替代箭头,此时,表示位于上方的模块调用位于下方的模块数据(data):模块调用时需传递的参数可通过在调用箭头旁附加一个小箭头和数据名来表示共七十八页结构图的几个(jǐɡè)概念深度:程序结构图中控制的层数,例如图中所示的结构图的深度是5宽度(kuāndù):程序结构图中同一层次上模块总数的最大值,例如图中所示的结构图的宽度为7扇出(fanout):该模块直接调用的模块数目。例如,例如图中模块M的扇出是4,模块A的是2,模块B的扇出是1扇入(fanin):能直接调用该模块的模块数目。例如图中模块G的扇入是1,模块I的扇入是2,模块R的扇入是4WBKAEHJDGFILCMNOPQR深度宽度扇入扇出共七十八页相关指标(zhǐbiāo)的含义深度和宽度在一定程序(chéngxù)上反映了程序(chéngxù)的规模和复杂程度相对而言,如果程序结构图的深度和宽度较大,则说明程序的规模和复杂程度都较大。模块的扇入扇出会影响结构图的深度和宽度,例如减少模块的扇出,可能导致宽度变小而深度增加一个模块的扇出过大通常意味着该模块比较复杂,然而扇出太少,可能导致深度的增加一般情况,一个模块的扇出以3~9为宜一个模块的扇入表示有多少模块可直接调用它,它反映了该模块的复用(reuse)程度,因此模块的扇入越大越好共七十八页软件设计中的概念(gàiniàn)模块化抽象(chōuxiàng)信息局部化模块独立性耦合内聚共七十八页模块化模块是数据说明、可执行语句等程序对象的集合,模块可以单独被命名,可通过名字访问。例如,过程(guòchéng)、函数、子程序、宏等等都可作为模块。模块化就是把程序划分为若干个模块,每个模块具有独立子功能,再把各个模块集成后,实现指定功能,满足问题要求。共七十八页抽象化抽象就是抽出事务的本质特性(tèxìng)而暂不考虑细节问题,是人类在认识复杂现象中使用的最强有力工具。软件工程过程的每一步都是对问题的软件解法抽象层次的一次精化。逐步求精与抽象是紧密相关的共七十八页模块(mókuài)独立性模块独立性是软件系统中每个模块只涉及软件要求的具体子功能,而和软件系统中其他的模块接口是简单的。模块独立的概念是模块化、抽象、信息隐蔽和局部化概念的直接结果(jiēguǒ)。重要概念:耦合、内聚共七十八页模块(mókuài)独立性的度量

模块独立性取决于模块的内部和外部(wàibù)特征。

SD方法提出的定性的度量标准:

模块之间的耦合性模块自身的内聚性共七十八页耦合耦合是对一个软件结构内各个模块之间互连程度的度量。耦合强弱取决于模块间接口的复杂程度,调用模块的方式,以及通过接口的信息。根据模块间耦合程度的强弱的标准,划分(huàfēn)耦合类型,共有七种。

共七十八页无耦合-没有(méiyǒu)依赖关系松散耦合-有少量依赖(yīlài)关系紧密耦合-有很多依赖关系图示共七十八页耦合类型(lèixíng)(高→低)内容耦合

当一个模块直接修改或操作另一个模块的数据,或者直接转入另一个模块时,就发生了内容耦合。此时,被修改的模块完全依赖于修改它的模块。公共耦合两个以上的模块共同引用一个全局(quánjú)数据项就称为公共耦合。控制耦合一个模块在界面上传递一个信号(如开关值、标志量等)控制另一个模块,接收信号的模块动作根据信号值进行调整,称为控制耦合。共七十八页耦合类型(lèixíng)标记耦合

模块间通过(tōngguò)参数传递复杂的内部数据结构,称为标记耦合。此数据结构的变化将使相关的模块发生变化。数据耦合

模块间通过参数传递基本类型的数据,称为数据耦合。非直接耦合模块间没有信息传递时,属于非直接耦合。共七十八页内容(nèiróng)耦合举例一模块直接访问另一模块的内部信息(xìnxī)

(程序代码或数据)最不好的耦合形式!!!ABAB模块代码重叠Entry1……Entry1……多入口模块共七十八页公共(gōnggòng)耦合举例A公共数据区CB模块A、B、C间存在(cúnzài)错综复杂的联系共七十八页控制(kòngzhì)耦合举例A计算(jìsuàn)平均分或最高分B平均/最高(控制信号)成绩读入分数输出结果计算平均分计算最高分平均/最高?B共七十八页数据(shùjù)耦合举例开发票计算(jìsuàn)水费单价数量金额共七十八页标记(biāojì)耦合举例计算(jìsuàn)水电费计算水费计算电费住户情况水费电费住户情况“住户情况”是一个数据结构,图中模块都与此数据结构有关.“计算水费”和“计算电费”本无关,由于引用了此数据结构产生依赖关系,它们之间也是标记偶合.共七十八页耦合强弱(qiánɡruò)排序原则:如果模块间必须存在耦合,尽量使用(shǐyòng)数据耦合,少用控制耦合,限制公共环境耦合的范围,完全不用内容耦合。共七十八页内聚内聚标志一个模块内各个元素彼此结合的紧密程度。它是信息隐蔽和局部化概念的自然扩展。简单地说,理想内聚的模块只做一件事情。根据各个模块之间的内聚程度不同(bùtónɡ),分为七个类型的内聚共七十八页内聚类型(lèixíng)偶然内聚

如果一个模块的各成分(chéngfèn)之间毫无关系,则称为偶然内聚。逻辑内聚

几个逻辑上相关的功能被放在同一模块中,则称为逻辑内聚。如一个模块读取各种不同类型外设的输入。尽管逻辑内聚比偶然内聚合理一些,但逻辑内聚的模块各成分在功能上并无关系,即使局部功能的修改有时也会影响全局,因此这类模块的修改也比较困难。共七十八页内聚类型(lèixíng)时间内聚如果一个模块完成的功能必须在同一时间内执行(如系统初始化),但这些功能只是因为时间因素关联在一起,则称为时间内聚。过程内聚

如果一个模块内部的处理(chǔlǐ)成分相关,必须以特定的次序执行,则称为过程内聚。通信内聚

如果一个模块的所有成分操作同一数据集或生成同一数据集,则称为通信内聚。共七十八页内聚类型(lèixíng)顺序内聚如果一个模块的各个成分和同一个功能密切相关,而且一个成分的输出作为另一个成分的输入,则称为顺序内聚。功能内聚模块的所有成分对于(duìyú)完成单一的功能都是必须的,则称为功能内聚。

共七十八页偶然(ǒurán)内聚(巧合内聚)

模块(mókuài)内各部分间无联系ABCMMOVEOTORREADFILEFMOVESTOT模块M中的三个语句没有任何联系缺点:可理解性差,可修改性差例:共七十八页逻辑(luójí)内聚模块ABCEFGABCEFGA1B1C1EFG模块内部(nèibù)逻辑E、F、G逻辑功能相似,组成新模块EFG缺点:增强了耦合程度(控制耦合)

不易修改,效率低公用代码段公用代码段共七十八页过程(guòchéng)内聚模块读入成绩单审查(shěnchá)成绩单统计成绩打印成绩读入并审查成绩单统计并打印成绩单共七十八页通信(tōngxìn)内聚模块例产生工资(gōngzī)报表计算平均工资职工工资记录职工工资报表平均工资产生职工工资报表并计算平均工资模块共七十八页内聚强弱(qiánɡruò)排序设计(shèjì)时力争做到高内聚。共七十八页耦合和内聚的关系(guānxì)聚和耦合是密切相关的,与其它模块存在强耦合的模块通常意味着弱内聚,而强内聚的模块通常意味着与其它模块之间存在弱耦合。模块设计追求强内聚,弱耦合。片面明确耦合程度和内聚程度是没有任何实际意义的,我们重要(zhòngyào)的是借助耦合和内聚的概念帮助我们设计模块。共七十八页设计(shèjì)策略-1按照模块化设计原则,相应的启发式设计策略如下:改造程序结构图,降低耦合度,提高内聚度避免高扇出,并随着深度(shēndù)的增加,力求高扇入避免如图a那样的“平铺”形态,较好的结构图形态是如图b那样的“椭圆”型(a)平铺形态(b)椭圆形态共七十八页设计(shèjì)策略-2模块的影响范围应限制(xiànzhì)在该模块的控制范围内,例如下图中图a中,模块B2的影响范围(模块A)不在其控制范围(模块B2)内图b中,决策控制是在顶层模块,其影响范围(A、B2)在控制范围内,但是从决策控制模块到被控模块之间相差多个层次图c和d较合适,图d为最好(c)TopXBB1AYB2TopXYABB2B1(d)XBB1YTopXBB1YAB2(a)(b)ATopB2共七十八页设计(shèjì)策略-3降低模块接口的复杂程度和冗余程度,提高一致性模块接口上应尽可能传递简单数据,而且传递的数据应保持与模块的功能相一致,即不传递与模块功能无关的数据模块的功能应是可预测的,避免对模块施加(shījiā)过多的限制模块功能可预测是指该模块对相同的输入能产生相同的输出限制一个模块只处理单一的功能,那么,这个模块体现出高内聚尽可能设计单入口和单出口的模块单入口和单出口的模块能有效地避免内容耦合共七十八页映射DFD(问题结构)软件系统的结构(程序结构)Sc图概要(gàiyào)设计共七十八页SD方法(fāngfǎ)表达工具—SC图编辑(biānjí)学生记录读学生记录学生数据无此学生学号不加区分的数据数据信息控制信息共七十八页SC中的四种(sìzhǒnɡ)模块传入(chuánrù)模块(a)(b)AA传出模块BB变换模块(c)CD协调模块E(d)EFF共七十八页SC简单(jiǎndān)调用BDAX,YZZ共七十八页SC选择(xuǎnzé)调用ACBDA根据(gēnjù)内部判断决定是否调用BA按另一判定结果选择调用C或D共七十八页SC循环(xúnhuán)调用ABCA根据内在的循环(xúnhuán)重复调用B、C等模块共七十八页结构图(SC)举例(jǔlì)

医院(yīyuàn)管理系统门诊管理药房管理药库管理病房管理财务管理处方挂号处理挂号费总计挂号单挂号费总计出库处理进药管理病历管理处方管理常规处理共七十八页数据流图类型和SD方法(fāngfǎ)的步骤

在软件设计开始之前,首先要分清(fēnqīng)DFD图所显示的系统特征.在DFD图所代表的SA模型中,所有系统均可以纳入两种典型的形式:变换型结构事务型结构共七十八页变换(biànhuàn)型结构

信息沿输入通路进入系统,同时由外部形式变换成内部形式,进入系统的信息通过变换中心,经过加工处理以后(yǐhòu)再沿输出通路变换成外部形式离开软件系统。当数据流具有这些特征时,这种信息流称为变换流。外部表示内部表示信息输入流输出流变换流信息流时间共七十八页事务(shìwù)型结构

数据沿输入通路到达一个处理T,这个处理根据输入数据的类型在若干个动作(dòngzuò)序列中选出一个来执行。这种“以事务为中心的”的数据流,成为“事务流”。T事务事务中心处理T称为事务中心,完成以下任务:接收输入数据;分析每个事务以确定它的类型;根据事务类型选取一条活动通路。共七十八页SD方法(fāngfǎ)步骤复审(fùshěn)DFD图,必要时可以再次进行修改和细化.鉴别DFD图所表示的软件系统结构特征,确定它所代表的软件结构是属于变换型还是事务型.按照SD方法规定的一组规则,把DFD图转换为初始的SC图.共七十八页SD方法(fāngfǎ)的两种映射过渡方法(fāngfǎ)变换(biànhuàn)型DFD事务型DFD初始SC初始SC变换分析事务分析共七十八页面向数据流方法的设计(shèjì)过程精化数据流图区分事务中心和数据接收路径映射成变换结构流类型区分输入和输出分支映射成事务结构用启发式设计规则精化软件结构导出接口描述和全程数据结构复查详细设计“事务”“变换”事务分析变换分析共七十八页如何(rúhé)进行变换分析(1)区分(qūfēn)传入、变换中心、传出部分,在DFD上标明分界线(2)第一级分解(建立初始SC框架)

设计顶层和第一层模块(3)第二级分解(分解SC各分支)

自顶向下分解,设计出每个分支的中、下层模块共七十八页传入(chuánrù)部分BCADEQPRWUVabcedrpuwv变换中心传出部分1共七十八页第一级分解(fēnjiě)的方法MCMTMAME2共七十八页第一级分解(fēnjiě)后的SC第一层MCMTMAME顶层c,ec,eu,wu,w传入模块传出模块中心变换模块共七十八页传入(chuánrù)分支的分解

(1)

MACBAbacEDdec,e共七十八页传入分支(fēnzhī)的分解

(2)c,eMAGetCbacRead

DdeB

to

CbcdeabGetEGetBAtoBReadDD

to

E共七十八页传出分支(fēnzhī)的分解MEWuuw,uvvvPutUUtoVMEUWriteWwwuw,uV(1)(2)WriteV共七十八页中心加工分支(fēnzhī)的分解MTPQRec,pru,wpr共七十八页

任何情况下都可使用变换分析方法设计软件结构。但如数据流具有(jùyǒu)明显的事务特点时(有一个明显的事务中心),以采用事务分析方法为宜。如何(rúhé)进行事务变换?共七十八页事务分析设计方法(fāngfǎ)步骤:(1)在DFD上确定事务中心、接收部分和发送部分。(2)画出SC框架,把DFD上的三部分分别映射为事务控制(kòngzhì)模块、接收模块和动作发送模块。(3)分解细化接收分支和发送分支,完成初始SC。共七十八页事务分析的映射(yìngshè)方法C路径(lùjìng)总控调度C路径B路径A路径A路径B路径接收路径共七十八页事务流设计(shèjì)举例IMLNABCDFEG事务(shìwù)中心共七十八页事务(shìwù)流设计举例

取A

总控ALMNGDBCFE动作(dòngzuò)1动作n….细节模块1细节模块2….(操作模块)(细节模块)共七十八页混合结构

一个大型(dàxíng)系统常常是变换型和事务型的混合结构。为了导出它们的初始SC图,也必须同时采用变换映射和事务映射两种方法。共七十八页3412675810911变换中心传入传出事务型混合流设计(shèjì)举例共七十八页ABT1变换(biànhuàn)中心传入(chuánrù)传出T2T3abb1b2b3c1c2c3degfjLm事务流子系统BCCDDEEHHKFJKLLMh混合流设计举例k共七十八页混合(hùnhé)流设计举例输入(shūrù)DXX系统变换控制输出K输入Cdc输出LCDDEFJEHHKKLcddkkkLL输出MLMmmL事务子系统共七十八页汽车数字仪表板主要完成下述功能:通过模-数转换实现传感器和微处理机接口;在发光二极管面板上显示数据指示每小时英里数(mph),行驶(xíngshǐ)的里程,每加仑油行驶(xíngshǐ)的英里数(mpg)等等;指示加速或减速;超速警告:如果车速超过55英里/小时,则发出超速警告铃声。例如(lìrú)例如共七十八页显示(xiǎnshì)读旋转信号收集和求平均发出铃声计算里程转换成转/分(rpm)确定加速/减速产生加速/减速显示产生里程显示计算mph和超速值读和校核产生mpg显示计算燃料消耗计算gph产生mph显示旋转信号____△SPS上箭头指示箭头下箭头SPS水平线信号/秒燃料流(SPS)燃料流传感器信号gphmphmphmph显示mpgMpg显示rpmrpm英里超速值铃声mph⊕⊕图8数字仪表板系统的数据流图设计步骤:复查基本系统模型复查并精化数据流图确定数据流图具有变换特性还是事务特性确定输入流和输出流的边界,从而(cóngér)孤立出变换中心共七十八页读旋转信号收集和求平均发出铃声计算里程转换成转/分(rpm)确定加速/减速产生加速/减速显示产生里程显示计算mph和超速值读和校核产生mpg显示计算燃料消耗计算gph产生mph显示旋转信号____△SPS上箭头指示箭头下箭头SPS水平线信号/秒燃料流(SPS)燃料流传感器信号gphmphmphmph显示mpgMpg显示rpmrpm英里超速值铃声mph⊕⊕图8数字仪表板系统的数据流图确定输入流和输出(shūchū)流的边界,从而孤立出变换中心共七十八页读旋转信号收集和求平均发出铃声计算里程转换成转/分(rpm)确定加速/减速产生加速/减速显示产生里程显示计算mph和超速值读和校核产生mpg显示计算燃料消耗计算gph产生mph显示旋转信号____△SPS上箭头指示箭头下箭头SPS水平线信号/秒燃料流(SPS)燃料流传感器信号gphmphmphmph显示mpgmpg显示rpmrpm英里超速值铃声mph⊕⊕图8数字仪表板系统的数据流图设计步骤(bùzhòu):完成第一级分解共七十八页数字仪表板控制接收传感器信号数据转换控制驱动仪表板输入控制变换控制输出控制输入信息处理模块协调对所有输入数据的接收变换中心控制模块,管理对内部形式的数据的所有操作输出信息处理控制模块,协调输出信息的产生过程图9数字(shùzì)仪表板的第一级分解共七十八页读旋转信号收集和求平均发出铃声计算里程转换成转/分(rpm)确定加速/减速产生加速/减速显示产生里程显示计算mph和超速值读和校核产生mpg显示计算燃料消耗计算gph产生mph显示旋转信号____△SPS上箭头指示箭头下箭头SPS水平线信号/秒燃料流(SPS)燃料流传感器信号gphmphmphmph显示mpgmpg显示rpmrpm英里超速值铃声mph⊕⊕图8数字仪表板系统的数据流图设计步骤

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论