配色: 字号:
第9讲:结构化设计
2021-05-21 | 阅:  转:  |  分享 
  
软件工程导论计算机与信息工程学院软件工程系面向过程(结构化)的软件开发方法一种面向数据流的传统软件开发方法以数据流为中心、构建软
件的分析模型和设计模型分为:结构化分析(StructuredAnalysis简称SA)结构化设计(StructuresdDe
sign简称SD)结构化程序设计(StructuredProgrammin简称SP)2.311.232.11.12.42.2
41.32X结构化分析概述主要任务:以抽象和分解为主要手段,建立描述软件系统运行过程的分层数据流图核准的订购单订购单发书单顾客顾
客图书代理商图书库存帐单收费数据制作财务报表图书订购收费制作发书单书库管理入库单数据流图:图书订购系统财务报表经理帐务数据库2.1
2.31.11.213421.32.22.4X数据流图的各个层次0层图:1层图:中间层图:报名单准考证合格标准错误成绩清单考生名单
成绩清单考务处理系统考务处理系统0层图不合格报名单统计分析表考生考试中心考生通知单阅卷站考生名单统计分析表报名单准考证错误成绩清单
合格标准成绩清单1考试报名2统计成绩考务处理系统1层图不合格报名单考生通知单考生名册不合格报名单报名单考生名单准考证考生名册合格报
名单1.1检查报名单1.2编准考证号1.3登记考生考务处理系统加工1子图正式报名单正确成绩清单成绩清单合格标准难度分析表考生通知
单分类统计表正式成绩清单试题得分清单错误成绩清单考生名册2.3制作通知单2.1检查成绩清单2.2审定合格者2.4分类统计成绩2.5
分析试题难度考务处理系统加工2子图分层数据流图的一致性父图与子图平衡任何一张DFD子图边界上的输入/输出数据流必须与其父图中对应的
加工的输入/输出数据流保持一致数据守恒一个加工所有输出数据流中的数据,必须能从该加工的输入数据流中直接获得,或者能通过该加工的处理
而产生局部文件考虑分层数据流中一个文件应画在哪些DFD中,而不该画在哪些DFD中CTBANQPMTSN2.32.22.1132父图
与子图不平衡的实例加工2的输入数据流有M和N,输出数据流是T而子图(右图)边界上的输入数据流是N,输出数据流是S和T成绩清单合格标
准分类统计表难度分析表考生通知单正式成绩清单试题得分清单考生名册2.5分析试题难度2.1检查成绩清单2.4分类统计成绩2.2审定合
格者2.3制作通知单数据不守恒的实例错误成绩清单正确成绩清单由于“正式成绩清单”中缺少“考生通知单”中的姓名、通信地址等数据,这
些数据也无法由加工2.3自己产生,因此,加工2.3不满足数据守恒的条件2.12.511222.4(a)父图2.22.3局部文件
示例“试题得分清单”文件是加工2的局部文件,根据抽象原则不应该将这类表示加工细节的局部文件画在其父图(如图c)中,正确的画法是图a
和b考生名册试题得分清单考生名册试题得分清单(b)子图考生名册(c)含局部文件的父图数据字典数据流图与数据字典是密不可分的
,两者结合起来构成软件的逻辑模型(分析模型)数据字典由字典条目组成,每个条目描述DFD中的一个元素数据字典条目包括:数据流、文件、
数据项(组成数据流和文件的数据)、加工、源或宿数据流条目的描述内容名称:数据流名(可以是中文名或英文名)别名:名称的另一个名字简述
:对数据流的简单说明数据流组成:描述数据流由哪些数据项组成数据流来源:描述数据流从哪个加工或源流出数据流去向:描述数据流流入哪个加
工或宿数据量:系统中该数据流的总量如考务处理系统中“报名单”的总量是100000张或者单位时间处理的数据流数量,如80000张/天
峰值:某时段处理的最大数量如每天上午9:00至11:00处理60000张表单注解:对该数据流的其它补充说明数据流组成31数据流组成
是数据流条目的核心,它列出组成该数据流的各数据项,例如:培训报名单=姓名+单位+课程运动员报名单=队名+姓名+性别+{参赛项目}当
一个数据流的组成比较复杂时,可以将其分解成几个数据流,例如:课程=课程名+任课教师+教材+时间地点时间地点={星期几+第几节+教室
}数据流组成示例(发票)51发票=单位名称+{商品名+数量+单价+金额}+总金额+日期+(营业员)单位名称商品名数量单价金额总金
额日期营业员 数据项条目的描述内容名称:数据项名别名:同数据流条目简述:对数据项的简单描述数据类型:描述
数据项的类型,如整型、实型、字符串等计量单位:指明数据项值的计量单位,如公斤、吨等取值范围:描述数据项允许的值域,如1…100编辑
方式:描述该数据项外部表示的编辑方式,如23,345.67与其它数据项的关系:描述该数据项与数据字典中其它数据项的关系注解:对数据
项的其它补充说明文件条目的描述内容名称:文件名别名:同数据流条目简述:对文件的简单说明文件组成:描述文件的记录由哪些数据项组成(与
数据流条目中的文件组成描述方法相同)写文件的加工:描述哪些加工写文件读文件的加工:描述哪些加工读文件文件组织:描述文件的存储方式(
顺序、索引),排序的关键字使用权限:描述各类用户对文件读、写、修改的使用权限数据量:文件的最大记录个数存取频率:描述对该文件的读写
频率注解:对该文件的其它补充说明加工条目的描述内容名称:加工名别名:同数据流条目加工号:加工在DFD中的编号简述:对加工的功能的
简要说明输入数据流:描述加工的输入数据流,包括读哪些文件名输出数据流:描述加工的输出数据流,包括写哪些文件名加工逻辑:简要描述加工
逻辑,或者对加工规约的索引基本加工的加工逻辑用小说明描述,在加工条目中可填写对加工规约的索引非基本加工分解而成的DFD子图已反映了
它的加工逻辑,不必书写小说明异常处理:描述加工处理过程中可能出现的异常情况,及其处理方式加工激发条件:描述执行加工的条件,如,“身
份认证正确”,“收到报名单”执行频率:描述加工的执行频率,如,每月执行一次,每天0点执行注解:对加工的其它补充说明源或宿条目的描述
内容名称:源或宿的名(外部实体名)别名:同数据流条目简要描述:对源或宿的简要描述(包括指明该外部实体在DFD中是用作“源”,还是“
宿”,还是“既是源又是宿”)输入数据流:描述源向系统提供哪些输入数据流输出数据流:描述系统向宿提供哪些输出数据流注解:对源或宿的其
它补充说明加工逻辑的描述方法结构化语言:介于自然语言和形式语言之间的一种半形式语言判定表:适用于加工逻辑包含多个条件,而不同的条件
组合需做不同的动作判定树:判定表的变种,它本质上与判定表是相同的,只是表示形式不同结构化语言没有严格的语法加工规约分为若干个段落,
每个段落可分为内外两层:外层有严格的语法来描述它的控制结构如结构化英语中可使用if_then_else、while_do、repe
at_until、for_do、case等结构内层可以用自然语言来描述允许使用嵌套结构“计算信用度”的结构化英语描述Case1
(NoBounced-ChecksinCustomerRecord):WriteExemplary-Customer―
CitationtoAnnual―Summary.Case2(OneBounced-check):IfYearly―
Average―Balanceexceeds$1000.RemoveBounced―CheckfromCustome
r―Record.Otherwise.RecuceCredit―Limitby10%.Case3(Multiple
Bounced-Checks):ForeachBounced―Check.RecuceCredit―Limitby1
5%.SetCredit―RatingtoDeadbeat.WriteScathing―CommenttoAnnu
al―Summary.WriteCustomer―Name―and―AddresstoIRS―Enemies―List.判
定表判定表的组成元素条件桩(ConditionStub):列出各种条件的对象,如发货单金额,赊欠天数等,每行写一个条件对象条件条
目(Conditienentry):列出各条件对象的取值,条件条目的每一列表示了一个可能的条件组合动作桩(actionstub
):列出所有可能采取的动作,如发出发货单等,每行写一个动作动作条目(actioneutry):列出各种条件组合下应采取的动作发货
单金额>500>500≤500≤500赊欠天数>60≤60>60≤60发不批准通知√发出批准书√√√发出发货单√√√发出赊欠报告√
“审批发货单”加工的判定表判定表的其它形式发货单金额≤5000011发货单金额>5001100赊欠天数≤600101赊欠天数>60
1010发不批准通知√发出批准单√√√发出发货单√√√发出赊欠报告√发货单金额>500≤500-赊欠天数>60>60≤60发不批准
通知√发出批准书√√发出发货单√√发出赊欠报告√“审批发货单”加工的简化判定表“审批发货单”加工的另一种判定表判定树本质上与判
定表是相同的,只是表示形式不同例如“审批发货单”加工逻辑的判定树描述入下:课程进度我们现在的位置第九章结构化设计方法模块模块是
指一组程序语句,它包括输入、输出和逻辑处理功能、内部信息及其运行计划。模块指可单独命名且可通过名字访问的过程函数、子程序或宏调用。
模块具有如下4个基本属性:(1)接口:指模块的输入与输出。(2)功能:指该模块实现什么功能,做什么事情。(3)逻辑:描述模
块内部怎么做。(4)状态:该模块使用时的环境和条件。结构化设计:软件的模块化模块化:解决一个复杂问题时,自顶向下逐层把软件划分成
若干模块的过程目的:为了降低软件的复杂性核准的订购单订购单发书单顾客顾客图书代理商图书库存帐单收费数据制作财务报表图书订购收费制作
发书单书库管理入库单示例:图书订购系统DFD财务报表经理帐务数据库2.12.31.11.213421.32.22.4X结构化分析:
分层数据流图0层图:1层图:中间层图:报名单准考证合格标准错误成绩清单考生名单成绩清单考务处理系统考务处理系统0层图不合格报名单统
计分析表考生考试中心考生通知单阅卷站考生名单统计分析表报名单准考证错误成绩清单合格标准成绩清单1考试报名2统计成绩考务处理系统1层
图不合格报名单考生通知单考生名册不合格报名单报名单考生名单准考证考生名册合格报名单1.1检查报名单1.2编准考证号1.3登记考生考
务处理系统加工1子图正式报名单正确成绩清单成绩清单合格标准难度分析表考生通知单分类统计表正式成绩清单试题得分清单错误成绩清单考生
名册2.3制作通知单2.1检查成绩清单2.2审定合格者2.4分类统计成绩2.5分析试题难度考务处理系统加工2子图一个例子某互联网公
司为了对当前软件市场上软件所具有的功能特征进行统计分析,欲开发一个文本特征提取系统,其功能大致描述如下:(1)该系统首先能从互联网
上自动爬取指定软件市场上关于软件功能的文本描述。(2)基于所爬取的软件功能描述文本,该系统要进行预处理,包括分句、分词、判断词性、
去停用词。分句是将软件的文本描述分割为一个个自然句子;分词是将每句话分割为不同的词组;判断词性是根据一定的语法规则来判别不同词组所
具有的词性;去停用词是去除句子中那些含义有限的介词、连词等词。一个例子(续)(3)对文本预处理完成之后,软件文本描述的每个句子就转
化成一个词向量。基于该词向量,该系统根据频繁项集挖掘方法提取支持度大于K的频繁词组。支持度是需要用户设定的表明词组是否频繁的一个阈
值,而频繁词组则指的是频繁一起出现的一组词。针对所挖掘的频繁词组,该系统进一步判断词组之间的关系,去除那些包含于其它词组的词组。最
终所剩下的词组即为潜在的该类别软件所具有的功能特征。结构化分析:分层数据流图0层图:结构化分析:分层数据流图1层图:结构化分析:分
层数据流图2层图:结构化分析:分层数据流图2层图:结构化设计:系统结构图系统结构图:模块结构化设计方法概述提出时间:由Yourd
on和Constantine等于1974年提出的目标:与结构化分析相衔接,根据需求阶段对数据流的分析设计软件结构结构化设计:
系统结构图系统结构图:模块结构化设计的主要内容概要设计设计软件系统的体系结构(也即软件系统的模块结构)与接口主要任务是将数据流图映
射为软件系统结构图详细设计:对概要设计的每一个模块进行数据设计和过程设计结构化设计:系统结构图系统结构图:模块系统结构图:表现形式
用矩形框来表示模块用带箭头的连线表示模块间的调用关系系统结构图:模块间调用关系简单调用选择调用循环调用两种典型的数据流及其设计变换
型数据流图事务型数据流图两种数据流类型—变换型特征:信息沿输入通路进入系统,同时由外部形式变换成内部形式,进入系统的信息通过变换中
心,经加工处理以后再沿输出通路变换成外部形式离开软件系统。组成:由输入、变换中心和输出三部分组成两种数据流类型—事务型特征:数据沿
输入通路到达一个加工T,这个加工根据输入数据的类型在若干个动作序列中选出一个来执行。加工T称为事务中心,它完成以下任务:(1)
接收输入数据(输入数据又称为事务)。(2)分析每个事务以确定它的类型。(3)根据事务类型选取一条动作路径。变换型数据流对应的设
计:变化分析变换分析是一系列设计步骤的总称,经过这些步骤把具有变换流特点的数据流图映射成为一个预定义的程序结构模板。变换分析的步骤
:1.对DFD图的分析和划分2.进行第一级分解,设计顶层和第一层模块3.第二级分解,设计中、下层模块一个例子进行第一级分解
,设计顶层和第一层模块(1/2)顶层都只有一个用于控制的主模块。第一层一般包括输入、输出和变换3个模块输入模块:其功能是向主模块
提供数据;输出模块:其功能是把主模块提供的数据输出;变换模块:其功能是把逻辑输入变换成逻辑输出。1,第一层分解,设计顶层和第一层第
二级分解,设计中、下层模块(1/2)第二级分解就是把数据流图中的每个加工映射成软件结构中的一个适当的模块。1,第一层分解,设计顶层
和第一层2,第二层分解1,第一层分解,设计顶层和第一层2,第二层分解1,第一层分解,设计顶层和第一层2,第二层分解事务型数据流对应
的设计:事务分析事务分析:由事务型数据流图映射为软件结构的过程。一个例子模块分解中的启发式规则经验表明,一个模块的规模不应过大,通
常规定其语句行数为50~100行,最多不超过500行。1.改进软件结构以提高模块独立性2.模块的大小要适当3.深度、宽度
、扇出和扇入都应适当4.模块的作用域应在控制域之内5.力争降低模块接口的复杂程度6.设计单入口单出口的模块7.模块功能应该
可预测,避免对模块施加过多限制模块分解中的启发式规则1.改进软件结构以提高模块独立性2.模块的大小要适当3.深度、宽度、扇出
和扇入都应适当4.模块的作用域应在控制域之内模块的作用域定义为受该模块内一个判定影响的所有模块的集合。模块的控制域是指这个模块本
身以及所有直接或间接从属于它的模块的集合。模块分解中的启发式规则1.改进软件结构以提高模块独立性2.模块的大小要适当3.深度、宽度、扇出和扇入都应适当4.模块的作用域应在控制域之内5.力争降低模块接口的复杂程度6.设计单入口单出口的模块7.模块功能应该可预测,避免对模块施加过多限制详细设计详细设计就要对软件结构中的每一个模块确定使用的算法或块内数据结构,并用某种选定的表达工具给出清晰的描述。详细设计的表达工具程序流程图盒图PAD图PDLHIPO图详细设计的表达工具:PDLPDL(ProgramDesignLanguage),又被称为伪程序或伪码PROCEDUREspellcheckIS//查找拼错的单词BEGINxxxxxx//具体的查找过程ENDspellcheck小结结构化设计主要解决如何将需求分析阶段的DFD图推导为软件系统结构,并用它提供的结构图描述之。系统设计时要遵循模块化、自顶向下逐步求精的基本思想。详细设计着重对各个模块的逻辑进行详细设计。
献花(0)
+1
(本文系大量资料首藏)