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