软件工程―第5章 传统的设计方法

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

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

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

资源描述

第五章传统的设计方法§5.1概述§5.2结构化设计方法§5.3过程设计§5.4Jackson方法教学内容:软件设计的基本概念和原则软件设计的重要作用:软件设计处于软件工程过程中的技术核心位置,它将完成待建造软件的有意义的工程表示。软件设计阶段的目标:使用很多设计方法,产生数据设计、体系结构设计、接口设计和构件设计。为软件的编程阶段提供依据。软件设计的依据:系统分析系统设计数据字典实体关系图数据流图状态变迁图数据对象描述加工规约控制规约构件设计接口设计体系结构设计数据设计软件设计原则•设计视点不要局限在局部范围•设计是来源于分析模型的,是分析模型可跟踪的•设计应该尽量使用已有的模式,不应该总是从头开始•设计应尽可能模拟问题域的结构,缩短与现实问题的距离•设计应表现风格一致,应该有统一的规则和接口形式•设计应考虑可构造性•设计应考虑最恶略情况下的适应性,即健壮性•设计应避免考虑程序实现细节,因为它毕竟不是编码•应该根据质量度量标准来考虑设计•设计应注意对概念错误的评审,而避免过早注意细节§5.1概述1.面向数据流设计和面向数据(或数据结构)设计面向数据流的设计方法•这是一种概要设计技术,根据需求阶段对数据流的分析设计软件的总体结构。•数据流中的每个转换代表了系统功能的某个部分,应该被映射成软件的一部分—模块。•面向数据流设计方法的步骤:–确定信息流的类型–划定流界–将数据流映射为软件结构–提取层次控制结构–通过设计复审和使用启发式策略精化软件结构。面向数据或数据结构的设计面向数据的设计(datastructured-orienteddesign)方法就是根据问题的数据结构定义一组映射,把问题的数据结构转换为问题解的程序结构。而面向数据结构的设计,则侧重于问题的数据结构,把程序结构设计成与问题的数据结构一致,不强调模块定义。模块只是设计过程的副产品,对于模块独立性原则也未过分强调。这种程序结构容易理解,也易于修改。面向数据设计方法一般都包括下列任务:1.确定数据结构特征;2.用顺序、选择和重复三种基本形式表示数据;3.把数据结构表示映射为软件的控制结构;4.用与具体方法配套的设计指南进一步精化控制结构;5.开发软件的过程性描述。比较面向数据流和面向数据结构两类设计方法的异同相同点:•(1)遵守结构程序设计“由顶向下”逐步细化的原则,并以其为共同的基础;•(2)均服从“程序结构必须适应问题结构”的基本原则,各自拥有从问题结构(包括数据结构)导出程序结构的一组映射规则。不同点:•(1)面向数据流的设计以数据流图为基础,在分析阶段用DFD表示软件的逻辑模型,在设计阶段按数据流类型,将数据流图转换为软件结构。面向数据结构的设计以数据结构为基础,从问题的数据结构出发导出它的程序结构。•(2)面向数据流的设计的最终目标是软件的最终SC图,面向数据结构的设计的最终目标是程序的过程性描述。数据设计:将分析信息模型转换成数据结构,来自于实体关系图和数据字典体系结构设计:定义软件的主要结构元素、设计模式及应用约束(子系统的交互)接口设计:描述软件内部、软件和协作系统之间的通信,数据流或控制流的特定行为构件设计:结构元素变换为软件过程的描述,来自于处理说明以及状态变换图软件设计的4个活动2.从分析模型导出设计模型数据字典数据流图E-R图状态变迁图加工规约控制规约数据对描述象数据设计体系结构设计接口设计过程设计分析模型设计模型§5.2结构化设计方法结构化设计方法模块设计体系结构设计软件设计的任务----确定系统怎么做•结构化设计活动划分为两个阶段:确定系统的整体体系结构----总体设计确定各模块的具体实现----详细设计界面设计构件级程序设计•表示工具:总体设计详细设计层次图(Hierarchy)IPO图(Input-Process-Output)模块说明程序框图盒图(N-S图)决策表PDL语言结构化设计的适用范围•尤其适用于采用结构化程序设计实现的系统;•结构化设计并不是一种广泛适用的系统设计技术;•结构化设计的结果。SA与SD的关系结构化分析的结果结构化设计的工具数据流图初始结构图数据字典设计数据字典伪码实现方面伪码实体关系图数据库设计事务框图分层、细化事务模型SD来源于SA来源:结构化分析来源:结构化分析来源:结构化分析数据流图字典项伪码实体关系图事务框图环境的限制质量的标准转化分析细化设计进入实现阶段初始结构框图1.SC图(StructureChart)(1)SC中的组成符号SD方法在概要设计中的主要表达工具约定:用矩形框表示模块,用带箭头的连线表示模块间的调用关系。在调用线的两旁,应标出传入和传出模块的数据流。(2)SD方法在概要设计中的主要表达工具约定:不加区分的数据数据信息控制信息编辑学生记录读学生记录学生数据无此学生学号SC中的四种模块在系统结构图中的模块•传入模块─从下属模块取得数据,经过某些处理,再将其传送给上级模块。它传送的数据流叫做逻辑输入数据流。•传出模块─从上级模块获得数据,进行某些处理,再将其传送给下属模块。它传送的数据流叫做逻辑输出数据流。•变换模块─它从上级模块取得数据,进行特定的处理,转换成其它形式,再传送回上级模块。它加工的数据流叫做变换数据流。•协调模块─对所有下属模块进行协调和管理的模块。酒店管理信息系统功能结构图客人登记预定登记客房处理历史记录客房查询预定查询餐桌安排菜单作业营业结帐汇总打印各类查询初始设置客帐处理退房处理夜审处理客帐查询报表打印HIMS客房管理子系统收银管理子系统餐饮管理子系统大型零售商场管理信息系统功能结构图TMMIS系统维护POS系统零售实时系统商品进货管理商品批发管理商品库存管理商品及商品帐管理顾客管理连锁店管理财务管理人事工资管理计划统计管理经理查询2.SC图中的模块调用入出___ACBX,YZZABC12X,YZZ12(1)简单调用(2)选择调用ACBDA根据内部判断决定是否调用BA按另一判定结果选择调用C或D(3)SC中的循环调用ABCA根据内在的循环重复调用B、C等模块2.数据流图的类型与结构化设计方法(SD)◆面向数据流设计方法的基本概念SD以数据流图为基础,它定义了把DFD变换成软件结构的不同映射方法DFD(问题结构)软件系统的结构(程序结构)映射系统结构特征可归纳为两种典型形式:■变换型结构■事务型结构数据流图可分为两种类型:•变换型数据流•事务型数据流(1)数据流图的类型变换中心输入输出变换型结构事务中心接受路径动作路径基本模型特征事务型结构由输入、变换中心和输出三部分组成具有在多种事务中选择执行某类事务的能力变换流示意图信息时间输入流输出流交换流变换型数据流结构传入变换传出变换中心传入部分传出部分事务分析事务中心动作1动作2动作3接受接受部分事务型数据流结构变换型数据流举例输入信息物理输入格式检查处理显示正确信息结果物理输出数据变换中心逻辑输入逻辑输出传入部分传出部分特点:具有明确的传入、变换(或称主加工)和传出界面的DFD变换型系统结构图•变换型数据处理问题的工作过程大致分为三步,即取得数据,变换数据和给出数据。•相应于取得数据、变换数据、给出数据,变换型系统结构图由输入、中心变换和输出等三部分组成。事务型系统结构图•它接受一项事务,根据事务处理的特点和性质,选择分派一个适当的处理单元,然后给出结果。•在事务型系统结构图中,事务中心模块按所接受的事务的类型,选择某一事务处理模块执行。各事务处理模块并列。每个事务处理模块可能要调用若干个操作模块,而操作模块又可能调用若干个细节模块。事务型数据流图举例ABEHOMIDCNLFG确定DFD中是否含有事务流T事务............事务流:沿多条路径之一触发的数据流事务中心动作路径在一个大系统的DFD中,变换流和事务流可能是同时出现的事务映射方法事务映射方法接收路径C路径B路径A路径C1C2C3调度事务控制大型系统DFD中,变换型和事务型结构往往共存:T事务中心传入变换传出(2)面向数据流设计方法的设计步骤①精化DFD②确定DFD类型③把DFD映射到系统模块结构设计出模块结构的上层④基于DFD逐步分解高层模块设计出下层模块⑤根据模块独立性原理,精化模块结构面向数据流方法的设计过程精化数据流图区分事务中心和数据接收路径映射成变换结构区分输入和输出分支映射成事务结构用启发式设计规则精化软件结构导出接口描述和全程数据结构详细设计事务分析变换分析复查事务变换流类型SD方法的两种映射过渡方法变换型DFD事务型DFD初始SC初始SC变换分析事务分析初始的SC主模块输入模块主加工模块输入模块事务控制模块接受模块动作发送模块动作1模块动作2模块动作3模块由变换分析产生由事务分析产生•变换分析方法由以下四步组成:–重画数据流图;–区分有效(逻辑)输入、有效(逻辑)输出和中心变换部分;–进行一级分解,设计上层模块;–进行二级分解,设计输入、输出和中心变换部分的中、下层模块。3.变换分析设计方法步骤:(1)区分传入、变换中心、传出部分,在DFD上标明分界线变换分析设计方法步骤确定DFD中是否含有变换流输出输入变换变换流:具有明显的输入、变换(或加工)、输出分界的数据流图变换映射方法BCADEQPRWUVabcedrpuwv变换中心传入部分传出部分变换分析设计方法步骤(2)第一级分解(建立初始SC框架)设计顶层和第一层模块变换映射方法输出输入变换控制模块输入处理模块输出处理模块主要处理模块第一级分解的方法MCMTMAME第一级分解后的SCMCMTMAME第一层顶层c,ec,eu,wu,w传入模块传出模块中心变换模块第一级分解后的SC(另一种画法)MCMA1ceu,wc,pQPReprrw,uw传入分支模块中心加工分支模块传出分支模块MA2ME1ME2变换分析设计方法步骤(3)第二级分解(分解SC各分支)自顶向下分解,设计出每个分支的中、下层模块传入分支的分解(1)MACBAbacEDdec,e传入分支的分解(2)MAGetCbacReadDdec,eBtoCbcdeabGetEGetBDtoEAtoBReadD传出分支的分解MEWWriteVuuw,uvvvPutUUtoVMEUWrite(1)(2)中心加工分支的分解MTPQRec,pru,wpr评定输出配置信息显示格式化产生警告信号读传感器拨打电话传感器状态传感器ID类型,位置传感器信息警告类型警告数据电话号配置数据电话号信号传感器ID类型,位置SafeHome系统的监控传感器精化DFD(第二层)变换映射方法的例子监控传感器精化DFD第三层向软件模块结构的映射变换映射方法例子配置信息传感器状态传感器ID设置读传感器获得回应信息证实警告条件选择电话号连接电话网设置产生拨号脉冲格式化显示产生显示产生警告信号监控传感器执行传感器输入控制警告输出控制警告条件控制传感器ID类型位置格式化ID类型位置警告数据警告类型传感器信息电话号音语音读电话号电话号号码表警告条件码传感器ID时间信息一级因子化监控传感器执行传感器输入控制警告输出控制警告条件控制获得回应信息读传感器证实警告条件选择电话号格式化显示产生警告信号连接电话网设置产生显示产生拨号脉冲二级因子化变换映射方法例子①在选择模块设计的次序时,必须对一个模块的全部直接下属模块都设计完成之后,才能转向另一个模块的下层模块的设计。②在设计下层模块时,应考虑模块的耦合和内聚问题,以提高初始结构图的质量。③使用“黑箱”技术:在设计当前模块时,先把这个模块的所有下层模块定义成“黑箱”,在设计中利用它们时,暂时不考虑其内部结构和实现。在这一步定义好的“黑箱”,在下一步就可以对它们进行设计和加工。这样,又会导致更多的“黑箱”。最后,全部“黑箱”的内容和结构应完全被确定。④在模块划分时,一个模块的直接下属模块一般在5个左右。如果直接下属模块超过10个,可设立中间层次。⑤如果出现了以下情况,就停止模块的功能分解:当模块不能再细分为明显的子任务时;当分解成用户提供的模块或程序库的子程序时;当模块的界面是输入/输出设备传送的信息时

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

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

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

×
保存成功