精品PPT课件--第9章程序设计与软件工程基础.ppt

上传人:本田雅阁 文档编号:3167376 上传时间:2019-07-19 格式:PPT 页数:102 大小:2.65MB
返回 下载 相关 举报
精品PPT课件--第9章程序设计与软件工程基础.ppt_第1页
第1页 / 共102页
精品PPT课件--第9章程序设计与软件工程基础.ppt_第2页
第2页 / 共102页
精品PPT课件--第9章程序设计与软件工程基础.ppt_第3页
第3页 / 共102页
精品PPT课件--第9章程序设计与软件工程基础.ppt_第4页
第4页 / 共102页
精品PPT课件--第9章程序设计与软件工程基础.ppt_第5页
第5页 / 共102页
点击查看更多>>
资源描述

《精品PPT课件--第9章程序设计与软件工程基础.ppt》由会员分享,可在线阅读,更多相关《精品PPT课件--第9章程序设计与软件工程基础.ppt(102页珍藏版)》请在三一文库上搜索。

1、第9章 程序设计与软件工程基础,主要内容,程序设计的方法和风格 结构化程序设计的方法 面向对象程序设计的方法 软件工程的基本概念 结构化分析方法 结构化设计方法 软件的测试 软件的维护,9.1 程序设计基础,一、有关程序设计的基本概念 1、程序 由人所编写的、指挥和控制计算机完成某一任务的指令序列。 2、程序设计 编写程序的过程。 是一门技术,需要相应的理论、技术、方法与工具的支持。 3、程序设计方法 研究问题求解和系统构造的软件方法学。 主要有两种 结构化程序设计 面向对象程序设计 4、程序设计语言 编写程序所使用的语言,人和计算机进行交流的语言。 分类 高级语言:C、VB、VC、JAVA、

2、C#等 低级语言:机器语言和汇编语言,二、程序设计的风格 1、概念: 编写程序时所表现出来的特点、习惯和逻辑思路。 2、作用 良好的程序设计风格能够使设计的程序结构清晰合理、代码易于维护,保证软件开发的质量。 3、原则 “清晰第一、效率第二”,4、内容(四个方面) (1)总体设计的风格 程序设计首先要从全局出发,对整体结构进行设计,为后面的具体编程做好准备,其根本目标是降低程序的复杂性,提高程序的可读性。 总体设计应满足结构清晰、思路清晰、条理清晰的要求。 (2)语言运用的风格 选取恰当的程序设计语言 采用朴素的语句成分 (3)程序文本的风格 注意程序文本的易读性 数据定义规范化 程序中加必要

3、的注释 合理使用分隔符 (4)输入输出的风格,三、结构化程序设计方法 1、主要思想 功能分解,逐步求精。把一个大的任务分解为若干个较小的功能部件分别实现。 2、结构化程序设计的基本结构(3种) (1)顺序结构 按照语句的自然顺序依次执行的结构。,(2)选择结构(分支结构) 根据条件判断结果的不同,选择相应的分支语句执行。 分为两路分支结构和多路分支结构。,两路分支结构,多路分支结构,(3)循环结构,1)当型循环:先判断条件,当条件满足时执行循环体语句,条件不满足时跳出循环,执行循环后面的语句。,2)直到型循环:先执行循环体语句,然后判断条件是否满足,如果满足条件则跳出循环,执行循环后面的语句。

4、否则,继续执行循环体语句,3、结构化程序设计的原则 (1)模块化原则 将一个大的任务分解为若干个人们能理解的模块。 遵循两个原则:按功能划分、按层次组织 (2)自顶向下、逐步求精 (3)限制使用goto语句,四、面向对象程序设计方法 1、主要思想 把描述事物静态属性的数据结构和表示事物动态行为的操作放在一起构成一个整体,完整自然的表示客观世界的实体。 2、基本概念 (1)对象 指客观存在并且能够相互区分的事物。 可以是有形的(比如一辆汽车),也可以是无形的(比如一项计划)。 (2)属性 指对对象某一个方面特性的描述,它是对象包含的信息。 例如:可用“姓名”、“年龄”、“性别”等属性描述一个人。

5、 (3)方法 允许作用于某个对象上的各种操作,如汽车的前进、后退等。,(4)事件 是指由对象识别的一个动作. (5)类 指具有相同属性和相同操作的对象集合。 类和对象的关系 类是对象的抽象,对象是类的实例,犹如模具与铸件之间的关系 (6)封装 将对象的属性和方法结合成一个整体。 是一种信息隐藏技术,使用者无法访问封装体的内部。 (7)消息 消息传递是对象之间通信的手段,一个对象向另一个对象发送消息来请求服务,接受消息的对象经过解释,然后给予响应。,(8)继承 一个类(称为子类)的定义可以定义在另一个已经定义类(称为父类)的基础上,子类可以继承父类中的属性和方法,也可以定义自己的属性和方法。 如

6、下图:假设已经定义好了一个人类,具有姓名、年龄、性别等属性和修改姓名、显示各信息的方法。现在要定义一个学生类,只需要从人类继承一下,就自动具有人类的属性和方法,然后给学生类添加特有的属性如学号、班级、成绩等和相应的方法就可以了。 继承可以一直进行下去,形成一棵树,称为类层次结构。,(9)多态性 指在类的不同层次上可以使用相同的方法名,但不同层次的类可以按自己的需要来实现这个行为。 如上图中,人类可以具有显示信息(print)的方法,而学生类同样可以有同名的方法。但人类的Print显示姓名、年龄、性别信息,而学生类的print则显示姓名、年龄、性别、学号、班级、成绩信息。 另外,整型数据和复数都

7、有加法运算,但它们的运算规则是不同的,这也是一种多态性。,3、面向对象技术 面向对象的分析(OOA) 面向对象的设计(OOD) 面向对象的实现(OOI),4、面向对象技术优点 与人类习惯思维方法一致 良好的可重用性 良好的可维护性 表示方法的一致性,9.2 软件工程基础,一、软件工程的概念 1、软件:程序+文档 程序:由人所编写的、指挥和控制计算机完成某一任务的指令序列。 文档:与程序运行和维护有关的图文资料,2、软件危机 软件危机是指在软件开发和维护中所产生的一系列严重的问题。一是如何开发软件,满足用户对软件的需求,二是如何维护数量众多的已有软件。其主要表现如下: (1)用户需求不明确、变更

8、过多 (2)软件成本日益增长 (3)开发进度难以控制 (4)软件质量差 (5)软件维护困难,3、软件工程 为了解决软件危机,出现了软件工程,就是应用于计算机软件的定义、开发和维护的整套方法、文档、实践标准和工具。 采用工程的概念、原理、技术和方法来指导软件的开发与维护。,3、软件工程基本原理 用分阶段的生命周期计划严格管理; 坚持进行阶段评审; 实行严格的产品控制; 采用现代程序设计技术; 结果应能清楚地审查; 开发小组的人员应该少而精; 承认不断改进软件工程实践的必要性。,3、软件工程结构,4、软件的生命周期 软件也有一个孕育、诞生、成长、成熟、衰亡的生存过程。我们称其为计算机软件的生命周期

9、。 若为软件的生命周期,是指软件产品从提出、实现、使用、维护直到最后停止使用退役的全过程。 分为3个时期、8个阶段 软件定义时期:包括问题定义、可行性研究、需求分析3个阶段 软件开发时期:包括系统设计、详细设计、编码和测试4个阶段 软件维护阶段:包括运行维护1个阶段,软件的生命周期,二、软件生命周期各阶段的任务 1、问题定义阶段 主要目标:回答“要解决什么问题”,给出软件系统的总目标和总要求。 因为涉及整个工程的基础,需要软件开发人员、用户以及使用部门的负责人共同参加,取得一致思想。最终要提交关于问题性、工程规模和目标的报告书。,2、可行性研究阶段 主要任务:从多个角度分析,确定上一阶段定义的

10、问题是否有可行的解决办法。 分析的角度包括4个方面: 经济可行性 技术可行性 运行环境 法律可行性,3、需求分析阶段 (1)主要任务:不是去解决问题(怎么做),而是准确全面地定义目标系统必须要具备哪些功能。具体讲是确定待开发软件的数据、功能、性能、界面等要求。最后编写软件需求规格说明书。,(2)需求分析采用的方法SA方法(p309) SA(Structured Analysis,结构化分析方法)是20世纪70年代中期由EYourdon等人倡导的一种面向数据流的分析方法。 SA方法采用自顶向下、逐层分解的原则,沿着数据流将系统的各种需求抽象分解,用数据流图和数据字典为主要工具建立系统的逻辑模型。

11、,SA方法的步骤 数据分析 根据对用户的调查,以用户的需求为标准构建初始的数据流图,写出简单的数据字典和初始的处理说明 回溯 从数据流图的输出端回溯,在回溯过程中将所有的输入输出数据流和数据存储确定下来,放入数据字典中进行定义,完善初始数据流图和数据字典,每个处理的详细说明也要扩充到处理说明表中。 确定系统的非功能需求 需要对软件性能指标、接口定义、设计和实现的约束条件等逐一进行分析,确定可以实现的成分 复查 系统分析人员要与用户共同探讨经过改进和丰富的数据流图、数据字典和处理说明是否合理必要,是否还需要扩充或改动,直到最后符合要求为止 修正开发计划 根据上阶段得到的详细地用户需求修正开发计划

12、 编写需求文档 编写需求规格说明和初始用户手册,测试人员编写功能测试的数据,SA方法的主要工具数据流图和数据字典 数据流图(DFD,Data Flow Diagram) 功能:描绘信息在系统中的流动和处理情况,能够反映出系统逻辑模型。 图中使用如下符号:,数据流:,数据处理:,处理名,外部实体:,数据存储:,外部实体名,DFD的画法:自顶向下、由外到里 先找到系统的外部实体 找出外部实体的输出数据流与输入数据流 在数据流的外围画出外部实体 从外部实体的输出数据流出发,初步画出各个逻辑加工,直到找到输入数据流为止 检查与修改 按上面的步骤,从各个加工出发画出需要的子图,DFD练习1售书系统,DF

13、D练习2学生成绩管理系统,1画顶层数据流图,2画第二层数据流图,3画第三层数据流图,数据字典(DD,Data Dictionary) 功能:关于系统中各种数据的信息的集合。在数据流图中出现的所有元素在数据字典中都用一个词条来定义。 DD包含的内容: 数据流 数据流分量 数据处理 数据存储 外部实体,4、系统设计(概要设计)阶段 (1)任务:确定软件系统的结构,进行模块划分,确定每个模块的功能、接口及模块间的调用关系,并对全局数据结构进行设计。并编写概要设计说明书 (2)模块化: 就是把系统程序划分成若干个模块,每个模块完成一个子功能,模块既独立,相互之间又有一定的联系。,步骤:,步骤:,1)设

14、想供选择的方案 开发人员根据需求分析阶段得到的数据流图所划分的自动化边界,一个边界一个边界 地设想并且列出供选择的方案。 2)选取合理的方案 通过对不同方案的比较选取合理的方案。比较主要从易于实现性和成本/效益分析两方 面进行。推荐最佳方案,并制定出实现这个系统的进度计划。,3)功能分解 功能分解也就是进行结构设计,确定软件系统都由哪些模块组成,以及这些模块间的 相互关系。 4)设计软件结构 设计软件结构是概要设计阶段的核心工作。主要应用软件设计的概念和原理,采用面 向数据流的设计方法(结构化设计方法SD)将软件划分层次和结构。,5)数据库设计 应用所学的数据库知识,对软件系统进行数据库设计。

15、 6)制定测试计划 在软件开发的早期阶段考虑测试问题,能促使软件设计人员在设计时注意提高软件的可测试性。 7)书写文档 8)审查和复审 技术审查通过之后,再由使用部门的负责人从管理角度进行复审。,(5)设计时常用方法结构化设计方法(SD,Structured Design) 概念:是一种面向数据流的设计方法,主要任务是采用模块化、自顶向下逐层细化、结构化程序设计等技术手段,将需求分析阶段得到的数据流图,通过一系列映射变换为结构图(SC,Structured Chart)。 结构图 功能:描述系统的层次和分块结构关系,表达模块与模块之间的联系和通信。,使用的符号:,SD方法的步骤 根据对数据流的

16、分析,确定问题的类型:变换型、事务型 由数据流图导出初始结构图 改进初始结构图,直到满足要求为止 用“因子分解”方法定义软件的层次模块结构 修改补充数据字典,并制定测试计划,信息沿输入通路进入系统,同时由外部形式变换成内部形式,进入系统的信息通过变 换中心,经加工处理以后再沿输出通路变换成外部形式离开系统,当数据流图具有这些特 征时,这种信息流叫变换流。,数据沿输入通路到达一个处理,这个处理根据输入数据的类型在若干个动作序列中选 出一个来执行。这一类数据流叫事务流。,(3)耦合与内聚 作用:评价软件概要设计质量好坏的标准,它们衡量系统设计中模块的划分是否合理,模块是否独立性强。 耦合:表示模块

17、之间相互依赖的程度,是对模块之间相互依赖程度的衡量。当然,模块之间的耦合度越小,模块的独立性就越强。 内聚:模块内部各成分之间相互关联的程度。设计时追求的目标应尽量使每个模块做到高内聚。,(4)设计模块时的一般原则 要求模块之间的耦合度要尽量弱,而内聚要尽可能强。,模块间的耦合,数据耦合 同构耦合 控制耦合 公共耦合 内容耦合,模块间的内聚,功能内聚 顺序内聚 通信内聚 过程内聚 时间内聚 逻辑内聚 偶然内聚,用户界面的设计:,1.结构设计(Strucmre Design) 结构设计是界面设计的骨架。通过对用户研究和任务分析,制定出产品的整体架构。,2.交互设计(Interactive Des

18、ign) 交互设计的目的是使产品让用户能简单使用。任何产品功能的实现都是通过人和机器 的交互来完成的。因此,人的因素应作为设计的核心被体现出来。交互设计的原则如下。 (1)有清楚的错误提示。误操作后,系统提供有针对性的提示。 (2)让用户控制界面。“下一步“、“完成“,面对不同层次提供多种选择,给不同 层次的用户提供多种可能性。 (3)允许兼用鼠标和键盘。同一种功能,同时可以用鼠标和键盘,提供多种可能性。 (4)允许工作中断。 (5)使用用户的语言,而非技术的语言。 (6)提供快速反馈。给用户心理上的暗示,避免用户焦急。 (7)方便退出。 (8)导航功能。随时转移功能,很容易从一个功能跳到另外

19、一个功能。 (9)让用户知道自己当前的位置,方便其做出下一步的操作,3)视觉设计(Visual Design) 在结构设计的基础上,参照目标群体的心理模型和任务达成进行视觉设计。包括色彩、 字体、页面等。视觉设计要达到用户愉悦使用的目的。视觉设计的原则如下。 (1)界面清晰明了。允许用户定制界面。 (2)减少短期记忆的负担。让计算机帮助记忆 。 (3)依赖认知而非记忆。如打印图标的记忆、下拉菜单列表中的选择。 (4)提供视觉线索。图形符号的视觉的剌激:GUI(图形界面设计)。 (5)提供默认(default)、撤销(undo)、恢复(redo的功能。 (6)提供界面的快捷方式。 (7)尽量使用

20、真实世界的描绘。如:电话、打印机的图标设计,尊重用户以往的使用 经验。 (8)完善视觉的清晰度。条理清晰:图片、文字的布局和隐喻不要让用户去猜。 (9)界面的协调一致。如手机界面按钮排放,左键肯定,右键否定:或按内容摆放。 (10)同样功能用同样的图形。 (11)色彩与内容。整体软件不超过5个色系,尽量少用红色、绿色b近似的颜色表示 近似的意思。,详细设计阶段的主要任务如下。 1.模块的逻辑结构设计 逻辑结构设计是结合所开发项目的具体要求和对每个模块规定的功能,开发出模块处 理的详细算法,选择某种适当的工具加以精确描述。 2.模块的数据设计 模块的数据设计是为在需求分析阶段的数据对象定义逻辑数

21、据结构,并且对不同的逻 辑数据结构进行不同的算法设计,以便选择一个最有效的方案。同时,确定实现逻辑数据 结构所必需的操作模块,以便了解数据结构的影响范围。数据设计包括数据结构设计、数 据库结构设计和文件设计等。 由于数据结构影响程序结构和过程复杂性的直接影响,从而在很大程度上决定了软件 质量。,3.模块的接口设计 接口设计是分析软件各部分之间的联系,确定该软件的内部接口和外部接口是否已经 明确定义。 4.模块的测试用例设计 要为每一个模块设计出一组测试用例,以便在编码阶段对模块代码(即程序)进行预定 的测试,模块的测试用例是软件测试计划的重要组成部分,通常应包括输入数据,期望的 输出数据等内容

22、。 5.模块的其他设计 根据软件系统的具体的要求,还可能进行以下设计:网络系统设计、输入/输出格式的 设计、系统配置的设计等。 6.编写“详细设计说明书“,详细设计的原则 1.模块的逻辑描述要清晰易懂、正确可靠 详细设计的结果基本上决定了最终的程序代码的质量。由于详细设计的蓝图是给后 续阶段的工作人员看的,所以模块的逻辑描述正确可靠,是软件设计正确的前提。详细设 计结果的清晰易懂主要有两个方面的作用:一是易于编码的实现,二是易于软件的测试和 维护。 如果详细设计易于理解,又便于测试和排除所发现的错误,就能够有效地在开发期间 消除在程序中隐藏的绝大多数故障,使得程序可以短到正确稳定的运行,极大地

23、减小运行 期间软件失效的可能性,大大提高软件的可靠性。,2 采用结构化设计方法 改善控制结构,降低程序复杂程度,提高程序的可读性、可测试性和可维护性。采用自顶向下逐步求精的方法进行程序设计,一般采用顺序、选择和循环3种结构,确保程序的静态和动态结构执行情况相一致,保证程序的容易理解。 3 选择恰当工具进行各模块算法的描述,程序流程图PFC(Program F1ow Chart),NS图,PAD图,判定表,判定树,PDL,详细设计方法的选择 在详细设计中,对一个设计方法选择的原则是:过程描述易于理解、复审和维护,进 而过程描述能够自然地转换成代码,并保证代码与详细设计完全一致。为了达到这一原则,

24、 要求选择设计工具时应考虑以下几个方面。 (1)简洁、易编辑:设计描述易学、易用和易读,支持后续设计和维护以及在维护阶 段对设计进行的修改。 (2)模块化:支持模块化软件的开发,并提供描述接口的机制。 (3)强制结构化:详细设计的方法应该能够强制设计者采用结构化构件,有助于采用 优秀的设计。 (4)数据表示:详细设计具备表示数据作用范围的能力。 (5)机器可读性:设计描述能够直接输入,并且很容易被计算机辅助设计工具识别。 (6)自动生成报告:设计者通过分析详细设计的结果来改进设计,通过自动处理器产 生有关分析报告,进而增强设计者在这方面的能力。 (7)编码能力:可编码能力是一种设计描述,研究代

25、码自动转换技术可以提高软件效 率和减少出错率。 (8)逻辑验证:软件测试最高目标是能够自动检验设计逻辑的正确性,所以设计描述 应易于进行逻辑验证,进而增强可测试性。,6、编码阶段 把软件设计的结果翻译成计算机可以运行的形式,即用某种程序设计语言书写程序,测试的特点: 挑剔性 不完全性 经济性,测试的技术 静态测试 主要对程序进行控制流、数据流、接口等方面的分析。采用人工方式。 动态测试 让计算机执行一些测试用例,使程序在执行过程中暴露错误。分为白盒测试和黑盒测试。 自动测试 用一些测试软件取代人工操作对程序进行自动化的测试操作。,典型测试方法 白盒测试 软件的白盒测试是把测试对象看作一个透明的

26、盒子,它允许测试人员利用程序内部的逻辑结构及有关信息,设计或选择测试用例,对程序所有逻辑路径进行测试。 有两种测试方法: 逻辑复盖测试法(logic coverage testing) 路径测试法(path testing),逻辑复盖测试法(logic coverage testing) 用流程图来设计测试用例 逻辑复盖测试的5种标准,黑盒测试法 黑盒测试相当于将程序封装在一个黑盒子里,测试人员并不知道程序的具体情况,他只了解程序的功能、性能及接口状态等,黑盒测试主要在软件的接口处进行。其目的是为了能发现以下几类错误: 是否有遗漏或不正确的功能,性能上是否满足要求。 输入能否被正确接收,能否得

27、到预期的输出结果。 能否保持外部信息的完整性,是否有数据结构错误。 是否有初始化或终止性错误。,一般有四种方法来设计测试用例:等价分类法、边界值分析法、因果图法和错误推测法。 等价分类法(equivalence partitioning) 把输入数据的可能值划分为若干等价类 有效等价类和无效等价类 每一无效等价类至少需要一个测试用例 例子: 某工厂公开招工,规定报名者年龄应在16周岁至35周岁之间(到2002年3月30日止)即出生年月不在上述范围内,将拒绝接受,并显示“年龄不合格”等出错信息。,边界值分析法 经验证明,大量的错误出现在输入或输出的边界值附近,而不是在中间值。为此可用边界值分析法

28、作为一种测试技术,以此作为等价分类法的补充。边界值分析法是使用一些输入/输出值正好等于、小于或大于边界值的测试用例对程序进行测试。,因果图法 是针对各种输入条件的组合对应产生的多个动作进行测试用例设计的方法.,错误推测法 错误推测法的基本思想是列举出程序可能有的错误和容易发生错误的特殊情况,并据此设计测试用例。,(5)测试的步骤 软件的测试过程一般按3个层次,模块测试、整体测试、高级测试。,模块测试 发现各模块在逻辑与功能上可能存在的错误。,整体测试 发现与接口有关的问题. 测试内容: 模块的接口 全局数据结构 边界条件 非法输入 组装成整体的方法 非渐增式 渐增式,高级测试: 功能测试 系统测试 验收测试 安装测试,(6)软件的调试 在成功进行了软件测试之后,针对测试阶段发现的错误,首先确定错误的准确位置,然后仔细研究错误产生的原因,并设法改正错误。,调试的基本步骤: 确定程序中错误的位置 找出错误出现的原因 修改代码 回归测试,调试的技术: 输出存储器的内容 设置调试语句 利用测试文档 使用用自动工具,调试的策略: 试探法 回溯法 对分查找 归纳法 演绎法,8、软件维护阶段 软件维护就是在软件已经交付用户使用之后,为了改正错误或满足新的需求而进行修改软件的过程。分为:究错性维护、适应性维护、完善性维护和预防性维护4类。,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1