《Ch05 GIS软件工程的总体设计-2精编版》由会员分享,可在线阅读,更多相关《Ch05 GIS软件工程的总体设计-2精编版(28页珍藏版)》请在金锄头文库上搜索。
1、第二节 软件体系结构设计,一、体系结构 软件体系结构是软件系统中最本质的东西。 良好的体系结构必须是普适、高效和稳定的。 软件的体系结构包含软件构件、构件对外可见的性质以及它们之间的关系。,1,二、面向数据流的设计 结构化开发方法(Structured Developing Method)由:结构化分析方法(SA法)、结构化设计方法(SD法)及结构化程序设计方法(SP法)构成的。 面向数据流的设计方法又称结构化设计。 结构化设计方法主要完成软件系统的总体结构设计。,2,SD方法的中心任务:把用DFD图表示的系统分析模型方便地转换为软件结构的设计模型; DFD System Hierarchy,
2、3,三、数据流的分类与面向数据流的设计过程 在软件工程的需求分析阶段,信息流是一个关键考虑,通常用数据流图描绘信息在系统中加工和流动的情况。面向数据流的设计方法定义了一些不同的“映射”,利用这些映射可以把数据流图变换成软件结构。,4,数据流的分类 (1)变换流(Transform Flow),5,输入 路径,变换 中心,输出 路径,变换中心的任务:就是通过计算或者处理,把系统的输入流变换为系统的输出流。,6,(2)事务流(Transaction Flow),当信息流具有明显的“发射中心”时,可归结为事务流。 数据沿输入通路到达一个处理T,这个处理根据输入数据的类型在若干个动作序列中选出一个来执
3、行。,7,事务型结构的系统基本模型,这类系统的特征,是具有在多种事务中执行某类事务的能力。,8,事务中心完成下述任务: (1)接收输入数据(输入数据又称为事务);(2)分析每个事务以确定它的类型;(3)根据事务类型选取一条活动通路。,9,2.面向数据流的设计过程,10,例:汽车数字仪表板的设计,功能: 通过模 - 数转换实现传感器和微处理机接口; 在发光二极管面板上显示数据; 指示每小时英里数(mph),行驶的里程,每加仑油行驶的英里数(mpg)等等; 指示加速或减速; 如果车速超过55mph ,则发出警告铃声。,四、变换分析,变换分析是一系列设计步骤的总称,经过这些步骤把具有变换流特点的数据
4、流图按预先确定的模式映射成软件结构。,11,设计步骤: 第1步:复查基本系统模型; 第2步:复查并精化数据流图;,12,第3步 确定数据流图具有变换性还是事务特性;,13,燃料流 传感器信号,SPS,旋转信号,SPS,SPS,箭头指示,燃烧流,上箭头,水平线,下箭头,rpm,rpm,gph,mph,mpg,mph,超速值,英里,显示,铃声,mph显示,mpg显示,第4步 确定输入流和输出流的边界,从而孤立出变换中心;,14,第5步 完成“第一级分解”,第一级分解的方法,对于变换流的情况,数据流图被映射成一个特殊的软件结构,这个结构控制输入、变换和输出等信息处理过程。,控制模块 Cm协调下述从属
5、的控制功能: 输入信息处理控制模块 Ca; 变换中心控制模块Ct; 输出信息处理控制模块 Ce;,15,数字仪表板系统的第一级分解,16,第二级分解的方法,第6步 完成“第二级分解”,所谓第二级分解就是把数据流图中的每个处理映射成软件结构中一个适当的模块。 从变换中心的边界开始沿着输入通路向外移动,把输入通路中每个处理映射成软件结构中 Ca控制下的一个低层模块; 然后沿输出通路向外移动,把输出通路中每个处理映射成直接或间接受模块 Ce控制的一个低层模块; 最后把变换中心内的每个处理映射成受Ct控制的一个模块。,17,未精化的数字仪表板系统的软件结构,18,mpg显示,19,第7步 使用设计度量
6、和启发式规则对得到的软件结构进一步精化;,精化后的数字仪表板系统的软件结构,20,四、事务分析,事务分析的设计步骤和变换分析的设计步骤大部分相同或类似,主要差别仅在于由数据流图到软件结构的映射方法不同。,21,映射出接收分支结构的方法:从事务中心的边界开始,把沿着接收流通路的处理映射成模块; 发送分支的结构包含一个调度模块; 然后把数据流图中的每个活动流通路映射成与它的流特征相对应的结构;,22,五、综合设计,在实际的软件系统中,数据流图往往是变换型和事务型的混合体,这就要用综合设计的方法: 一般以“变换分析”为主,“事务分析”为辅进行设计。先找出主加工,设计出结构图的上层,然后根据数据流图各
7、部分的结构特点适当地运用“变换分析”或“事务分析”对下层模块进行设计,可得到初始结构图。,23,设计优化,注意,结构简单通常既表示设计风格优雅,又表明效率高。设计优化应该力求做到在有效的模块化的前提下使用最少量的模块,以及在能够满足信息要求的前提下使用最简单的数据结构。,软件设计人员应该致力于开发能够满足所有功能和性能要求,而且按照设计原理和启发式设计规则衡量是值得接收的软件。应该在设计的早期阶段尽量对软件结构进行精化。,24,SD方法的特点,SD方法是从以下几个方面来获得质量较好的软件结构: 根据描述用户需求的数据流图导出了实现用户需求的结构图。 为了控制大型软件系统复杂性,运用了下面两个手
8、段: 将系统分解成许多个黑盒。 将黑盒组织成适合于用计算机实现的一个层次结构。 用内聚和耦合作为评价软件结构质量的标准。 给出一组设计技巧,如扇入和扇出、模块大小的掌握,作用范围和控制范围等。,六、SD方法小结,25,对数据结构、文件结构、数据库结构没有考虑充分。 “高内聚、低耦合”的原则虽已被广为接受,但这两个概念尚无严格的定义,更无健全的理论基础。,SD方法的不足:,26,1.DFD中从系统的输入流到系统的输出流的一连串连续变换形成一种信息流,这种信息流可分为( )两类。 控制流和变换流 变换流和事务流 事务流和事件流 事件流和控制流 2.下述有关模块独立性的各种模块内聚,内聚度 (强度)
9、最高的是( )。 巧合内聚 时间内聚 功能内聚 通信内聚 3. 软件的开发工作经过需求分析阶段,以后就开始着手解决 “怎么做”的问题。下面( )不属于常用的软件设计方法。 Jackson方法 LCP(Wanier)方法 SA方法 SD方法,27,1、有时候读书是一种巧妙地避开思考的方法。20.8.2220.8.22Saturday, August 22, 2020 2、阅读一切好书如同和过去最杰出的人谈话。01:35:1701:35:1701:358/22/2020 1:35:17 AM 3、越是没有本领的就越加自命不凡。20.8.2201:35:1701:35Aug-2022-Aug-20
10、4、越是无能的人,越喜欢挑剔别人的错儿。01:35:1701:35:1701:35Saturday, August 22, 2020 5、知人者智,自知者明。胜人者有力,自胜者强。20.8.2220.8.2201:35:1701:35:17August 22, 2020 6、意志坚强的人能把世界放在手中像泥块一样任意揉捏。2020年8月22日星期六上午1时35分17秒01:35:1720.8.22 7、最具挑战性的挑战莫过于提升自我。2020年8月上午1时35分20.8.2201:35August 22, 2020 8、业余生活要有意义,不要越轨。2020年8月22日星期六1时35分17秒01
11、:35:1722 August 2020 9、一个人即使已登上顶峰,也仍要自强不息。上午1时35分17秒上午1时35分01:35:1720.8.22 10、你要做多大的事情,就该承受多大的压力。8/22/2020 1:35:17 AM01:35:172020/8/22 11、自己要先看得起自己,别人才会看得起你。8/22/2020 1:35 AM8/22/2020 1:35 AM20.8.2220.8.22 12、这一秒不放弃,下一秒就会有希望。22-Aug-2022 August 202020.8.22 13、无论才能知识多么卓著,如果缺乏热情,则无异纸上画饼充饥,无补于事。Saturday, August 22, 202022-Aug-2020.8.22 14、我只是自己不放过自己而已,现在我不会再逼自己眷恋了。20.8.2201:35:1722 August 202001:35,谢谢大家,