计算机软件基础ppt课件.ppt_第1页
计算机软件基础ppt课件.ppt_第2页
计算机软件基础ppt课件.ppt_第3页
计算机软件基础ppt课件.ppt_第4页
计算机软件基础ppt课件.ppt_第5页
已阅读5页,还剩43页未读 继续免费阅读

下载本文档

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

文档简介

第12章软件工程基础 12 1 1软件的定义与特点1 软件 software 的定义计算机软件是计算机系统中与硬件相互依存的另一部分 应包括程序 实现此程序功能所采取的方法 规则以及与其相关的文档和在机器上运行它所需要的数据等 软件在开发 生产 维护合使用等方面与硬件相比存在着明显差异 2 软件具有以下特点 1 软件是功能 性能相对完善的程序系统 软件不仅是程序 还包括说明其功能 性能的说明 文档 2 软件的生产与硬件不同 没有明显的制造过程 是具有使用性能的软设备 3 软件的开发 运行对计算机系统具有依赖性 4 软件是只有过时而无 磨损 的商品 5 软件开发涉及诸多的社会因素 12 1软件工程的基本概念 12 1 2软件危机与软件工程1 软件危机 软件危机是指在计算机软件的开发和维护过程中所遇到的诸如成本 质量 生产率等一系列严重问题 主要表现 1 软件开发成本和进度难以控制 开发成本高 很少有在预定的成本预算内完成的 进度无法控制 周期拖的很长 2 软件质量难以保证 出错率高 3 软件产品维护困难 维护人员和费用不断增加 甚至出现不可维护 4 软件开发生产率的提高与硬件的发展和应用需求差距大 2 软件工程软件工程是采用工程的概念 原理和方法来指导软件的开发和维护 目的是解决软件开发中的问题 提高软件的生产率和质量 促进软件的发展 软件工程包括3个要素 即方法 工具和过程 方法是完成软件工程项目的技术手段 工具用于支持软件的开发 管理和文档生成 过程是对软件开发各个环节的控制 管理 软件工程方法是完成软件工程项目的技术手段 它支持项目计划和估算 系统和软件需求分析 软件设计 编码 测试和维护 软件工程使用的软件工具是人类在开发软件的活动中智力和体力的扩展和延伸 它自动或半自动地支持软件的开发和管理 支持各种软件文档的生成 12 2 1软件的生命周期软件从产生 发展到最后被淘汰的全过程 可大致分为几个阶段 问题定义 可行性研究与制定计划 需求分析 概要设计 详细设计 编码 测试及运行维护 生命周期的主要活动阶段 1 问题定义 确定系统 解决什么问题 明确任务 2 可行性研究与制定计划 在对软件系统进行调研和可行性论证的基础上制定初步的项目开发计划 3 需求分析 指用户对待开发软件系统功能 行为 性能 设计约束等方面提出来的需求进行分析并给出详细定义 编写软件规格说明书及初步用户手册 提交评审 12 2软件生命周期与开发模型 4 软件设计 分概要设计和详细设计 给出软件的结构图 模块划分 功能的分配及处理流程 5 编码 完成程序的编码 6 测试 完成系统的测试工作 7 运行和维护 软件交付用户运行使用 并在使用中不断维护 根据用户提出的要求进行必要和可能的扩充与修改 12 2 2软件开发模型1 瀑布模型按照软件生命周期的划分 明确规定每个阶段的任务 并且规定了它们自上而下 互相衔接的固定次序 如同瀑布流水 逐级下落 使用范围 用户需求比较明确 开发技术比较成熟 工程管理比较严格的情况 如操作系统 编译系统 数据库管理系统 卫星图象处理系统等系统软件 此模型适合于面向过程的软件开发方法 需求分析 设计 运行 维护 测试 编码 计划 要解决什么问题 是否有可行解 确定目标系统的功能和信息 确定系统的实现方案及软件模块功能 采用某种程序设计语言及结构程序设计技术书写程序 在软件投入运行之前 尽可能多地发现错误 即对重要的执行通路进行测试 软件交付使用后 为了改正错误或满足需要而修改软件的过程 全面了解用户需求 了解业务流程 逻辑模型 做什么 物理模型 怎么做 2 演化 原型 模型演化模型开发方法不要求从一开始就有一个完整的软件需求定义 往往是用户自己对软件需求的理解还不甚明确 故可以从部分需求定义出发 先建立一个不完全的系统 通过测试运行系统取得经验和反馈 加深对软件需求的理解 进一步完善和扩充系统 如此反复进行 直至软件人员和用户对所设计完成的软件满意为止 适用范围 需求比较模糊或随时间变化的系统 如商业信息处理系统 决策支持系统 用快速原型法开发软件的 概括地确立用户的需求 根据系统的主要功能 建立原型系统 评价 使用原型系统 修改原型系统 转变成最佳的目标系统 软件生存期的演化模型 用户满意否 N Y 3 螺旋模型螺旋模型是瀑布模型与原型模型的结合 不仅体现了两个模型的优点 而且还增加了新的 风险分析 部分 由需求定义 风险分析 工程实现 评审4个部分组成 软件开发过程每迭代一次 软件开发就推进一个层次 系统又生成一个版本 而软件开发的时间和成本又有了新的投入 最后总能得到一个用户满意的版本 在实际开发中 只有降低迭代次数 减少每次迭代的工作量 才能降低软件开发的时间和成本 12 3软件工程的目标与原则软件工程的目标在给定成本 进度的前提下 开发出具有有效性 可靠性 可理解性 可维护性 可重用性 可适应性 可移植性 可追踪性和可操作性且满足用户需求的软件产品 软件工程的原则为了达到软件工程的目标 在软件开发过程中 必须遵循软件工程的基本原则 基本原则包括 抽象 信息隐蔽 模块化 局部化 确定性 一致性 完备性和可验证性 抽象 抽取事物最基本的特性和行为 忽略本质细节 采用自顶向下 逐步细化的方法 控制软件开发过程的复杂性 信息隐蔽 采用封装技术 将程序模块的实现细节隐藏起来 使模块接口尽量简单 模块化 模块是程序中相对独立的成分 一个独立的编程单位 应该有良好的接口定义 模块大小要适中 局部化 要求在一个物理模块内集中逻辑上相互关联的计算资源 保障模块间具有松散的偶合关系 模块内部有较强的内聚性 小概念 衡量模块独立的两个标准 耦合和内聚耦合 指模块之间联系的紧密程度 耦合度越高 则模块的独立性越差 在设计软件时 应该追求尽可能松散耦合的系统 内聚 是对模块内各元素彼此结合的紧密程度的度量 内聚度越高越好 确定性 软件开发过程中所有的概念的表达应是确定的 无二义性且规范的 一制性 包括程序 数据和文档的整个软件的各模块 应使用已知的概念 符号和术语 完备性 软件系统不丢失任何部分 完全实现系统所需的功能 可验证性 系统应遵循易检查 易评测 易评审的原则 确保系统的正确性 12 4软件开发方法主要有3种 面向过程的方法 面向对象的方法 面向数据的方法 12 4 1面向过程的方法1 面向过程的方法简介面向过程的方法又称为结构化的方法 习惯上称为结构化分析 SA 结构化设计 SD 结构化编程 SP 结构化测试 ST 和结构化维护 SM 包括面向可维护性和可设计性设计的Parmas方法和面向数据结构设计的Jackson方法等 支持这些方法的是面向过程的结构化编程语言 基本特点 分析设计中强调 自顶向下 逐步求精 编程实现强调程序的 单入口和单出口 程序的执行过程不由用户控制 完全由程序控制 此方法在国内曾经十分流行 应用广泛 2 面向过程方法开发过程 1 制定开发计划确定要开发软件的目标 并对资源分配 进度安排等作出合理计划书 参加人员 用户 项目负责人 系统分析员等 生成的文档 项目计划书 2 可行性论证在系统开发前 对整个系统开发的总体目标 时间与周期 人员安排 投资情况等作出客观的分析与评价 产生的文档 可行性报告 可行性分析包括以下三方面内容 经济可行性技术上的可行性社会可行性 3 需求分析需求分析的任务 确定系统的要求系统功能要求系统性能要求系统的运行要求系统将来可能提出的要求安全 保密性及可靠性方面的要求分析系统的数据要求分析系统的基本元素 数据之间的关系及数据量等 然后导出系统的逻辑模型 修正开发计划根据在分析过程中获得的对系统的更深入具体的了解 可以比较准确地估计系统的成本和进度 修正以前制定的开发计划 编写需求分析报告 4 概要设计概要设计的内容 划分子系统 代码设计 设计规范制定 功能结构图设计 系统物理配置方案设计等 功能结构图 按功能从属关系画成的图表 图中的每一框称作一个功能 例 库存管理功能结构图 工资管理系统功能结构图 5 详细设计详细设计的主要内容 数据存储文件设计 输出设计 输入设计 编写程序模块设计说明书等 输出设计 输出设计的内容 有关输出信息方面的内容 包括使用者 使用目的 报告量 使用周期 有效期 复写份数等 输出信息的内容 包括输出项目 位数 数据形式 文字 汉字 输出介质 如输出到磁盘还是磁带上 输出用纸是专用还是通用白纸 输出设计的原则 方便使用者 要考虑计算机的硬件功能 要考虑原系统的输出格式 如有修改 应与有关部门协商 征得用户同意 对打印字域的大小要根据打印机的最大列数认真设计 并在计算机上试打印出样品 认真修改后才能正式使用 输出表格要考虑到系统发展的需要 例如是否有必要在输出表中留出备用项目 输入设计 输入设计的内容 输入设计首先要确定输入设备的类型和输入介质 原始单据的格式设计 设计原始单据的原则便于填写 减少填写量 版面排列要有条不紊 便于归档 如单据大小要标准化 留装订位置等 简化和减轻输入操作 采取的措施如采用人 机对话方式 输入数据的校核工作由程序保证 减少数据冗余度等 格式保证输入精度 6 软件编码把系统设计的结果转化成某种高级语言书写的程序代码 选择一种好的语言 具有良好的程序设计习惯是软件编码阶段成功的关键 应注意如下几方面 1 程序内部文档2 语句构造3 输入输出设计4 程序的效率 7 软件测试软件测试的目标 采用特定的测试数据 对软件的各项功能进行测试验证 找出那些尚未发现的错误 提高软件的可靠性 软件测试的原则 测试工作不应由开发软件的个人或小组承担 应按测试计划 由特定的测试小组来完成 软件测试的方法 黑盒测试法 把程序看成是一个黑盒子 完全不考虑程序的内部结构和处理过程 只对程序的接口进行测试 检查程序的功能是否适当的接受数据输入并能产生正确的输出信息 白盒测试法 把程序看成一个透明的白盒子 要求测试人员完全了解程序内部的结构和处理过程 按照程序内部的逻辑来测试 检查程序中的每条路是否都能正确工作 测试数据的种类 正常数据异常数据错误数据 8 软件维护定义 指在软件已经交付使用之后 为了改正错误或满足新的需要而修改软件的过程 软件维护的必要性 改正运行中新发现的软件错误和设计上的缺陷 适应软件功能需求的变化 增加软件的功能 提高软件的性能 使已运行的软件适应特定的硬件 软件的工作环境或已变动的数据文件 使软件的功能得到必要的扩充 软件维护分为两类 面向缺陷维护 程序级维护 面向功能性维护 设计级维护 缺陷性维护的条件 软件产品能够正常运转 可以满足用户的功能需求 个别地方存在缺陷 用户感到不方便 不影响大局 维护的方法只需修改程序代码 不用修改数据结构 设计 功能性维护的条件 软件产品在功能 性能 接口上存在某些不足 不能满足用户的需要 需要增加某些功能 不维护 就不能正常运转 维护的方法是不但要修改数据结构 又要修改编码 20年来软件维护成本的变化 人力资源分布 世界上90 的软件人员在从事系统的维护工作 10 开发新系统 3 结构化分析与结构化设计方法简介结构化分析方法简称SA方法 是面向数据流进行需求分析的方法 该方法使用数据流图 DFD 和数据字典 DD 的描述工具 适合于数据处理类型软件的需求分析 1 数据流图 是一种能全面地描述信息系统逻辑模型的主要工具 它可以用少数几种符号综合地反映出信息在系统中的流动 处理和存储情况 外部实体数据流处理 功能 数据存储 库存管理数据流程图 2 数据字典建立数据字典是为了对数据流图上各个元素作出详细的定义和说明 DFD配以DD 就可以从图形和文字两个方面对系统的逻辑模型进行描述 从而形成一个完整的说明 数据字典的内容包括 数据项 数据结构 处理逻辑 数据存储 外部实体 数据存储定义数据存储编号 S1数据存储名称 库存台帐简述 存放产品的库存量和单价数据存储组成 产品代码 产品名称 单价 库存量关键字 产品代码相关联的处理 P1 P2 结构化设计方法 StructureDesign 面向数据流的设计方法 可以很方便地从数据流图表示的信息转换成系统结构图 基本成分 A B 表示模块 表示已有模块 表示模块A调用模块B 表示数据信息 表示控制信息 表示调用 面向对象方法具有以下四个要点认为客观世界是由各种对象组成的 任何事物都是对象 复杂的对象可以由比较简单的对象以某种方式组合而成 所有对象都可划分成各种对象类 class 每个类都定义了一组数据和方法 按照子类与父类的关系 可把若干个对象类组成一个层次结构的系统 通常下层的子类完全具有上层父类的特性 这种现象称为继承 对象彼此之间仅能通过传递消息互相联系 12 4 2面向对象的开发方法 面向对象程序设计的基本概念 对象 描述该对象属性的数据以及可以对这些数据施加的所有操作封装在一起构成的统一体 每个对象就是一个微型程序 有自己的数据 操作 功能和目的 对象 数据 方法 行为 标识 对象的名称以区别其他对象数据 对象的属性或状态方法 作用于数据上的操作以电视机为例数据 种类 品牌 外观 大小 颜色 产地等 方法 有打开 关闭 调节亮度等行为或操作 面向对象的软件开发过程 面向对象分析 OOA 面向对象设计 OOD 面向对象编程 OOP 面向对象测试 OOT 1 面向对象分析 OOA OOA包括需求分析和需求模型化两个部分 其主要作用是明确用户的需求 并用标准化的面向对象模型来规范地表达这一需求 最后形成面向对象的分析模型 它是系统设计的依据 分析主要明确干什么 What 面向对象分析的主要内容 识别出问题域中的对象 并分析它们之间的相互关系 最终建立起问题域的对象模型 动态模型和功能模型 其中 对象模型是最基本 最重要 最核心的 OOA的基本步骤 确定问题域识别对象和类确定对象的属性确定对象的服务识别对象 类之间的关系 对象模型 对象模型是描述系统静态结构的工具 它用对象模拟客观世界中的实体 并将实体之间的关系映射到对象的关系上 描述对象模型的图形符号 表示 关系 的图形符号 整体 部分 关系 一般 特

温馨提示

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

最新文档

评论

0/150

提交评论