第7讲软件设计方法

上传人:hs****ma 文档编号:584529999 上传时间:2024-08-31 格式:PPT 页数:41 大小:659.03KB
返回 下载 相关 举报
第7讲软件设计方法_第1页
第1页 / 共41页
第7讲软件设计方法_第2页
第2页 / 共41页
第7讲软件设计方法_第3页
第3页 / 共41页
第7讲软件设计方法_第4页
第4页 / 共41页
第7讲软件设计方法_第5页
第5页 / 共41页
点击查看更多>>
资源描述

《第7讲软件设计方法》由会员分享,可在线阅读,更多相关《第7讲软件设计方法(41页珍藏版)》请在金锄头文库上搜索。

1、第7讲软件设计方法体系结构设计软件体系结构是软件系统中最本质的东西。良好的体系结构必须是普适、高效和稳定的。BAS98:软件的体系结构是系统的一个或多个结构,包含软件构件、构件对外可见的性质以及它们之间的关系。体系结构是一种表示。体系结构设计关注构件结构、构件的性质和交互的关系。体系结构风格style体系结构风格包含:一组构件(components)(如,数据库、计算模块)完成系统所需的某种功能;一组连接子(connectors),能使构件间通信协调和合作;约束(constraints),定义构件如何被集成,形成系统;语义模型(semantic model),使得设计者通过分析构件的已知性质而

2、理解系统的整体性质。体系结构风格分类数据为中心的体系结构目标:实现数据的可集成性共享数据可以是数据仓库或是黑板。客户端客户端客户端客户端客户端客户端共享数据体系结构风格分类调用返回体系结构目标:系统的可更改性和可扩展性主程序子程序体系结构将一个程序分层子部分每个子节点都只由父节点控制如远程过程调用系统面向对象或抽象数据类型系统强调对数据的绑定和对数据操纵及访问方式的掌握实现可更改性层次式可更改可移植System SoftwareMiddlewareBusiness-specific ComponentsApplication SystemsWebsitesofInterestCMUCompos

3、ableSystemsGroupwww.cs.cmu.edu/Compose/CMUArchitectureBasedLanguagesandEnvironmentsResearchGroupwww.cs.cmu.edu/able/TheAcmeADLwww.cs.cmu.edu/acme/WorldwideInstituteofSoftwareArchitectswww.wwisa.orgWebSitesofInterestTheWRIGHTLanguagewww.cs.cmu.edu/able/wright/Meta-HForReal-TimeSoftwareA 是是现现有的有的软软件开件

4、开发发方法中最成熟,方法中最成熟,应应用用最广泛的方法,主要特点是快速、自然和方便。最广泛的方法,主要特点是快速、自然和方便。结结构化开构化开发发方法由方法由结结构化分析方法(构化分析方法(SASA法)、法)、结结构化构化设计设计方法(方法(SDSD法)及法)及结结构化程序构化程序设计设计方法方法(SPSP法)构成的。法)构成的。结构化设计方法(结构化设计方法(SDSD法法 StructuredDesignStructuredDesign)是)是结构化开发方法的核心,与结构化开发方法的核心,与SASA法,法,SDSD法密切联法密切联系,系,主要完成软件系统的总体结构设计。主要完成软件系统的总体

5、结构设计。面向数据流的设计方法又称结构化设计。面向数据流的设计方法又称结构化设计。面向数据流的设计基本思想:将系统设计成由相对独立、单一功能的模块组成的结构。采用方法:DFDSystemHierarchy步骤:确定数据流类型;指明数据流的边界;将DFD映射为程序结构;根据元素的分解,定义控制的层次;使用设计测量和启发信息,对结构进行细化和求精;精化体系结构的描述。结构图(Structure chart)A AB Ba. 基本形式基本形式A AC CB BD Db. 顺序顺序A AB BC Cc. 选择选择A AB Bd. 重复重复1、DataFlow的分类变换流(TransformFlow):

6、Internal representationInformationTransform flowOutgoingflowIncomingflowExternal representationTime事实上所事实上所有信息流有信息流都可归结都可归结为变换流为变换流面向数据流的设计面向数据流的设计变换流输入输入变换变换输出输出事务流(TransactionFlow) TTransactionrequest Action paths T = Call one of the several subroutines depending on the type of the incoming transa

7、ction request.当当信信息息流流具具有有明明显显的的“发发射射中中心心”时时,可归结为事务流。可归结为事务流。面向数据流的设计面向数据流的设计事务事务中心中心变换流设计变换流设计是从变换流的DFD到程序结构图的转化。设计步骤:找出变换中心及逻辑输入/出;变换中心描述了系统的主要功能、特征,其特点是:输入/出数据流较多,变换中心可以不至一个。逻辑输入/出是指输入/出变换中心的数据流。输入流是将物理输入转换为逻辑输入的数据流。输出流是将逻辑输出转换为物理输出的数据流。设计软件结构的顶层;为每个输入设计一个输入模块,为每个输出设计一个输出模块,同时为变换中心设计一个处理模块。自顶向下,逐

8、步细化,设计中下层模块。即上层各个模块的从属模块,顺序一般是从设计输入模块的下层开始。变换流设计321456输入输入变换中心变换中心输出输出A AB BC CDDE EF FG GHHSystem 3Get CGet BGet AMake Make A A into into B BMake Make B B into into C CMake Make C C into into D D and and E EPut EPut DMake Make E E into into G GPut GMake Make D D into into F FPut FMake Make G G into

9、 into H HPut HCCDEEDBBCAABEGGGHHDFF须检查;须检查; 每个传递的数据是否每个传递的数据是否必须必须? 完成模块功能所必须的数据是否完成模块功能所必须的数据是否都传递了都传递了? 传输的数据是否只与传输的数据是否只与单一单一的功能有关?是否目的的功能有关?是否目的明确?明确?变换流设计12.1X32.2Z2.3YA AB BC CDDMMNNP PSystem 2Make B into CGet BPut CX XY YZ ZBBCCBNNPMPCM变换流分析例:汽车数字仪表板的设计例:汽车数字仪表板的设计功能:功能: 通过模通过模 - 数转换实现传感器和微处理

10、机接口;数转换实现传感器和微处理机接口; 在发光二极管面板上显示数据;在发光二极管面板上显示数据; 指示每小时英里数指示每小时英里数(mph),行驶的里程行驶的里程,每加仑油每加仑油行驶的英里数行驶的英里数(mpg)等等;等等; 指示加速或减速;指示加速或减速; 如果车速超过如果车速超过55mph ,则发出警告铃声。则发出警告铃声。面向数据流的设计面向数据流的设计第一步:DFD的分界,先分出I、P、O三块燃料流燃料流 传感器信号传感器信号SPS旋转信号旋转信号读读旋转旋转信号信号收集收集和求和求平均平均确定确定加加/ /减减速速转换转换成成转转/ /分分计算计算里程里程计算计算mph,超超速值

11、速值产生产生加加/ /减减速显示速显示计算计算燃料燃料消耗消耗计算计算gph读和读和校核校核产生产生mpg显示显示产生产生mph显示显示发出发出铃声铃声产生产生里程里程显示显示SPS SPS箭头指示箭头指示燃烧流燃烧流上箭头上箭头水平线水平线下箭头下箭头rpmrpmgphmphmpgmph超速值超速值英里英里显示显示铃声铃声mph显示显示mpg显示显示面向数据流的设计面向数据流的设计一般问题的一般问题的一级分解方一级分解方法:法:数字仪表板数字仪表板控制控制数据转换数据转换控制控制驱动仪表板驱动仪表板接收传感器接收传感器信号信号MPIO面向数据流的设计面向数据流的设计第二步:映射ADCBMIC

12、BDA:每个处理直接对应:每个处理直接对应一个下层模块。一个下层模块。P:由边界向回溯,将:由边界向回溯,将每个遇到的处理器映每个遇到的处理器映成相应的层模块。成相应的层模块。I:由边界向外推,方:由边界向外推,方法与法与 类似类似OI面向数据流的设计面向数据流的设计例:例: 数字仪表板数字仪表板控制控制数据转换数据转换控制控制驱动仪表板驱动仪表板接收传感器接收传感器信号信号计算计算gph读燃料流读燃料流转换成转换成rpm收集收集sps读旋转信号读旋转信号确定确定加加/ /减速减速计算计算mph计算计算mpg计算计算里程里程加加/ /减速减速显示显示显示显示mpg显示显示mph显示显示里程里程

13、发出发出铃声铃声发光二极管显示发光二极管显示面向数据流的设计面向数据流的设计第三步:修改本着高内聚、低耦合的原则。例:精化后的数字仪表板系统的软件结构。例:精化后的数字仪表板系统的软件结构。注:每个模块应附一简要说明描述注:每个模块应附一简要说明描述 进出该模块的信息(接口描述);进出该模块的信息(接口描述); 模块内部的信息;模块内部的信息; 过程陈述,包括主要判定点及任务等;过程陈述,包括主要判定点及任务等; 对约束和特殊特点的简短讨论。对约束和特殊特点的简短讨论。面向数据流的设计面向数据流的设计事务流设计事务流设计是从事务流的DFD到程序结构的转换。设计步骤:确定流界:先从DFD中找出事

14、务流、事务处理中心和事务路径。事务中心前是接收事务、事务中心后是事务路径。进行一级分析,设计顶层模块。进行一级分析,设计上层模块:从DFD中导出具有接收和发送分支的软件结构。对事务中心设计为“事务控制”、对事务流为“接收事务”、对事务路径为“发送事务”。细化该事务结构和每条动作路径的结构。对于接收分支,采用变换流设计方法设计中下层;对于发送分支,在发送模块下设计每条事务路径的结构。MIIISABCIIISBAC事务流设计事务流设计事务流事务流事务中心事务中心事务处理事务处理混合流设计一般采用以变换流为主,事务流为辅的方法。基本步骤:利用变换设计,将DFD划分为输入、变换和输出三大部分;设计软件

15、结构的上层模块,即主模块,及其下层输入模块、变换模块和输出模块;根据输入、变换和输出DFD的不同特征设计它们的下层模块。混合流设计AAAABBBBDDDDEEEEFFFFGGGGJJJJKKKKLLLLT T1 1T T2 2T T3 3A AB BB B1 1B B2 2B B3 3C C1 1C C2 2C C3 3DDE EF FG GHHJ JK KL LMMSystemMake D into KGet DPut KDDKKSystemMake D into KGet DPut KDDKKKKKKPut L LLLLLPut M MDDDDGet C CEEEEFFFFGGGGJJJJ

16、Get B BEdit BB BBGet A AAAAAT T1 1T T2 2T T3 3OperateOperate 1 1OperateOperate n nDetailDetail 1 1DetailDetail m m“变换变换”“事物事物”精化数据流图精化数据流图流类型流类型区分事务中心和区分事务中心和数据接收通路数据接收通路区分输入和区分输入和输出分支输出分支映射成事务结构映射成事务结构映射成变换结构映射成变换结构用启发式设计规用启发式设计规则精化软件结构则精化软件结构导出接口描述和导出接口描述和全程数据结构全程数据结构复复 查查详细设计详细设计变换分析变换分析事务分析事务分析优

17、化的前题是优化的前题是:“Get it to work, then make it fast.”面向数据流的设计过程面向数据流的设计过程精化体系结构设计为每个模块开发处理说明;为每个模块提供接口描述;定义局部和全局数据结构;给出所有的设计限制或约束;进行设计评审;如需要,进行结构设计优化。SD方法的优点SD方法是从以下5个方面来获得质量较好的软件结构:根据描述用户需求的数据流图导出了实现用户需求的结构图。为了控制大型软件系统复杂性,运用了下面两个手段:将系统分解成许多个黑盒。将黑盒组织成适合于用计算机实现的一个层次结构。用内聚和耦合作为评价软件结构质量的标准。给出一组设计技巧,如扇入和扇出、模

18、块大小的掌握,作用范围和控制范围等。用结构图直观地描述软件结构,因此易于理解,并直接可以用于评价、分析和复查等。SD方法的缺点SD方法的不足:软件系统的概要设计应该包括两个方面:数据结构的设计和程序结构的设计,两者是密切相关的,但遗憾的是SD方法只考虑后者而不考虑前者,因此在使用SD方法时,一般还需参考一些有关数据库、文件结构的设计方法。“高内聚、低耦合”的原则虽已被广为接受,但这两个概念尚无严格的定义,更无健全的理论基础,只能用些例子来解释其含义,因而对实际系统的软件结构还难以作客观的质量评价,这是SD方法的一个缺陷。面向数据结构的设计结构化开发方法是一种面向数据流、数据封闭性的开发方法,来

19、源于程序的模块化和功能分解。面向数据结构的设计是将问题的数据结构转换为程序结构,着重于问题的数据结构,不强调模块定义。Jackson系统开发方法是JSP的扩展,是一种面向数据结构的设计方法,其基本思想是先建立输入输出的数据结构,再将其转换为软件结构。这种方法适用于数据处理类问题,特别是企业管理类的软件系统。面向数据结构的设计程序逻辑构造(logicalconstructionofprograms,LCP)由Warnier开发,是建立在数据结构和过程结构之间关系上的方法,将I/O数据结构映射为软件详细过程表达。Wariner-Orr方法是LCP的扩展,除了设计能力之外,还增加了分析能力。Jack

20、son System Development (JSD)与SD的由DFD导出结构设计不同,JSD是以数据结构(datastructure)为基础设计每个模块的处理过程。分析的重点是构造于系统相关的现实世界,并建立现实世界的信息域模型,目标是生成软件的过程性描述。JSD的特点:获得简单清晰的设计方案,因为这样的方案易于理解、易于修改。JSD的设计原则:使程序结构同数据结构相对应。ABCBCA =ABoCoSA =SCBA = BAB*I1 1、Jackson Diagram:Jackson Diagram:注意:注意:层次方框图层次方框图H中中的方框表示模块,的方框表示模块,而而JD中的方框代中

21、的方框代表几个语句构成表几个语句构成的简单操作;的简单操作;H表现调用关系,表现调用关系,而而JD表现组成关表现组成关系。系。Jackson System Development(JSD)Jackson System Development(JSD) 例:例:一个正文文件由若干个记录组成,一个正文文件由若干个记录组成,每个记录是一个字符串。要求统计每个每个记录是一个字符串。要求统计每个记录中空格字符的个数,以及文件中空记录中空格字符的个数,以及文件中空格字符的总个数。要求的输出数据格式格字符的总个数。要求的输出数据格式是:每是:每扫描扫描一行输入字符串之后,一行输入字符串之后,换行换行打打印出

22、这个字符串中的空格数,最后印出这个字符串中的空格数,最后打打印出文件中空格的总个数。印出文件中空格的总个数。2 2、JacksonJackson方法:方法:方法:方法:Jackson System Development(JSD)Jackson System Development(JSD)第第1 1步:步:用用JacksonJackson图描述图描述 IO 的数据结构,包括顺序、选择和重复的数据结构,包括顺序、选择和重复正文文件正文文件I字符串字符串*字符字符*空格空格O非空格非空格OIS输入输入输出表格输出表格表格体表格体串信息串信息*字符串字符串空格数空格数I输出输出空格总数空格总数第第

23、2 2步:步:在两个图中指出有直接因果关系在两个图中指出有直接因果关系(causality)、可以可以同时处理的单元(重复的次序,次数均相同)同时处理的单元(重复的次序,次数均相同)Jackson System Development(JSD)JSD正文文件正文文件I字符串字符串*字符字符*空格空格O非空格非空格OIS输入输入输出表格输出表格表格体表格体串信息串信息*字符串字符串空格数空格数I输出输出空格总数空格总数? 经过程序处理由经过程序处理由正文文件正文文件得到得到输出输出表格。表格。 每处理输入中一个每处理输入中一个字符串字符串后就得到后就得到输出中一个输出中一个串信息串信息,二者重复

24、次序和二者重复次序和次数均相同。次数均相同。 字符字符不与多字符组成的不与多字符组成的字符串字符串对应。对应。 单个单个空格空格不能决定不能决定空格数。空格数。用下述三条规则从描述数据结构的Jackson图导出描述程序结构的Jackson图:第一,为每对有对应关系的数据单元,按照它们在数据结构图中的层次在程序结构图的相应层次画一个处理框(注意,若这对数据单元在输入数据结构和输出数据结构中所处的层次不同,则和它们对应的处理框在程序结构图中所处的层次与它们之中在数据结构图中层次低的那个对应);第二,根据输入数据结构中剩余的每个数据单元所处的层次,在程序结构图中的相应层次分别为它们画上对应的处理框;

25、第三,根据输出数据结构中剩余的每个数据单元所处的层次,在程序结构图中的相应层次分别为它们画上对应的处理框。第第3步步:Data structure Program structure正文文件正文文件I字符串字符串*字符字符*空格空格O非空格非空格OIS输入输入输出表格输出表格表格体表格体串信息串信息*字符串字符串空格数空格数I输出输出空格总数空格总数统计空格统计空格处理字符串处理字符串*I程序体程序体印总数印总数印字符串印字符串印空格数印空格数分析字符分析字符*分析字符分析字符*I分析字符串分析字符串处理空格处理空格o处理非空格处理非空格oS注:顺序执行的处理中不允许混有注:顺序执行的处理中不允许混有重复执行或选择执行的处理重复执行或选择执行的处理。第第3步步:Data structure Program structure把有对应关系的单元合为一个处理框,画在相应的层次中把有对应关系的单元合为一个处理框,画在相应的层次中(不同层以低层为准)(不同层以低层为准)第4步:列出所有操作条件,并分配到上幅程序结构图中

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 建筑/环境 > 施工组织

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号