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

下载本文档

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

文档简介

程序设计基础理论 与 软件工程理论 姜育民 1 程序设计基础理论内容提要 程序设计方法和风格 结构化程序设计 面向对象的程序设计 2 程序设计方法和风格 如何形成良好的程序设计风格 1、源程序文档化; 2、数据说明的方法; 3、语句的结构程序应该简单易懂,语句构造应该简单直接; 4、输入和输出 注释分序言性注释和功能性注释,语句结构清晰第一,效率第二。 数据说明风格 详细说 明 次序应规范化 使数据说明次序固定,使数据的属性容易查找 ,也有利于测试 、排错和维护 变量安排有序化 当多个变量出现在同一个说明语句中时,变量 名应按字母顺序排序,以便于查找 使用注释 在定义一个复杂的数据结构时,应通过注解来 说明该数据结构的特点 3 结构化程序设计 结构化程序设计的四条原则 1.自顶向下;2. 逐步求精; 3.模块化; 4.限制使用goto语句。 结构化程序设计的基本结构和特点 1)顺序结构:一种简单的程序设计,最基本、最常用 的结构; 2)选择结构:又称分支结构,包括简单选择和多分支 选择结构,可根据条件,判断应该选择哪一条分支来执行相 应的语句序列; 3)循环结构:可根据给定条件,判断是否需要重复执 行某一相同程序段。 结构化程序设计主要强调程序的易读性 4 面向对象的程序设计(一) 面向对象程序设计方法涵盖的基本要素 对象、对象属性与方法;类、继承性、封装性、多态性等。 类与对象 类是指具有共同属性、共同方法的对象的集合。 对象是系统中用来描述客观事物的一个实体,是构成系的 一个基本单位 类是对象的抽象,对象是类的一个实例。类是对象的抽象,对象是类的一个实例。 类 类(性质) 继承性 封装性 多态性 单继承和多重继承 同样的消息被不同的对象接受时可导致完 全不同的行动的现象 隐蔽类信息 5 面向对象的程序设计(二) 对象 类包含类属性与方法 对象的基本特点:1)标识惟一性;2)分类性;3)多态性; 4)封装性(隐蔽类信息);5)模块独立性好。 对象与对象 消息:是一个实例(对象)与另一个实例(对象)之间传递的 信息。 消息的组成包括 1、接收消息的对象的名称;2、消息标 识符,也称消息名;3、零个或多个参数。 实例化 对象属性与方法 类类 实例化 对象 1 对象 2 对象 3 对象 数据 交互 消息消息 6 面向对象的程序设计(三) 面向对象方法的优点: 与人类习惯的思维方法一致; 稳定性好; 可重用性好; 易于开发大型软件产品; 可维护性好。 7 软件工程理论内容提要 软件工程的基本概念 软件工程与软件的生命周期 结构化分析方法 结构化设计方法 软件测试 程序的调试 8 软件工程的基本概念 软件定义与软件特点 计算机软件是计算机系统中与硬件相互依存的另一部分 ,包括程序、数据及相关文档的完整集合。 软件由两部分组成: 1、机器可执行的程序和数据 2、机器不可执行的,与软件开发、运行、维护、 使用等有关的文档 软件的特点包括: (1)软件是一种逻辑实体; (2)软件的生产与硬件不同,它没有明显的制作过程; (3)软件在运行、使用期间不存在磨损、老化问题; (4)软件的开发、运行对计算机系统具有依赖性,受计算机系统的限制,这 导致了软件移植的问题; (5)软件复杂性高,成本昂贵; (6)软件开发涉及诸多的社会因素。 9 软件工程的基本概念 软件的分类: 软件按功能分为应用软件、系统软件、支撑软件(或工具软件)。 思考题: 软件按功能可以分为:应用软件、系统软件和支撑软件(或工具软件)。下面 属于应用软件的是_。 A、编译程序 B、操作系统 C、教务管理系统 D、汇编程序(C) 什么是软件工程 软件工程提出的背景:软件危机 软件危机主要表现在成本、质量、生产率等问题。 软件工程是应用于计算机软件的定义、开发和维护的一 整套方法、工具、文档、实践标准和工序。 软件工程包括3个要素:方法、工具和过程。 10 软件工程过程与软件的生命周期 软件工程过程 软件工程过程:是把输入转化为输出的一组彼此相关 的资源和活动。 软件工程过程的两方面内涵: 其一:软件工程过程是指为获得软件产品,在软件工具支持下由软件工 程师完成的一系列软件工程活动。包含4种基本活动(PDCA): 1)P(Plan) 软件规格说明;2)D(Do) 软件开发; 3)C(Check)软件确认; 4)A(Action)软件演进(为满足 客户的变更要求软件必须在使用过程中演进) 其二:从软件开发的观点看,它就是使用适当的资源(包括人员、硬 软件工具、时间等),为开发软件进行的一组开发活动,在过 程结束时将输入(用户要求)转化为输出(软件产品)。 故此:软件工程的过程是将软件工程的方法和工具综合起来,以达到 合理、及时地进行计算机软件开发的目的。软件工程过程应确 定方法使用的顺序、要求交付的文档资料、为保证质量和适应 变化所需要的管理、软件开发各个阶段完成的任务。 11 软件工程过程与软件的生命周期 软件工程的生命周期 软件产品从提出、实现、使用维护到停止使用退役的过程。 3个时期,8个主要阶段 软件定义期 问题定义问题定义 可行性研究可行性研究 需求分析需求分析 软件开发期 概要设计概要设计 详细设计详细设计 实现实现 测试测试 使用和维护使用和维护 退役 运行维护期 12 软件工程过程与软件的生命周期 软件工程的目标及相关基本理论 软件工程的总体目标:在给定成本、进度的前提下,开 发出具有有效性、可靠性、可理解性、可维护性、可重用性 、可适应性、可移植性、可追踪性和可互操作性且满足用户 需求的产品。 软件工程的基本目标:付出较低的开发成本;达到要 求的软件功能;取得较好的软件性能;开发软件易于移植; 需要较低的费用;能按时完成开发,及时交付使用。 基于软件工程的目标,软件工程的理论和技术性研究的 内容主要包括:软件开发技术和软件工程管理。 13 结构化分析方法 结构化分析方法的定义 结构化分析方法就是使用数据流图(DFD:Data Flow Diagram) 数据字典(DD:Data Dictionary)、结构化语言、判断表和判 断树等工具、来建立一种新的、称为结构化规格说明的 目标文档。 结构化分析方法的实质是着眼于数据流自顶向下,逐层 分解,建立系统的处理流程,以数据流图和数据字典为 主要工具建立系统的逻辑模型。 结构化方法的核心和基础是结构化程序设计理论。 需求分析方法有 1)结构化需求分析方法; 2)面向对象的分析的方法。 从需求分析建立的模型的特性来分:静态分析和动态分析。 14 结构化分析方法 结构化分析方法常用工具简介 A、数据流图:数据流图是描述数据处理过程的工具。 (圆):加工(转换)。输入数据经过加工变换产生输出 (箭头):数据流。沿箭头方向传送数据的通道,一般在旁边标注数据流名 (平行的二条直线),存储文件(数据源)表示处理过程中存放各种数据 的文件。 (长方形):表示系统和环境的接口,属于系统之外的实体。 B、数据字典:数据字典是对数据流图中所有元素的定义的集合,是结构化 分析的核心。 数据字典中有4种类型的条目:数据流、数据项、数据存储和加工。 C、判定表:有些加工的逻辑用语言形式不容易表达清楚,而用表的形式则 一目了然。如果一个加工逻辑有多个条件、多个操作,并且在不同的 条件组合下执行不同的操作,那么可以使用判定表来描述。 判定表由四部分组成:基本条件,条件项,基本动作,动作项。 D、判定树:使用判定树进行描述时,应先从问题定义的文字描述中分清哪 些是判定的条件,哪些是判定的结论,根据模仿材料中的连接词找出判 定条件之间的从属关系、并列关系、选择关系,根据它们构造判定树。 15 结构化分析方法 软件需求规格说明书(SRS,software Requirement Specification)是需求分析阶段的最后成果,是软件开发中的文档之一。 软件需求规格说明书的特点 正确性:体现待开发系统的真实要求。 无歧义性:对每一个需求只有一种解释,其陈述具有惟一性。 完整性:包括全部有意义的需求,功能的、性能的、设计的、约 束的,属性或外部接口等方面的需求。 可验证性:描述的每一个需求都是可以验证的,即存在有限代价 的有效过程验证确认。 一致性:各个需求的描述矛盾。 可理解性:需求说明书必须简明易懂,尽量少包含计算机的要领 和术语,以便用户和软件人员都能接受它。 可修改性:每一个需求的来源、流向是清晰的,当产生和改变文 件编制时,可以方便地引证每一个需求。 可追溯性。 16 结构化设计方法 从技术的角度分析软件设计 从技术的角度分析软件设计包括软件 结构设计、数据设计、接口设计、过程设计。 从工程管理的角度分析软件设计 从工程管理的角度来看,软件设计分为 概要设计和详细设计两部分。 软件设计的基本目标是用比较抽象概括的方式确定目标 系统如何完成预定的任务,软件设计是确定系统的物理模型 。 软件设计是开发阶段最重要的步骤,是将需求准确地转 化为完整的软件产品或系统的唯一途径。 17 结构化设计方法 软件设计的基本原理 软件设计的一般过程:软件设计是一个迭代的过程;先进行 高层次的结构设计;后进行低层次的过程设计;穿插进行数 据设计和接口设计。 1、软件设计中应遵循的基本原理和与软件设计有关的概念 抽象:抽象是一种思维工具,就是把事物本质的共同特性提取 出来而不考虑其他细节。 模块化:把一个待开发的软件分解成若干个小的简单的部分。 信息隐蔽:在一个模块内包含的信息(过程或数据),对于不 需要这些信息的其他模块来说是不能访问的。 模块独立性:每个模块只完成系统要求的独立的子功能,并且 与其他模块的联系最少且接口简单。是评价设计 好坏的重要度量标准。衡量软件的模块独立性作 用耦合性和内聚性两个定性的度量标准。 18 结构化设计方法 2、衡量软件模块独立性使用耦合性耦合性和内聚性内聚性两个定性的 度量标准 内聚性:内聚性是一个模块内部各个元素间彼此结合的紧密程度的度 量。内聚是从功能角度来度量模块内的联系。 耦合性:耦合性是模块间互相连接的紧密程度的度量。耦合性取决于 各个模块之间接口的复杂度、调用方式以及哪些信息通过接 口。耦合可以分为下列几种,它们之间的耦合度由高到低排 列为: 内容耦合、公共耦合、外部耦合、控制耦合、标记耦合、 数据耦合、非直接耦合。非直接耦合独立性最强。 在程序结构中,各模块的内聚性越强,则耦合性越弱。 一般较优秀的软件设计,应尽量做到高内聚,低耦合, 即减弱模块之间的耦合性和提高模块内的内聚性,提高模块的 独立性。 19 结构化设计方法 软件概要设计的基本任务 1)设计软件系统结构;2)数据结构及数据库设计; 3)编写概要设计文档;4)概要设计文档评审。 软件设计的基本图例介绍 结构图的元素: 矩形表示一个模块,在矩形内注明模块的功能和名字 箭头表示模块间的调用关系。 带实心圆的箭头表示传递的是控制信息 带空心圆的箭头表示传递的是数据 结构图中常有的模块类型: 传入模块、传出模块、变换模块、协调模块。 结构图的基本形式:基本形式、顺序形式、重复形式、选择形式。 20 结构化设计方法 典型的数据流类型 A、变换型。将数据流分成三个部分:输入数据、中心变换和 输出数据三个部分。 B、事务型。特点是:接受一项事务,根据事务处理的特点和 性质,选择分派一个适当的处理单元,然后给出结果。 软件详细设计 详细设计:是为软件结构图中的每一个模块确定实现算法和局 部数据结构,用某种选定的表达工具表示算法和数据结构的细 节。 常用的设计工具有: 图形工具:程序流程图,N-S图(程序盒图),PAD图(问题分析图: Problem Analysis Diagram), HIPO图(分层和输入-处理-输出) 表格工具:判定表 语言工具:PDL(伪码) PDL(Program Design Language) 21 软件测试 软件测试的定义及目的 软件测试定义:使用人工或自动手段来运行或测定某个 系统的过程。 软件测试的目的:其目的在于检验它是否满足规定的需 求或是弄清预期结果与实际结果之间的差别。 软件测试的准则 所有测试应追溯到需求 严格执行测试计划,排除测试的随意性 充分注意测试中的群集现象 程序员应避免检查自己的程序 穷举测试不可能 妥善保存测试计划、测试用例、出错统计和最终分析报告, 为维护提供方便 22 软件测试 软件测试技术与方法综述 1、 静态测试与动态测试 2、白盒测试方法与测试用例设计 3、黑盒测试方法与测试用例设计 静态测试包括代码检查、静态结构分析、代码质量度量。不实际运行 软件,主要通过人工进行。 动态测试:是基于计算机的测试,主要包括白盒测试方法和黑盒测试方法 。 白盒测试也称结构测试或逻辑驱动测试。 主要的方法有:逻辑覆盖(包括语句覆盖、路径覆盖、判定覆 盖、条件覆盖和判断条件覆盖)、基本路径测试等 黑盒测试方法也称功能测试或数据驱动测试,是对软件已经实现的 功能是否满足需求进行测试和验证。 黑盒测试方法主要有:等价类划分法(包括有效等价类和无效等价 类)、边界值分析法、错误推测法、因果图等,主要用于软件确认测试。 23 软件测试 软件测试的实施 1)单元测试 对模块进行测试,用于发现模块内部的错误。 2)集成测试 测试和组装软件的过程,主要用于发现与接口有 关的错误。集成测试包括的内容:软件单元的接 口测试、全局数据结构测试、边界条件和非法输 入的测试等。 集成测试分为:增量方式组装(包括自顶而下、 自底而上、自顶向下和自底向上的混合增量方 式)与非增量方式组装。 3)确认测试(验收测试)验证软件的功能和性能及其他特征是 否满足了需求规格说明中确定的各种需求,以及 软件配置是否完全、正确

温馨提示

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

评论

0/150

提交评论