程序设计与软件工程基础.ppt_第1页
程序设计与软件工程基础.ppt_第2页
程序设计与软件工程基础.ppt_第3页
程序设计与软件工程基础.ppt_第4页
程序设计与软件工程基础.ppt_第5页
已阅读5页,还剩97页未读 继续免费阅读

下载本文档

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

文档简介

第9章 程序设计与软件工程基础 主要内容 程序设计的方法和风格 结构化程序设计的方法 面向对象程序设计的方法 软件工程的基本概念 结构化分析方法 结构化设计方法 软件的测试 软件的维护 9.1 程序设计基础 一、有关程序设计的基本概念 1、程序 由人所编写的、指挥和控制计算机完成某一任务的指令序列 。 2、程序设计 编写程序的过程。 是一门技术,需要相应的理论、技术、方法与工具的支持。 3、程序设计方法 研究问题求解和系统构造的软件方法学。 主要有两种 l结构化程序设计 l面向对象程序设计 4、程序设计语言 编写程序所使用的语言,人和计算机进行交流的语言。 分类 l高级语言:C、VB、VC、JAVA、C#等 l低级语言:机器语言和汇编语言 二、程序设计的风格 1、概念: 编写程序时所表现出来的特点、习惯和逻辑思路。 2、作用 良好的程序设计风格能够使设计的程序结构清晰合 理、代码易于维护,保证软件开发的质量。 3、原则 “清晰第一、效率第二” 4、内容(四个方面) (1)总体设计的风格 程序设计首先要从全局出发,对整体结构进行设计,为后面 的具体编程做好准备,其根本目标是降低程序的复杂性,提高 程序的可读性。 总体设计应满足结构清晰、思路清晰、条理清晰的要求。 (2)语言运用的风格 选取恰当的程序设计语言 采用朴素的语句成分 (3)程序文本的风格 注意程序文本的易读性 数据定义规范化 程序中加必要的注释 合理使用分隔符 (4)输入输出的风格 三、结构化程序设计方法 1、主要思想 功能分解,逐步求精。把一个大的任务分解为若干个 较小的功能部件分别实现。 2、结构化程序设计的基本结构(3种) (1)顺序结构 按照语句的自然顺序依次执行的结构。 (2)选择结构(分支结构) 根据条件判断结果的不同,选择相应的分支语 句执行。 分为两路分支结构和多路分支结构。 两路分支结构两路分支结构 多路分支结构多路分支结构 (3)循环结构 1 1)当型循环:先判断)当型循环:先判断 条件,当条件满足时执条件,当条件满足时执 行循环体语句,条件不行循环体语句,条件不 满足时跳出循环,执行满足时跳出循环,执行 循环后面的语句。循环后面的语句。 2 2)直到型循环:先执)直到型循环:先执 行循环体语句,然后判行循环体语句,然后判 断条件是否满足,如果断条件是否满足,如果 满足条件则跳出循环,满足条件则跳出循环, 执行循环后面的语句。执行循环后面的语句。 否则,继续执行循环体否则,继续执行循环体 语句语句 3、结构化程序设计的原则 (1)模块化原则 将一个大的任务分解为若干个人们能理解的模块。 遵循两个原则:按功能划分、按层次组织 (2)自顶向下、逐步求精 (3)限制使用goto语句 四、面向对象程序设计方法 1、主要思想 把描述事物静态属性的数据结构和表示事物动 态行为的操作放在一起构成一个整体,完整自然的表 示客观世界的实体。 2、基本概念 (1)对象 指客观存在并且能够相互区分的事物。 可以是有形的(比如一辆汽车),也可以是无形的(比如一 项计划)。 (2)属性 指对对象某一个方面特性的描述,它是对象包含的信息。 例如:可用“姓名”、“年龄”、“性别”等属性描述一个人。 (3)方法 允许作用于某个对象上的各种操作,如汽车的前进、后退等。 (4)事件 是指由对象识别的一个动作. (5)类 l指具有相同属性和相同操作的对象集合。 l类和对象的关系 类是对象的抽象,对象是类的实例,犹如模具与铸件之间的关系 (6)封装 l将对象的属性和方法结合成一个整体。 l是一种信息隐藏技术,使用者无法访问封装体的内部。 (7)消息 l消息传递是对象之间通信的手段,一个对象向另一个对象发送消息 来请求服务,接受消息的对象经过解释,然后给予响应。 人 工人 学生 教师 农民 小学生中学生大学生研究生助教讲师教授 (8)继承 一个类(称为子类)的定义可以定义在另一个已经定义类(称为 父类)的基础上,子类可以继承父类中的属性和方法,也可以定义 自己的属性和方法。 如下图:假设已经定义好了一个人类,具有姓名、年龄、性别 等属性和修改姓名、显示各信息的方法。现在要定义一个学生类, 只需要从人类继承一下,就自动具有人类的属性和方法,然后给学 生类添加特有的属性如学号、班级、成绩等和相应的方法就可以了 。 继承可以一直进行下去,形成一棵树,称为类层次结构。 (9)多态性 指在类的不同层次上可以使用相同 的方法名,但不同层次的类可以按自己的需 要来实现这个行为。 如上图中,人类可以具有显示信息 (print)的方法,而学生类同样可以有同名 的方法。但人类的Print显示姓名、年龄、性 别信息,而学生类的print则显示姓名、年龄 、性别、学号、班级、成绩信息。 另外,整型数据和复数都有加法运算, 但它们的运算规则是不同的,这也是一种多 态性。 3、面向对象技术 面向对象的分析(OOA) 面向对象的设计(OOD) 面向对象的实现(OOI) 4、面向对象技术优点 与人类习惯思维方法一致 良好的可重用性 良好的可维护性 表示方法的一致性 9.2 软件工程基础 一、软件工程的概念 1、软件:程序+文档 程序:由人所编写的、指挥和控制计算机完成某 一任务的指令序列。 文档:与程序运行和维护有关的图文资料 2、软件危机 软件危机是指在软件开发和维护中所产生的一系列严 重的问题。一是如何开发软件,满足用户对软件的需 求,二是如何维护数量众多的已有软件。其主要表现 如下: (1)用户需求不明确、变更过多 (2)软件成本日益增长 (3)开发进度难以控制 (4)软件质量差 (5)软件维护困难 3、软件工程 l为了解决软件危机,出现了软件工程,就是应 用于计算机软件的定义、开发和维护的整套方 法、文档、实践标准和工具。 l采用工程的概念、原理、技术和方法来指导软 件的开发与维护。 3、软件工程基本原理 l用分阶段的生命周期计划严格管理; l坚持进行阶段评审; l实行严格的产品控制; l采用现代程序设计技术; l结果应能清楚地审查; l开发小组的人员应该少而精; l承认不断改进软件工程实践的必要性。 3、软件工程结构 4、软件的生命周期 l软件也有一个孕育、诞生、成长、成熟、衰亡的生存过 程。我们称其为计算机软件的生命周期。 l若为软件的生命周期,是指软件产品从提出、实现、使 用、维护直到最后停止使用退役的全过程。 l分为3个时期、8个阶段 软件定义时期:包括问题定义、可行性研究、需求分析3个阶段 软件开发时期:包括系统设计、详细设计、编码和测试4个阶段 软件维护阶段:包括运行维护1个阶段 软件的生命周期 二、软件生命周期各阶段的任务 1、问题定义阶段 主要目标:回答“要解决什么问题”, 给出软件系统的总目标和总要求。 因为涉及整个工程的基础,需要软 件开发人员、用户以及使用部门的负责人共 同参加,取得一致思想。最终要提交关于问 题性、工程规模和目标的报告书。 2、可行性研究阶段 主要任务:从多个角度分析,确定上一 阶段定义的问题是否有可行的解决办法。 分析的角度包括4个方面: 经济可行性 技术可行性 运行环境 法律可行性 3、需求分析阶段 (1)主要任务:不是去解决问题(怎么做) ,而是准确全面地定义目标系统必须要具备 哪些功能。具体讲是确定待开发软件的数据 、功能、性能、界面等要求。最后编写软件 需求规格说明书。 (2)需求分析采用的方法SA方法( p309) SA(Structured Analysis,结构化分析方 法)是20世纪70年代中期由EYourdon等人倡导 的一种面向数据流的分析方法。 SA方法采用自顶向下、逐层分解的原则,沿 着数据流将系统的各种需求抽象分解,用数据流 图和数据字典为主要工具建立系统的逻辑模型。 SA方法的步骤 l数据分析 根据对用户的调查,以用户的需求为标准构建初始的数据流图, 写出简单的数据字典和初始的处理说明 l回溯 从数据流图的输出端回溯,在回溯过程中将所有的输入输出数据 流和数据存储确定下来,放入数据字典中进行定义,完善初始数 据流图和数据字典,每个处理的详细说明也要扩充到处理说明表 中。 l确定系统的非功能需求 需要对软件性能指标、接口定义、设计和实现的约束条件等逐一 进行分析,确定可以实现的成分 l复查 系统分析人员要与用户共同探讨经过改进和丰富的数据流图、数 据字典和处理说明是否合理必要,是否还需要扩充或改动,直到 最后符合要求为止 l修正开发计划 根据上阶段得到的详细地用户需求修正开发计划 l编写需求文档 编写需求规格说明和初始用户手册,测试人员编写功能测试的数 据 SA方法的主要工具数据流图和数据字典 l数据流图(DFD,Data Flow Diagram) 功能:描绘信息在系统中的流动和处理情况,能够反 映出系统逻辑模型。 图中使用如下符号: 数据流名 数据流: 数据处理 : 处理名 外部实体 : 文件名: 数据存储 : 外部实体名 DFD的画法:自顶向下、由外到里 先找到系统的外部实体 找出外部实体的输出数据流与输入数据流 在数据流的外围画出外部实体 从外部实体的输出数据流出发,初步画出各个逻 辑加工,直到找到输入数据流为止 检查与修改 按上面的步骤,从各个加工出发画出需要的子图 领书单 进书通知 购书单 缺书单 学 生 教材 购销 系统 书库 保管 员 DFD练习1售书系统 领书单 进书通知 进书通知 购书单 缺书单 1 销 售 2 采 购 书库 保管 员 学 生 F1教材存量表 F2缺书登记表 DFD练习2学生成绩管理系统 1画顶层数据流图 2画第二层数据流图 3画第三层数据流图 l数据字典(DD,Data Dictionary) 功能:关于系统中各种数据的信息的集合。 在数据流图中出现的所有元素在数据字典中 都用一个词条来定义。 DD包含的内容: 数据流 数据流分量 数据处理 数据存储 外部实体 4、系统设计(概要设计)阶段 (1)任务:确定软件系统的结构,进行模块划分 ,确定每个模块的功能、接口及模块间的调用 关系,并对全局数据结构进行设计。并编写概 要设计说明书 (2)模块化: 就是把系统程序划分成若干个模块,每个 模块完成一个子功能,模块既独立,相互之间又有一 定的联系。 步骤: 步骤: 1)设想供选择的方案 开发人员根据需求分析阶段得到的数据流图所划分的 自动化边界,一个边界一个边界 地设想并且列出供选 择的方案。 2)选取合理的方案 通过对不同方案的比较选取合理的方案。比较主要从 易于实现性和成本/效益分析两方 面进行。推荐最佳 方案,并制定出实现这个系统的进度计划。 3)功能分解 功能分解也就是进行结构设计,确定软件系统 都由哪些模块组成,以及这些模块间的 相互关 系。 4)设计软件结构 设计软件结构是概要设计阶段的核心工作。 主要应用软件设计的概念和原理,采用面 向数 据流的设计方法(结构化设计方法SD)将软件 划分层次和结构。 5)数据库设计 应用所学的数据库知识,对软件系统进行数据库设计。 6)制定测试计划 在软件开发的早期阶段考虑测试问题,能促使软件设计人 员在设计时注意提高软件的可测试性。 7)书写文档 8)审查和复审 技术审查通过之后,再由使用部门的负责人从管理角度进 行复审。 (5)设计时常用方法结构化设计方法(SD,Structured Design) 概念:是一种面向数据流的设计方法,主要 任务是采用模块化、自顶向下逐层细化、结构 化程序设计等技术手段,将需求分析阶段得到 的数据流图,通过一系列映射变换为结构图( SC,Structured Chart)。 结构图 l功能:描述系统的层次和分块结构关系,表达模块与模块之 间的联系和通信。 使用的符号:使用的符号: SD方法的步骤 l根据对数据流的分析,确定问题的类型:变 换型、事务型 l由数据流图导出初始结构图 l改进初始结构图,直到满足要求为止 l用“因子分解”方法定义软件的层次模块结构 l修改补充数据字典,并制定测试计划 信息沿输入通路进入系统,同时由外部形式变换 成内部形式,进入系统的信息通过变 换中心,经 加工处理以后再沿输出通路变换成外部形式离 开系统,当数据流图具有这些特 征时,这种信息 流叫变换流。 数据沿输入通路到达一个处理,这个处理根据输 入数据的类型在若干个动作序列中选 出一个来 执行。这一类数据流叫事务流。 (3)耦合与内聚 l作用:评价软件概要设计质量好坏的标准, 它们衡量系统设计中模块的划分是否合理, 模块是否独立性强。 l耦合:表示模块之间相互依赖的程度,是对 模块之间相互依赖程度的衡量。当然,模块 之间的耦合度越小,模块的独立性就越强。 l内聚:模块内部各成分之间相互关联的程度 。设计时追求的目标应尽量使每个模块做到 高内聚。 (4)设计模块时的一般原则 要求模块之间的耦合度要尽量弱,而内 聚要尽可能强。 模块间的耦合 数据耦合 同构耦合 控制耦合 公共耦合 内容耦合 模块间的内聚 功能内聚 顺序内聚 通信内聚 过程内聚 时间内聚 逻辑内聚 偶然内聚 用户界面的设计: 1.结构设计(Strucmre Design) 结构设计是界面设计的骨架。通过对用 户研究和任务分析,制定出产品的整体架 构。 2.交互设计(Interactive Design) 交互设计的目的是使产品让用户能简单使用。任何产品功能的实现都是通 过人和机器 的交互来完成的。因此,人的因素应作为设计的核心被体现出来 。交互设计的原则如下。 (1)有清楚的错误提示。误操作后,系统提供有针对性的提示。 (2)让用户控制界面。“下一步“、“完成“,面对不同层次提供多种选择,给不 同 层次的用户提供多种可能性。 (3)允许兼用鼠标和键盘。同一种功能,同时可以用鼠标和键盘,提供多种可 能性。 (4)允许工作中断。 (5)使用用户的语言,而非技术的语言。 (6)提供快速反馈。给用户心理上的暗示,避免用户焦急。 (7)方便退出。 (8)导航功能。随时转移功能,很容易从一个功能跳到另外一个功能。 (9)让用户知道自己当前的位置,方便其做出下一步的操作 3)视觉设计(Visual Design) 在结构设计的基础上,参照目标群体的心理模型和任务达成进行视觉设计。包括 色彩、 字体、页面等。视觉设计要达到用户愉悦使用的目的。视觉设计的原则 如下。 (1)界面清晰明了。允许用户定制界面。 (2)减少短期记忆的负担。让计算机帮助记忆 。 (3)依赖认知而非记忆。如打印图标的记忆、下拉菜单列表中的选择。 (4)提供视觉线索。图形符号的视觉的剌激:GUI(图形界面设计)。 (5)提供默认(default)、撤销(undo)、恢复(redo的功能。 (6)提供界面的快捷方式。 (7)尽量使用真实世界的描绘。如:电话、打印机的图标设计,尊重用户以往的使 用 经验。 (8)完善视觉的清晰度。条理清晰:图片、文字的布局和隐喻不要让用户去猜。 (9)界面的协调一致。如手机界面按钮排放,左键肯定,右键否定:或按内容摆放。 (10)同样功能用同样的图形。 (11)色彩与内容。整体软件不超过5个色系,尽量少用红色、绿色b近似的颜色表 示 近似的意思。 详细设计阶段的主要任务如下。 1.模块的逻辑结构设计 逻辑结构设计是结合所开发项目的具体要求和对每个模 块规定的功能,开发出模块处 理的详细算法,选择某种适 当的工具加以精确描述。 2.模块的数据设计 模块的数据设计是为在需求分析阶段的数据对象定义逻 辑数据结构,并且对不同的逻 辑数据结构进行不同的算 法设计,以便选择一个最有效的方案。同时,确定实现逻 辑数据 结构所必需的操作模块,以便了解数据结构的影 响范围。数据设计包括数据结构设计、数 据库结构设计 和文件设计等。 由于数据结构影响程序结构和过程复杂性的直接影响,从 而在很大程度上决定了软件 质量。 3.模块的接口设计 接口设计是分析软件各部分之间的联系,确定该软件的内部接 口和外部接口是否已经 明确定义。 4.模块的测试用例设计 要为每一个模块设计出一组测试用例,以便在编码阶段对模块 代码(即程序)进行预定 的测试,模块的测试用例是软件测试计 划的重要组成部分,通常应包括输入数据,期望的 输出数据等内 容。 5.模块的其他设计 根据软件系统的具体的要求,还可能进行以下设计:网络系统设 计、输入/输出格式的 设计、系统配置的设计等。 6.编写“详细设计说明书“ 详细设计的原则 1.模块的逻辑描述要清晰易懂、正确可靠 详细设计的结果基本上决定了最终的程序代码的质 量。由于详细设计的蓝图是给后 续阶段的工作人员 看的,所以模块的逻辑描述正确可靠,是软件设计正确 的前提。详细设 计结果的清晰易懂主要有两个方面 的作用:一是易于编码的实现,二是易于软件的测试和 维护。 如果详细设计易于理解,又便于测试和排除所发现的 错误,就能够有效地在开发期间 消除在程序中隐藏的 绝大多数故障,使得程序可以短到正确稳定的运行,极 大地减小运行 期间软件失效的可能性,大大提高软件 的可靠性。 2 采用结构化设计方法 改善控制结构,降低程序复杂程度,提高程序的可读性 、可测试性和可维护性。采用自顶向下逐步求精的方法 进行程序设计,一般采用顺序、选择和循环3种结构, 确保程序的静态和动态结构执行情况相一致,保证程序 的容易理解。 3 选择恰当工具进行各模块算法的描述 程序流程图PFC(Program F1ow Chart) NS图 PAD图 判定表 判定树 PDL 详细设计方法的选择 在详细设计中,对一个设计方法选择的原则是:过程描述易于理解、复审和维护,进 而过程描述能够自然地转换成代码,并保证代码与详细设计完全一致。为了达到这 一原则, 要求选择设计工具时应考虑以下几个方面。 (1)简洁、易编辑:设计描述易学、易用和易读,支持后续设计和维护以及在维护阶 段对设计进行的修改。 (2)模块化:支持模块化软件的开发,并提供描述接口的机制。 (3)强制结构化:详细设计的方法应该能够强制设计者采用结构化构件,有助于采用 优秀的设计。 (4)数据表示:详细设计具备表示数据作用范围的能力。 (5)机器可读性:设计描述能够直接输入,并且很容易被计算机辅助设计工具识别。 (6)自动生成报告:设计者通过分析详细设计的结果来改进设计,通过自动处理器产 生有关分析报告,进而增强设计者在这方面的能力。 (7)编码能力:可编码能力是一种设计描述,研究代码自动转换技术可以提高软件效 率和减少出错率。 (8)逻辑验证:软件测试最高目标是能够自动检验设计逻辑的正确性,所以设计描述 应易于进行逻辑验证,进而增强可测试性。 6、编码阶段 把软件设计的结果翻译成计算机可以运 行的形式,即用某种程序设计语言书写程 序 测试的特点: 挑剔性 不完全性 经济性 测试的技术 静态测试 主要对程序进行控制流、数据流、接口等 方面的分析。采用人工方式。 动态测试 让计算机执行一些测试用例,使程序在执 行过程中暴露错误。分为白盒测试和黑盒测试。 自动测试 用一些测试软件取代人工操作对程序进行自动化 的测试操作。 典型测试方法 白盒测试 软件的白盒测试是把测试对象看作一个 透明的盒子,它允许测试人员利用程序内 部的逻辑结构及有关信息,设计或选择测 试用例,对程序所有逻辑路径进行测试。 有两种测试方法: l逻辑复盖测试法(logic coverage testing) l路径测试法(path testing) 逻辑复盖测试法(logic coverage testing) l用流程图图来设计测试设计测试 用例 l逻辑逻辑 复盖测试测试 的5种标标准 发 现 错 误 的 能 力 弱 强 语句覆盖每条语句至少执行一次 判定覆盖每一判定的每个分支至少执行一次 条件覆盖每一判定中的每个条件,分别按“真” 、“假”至少各执行一次 判定/条件 覆盖 同时满足判定复盖和条件复盖的要求 条件组合 覆盖 求出判定中所有条件的各种可能组合 值,每一可能的条件组合至少执行一 次 黑盒测试法 黑盒测试相当于将程序封装在一个黑盒子里, 测试人员并不知道程序的具体情况,他只了解 程序的功能、性能及接口状态等,黑盒测试主 要在软件的接口处进行。其目的是为了能发现 以下几类错误: l是否有遗漏或不正确的功能,性能上是否满足要求。 l输入能否被正确接收,能否得到预期的输出结果。 l能否保持外部信息的完整性,是否有数据结构错误。 l是否有初始化或终止性错误。 一般有四种方法

温馨提示

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

评论

0/150

提交评论