欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > PPT文档下载
     

    【大学课件】软件设计的概念和过程.ppt

    • 资源ID:5695096       资源大小:1.21MB        全文页数:120页
    • 资源格式: PPT        下载积分:10金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要10金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    【大学课件】软件设计的概念和过程.ppt

    第三章 软件设计的概念和过程,软件设计阶段的目的是产生一个具有良好结构的、可以初步运行的软件系统。1.软件设计过程:结构化设计,初步设计,设计复审,详细设计,设计复审,编码,软件结构与说明,修改,设计资料,模块算法描述,控制逻辑,修改,规格说明,源代码,http:/,第三章 软件设计的概念和过程,指导原则:层次化:合理地控制和划分软件成分的关系。模块化:充分采用信息隐蔽原则,最大限度地实现程序局部化和数据局部化,控制复杂性。功能独立:尽量使每个软件成分的功能保持相对独立。信息驱动:尽量使用分析阶段取得的成果。结构清晰:尽量使软件成分之间的关系简单。控制简单:尽量使软件成分内部的控制关系清晰,控制结构严格受限,避免混乱。,http:/,第三章 软件设计的概念和过程,2.自顶向下、逐步求精的设计方法 原则 从软件系统的最高层开始,定义一个软件的总控程序,由它驱动第二层次的任务,再逐级向下按同样的原则依次扩展,直至最底层不可再分的任务(模块),编制源代码。基础:基于软件的控制流向或程序的控制结构。优点:信息隐蔽。各层之间存在单向的控制关系,通过传送必要的控制信息或数据来实现,同层之间则无控制关系;某个数据结构及其操作完全位于低层,则无需在高层定义;控制关系向下传递。,http:/,第三章 软件设计的概念和过程,2.【例】银行算法A.问题 假定某个银行有一笔若干个单位的资金,可供客户项目发展贷款,寻求一个安全的贷款策略。B.规定:客户预知贷款总额,且所有客户贷款总额之和将超过资金总额;每个客户一次请贷一个单位;对客户的贷款请求,可以立即付给,也可请其等待;一旦客户贷足总额,立即归还全部贷款。,http:/,第三章 软件设计的概念和过程,C.分析 银行存在两种可能的状态:安全、不安全。安全状态:银行无论如何贷款,都有可能使它当前的所有客户在有限的时间内完成项目建设并归还全部贷款。不安全状态:银行将不可能实现上述目标,资金无法收回。例如,银行有10个货币单位,3个客户,它们的贷款总额分别为:8、3、9。,http:/,第三章 软件设计的概念和过程,状态1是安全的:状态2是不安全的:,银行资金: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(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 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_completed:=false;end;,http:/,第三章 软件设计的概念和过程,这时,系统将又向下细化一级:,是否安全,试完成全部交易,是否全部完成,逐个试完成交易,归还贷款,http:/,第三章 软件设计的概念和过程,第三步:针对逐个试完成交易,又有两项任务:试完成每一项交易、归还贷款。试完成每一项交易 function completion_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;,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.transactionscustomer.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);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 软件概念 软件结构 软件结构是指程序的系统结构。通常,它意味一种特殊的层次控制体系,但不一定表示软件中各部分处理的顺序、调用的次数或判定。仅仅体现了程序各部分之间的控制关系。研究软件结构就是研究各部分划分的原则以及它们之间的联系。软件结构的好坏对软件的质量具有极其重要的影响;另一方面,从不同的角度出发,同一个问题可以由不同的软件结构。,http:/,第三章 软件设计的概念和过程,要解决的问题 软件结构 必须着重指出,软件的层次不是固有的,在很大程度上它是人为的。是人们为了分解大系统的复杂性而引入的。不同的设计方法可以产生不同的结构,问题是何种结构使软件系统更加清晰、维护更加方便,这是人们所关心的。,http:/,第三章 软件设计的概念和过程,模块 模块是组成软件的最小单位。严格地定义是:模块是一个可以独立编址的程序单位。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:/,第三章 软件设计的概念和过程,抽象:指开发时概括的级别,层次越高,抽象级别越高。信息隐蔽:指模块内部定义的数据结构和操作的外部不可见性,用以防止错误蔓延。模块独立性 模块独立性是指模块可以被独立地理解、编制、测试和修改的程度。其量度的标准是内聚和耦合。内聚:模块内部结合的紧密程度,理想的高内聚是一个模块恰好完成一件任务。,http:/,第三章 软件设计的概念和过程,低 高共存的:模块的语句之间实际上没有联系,仅仅从存储的角度将它们放在一起;逻辑的:将逻辑上相似的功能合并为一个模块;时态的:将需要同时执行的程序放在一个模块内;以上为弱内聚的。过程的:模块的各部分相互关联,且必须按指定的次序执行;通信的:模块的各个处理部分都因用同样的数据;,共存的 逻辑的 时态的 过程的 通信的 顺序的 功能的,http:/,第三章 软件设计的概念和过程,顺序的:模块中的各个处理部分都紧密相关于一个功能,而且其中一个部分的输出就是另一部分的输入;功能的:一个模块实现且仅实现一个功能。目标:尽可能设计高内聚的模块!耦合:模块之间相互联系和依赖的程度。模块之间的耦合依赖于模块之间接口的复杂性。考察模块之间的耦合从三个角度:方式,耦合的方式;作用,共享信息的作用;数量,模块间联系的多少,http:/,第三章 软件设计的概念和过程,研究耦合的目的:防止错误蔓延。低 高数据的:模块之间通过调用进行联系,调用参数为整体变量的数据型参数;标记的:模块之间通过调用进行联系,调用参数可以是域变量的数据型参数;,无耦合 数据的 标记的 控制的 外部的 共用的 内容的,http:/,第三章 软件设计的概念和过程,控制的:模块之间通过调用进行联系,调用参数可以控制下属模块的运行;外部的:模块之间由于外部环境的约束而产生联系,例如,两个模块通过I/O联系、通过中断(如OS)联系等;共用的:模块之间通过共同的数据区联系;内容的:一个模块使用另一个模块定义的数据结构或控制信息。总之,联系方式:调用(好),直接引用数据或指令(不好),相互作用:数据交流(好),运行控制(不好)。目标:尽可能设计低耦合的模块联系。,http:/,第三章 软件设计的概念和过程,设计的注意要点模块的大小问题:在一个编程人员可以控制的复杂性以内;高内聚、耦合保持单入口、单出口,防止病态连接,推荐使用三种结构:,http:/,第三章 软件设计的概念和过程,争取合理的软件结构,深度过大时可以适当增加扇出、宽度过大时可以适当减少扇出。,http:/,第三章 软件设计的概念和过程,将模块的作用范围控制在它的控制范围内。,A,B,C,D,E,F,G,H,I,A,C,D,E,F,B,G,H,I,判定影响,判定,http:/,第三章 软件设计的概念和过程,尽可能利用“黑箱”技术,使模块的功能可预测(具有内部“存储器”的模块功能是难预测的)。,http:/,第三章 软件设计的概念和过程,4 软件初步设计 软件初步设计的任务:得到一个良好的软件结构,又称软件的结构设计。良好的软件结构 良好的软件结构应该是模块单向依赖的,亦即下层模块依赖上层模块而不是反之。通常的软件结构有顺序、半序和树型三种。,http:/,第三章 软件设计的概念和过程,顺序:,偏序:,树型:,程序结构图没有徊路!,http:/,第三章 软件设计的概念和过程,2.设计方法分类:面向功能的设计方法;面向数据流的设计方法;面向数据结构的设计方法;面向数据流和面向数据结构相结合的设计方法;面向对象的设计方法;思想与手段 分解与抽象,分解软件系统的复杂性。,http:/,第三章 软件设计的概念和过程,面向数据流的设计方法 基本思想:利用系统分析阶段得到的DFD,导出软件的系统结构。通过定义若干“映射”规则,把不同的数据流映射到软件结构。应用范围:原则上可以通用。特别是对软件的信息结构不十分清晰或不易用形式化手段描述时,这种方法更有效。例如嵌入式软件、复杂的数值计算和分析过程、工业过程控制、CAD、GIS应用软件等。,http:/,第三章 软件设计的概念和过程,(1)信息流 一般来说,信息流可以分为两个大类。转换流:具有明显的传入、处理、传出界限的信息流。是一种基本上呈现线性形状的DFD。,传入流,转换流,传出流,传入流,信息,时间,http:/,第三章 软件设计的概念和过程,转换中心:信息和形态发生根本变化的部分,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,考虑正确性和合理性;确定信息流的特性,从总体上区分是转换流或事务基元流;确定流的边界 事务基元流:以事务基元中心分界,分为传入、事务基元中心和动作路径;转换流:从输入端向内推进,找出离输入端最远、但仍构成系统的输入,与物理输入有最小的相似性(如去掉注释、间隔符,转成内部表示,经过编辑、有效性检查等)的地方,作为传入流边界。,http:/,第三章 软件设计的概念和过程,从物理输出端开始向内推进,但仍构成系统的输出,与物理输出有最小的相似性(如未经格式编排、未作单位转换等)的地方,作为传出流的边界。有可能传入流、传出流的边界重合,这时软件的功能就是分发、转换,没有实质性的处理。将DFD转化为软件的结构 转换流软件呈现三分结构:,总控模块,传入部分,转换部分,传出部分,http:/,第三章 软件设计的概念和过程,传入部分:在无子流的情况,从边界由里向外推。,A,B,D,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:/,第三章 软件设计的概念和过程,发送部分:由事务基元中心向外推。,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:/,第三章 软件设计的概念和过程,对得到的软件结构求精。原则:高内聚、低耦合;具有相同的模块可以合并,即可以产生偏序的软件结构。例如,上例的转换流中,沿着流的方向出现分叉和合并,形成的软件结构中会出现一些相同的模块。这时就可以将它们合并;视情况省略分控制模块,如传入部分只有一个数据流进入转换中心,传入分控模块可以省略、转换分控模块也可省去,传出部分也类似。,http:/,第三章 软件设计的概念和过程,系统总控,转换分控,传入分控,传出分控,E,D,B,A,C,F,G,H,K,I,J,L,软件结构图:,http:/,第三章 软件设计的概念和过程,文档整理 文档整理是软件初步设计的一个重要阶段。在得到软件的结构以后,必须确定模块之间的接口。要对模块之间的调用给出明确的规定。模块处理说明:模块处理说明是对系统分析阶段的加工说明加以细化,比较深入地描述模块在软件系统中所处的位置及地位。要给出它使用的外部数据(包括数据库中的数据、系统的全程数据结构以及上级模块的调用参数。还要给出它调用下级模块所使用的参数。,http:/,第三章 软件设计的概念和过程,5.数据设计 初步设计阶段的另一个工作是进行数据设计:数据库设计,定义数据库模式。要对系统分析阶段得到的E-R图进行细化,特别是为了提高效率,需要设计部分中间数据表项,例如台帐等。全程数据结构;大致指出模块内部需要定义的局部数据结构;明确每个模块的I/O数据及其结构。,http:/,第三章 软件设计的概念和过程,模块说明的内容:模块名;模块处理的描述;模块中使用的数据:数据库表、输入、输出数据、全程数据结构等;上级模块名;上级模块调用的参数及其含义和作用;下级模块名;调用下级模块使用的参数及其含义和作用。,http:/,第三章 软件设计的概念和过程,5 面向数据结构的设计方法 数据结构与程序 程序=数据结构+算法 数据结构强烈地影响软件的设计与过程设计:处理重复数据结构的程序往往具有循环结构;处理选择数据结构的程序往往具有条件判定的机构;处理分层次数据结构的程序往往具有层次结构。面向数据结构的设计方法就是把对数据结构的描述转化为对软件结构的描述。从I/O数据结构出发,推倒软件的结构及某些细节。,http:/,第三章 软件设计的概念和过程,例 处理工资报表,问题环境,数据结构,完成的任务,执行的操作,程序结构,读、写,程 序,http:/,第三章 软件设计的概念和过程,适用范围 原则上,处理定义清晰、具有层次特点的信息结构,都可以使用面向数据结构的设计方法。如:商业财政应用有明确的数据文件、输出报告 管理信息系统固定的单据、报表 系统程序OS以大型表格为基本的数据结构 DBMS处理结构定义清晰的纪录 GIS固定的点、线、面结构,http:/,第三章 软件设计的概念和过程,与面向数据流方法的不同 设计出发点不同(对现实世界的观察点不同)面向数据流方法以信息在处理时刻的流向为基础,设计一个具有鲜明时序特征的软件结构,而面向数据结构的方法以信息的构成及其在处理时刻的相互关系为基础,设计一个具有鲜明层次特征的软件结构及其处理细节。设计的最终目标不同 前者以初步设计为目标,产生软件的模块结构,后者以详细设计为目标,产生软件的过程描述,模块结构仅仅是副产品。,http:/,第三章 软件设计的概念和过程,设计步骤不同 评价数据结构的特性(对软件规格说明中描述的信息结构进行复审)将数据结构表示成初等形式(顺序、选择、循环)把数据结构的初等表示映射到软件的控制层次 细化 开发软件的过程性描述(即完成软件的详细设计),http:/,第三章 软件设计的概念和过程,Jackson方法学基本思想:把一个问题分解成可以由三种结构形式表示的一个层次结构。Jackson方法以特定的数据模型为基础,但是,并不意味着必须描述数据结构的物理特性(如数据类型、存储长度等)。而是指观察问题的角度,是描述数据结构的逻辑特性,指建立面向问题的数据结构。首先,建立面向问题的、由三种结构形式表示的层次数据结构,然后映射为软件结构,同时给出“伪码”表示。,http:/,第三章 软件设计的概念和过程,基本图形(树型)表示技术:顺序:数据结构A由B、C、D所组成,每个成分仅出现一次。,A,C,B,D,http:/,第三章 软件设计的概念和过程,选取:数据结构A由B或C组成,且仅出现一次。,A,B,C,http:/,第三章 软件设计的概念和过程,选取型的推广,A,C,B,D,http:/,第三章 软件设计的概念和过程,重复:A由多个B所组成(并不给定重复次数)。利用这三种基本表示,可以构造任意复杂的分层次树型数据结构。树中的每个“树叶”都可以用一棵子树代替。,A,B,*,http:/,第三章 软件设计的概念和过程,【例】大学,大学,政,党,部,组织,宣传,统战,宣传,教学,机关,部,财务,科研,院,数学,物理,统战,统战,院,*,*,*,http:/,第三章 软件设计的概念和过程,【例】列车:车头、行李车、邮政车、餐车各一个,硬座、硬卧、软座、软卧车厢若干。,列车,车头,车体,服务车厢,旅客车厢,邮政,行李,餐车,臥,座,软,硬,软,硬,*,*,http:/,第三章 软件设计的概念和过程,程序结构基本图形表示法:,A,B,C,A,B,C,顺序:,选取:,http:/,第三章 软件设计的概念和过程,A,B,A,B,C,B1,B2,*,重复:,回朔:,quit,http:/,第三章 软件设计的概念和过程,如果在一个需要作出选取判定的点上无法根据现有掌握的信息对判定条件进行测定,只能任择其中的一个分支开始执行。在随后的执行过程中逐步获得足够的信息,对先前的选择进行事后评价以确定其是否正确。如发现当初假设的判定选择有误时,要返回到原判定点并转向其它的分支,这种现象称为回朔。【例】八王后问题:如何在一个88的棋盘上放置8个王后,使它们不能自相残杀。(两个王后既不能在同一行上,也不能在同一列上),http:/,第三章 软件设计的概念和过程,伪码:伪码(pseudo code)是一种混杂的语言,它使用一种语言(通常是自然语言)的词汇和另一种语言(例如程序设计语言)的语法。前者用来描述处理的操作(因为其灵活、表达能力强),后者用来克化控制的结构(因为其严格、没有或较少有歧义)因此,通常用伪码来描述程序的处理过程,用来书写详细设计的文档。,http:/,第三章 软件设计的概念和过程,四种程序结构的伪码表示:顺序 A seq A seq 处理B;处理B;处理C;处理C;A end;推广 处理D;处理E;A end;,A,B,C,http:/,第三章 软件设计的概念和过程,四种基本程序结构的伪码表示:选取 A select(条件)A select(条件1)处理B;处理B;A or 推广 A or(条件2)处理C;处理C;A end;A or(条件3)处理D;A end;,A,B,C,http:/,第三章 软件设计的概念和过程,重复 A iter until(条件)处理B;A end;,A,B,*,http:/,第三章 软件设计的概念和过程,回朔 A posit(条件1)B seq quit A if(条件2)处理B1;quit A if(条件3)处理B2;B end;A admit 处理C;quit A end;由此可见:条件2 V 条件3 条件1,A,B,C,B1,B2,http:/,第三章 软件设计的概念和过程,Jackson方法的设计步骤:复审,检查数据结构的合理性 用三种基本的图形形式表示数据结构 找出输入、输出数据结构之间的对应关系(在找不到对应关系的时候,要引入中间数据结构,形成一串对应关系链)根据数据结构之间的对应关系,得到程序的结构 对得到的程序结构求精(考虑回朔问题、列出操作和判定条件等)伪码表示,http:/,第三章 软件设计的概念和过程,【例】处理卡片 问题:一张卡片上有三个域F1、F2、F3,若F1在1,99内,则从文件中取出两个数a,b(假定ab)和一个三元组(x,y,z),若aF2b,则用(F2x,F2y,F2z)作为磁盘地址从磁盘上取出一个字符串s,若F3是s的一个子串,则打印F3。第一步:数据结构的合理性无容置疑第二步:画出基本图形,http:/,第三章 软件设计的概念和过程,基本图形:第三步:输出结构为一个字符串,基本上可以忽略,输入、输出数据结构无结构冲突。第四步:根据输入数据结构导出程序结构,卡片,F1,F2,F3,http:/,第三章 软件设计的概念和过程,处理卡片,此处,P1:处理F1,得到a,b和(x,y,z);P2:处理F2,以(F2 x,F2 y,F2z)为地址得到串s;P3:处理F3,打印。,P1,P2,P3,http:/,第三章 软件设计的概念和过程,第四步:求精。考虑卡片可能不符合规定的处理要求,无法最终打印F3。因此:,处理卡片,处理好卡片,出错处理,P1,P2,P3,http:/,第三章 软件设计的概念和过程,用回朔结构代替,处理卡片,处理好卡片,出错处理,P,P,P,quit,http:/,第三章 软件设计的概念和过程,第五步:伪码表示。处理卡片 posit(卡片正确)处理好卡片 seq quit 处理卡片 if(F199)P1;quit 处理卡片 if(F2b)P2;quit 处理卡片 if(F3不是s的子串)P3;处理好卡片 end;处理卡片 admit 出错处理(打印出错信息);处理卡片 end;,http:/,第三章 软件设计的概念和过程,【例】信用卡记帐系统,支付文件,顾客文件,顾客号,日期,交易额,顾客号,结余额,http:/,第三章 软件设计的概念和过程,记账报告:,顾客号,日期,交易额,老结余,新结余,http:/,第三章 软件设计的概念和过程,支付文件,顾客号组,交易记录,顾客号,支付记录,日期,交易额,*,*,基本图形表示支付文件:,http:/,第三章 软件设计的概念和过程,顾客文件,顾客记录,顾客号,结余额,顾客文件:,*,http:/,第三章 软件设计的概念和过程,记帐报告,顾客数据,店主数据,顾客号组,顾客号,支付记录,支付小计,结余小计,日期,交易额,老结余,新结余,销售总额,总结余,记账报告:,*,*,http:/,第三章 软件设计的概念和过程,分析:系统有两个输入数据结构:支付文件、顾客文件;两个输出数据结构:记帐报告和顾客文件。可以看出,记帐报告的内容涵盖了支付文件和顾客文件的全部内容,而且,在内容的组织方式上亦基本上一致。结论:可以以记帐报告的结构为主要参考点构造程序结构。同时,在处理的过程中考虑顾客文件的生成、更新。,http:/,第三章 软件设计的概念和过程,记帐系统,处理顾客数据,处理店主数据,处理顾客号组,处理顾客号,处理支付记录,计算支付小计,计算结余,处理老结余,计算新结余,计算销售总额,计算总结余,程序结构:,*,http:/,第三章 软件设计的概念和过程,伪码表示 记帐系统 seq 处理顾客数据 seq 打开支付文件、顾客文件;处理顾客号组 iter until(支付文件结束)读支付文件;处理顾客号(读顾客文件、记下老结余);处理支付记录 iter until(顾客号组结束)读支付文件;累计支付额;登记报告行;,http:/,第三章 软件设计的概念和过程,处理支付记录 end;打开支付小计;计算结余 seq 处理老结余照抄;计算新结余老结余支付小计;登记顾客报告行;计算结余 end;处理顾客号组 end;处理顾客数据 end;处理店主数据 seq 计算销售总额支付小计之和;,http:/,第三章 软件设计的概念和过程,计算总结余老结余之和销售总额);处理店主数据 end;记帐系统 end;,http:/,第三章 软件设计的概念和过程,Jackson方法的一些补充技术:回朔 回朔是经常出现的,特别是采用试探算法时。结构冲突 当输入数据结构与输出数据结构没有明显的对应关系时,谓之产生“结构冲突”。这时,无法建立这两种数据结构的对应,因而不能显式地导出程序结构。【例】编译程序:输入的是字符流,输出的是二进制代码流。,http:/,第三章 软件设计的概念和过程,解决办法:引入中间数据结构,从而使输入、输出数据结构通过若干中间数据结构的过渡建立对应关系。实际上,这种方法就是将全系统划分成若干个部分(分系统),对每个分系统生成程序结构。再在分系统内分解为若干个模块,形成层次。大致上,结构冲突可以分为两类:次序冲突和边界冲突。次序冲突【例】矩阵转换:矩阵按行输入,按列输出。每行一个数组。,http:/,第三章 软件设计的概念和过程,输入结构 输出结构第一级:无对应关系,每一个列输出不能由每一个行输入得出。行、列的个数也可以不同。,输入矩阵,输出矩阵,列,元素,元素,行,*,*,*,*,http:/,第三章 软件设计的概念和过程,第二级:无对应关系,元素个数尽管相同,但次序不同。解决办法:将整个程序分成三个部分。,行输入,P1,按行排列元素,P2,按列排列元素,P3,列输出,http:/,第三章 软件设计的概念和过程,P1:按行输入,每个行数组的元素根据输入行序号和行内元素输入序号标注行、列号,存入磁盘;P2;重新排序,读磁盘,将先行后列存储元素的文件转化为先列后行存储元素的文件,存入磁盘;P3;读磁盘,按列输出。若内存空间足够大,也可以将程序分为两个部分,即一切都在内存中进行:按行输入并作标记;转换成列并输出。边界冲突【例】报文分析:,http:/,第三章 软件设计的概念和过程,显然,报文和信包不同步,输入数据(信包)和输出数据存在边界冲突。第一级:信包组,无对应关系;第二级:信包,无对应关系。,http:/,第三章 软件设计的概念和过程,一组报文,存放在一组信包上,每次只读入一个信包。每个信包内有若干个词,用空格分开,信包的终结符为EOB。最后一个信包的内容为EOF,表示本组报文结束。每个报文的结尾词用2222表示,EOF前的一个信包内容只含2222。每个信包可以有若干个报文,一个报文可以占若干个信包。打印报文分析报告报文1:共个词,其中个词多于12个字符。报文n:共个词,其中个词多于12个字符。,http:/,第三章 软件设计的概念和过程,信包组,信包,EOF,报文包,EOB,报文内容,字符组,空格组,词,空格,字符,字符组,*,*,*,*,分析:输入数据结构,http:/,第三章 软件设计的概念和过程,分析报告,报告体,标题,结束,报文报告,总词数,超长词数,*,输出数据结构:,http:/,第三章 软件设计的概念和过程,由于报文和信包不同步,边界混淆,形成边界冲突。为此,引入两个中间数据结构。(1)词组(2)报文组,词组,词,报文组,报文,词,2222,正常词,超长词,*,*,*,http:/,第三章 软件设计的概念和过程,通过引入两个中间数据结构,重新设计的信包组的分析过程为:,信包组,P1,词组,P2,报文组,P3,分析报告,http:/,第三章 软件设计的概念和过程,P1:读入信包组,去掉空格、EOF、EOB,按词先后排列,形成词组;P2:按2222的分割组织报文,去掉2222,形成报文组;P3:按报文统计正常词的数量和超长词的数量并形成分析报告,打印输出。注:显然,我们可以再进行求精。例如,可以将三个模块合成两个(中间数据结构只有一个):P1:读入信包组,去掉空格、EOB、EOF,按词排列并标记超长词;P2:按报文计数,去掉2222,形成分析报告。,http:/,第三章 软件设计的概念和过程,在单用户、单任务系统中,P1、P2不能同时执行,这样会使运行效率降低(从文件上读出信包时需要等待)。采用多道程序设计技术,将P1、P2设计成两个进程(或线程),P1读完一个信包后就交给P2,这样就可以边读、边分析、边打印,同时无需存储整个中间文件。同样,还可以采用程序变换的手法,将P1变成P2的子程序P1,P2每调用一次P1,就可以得到一个词,然后处理。,http:/,第三章 软件设计的概念和过程,【作业】在上例中,按求精后的情况:给出中间数据结构的基本图形表示;给出P1、P2程序结构的基本图形表示;给出P1、P2的伪码表示;给出整个处理程序的伪码表示。【思考题】按程序变换的方法,给出P2、P1的伪码表示。,http:/,第三章 软件设计的概念和过程,LCP方法 LCP方法是根据理论的推导,从数据结构的表示出发,作出过程的形式化描述,最后用系统的方法生成伪码,并加以验证和优化。LCP方法给出了一组“规则”,这组规则将支配信息的结构以及得到的程序结构。这样,LCP方法既比较严格,又便于验证。Warnier图 Warnier图既描绘了数据结构的层次,又描绘了重复数据的次数。,http:/,第三章 软件设计的概念和过程,数据项A(1次)数据记录1 数据项B(1次)(4次)数据项C(1次)数据项F(1次)数据文件 数据记录2(0或1次)数据项C(0或1次)数据项D 元素I(m次)数据记录3(0或n次)(n次)数据项E(1次),http:/,第三章 软件设计的概念和过程,步骤 复审软件规格说明及数据结构的Warnier图。用Warnier图表示软件处理的层次,根据输入数据结构导出软件处理层次图。根据Warnier图,画出程序处理流程图。列出指令索引表(进行详细设计,分配指令操作),http:/,第三章 软件设计的概念和过程,程序开始 开始(1次)开始(1次)(1次)处理数据记录1 处理A、B、C(1次)(1次)结束(1次)开始(1次)处理F(1次)程序 处理数据文件 处理数据记录2 处理G(1次)(1次)处理G 结束(1次)处理数据记录2 程序结束(1次),http:/,第三章 软件设计的概念和过程,开始(1次)开始(1次)处理D(n次)处理i((m次)处理数据记录3 处理D 结束(1次)(n次)处理E(1次)结束(1次),http:/,第三章 软件设计的概念和过程,开始,处理数据文件,处理记录1,处理A、B、C,4次,记录2,处理记录2,处理F,G,处理G,处理记录3,D,处理D,处理项I,m次,n次,处理E,n次,结束,http:/,第三章 软件设计的概念和过程,【例】顾客记帐报告输入数据结构,活动记录,顾客号,活动号,数量,特征码,顾客号,名字,活动号,借额,贷额,【例】顾客记帐报告输入数据结构,顾客号,名字,老余额,顾客头记录,http:/,第三章 软件设计的概念和过程,输入,文件,(0或1次),顾客,(n次),顾客号(1次),名字(1次),老余额(1次),活动组(0或1次),活动(m次),顾客号(1次),活动号(1次),数量(1次),特征码(1次),第一层,第二层,第三层,第四层,第五层,信息结构,http:/,第三章 软件设计的概念和过程,顾客号(1次)活动号(1次)名字 活动行 借额(0或1次)(1次)(m次)贷额(0或1次)输出 报告 顾客 活动组 借小计(0或1次)(1次)老余额 贷小计(1次)(1次)新余额(1次),http:/,第三章 软件设计的概念和过程,处理层次:开始 开始 开始(1次)开始(1次)(1次)处理借(1次)开始 处理活动组 处理活动(0或1次)(1次)(1次)(m次)处理贷程序 处理 顾客 处理活动组 结束(0或1次)(0或1次)(n次)结束(1次)结束 结束(1次)(1次)结束(1次)(1次),http:/,第三章 软件设计的概念和过程,流程图:010 080 090 020 030 100 040 110 120 050 060 070 130,开始,处理,开始处理,开始顾客,活动组,开始活动组,处理活动,借处理,贷处理,活动组结束,顾客结束,处理结束,结束,http:/,第三章 软件设计的概念和过程,列出指令表:根据流程图,对每一个处理框进行细化,列出处理时的分块功能代码,并加以描述(这里的指令相当于宏指令)。对指令加以分类。利用LCP方法来解决复杂问题以及改造非结构化的软件 对一个复杂的问题,一个动作是否执行往往依赖于若干个条件的组合。Warnier方法推荐采用布尔代数理论来减少逻辑上的复杂性,从而排除冗余的条件测试。具体做法是:,http:/,第三章 软件设计的概念和过程,列出判定数据与动作关系的的真值表【例】判定数据A、B、C、D与动作V、W、X、Y、Z、R关系的真值表表示,数 据A B C D,V,W,X,Y,Z,R,0 0 0 0,0 0 0 1,0 0 1 0,0 0 1 1,0 1 0

    注意事项

    本文(【大学课件】软件设计的概念和过程.ppt)为本站会员(sccc)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开