软件工程00601PPT学习教案_第1页
软件工程00601PPT学习教案_第2页
软件工程00601PPT学习教案_第3页
软件工程00601PPT学习教案_第4页
软件工程00601PPT学习教案_第5页
已阅读5页,还剩35页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、会计学1 软件工程软件工程00601 现代软件工程现代软件工程 第六部分第六部分 系统详细设计与软件实现系统详细设计与软件实现 第1页/共40页 结构化程序的详细设计与实现结构化程序的详细设计与实现-1 系统设计与实现规范及管理-2 第六部分第六部分 系统详细设计与软件实现系统详细设计与软件实现 第2页/共40页 第一节 结构化程序的详细设计与实现 6.1-详细设计的目标与任务 6.2-传统详细设计的技术结构 6.3-结构化详细设计的工具 6.4-结构化程序的软件实现 第六部分第六部分 系统详细设计与软件实现系统详细设计与软件实现 第3页/共40页 6.1 详细设计的目标与任务详细设计的目标与

2、任务 n概要设计确定了系统的总体结构 n详细设计详细设计 n是对概要设计结果的进一步细化是对概要设计结果的进一步细化 n是对目标的精确描述是对目标的精确描述 n是面向编码实现,可以直接翻译成计算机代码的是面向编码实现,可以直接翻译成计算机代码的 n详细设计的结果:详细规格说明详细规格说明 第4页/共40页 详细设计的目标详细设计的目标 n概要设计针对需求,因此概要设计的目标体现在: n(1)概要设计对需求的完整实现完整实现; n(2)概要设计与需求的一致性一致性; n(3)概要设计向需求的反向可追踪反向可追踪; n(4)概要设计对系统结构设计的逻辑性、合理性和可扩展性逻辑性、合理性和可扩展性;

3、 n详细设计针对实现,因此,详细设计针对实现,因此,详细设计的目标体现在:详细设计的目标体现在: n(1)设计应符合组织即定的标准;)设计应符合组织即定的标准; n(2)设计结果对下一阶段的编码是可用的)设计结果对下一阶段的编码是可用的。 第5页/共40页 详细设计的任务详细设计的任务 n算法过程的设计算法过程的设计:选择合适的方法定义和描述每个处理过程的具体算法 n数据结构设计数据结构设计:对于处理过程中涉及的数据类型进行详细定义 n数据库物理设计数据库物理设计:对数据库的数据存储格式、方法和安排作出定义 n信息编码设计信息编码设计:定义统一的信息编码规范,确保系统信息编码的惟一性、灵活性、

4、简洁性、一致性、实用性和稳定性 n测试用例设计测试用例设计:设计具体测试用例的测试数据和预期结果 n其他设计其他设计 n编写详细设计说明书编写详细设计说明书 第6页/共40页 6.2 传统详细设计的技术结构传统详细设计的技术结构 p结构化程序设计技术是一种设计程序的技术,结构化程序设计技术是一种设计程序的技术,它采用自顶向下逐步求精的设计方法和单入口单出口的控制结构,并且只包含顺序、选择、循环三种控制结构它采用自顶向下逐步求精的设计方法和单入口单出口的控制结构,并且只包含顺序、选择、循环三种控制结构。 A B (a) 顺序结构 (b) 选择结构 B exp A F T exp A T F ex

5、p A F T (c) 循环结构 或 三种基本的控制结构 第7页/共40页 DO CASE I (a) DO_UNTIL型循环结构 exp A F T CASE 1 CASE 2 CASE n (b) DO_CASE型多分支结构 其他常用的控制结构 第8页/共40页 6.3结构化详细设计的工具结构化详细设计的工具 第9页/共40页 1、 程序流程图程序流程图 程序流程图中常用的符号 起止端点 数据 处理 准备或预处理 预先定义的处理 条件判断 循环上界限 循环下界限 文档 流线 虚线 省略符 并行方式 注释 第10页/共40页 程序流程图虽然比较直观,灵活,并且比较容易掌握,但是它 的随意性和

6、灵活性却使它不可避免地存在着一些缺点缺点: (1)由于程序流程图的特点,它本身并不是逐步求精的好工具 。因为它使程序员容易过早地考虑程序的具体控制流程,而忽略了程 序的全局结构; (2)程序流程图中用箭头代表控制流,这样使得程序员不受任 何约束,可以完全不顾结构程序设计的精神,随意转移控制; (3)程序流程图在表示数据结构方面存在不足。 第11页/共40页 值 1 Case1 部分 Case条件 第一个任务 第二个任务 第三个任务 (a) 顺序结构 F 条件 T ELSE 部分 THEN 部分 (b) 选择结构 (c) 多分支结构 循环条件 DO_WHILE 部分 循环条件 DO_UNTIL

7、部分 (d) 循环结构 A (e) 调用子程序 A 值 2 Case2 部分 值 n Casen 部分 2、 盒图(盒图(N-S图)图) N-S图的基本符号 第12页/共40页 N-S图有以下一些特点: (1)功能域(即某一个特定控制结构的作用域)有明确的规定 ,并且可以很直观地从N-S图上看出来; (2)它的控制转移不能任意规定,必须遵守结构化程序设计的 要求; (3)很容易确定局部数据和全局数据的作用域; (4)很容易表现嵌套关系,也可以表示模块的层次结构。 第13页/共40页 A B (a) 顺序结构 A B P (b) 选择结构 WHILE P S (c) WHILE型循环结构 UNT

8、IL P S (d) UNTIL型循环结构 A1 A2 P= An P1 P2 Pn (e) 多分支结构 (f) 语句标号 (g) 定义 3、 PAD图图 PAD图的基本符号 第14页/共40页 PAD图提供的定义功能 A C B1 B2 P1 WHILE P3 C4 C def C1 C2 C3 P2 第15页/共40页 PDL语言具有下述特点: (1)PDL虽然不是程序设计语言,但是它与高级程序设计语言非常类似,只要对虽然不是程序设计语言,但是它与高级程序设计语言非常类似,只要对PDL描述稍加变换就可变成源程序代码描述稍加变换就可变成源程序代码。因此,它是详细设计阶段很受欢迎的表达工具。

9、(2)用PDL写出的程序,既可以很抽象,又可以很具体。因此,容易 实现自顶向下逐步求精的设计原则。 (3)PDL描述同自然语言很接近,易于理解。 (4)PDL描述可以直接作为注释插在源程序中,成为程序的内部文档 。这对提高程序的可读性是非常有益的。 (5)PDL描述与程序结构相似,因此自动产生程序比较容易。 PDL的缺点是不如图形描述形象直观,因此人们常常将PDL描述与一种 图形描述结合起来使用。 4、 过程设计语言过程设计语言 第16页/共40页 5、 判定表判定表 一张判定表由四部分组成: (1)左上部列出所有条件; (2)左下部是所有可能做的动作; (3)右上部为各种可能组合条件,其中每

10、一列表示一种可 能组合; (4)右下部的每一列是和每一种条件组合所对应的应做的 工作。 第17页/共40页 12345 教授 TFFF 副教 授 FTFF 讲师 FFTF 助教 F F FT 讲座 TFFFF 50 30 25 20 15 例:某校制定了教 师的讲课课时津贴标准。 对于各种性质的讲座,无 论教师是什么职称,每课 时津贴费一律是50元;而 对于一般的授课,则根据 教师的职称来决定每课时 津贴费:教授30元,副教 授25元,讲师20元,助教 15元。 第18页/共40页 6、 判定树判定树 教师课时津贴判定树 课时津贴 一般授课 讲座 教授 副教授 讲师 助教 30 25 20 1

11、5 50 第19页/共40页 6.4 结构化程序的软件实现结构化程序的软件实现 第20页/共40页 6.4.1 程序设计语言的分类程序设计语言的分类 大体上,程序设计语言分为以 下几类: (1)机器语言 (2)汇编语言 (3)高级语言 第21页/共40页 (1)基础语言(例:FORTRAN,BASIC,COBOL和ALGOL) (2)结构化语言(例:ALGOL,PL/1,PASCAL,C,Ada) (3)专用语言(例:APL,LISP,PROLOG,BLISS,FORTH) 1、从应用特点的角度来分、从应用特点的角度来分 6.4.1 程序设计语言的分类程序设计语言的分类 2、从语言内在特点的角

12、度来分、从语言内在特点的角度来分 (1)系统实现语言(例:系统实现语言(例:C语言)语言) (2)静态高级语言(例:FORTRAN、COBOL) (3)块结构高级语言(例:PASCAL,ALGOL) (4)动态高级语言 第22页/共40页 (2)面向对象语言)面向对象语言 对象对象+消息消息 (1)面向过程语言)面向过程语言 数据结构数据结构+算法算法 3、从描述客观世界系统的角度、从描述客观世界系统的角度 例:Delphi、Visual Basic、JAVA、C+。 第23页/共40页 6.4.2 程序设计语言的选择程序设计语言的选择 一般情况下,我们采用高级语言来编 程。 选择具体高级语言

13、类型的原则:选择具体高级语言类型的原则: (1)系统的应用领域)系统的应用领域 (2)用户的要求)用户的要求 (3)软件的执行环境)软件的执行环境 (4)目标系统的性能要求)目标系统的性能要求 (5)程序员的知识水平)程序员的知识水平 (6)软件的可移植性要求)软件的可移植性要求 第24页/共40页 6.4.3 程序设计风格 第25页/共40页 程序内部的文档包括: (1)恰当的标识符(变量和标号)的名字;恰当的标识符(变量和标号)的名字; (2)适当的注释;适当的注释; (3)程序的视觉组织程序的视觉组织。 1、 程序内部的文档程序内部的文档 第26页/共40页 标识符包括模块名、变量名、常

14、量名、标号名、子标识符包括模块名、变量名、常量名、标号名、子 程序名以及数据区名、缓冲区名等程序名以及数据区名、缓冲区名等。这些名字的选取应 含义鲜明,能正确地提示程序对象所代表的实体。这对 于帮助阅读者理解理解程序是很重要的。例如,表示次数用 times,表示总量用total等。名字的长度长度不应限制,但也 不宜过长,太长了容易出错,应选择精炼且意义明确的 名字,这样才能简化程序语句,改善对程序功能的理解。 如果名字使用缩写缩写,那么缩写规则应该一致,并且应该 给每个名字加上注解,以方便阅读。 (1)、标识符的命名、标识符的命名 第27页/共40页 (2)、程序的注释、程序的注释 程序的注释

15、分为两种:序言性注释和功能性注释程序的注释分为两种:序言性注释和功能性注释。 序言性注释通常安排在每个程序模块的起始部分,它 是对程序的整体说明,对于理解程序本身具有引导作用。其 格式如下: 1.有关本模块功能说明有关本模块功能说明; 主要算法; 接口描述接口描述:包括调用形式,参数描述以及子模块清单; 数据描述数据描述:包括重要的变量及其用途、约束或限制条 件,以及其它有关信息; 模块位置模块位置:在哪一个源文件中,或隶属于哪一个软件 包; 开发简历开发简历:包括模块设计者姓名,复审人姓名,复审 日期,修改日期及有关说明等。 第28页/共40页 2.功能性注释:功能性注释: 嵌入在源程序体内

16、,用以描述其后的语句或程序段嵌入在源程序体内,用以描述其后的语句或程序段 的处理功能的处理功能。书写功能性注释,要注意以下几点: 描述的对象是一段程序,而不是每一个语句; 适当使用缩进和空行,使程序与注释容易区别; 注释一定要准确。不精确的甚至是错误的注释不仅 对理解程序毫无帮助,反而会妨碍对程序的理解。 第29页/共40页 程序中代码的布局对于程序的可读性也有很大影响程序中代码的布局对于程序的可读性也有很大影响。 适当的利用空格、空行和移行能使程序的逻辑结构更加 清晰。空格的合理应用还可以突出运算的优先性,避免 发生运算的错误。 (3)、程序的视觉组织、程序的视觉组织 第30页/共40页 为

17、了使数据更容易理解和维护,应遵循一些简单的 原则: (1)数据说明的次序应当规范化。 (2)当多个变量名在一个语句中说明时,应该按 字母顺序排列这些变量。 (3)如果设计时使用了一个复杂的数据结构,则 应注解说明用程序设计语言实现这个数据结构的方法和 特点。 2、 数据说明数据说明 第31页/共40页 3、 语句构造语句构造 语句构造应遵循的原则是:每条语句应该简单而直每条语句应该简单而直 接,不应为了片面追求效率而使代码变得过于复杂接,不应为了片面追求效率而使代码变得过于复杂。 人人 们在长期的实践中总结了以下一些规则们在长期的实践中总结了以下一些规则: 不要为了节省空间而把多个语句写在同一

18、行; 用空格或可读的符号使语句的内容更加清晰; 尽量避免复杂的条件测试; 尽量避免使用“非”条件的条件语句; 避免过多使用循环嵌套和条件嵌套; 利用括号使逻辑表达式或算术表达式的运算次序清 晰直观; 尽可能使用库函数; 让编译程序作简单的优化。 第32页/共40页 在设计和程序编码时,应考虑输入和输出风格原则: (1)对所有输入数据都进行校验,以保证每个数据的 有效性; 检查重要的输入项组合的合法性; 使得输入的步骤和操作尽可能简单,并保持简单的 输入格式; 输入一批数据时,使用输入结束指示符,不要要求 用户说明输入项数; (2)在以交互式输入输出方式进行输入时,要指明 可以使用的选择值或界限

19、值; 应允许缺省值; (3)当程序设计语言对输入输出格式有严格要求时, 应保持输入格式与输入语句的要求一致; 给所有的输出加注释,并设计输出报表格式。 4、 输入输出输入输出 第33页/共40页 通常,效率主要指占用处理机时间和主存区域两个 方面。好的编码可以提高效率,在我们进一步讨论这个问 题之前,应该记住三条原则三条原则: 第一、效率是一个性能要求,因而应该在需求分析第一、效率是一个性能要求,因而应该在需求分析 阶段确定代码效率方面的要求;阶段确定代码效率方面的要求; 第二、通过好的设计可以提高效率;第二、通过好的设计可以提高效率; 第三、程序的效率和程序的简明程度是一致的,不第三、程序的

20、效率和程序的简明程度是一致的,不 应该为了提高代码效率而牺牲程序的清晰性和可读性应该为了提高代码效率而牺牲程序的清晰性和可读性。 5、 效率效率 第34页/共40页 在把详细设计结果用代码来实现时要注意一些原则: 在编码之前,先化简算术表达式和逻辑表达式;在编码之前,先化简算术表达式和逻辑表达式; 特别注意嵌套的循环,以确定是否有语句可以从循特别注意嵌套的循环,以确定是否有语句可以从循 环内层移到循环外层;环内层移到循环外层; 尽量避免使用多维数组和复杂的表格;尽量避免使用多维数组和复杂的表格; 尽量使用执行时间短的算术运算;尽量使用执行时间短的算术运算; 尽量避免混合使用不同数据类型的量;尽

21、量避免混合使用不同数据类型的量; 尽量使用整型算术表达式和逻辑表达式尽量使用整型算术表达式和逻辑表达式。 有些编译程序具有自动优化的功能,在强调效率的 应用领域,尽量使用有这样的编译程序,以自动生成高效 的目标代码。 (1)、代码效率、代码效率 5、 效率效率 第35页/共40页 主存储器的容量曾经很大程度上制约了程序的效率主存储器的容量曾经很大程度上制约了程序的效率。 目前,在大型计算机中,由于操作系统页式调度的特点目前,在大型计算机中,由于操作系统页式调度的特点, 一般来说,代码局部性和通过结构化构造来维护功能是提 高效率的有效方法。 在微处理机中,如果能利用的存储容量很小,就要在微处理机中,如果能利用的存储容量很小,就要 考虑高级语言的编译程序在存储压缩方面的功能,有时则考虑高级语言的编译程序在存储压缩方面的功能,有时则 必须选择使用汇编语言。必须选择使用汇编语言。 (2)、存储效率、存储效率 5、 效率效率 第36页/共40页 从编码的角度来看,人们总结了一些简单的指导原 则来提高输入输出的效率: 所有的输入输出都应该有缓冲所有的输入输出都应该有缓冲,以降低用于通信 的开销; 对辅助存储器(如磁盘)的访问,应选用最简单最对辅助存储器(如磁盘)的访问,应选用最简单最 直接的方式;直接的方式; 涉及到辅助

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论