【大学课件】软件设计的概念和过程.ppt
《【大学课件】软件设计的概念和过程.ppt》由会员分享,可在线阅读,更多相关《【大学课件】软件设计的概念和过程.ppt(120页珍藏版)》请在三一办公上搜索。
1、第三章 软件设计的概念和过程,软件设计阶段的目的是产生一个具有良好结构的、可以初步运行的软件系统。1.软件设计过程:结构化设计,初步设计,设计复审,详细设计,设计复审,编码,软件结构与说明,修改,设计资料,模块算法描述,控制逻辑,修改,规格说明,源代码,http:/,第三章 软件设计的概念和过程,指导原则:层次化:合理地控制和划分软件成分的关系。模块化:充分采用信息隐蔽原则,最大限度地实现程序局部化和数据局部化,控制复杂性。功能独立:尽量使每个软件成分的功能保持相对独立。信息驱动:尽量使用分析阶段取得的成果。结构清晰:尽量使软件成分之间的关系简单。控制简单:尽量使软件成分内部的控制关系清晰,控
2、制结构严格受限,避免混乱。,http:/,第三章 软件设计的概念和过程,2.自顶向下、逐步求精的设计方法 原则 从软件系统的最高层开始,定义一个软件的总控程序,由它驱动第二层次的任务,再逐级向下按同样的原则依次扩展,直至最底层不可再分的任务(模块),编制源代码。基础:基于软件的控制流向或程序的控制结构。优点:信息隐蔽。各层之间存在单向的控制关系,通过传送必要的控制信息或数据来实现,同层之间则无控制关系;某个数据结构及其操作完全位于低层,则无需在高层定义;控制关系向下传递。,http:/,第三章 软件设计的概念和过程,2.【例】银行算法A.问题 假定某个银行有一笔若干个单位的资金,可供客户项目发
3、展贷款,寻求一个安全的贷款策略。B.规定:客户预知贷款总额,且所有客户贷款总额之和将超过资金总额;每个客户一次请贷一个单位;对客户的贷款请求,可以立即付给,也可请其等待;一旦客户贷足总额,立即归还全部贷款。,http:/,第三章 软件设计的概念和过程,C.分析 银行存在两种可能的状态:安全、不安全。安全状态:银行无论如何贷款,都有可能使它当前的所有客户在有限的时间内完成项目建设并归还全部贷款。不安全状态:银行将不可能实现上述目标,资金无法收回。例如,银行有10个货币单位,3个客户,它们的贷款总额分别为:8、3、9。,http:/,第三章 软件设计的概念和过程,状态1是安全的:状态2是不安全的:
4、,银行资金:4A:3(5)B:2(1)C:1(8),银行资金:1A:4(4)B:2(1)C:3(6),http:/,第三章 软件设计的概念和过程,进一步分析:在安全状态和不安全状态之间,存在一个临界状态。此时,只有按照特定的贷款策略才可以完成所有项目。自顶向下设计 当前系统的描述:type s=record transactions:array1.n of record claim,loan:int;completed:boolean end;capital,cash:int;end;,http:/,第三章 软件设计的概念和过程,第一步:确定当前系统安全否,分两步。function safe(
5、current_state:s):boolean;var state:s;begin state:=current_state;试完成所有的交易;safe:=所有的交易是否全部完成;end;,安全否,试完成全部交易,是否全部完成,http:/,第三章 软件设计的概念和过程,第二步:针对逐个试完成交易,又分两步。此时有两个程序:逐个试完成交易、所有交易是否完成。逐个试完成交易 procedure complete_transactions(var state:s);var customer:int;progress:boolean;begin repeat progress:=false;for
6、 customer:=1 to n do if not pleted then if 该项交易能完成 then begin,http:/,第三章 软件设计的概念和过程,归还贷款;pleted:=true;progress:=true;end;until not progress;end;所有交易是否完成 function all_transactions_completed(state.s):boolean;begin if state.capital=state.cash then all_transactions_completed:=true else all_transactions_
7、completed:=false;end;,http:/,第三章 软件设计的概念和过程,这时,系统将又向下细化一级:,是否安全,试完成全部交易,是否全部完成,逐个试完成交易,归还贷款,http:/,第三章 软件设计的概念和过程,第三步:针对逐个试完成交易,又有两项任务:试完成每一项交易、归还贷款。试完成每一项交易 function completion_possible(claim,cash:int):boolean;begin if claimcash then completion_possible:=false else completion_possible:=true;end;归还贷
8、款 procedure return_loan(var loan,cash:int);begin cash:=cash+loan;end;,http:/,第三章 软件设计的概念和过程,于是,试完成所有交易的程序就完善了:procedure complete_transactions(var state:s);var customer:int;progress:boolean;begin repeat progress:=false;for customer:=1 to n do if not pleted then if completion_ possible(state.transacti
9、onscustomer.claim,state.cash)then begin return_loan(state.transactionscustomer.loan,state.cash);pleted:=true;progress:=true;end;until not progress;end;,http:/,第三章 软件设计的概念和过程,这样,通过三级的求精过程,完成了全部的设计任务。整个程序结构为:function safe(current_state:s):boolean;var:state:s;procedure complete_transactions(var state:s
10、);procedure return_loan(loan,cash:int);function all_transactions_completed(state:s):boolean;function completion_possible(claim,cash:int);begin state:=current_state;complete_transactions(state);safe:=all_transactions_completed(state);end;,http:/,第三章 软件设计的概念和过程,3 软件概念 软件结构 软件结构是指程序的系统结构。通常,它意味一种特殊的层次控
11、制体系,但不一定表示软件中各部分处理的顺序、调用的次数或判定。仅仅体现了程序各部分之间的控制关系。研究软件结构就是研究各部分划分的原则以及它们之间的联系。软件结构的好坏对软件的质量具有极其重要的影响;另一方面,从不同的角度出发,同一个问题可以由不同的软件结构。,http:/,第三章 软件设计的概念和过程,要解决的问题 软件结构 必须着重指出,软件的层次不是固有的,在很大程度上它是人为的。是人们为了分解大系统的复杂性而引入的。不同的设计方法可以产生不同的结构,问题是何种结构使软件系统更加清晰、维护更加方便,这是人们所关心的。,http:/,第三章 软件设计的概念和过程,模块 模块是组成软件的最小
12、单位。严格地定义是:模块是一个可以独立编址的程序单位。3.结构,深度,宽度,http:/,第三章 软件设计的概念和过程,软件结构的深度是指控制的层数;软件结构的宽度是指同一层次的最大跨度。模块性 模块性是指软件易于开发、管理和维护的程度。(C(P1)C(P2)(E(P1)E(P2)但是,C(P1+P2)C(P1)+C(P2),因此,E(P1+P2)E(P1)+E(P2),http:/,第三章 软件设计的概念和过程,但是,除了处理的复杂性以外,还存在模块之间接口的复杂性。开发工作量是与两者之和相关的。,工作量,模块数量,接口代价,模块代价,总代价,http:/,第三章 软件设计的概念和过程,抽象
13、:指开发时概括的级别,层次越高,抽象级别越高。信息隐蔽:指模块内部定义的数据结构和操作的外部不可见性,用以防止错误蔓延。模块独立性 模块独立性是指模块可以被独立地理解、编制、测试和修改的程度。其量度的标准是内聚和耦合。内聚:模块内部结合的紧密程度,理想的高内聚是一个模块恰好完成一件任务。,http:/,第三章 软件设计的概念和过程,低 高共存的:模块的语句之间实际上没有联系,仅仅从存储的角度将它们放在一起;逻辑的:将逻辑上相似的功能合并为一个模块;时态的:将需要同时执行的程序放在一个模块内;以上为弱内聚的。过程的:模块的各部分相互关联,且必须按指定的次序执行;通信的:模块的各个处理部分都因用同
14、样的数据;,共存的 逻辑的 时态的 过程的 通信的 顺序的 功能的,http:/,第三章 软件设计的概念和过程,顺序的:模块中的各个处理部分都紧密相关于一个功能,而且其中一个部分的输出就是另一部分的输入;功能的:一个模块实现且仅实现一个功能。目标:尽可能设计高内聚的模块!耦合:模块之间相互联系和依赖的程度。模块之间的耦合依赖于模块之间接口的复杂性。考察模块之间的耦合从三个角度:方式,耦合的方式;作用,共享信息的作用;数量,模块间联系的多少,http:/,第三章 软件设计的概念和过程,研究耦合的目的:防止错误蔓延。低 高数据的:模块之间通过调用进行联系,调用参数为整体变量的数据型参数;标记的:模
15、块之间通过调用进行联系,调用参数可以是域变量的数据型参数;,无耦合 数据的 标记的 控制的 外部的 共用的 内容的,http:/,第三章 软件设计的概念和过程,控制的:模块之间通过调用进行联系,调用参数可以控制下属模块的运行;外部的:模块之间由于外部环境的约束而产生联系,例如,两个模块通过I/O联系、通过中断(如OS)联系等;共用的:模块之间通过共同的数据区联系;内容的:一个模块使用另一个模块定义的数据结构或控制信息。总之,联系方式:调用(好),直接引用数据或指令(不好),相互作用:数据交流(好),运行控制(不好)。目标:尽可能设计低耦合的模块联系。,http:/,第三章 软件设计的概念和过程
16、,设计的注意要点模块的大小问题:在一个编程人员可以控制的复杂性以内;高内聚、耦合保持单入口、单出口,防止病态连接,推荐使用三种结构:,http:/,第三章 软件设计的概念和过程,争取合理的软件结构,深度过大时可以适当增加扇出、宽度过大时可以适当减少扇出。,http:/,第三章 软件设计的概念和过程,将模块的作用范围控制在它的控制范围内。,A,B,C,D,E,F,G,H,I,A,C,D,E,F,B,G,H,I,判定影响,判定,http:/,第三章 软件设计的概念和过程,尽可能利用“黑箱”技术,使模块的功能可预测(具有内部“存储器”的模块功能是难预测的)。,http:/,第三章 软件设计的概念和过
17、程,4 软件初步设计 软件初步设计的任务:得到一个良好的软件结构,又称软件的结构设计。良好的软件结构 良好的软件结构应该是模块单向依赖的,亦即下层模块依赖上层模块而不是反之。通常的软件结构有顺序、半序和树型三种。,http:/,第三章 软件设计的概念和过程,顺序:,偏序:,树型:,程序结构图没有徊路!,http:/,第三章 软件设计的概念和过程,2.设计方法分类:面向功能的设计方法;面向数据流的设计方法;面向数据结构的设计方法;面向数据流和面向数据结构相结合的设计方法;面向对象的设计方法;思想与手段 分解与抽象,分解软件系统的复杂性。,http:/,第三章 软件设计的概念和过程,面向数据流的设
18、计方法 基本思想:利用系统分析阶段得到的DFD,导出软件的系统结构。通过定义若干“映射”规则,把不同的数据流映射到软件结构。应用范围:原则上可以通用。特别是对软件的信息结构不十分清晰或不易用形式化手段描述时,这种方法更有效。例如嵌入式软件、复杂的数值计算和分析过程、工业过程控制、CAD、GIS应用软件等。,http:/,第三章 软件设计的概念和过程,(1)信息流 一般来说,信息流可以分为两个大类。转换流:具有明显的传入、处理、传出界限的信息流。是一种基本上呈现线性形状的DFD。,传入流,转换流,传出流,传入流,信息,时间,http:/,第三章 软件设计的概念和过程,转换中心:信息和形态发生根本
19、变化的部分,A,B,C,D,E,F,H,G,I,J,K,L,传入流,传出流,转换中心,http:/,第三章 软件设计的概念和过程,事务基元流:具有明显散射特性的DFD。事务基元中心:对输入信息进行判断确定处理方式的部分,A,B,C,D,H,L,M,O,E,F,G,I,J,K,动作路径:处理输入信息的部分,http:/,第三章 软件设计的概念和过程,在大型的DFD中,这两种信息流可能同时存在。(2)设计步骤 复审、精化DFD,考虑正确性和合理性;确定信息流的特性,从总体上区分是转换流或事务基元流;确定流的边界 事务基元流:以事务基元中心分界,分为传入、事务基元中心和动作路径;转换流:从输入端向内
20、推进,找出离输入端最远、但仍构成系统的输入,与物理输入有最小的相似性(如去掉注释、间隔符,转成内部表示,经过编辑、有效性检查等)的地方,作为传入流边界。,http:/,第三章 软件设计的概念和过程,从物理输出端开始向内推进,但仍构成系统的输出,与物理输出有最小的相似性(如未经格式编排、未作单位转换等)的地方,作为传出流的边界。有可能传入流、传出流的边界重合,这时软件的功能就是分发、转换,没有实质性的处理。将DFD转化为软件的结构 转换流软件呈现三分结构:,总控模块,传入部分,转换部分,传出部分,http:/,第三章 软件设计的概念和过程,传入部分:在无子流的情况,从边界由里向外推。,A,B,D
21、,E,C,传入分控,E,C,D,B,A,A,http:/,第三章 软件设计的概念和过程,传出部分:在无子流的情况,由传出边界里向外推。,I,J,K,L,传出分控,J,I,K,L,K,http:/,第三章 软件设计的概念和过程,转换中心:在无子流的情况,自传入边界向传出边界推进。,F,G,H,转换分控,F,G,H,H,http:/,第三章 软件设计的概念和过程,事务基元流 软件呈现出二分结构。,总控模块,接收部分,发送部分,http:/,第三章 软件设计的概念和过程,接收部分:同转换流的传入部分类似。,A,B,接收分控,A,B,http:/,第三章 软件设计的概念和过程,发送部分:由事务基元中心
22、向外推。,C,D,E,F,G,H,I,J,K,L,M,O,发送分控,L,M,O,H,I,J,K,D,F,E,G,http:/,第三章 软件设计的概念和过程,继续分解,在有子流的情况,继续根据子流的类型转化。例如,上例中事务基元流的第二条路径又是一个转换流,假定转换转换中心是I、J,就变成:,发送分控,L,M,O,路径子控,H,转换微控,K,I,J,D,F,E,G,http:/,第三章 软件设计的概念和过程,对得到的软件结构求精。原则:高内聚、低耦合;具有相同的模块可以合并,即可以产生偏序的软件结构。例如,上例的转换流中,沿着流的方向出现分叉和合并,形成的软件结构中会出现一些相同的模块。这时就可
23、以将它们合并;视情况省略分控制模块,如传入部分只有一个数据流进入转换中心,传入分控模块可以省略、转换分控模块也可省去,传出部分也类似。,http:/,第三章 软件设计的概念和过程,系统总控,转换分控,传入分控,传出分控,E,D,B,A,C,F,G,H,K,I,J,L,软件结构图:,http:/,第三章 软件设计的概念和过程,文档整理 文档整理是软件初步设计的一个重要阶段。在得到软件的结构以后,必须确定模块之间的接口。要对模块之间的调用给出明确的规定。模块处理说明:模块处理说明是对系统分析阶段的加工说明加以细化,比较深入地描述模块在软件系统中所处的位置及地位。要给出它使用的外部数据(包括数据库中
24、的数据、系统的全程数据结构以及上级模块的调用参数。还要给出它调用下级模块所使用的参数。,http:/,第三章 软件设计的概念和过程,5.数据设计 初步设计阶段的另一个工作是进行数据设计:数据库设计,定义数据库模式。要对系统分析阶段得到的E-R图进行细化,特别是为了提高效率,需要设计部分中间数据表项,例如台帐等。全程数据结构;大致指出模块内部需要定义的局部数据结构;明确每个模块的I/O数据及其结构。,http:/,第三章 软件设计的概念和过程,模块说明的内容:模块名;模块处理的描述;模块中使用的数据:数据库表、输入、输出数据、全程数据结构等;上级模块名;上级模块调用的参数及其含义和作用;下级模块
25、名;调用下级模块使用的参数及其含义和作用。,http:/,第三章 软件设计的概念和过程,5 面向数据结构的设计方法 数据结构与程序 程序=数据结构+算法 数据结构强烈地影响软件的设计与过程设计:处理重复数据结构的程序往往具有循环结构;处理选择数据结构的程序往往具有条件判定的机构;处理分层次数据结构的程序往往具有层次结构。面向数据结构的设计方法就是把对数据结构的描述转化为对软件结构的描述。从I/O数据结构出发,推倒软件的结构及某些细节。,http:/,第三章 软件设计的概念和过程,例 处理工资报表,问题环境,数据结构,完成的任务,执行的操作,程序结构,读、写,程 序,http:/,第三章 软件设
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 大学课件 大学 课件 软件设计 概念 过程

链接地址:https://www.31ppt.com/p-5695096.html