




已阅读5页,还剩11页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第一章第一章 软件工程学概论软件工程学概论 1 软件危机产生的原因 软件危机产生的原因 软件本身的特点软件本身的特点 难于维护 逻辑复杂 软件开发与维护的方法不正确软件开发与维护的方法不正确 忽略需求分析重要性 轻视软件维护 课本表述 1 软件不同于硬件 它是计算机中的逻辑部件而不是物理部件 2 软件不同于一般程序 它的一个显著特点是规模庞大 而且程序的复杂性将规模 的增加而呈现指数上升 3 软件本身特有的特点确实给开发和维护带了一些客观困难 4 软件开发与维护有关的许多错误认识与做法有关 忽略需求分析 轻视软件维护 5 对用户要求没有完整准确的认识就匆忙开始着手编写程序 6 在软件不同阶段进行修改需要付出的代价是很不相同的 2 软件危机的表现 什么是软件危机 软件危机的表现 什么是软件危机 1 成本高 成本高 2 软件质量得不到保证 软件质量得不到保证 软件质量问题导致失败的软件项目非常多 3 进度难以控制 进度难以控制 项目延期比比皆是 由于进度问题而取消的软件项目较常见 只有一小部分的项目能够按期完成 4 维护十分困难 维护十分困难 软件维护的多样性 软件维护的复杂性 软件维护的副作用 3 克服软件危机 克服软件危机 1 1 管理的角度 管理的角度 软件开发过程的研究 文档的标准化以及人员的交流方式等 2 2 软件开发方法的研究 软件开发方法的研究 结构化软件开发方法 面向对象的开发 4 软件工程的定义 软件工程的定义 概括的说 软件工程师指导计算机软件开发和维护的一门工程学科 采用工程的概念 原理 技术和方法来开发和维护软件 把经过时间考验而证明正确的管理技术和当前能够 得到的最好的技术方法结合起来 以经济地开发出高质量的软件并有效地维护它 这就是 软件工程 1 软件工程就是建立和使用一套合理的工程原理 从而经济地获得可靠的 可以 在实际机器上高效运行的软件 2 把系统的 规范的 可度量的方法应用于软件开发 运行和维护的过程 也 就是把工程应用于软件 研究 中提到的途径 总之 软件工程是应用计算机科学 数学及管理科学等原理开发软件的工程 他借鉴 传统工程的原理 方法 以提高质量 降低成本为目的 5 软件工程的本质特性 软件工程的本质特性 1 关注与大型程序的构造 2 中心课题是控制复杂度 3 软件经常变化 4 开发软件的效率非常重要 5 和谐的合作是开发软件的关键 6 软件必须有效地支持它的用户 7 在软件工程领域中通常由具有一个文化背景的人替另外一种文化背景的人创造产 品 6 软件工程的基本原理 软件工程的基本原理 1 用分阶段的生命周期计划严格管理 2 坚持进行阶段评审 3 实行严格的产品控制 4 采用现代程序设计技术 5 结果应能清楚地审查 6 开发小组应该少而精 7 承认不断改进软件工程实践的必要性 软件工程学包含软件工程学包含 3 个要素 方法 工具和过程个要素 方法 工具和过程 7 软件生命周期 软件生命周期 1 概念 概念 软件生命周期由软件定义 软件开发和运行维护 也成软件维护 3 个时期组成 2 内容 内容 1 问题定义问题定义 回答 要解决的问题是什么 写出关于问题性质 工程目标和工程规模 的书面报告 2 可行性分析可行性分析 回答 对于问题是否有行得通的解决办法 即探索问题是否值得去解 是否有可行的办法 3 需求分析需求分析 确定 为了解决这个问题 目标系统必须做什么 确定目标系统必须具 备哪些功能 得到需求规格说明书 4 总体设计总体设计 回答 概括地说 应该怎样实现目标系统 确定程序由哪些模块组成以 及模间的关系 5 详细设计详细设计 回答 应该怎样具体地实现这个系统呢 确定实现模块功能所需要的算 法与数据结构 6 编码和单元测试编码和单元测试 写出正确的容易理解 容易维护的程序模块 然后仔细测试每个模块 7 综合测试综合测试 通过各种类型的测试 及相应的调试 是软件达到预定要求 8 软件维护软件维护 通过各种必要活动是系统持久地满足用户需求 8 生命周期模型 生命周期模型 1 瀑布模型 瀑布模型 传统瀑布模型特点 1 阶段间具有顺序性与依赖性 2 推迟实现的观点 3 质量保证的观点 瀑布模型 优点 1 可强迫开发人员使用规范的方法 例如 结构化技术 2 严格规定每个阶段必须提交的文档 3 要求每个阶段交出的所有产品都必须通过验证 缺点 1 瀑布模型是由文档驱动的 成为主要缺点 适用范围 适合于用户需求明确 完整 无重大变化用户需求明确 完整 无重大变化的软件项目开发 2 快速原型模型 快速原型模型 适用范围 用户不能给出完整 准确的需求说明 或者开发者不能确定算法的有效性 操作系统的适应性或人机交互的形式等情况 3 增量模型 增量模型 特点 1 反复的应用瀑布模型的基本成分和原型模型的迭代特征 每一个线型过程 产生一个 增量 的发布或提交 该增量均是一个可运行的产品 2 早期的版本实现用户的基本需求 并提供给用户评估的平台 优点 1 在较短时间内向用户提交可完成部分工作的产品 2 逐步增加产品功能可以使用户有较充裕的时间学习和适应新产品 从而 减少一个全新的软件可能给客户组织带来的冲击 缺点 1 软件体系结构必须是开放的 2 开发人员既要把软件系统看作整体 又要看成可独立的构件 相互矛盾 3 多个构件并行开发 具有无法集成的风险 4 螺旋模型 螺旋模型 基本思想 使用原型或其他方法来降低风险 适用范围 适用于内部开发大规模软件项目 优点 1 对可选方案和约束条件的强调有利于已有软件的重用 也有助于把软件质 量作为软件发的一个重要目标 2 减少了过多测试或测试不足 3 维护和开发之间并没有本质区别 缺点 1 风险驱动 需要相当丰富的风险评估经验和专门知识 否则风险更大 2 随着迭代次数的增加 工作量加大 软件开发成本增加 5 喷泉模型 喷泉模型 特点 喷泉模型是一种以用户需求为动力 以对象为驱动的模型 主要用于采用对 象技术的软件开发项目 该模型认为软件开发过程自下而上周期的各阶段是 相互迭代和无间隙的特性 6 Rational 统一过程统一过程 RUP 重复一系列周期 每个周期由一个交付给用户的产品结束 每个周期划分为 初始 细化 构造和移交四个阶段 每个阶段围绕着五个核心工作流 需求 分 析 设计 实现 测试 分别迭代 第二章第二章可行性研究可行性研究 1 概念 目的 概念 目的 用最小的代价在尽可能短的时间内确定问题是否能够解决 不是解决问题 而是 确定问题是否值得去解决 2 可行性研究任务可行性研究任务 了解客户的要求及现实环境 从技术 经济和社会因素等三方面研究并论证本软 件项目的可行性 编写可行性研究报告 制定初步项目开发计划 即对软件开发以后的行动方针提出建议 对软件开发以后的行动方针提出建议 3 研究内容研究内容 1 技术可行性 使用现有的技术能实现这个系统吗 2 经济可行性这个系统的经济效益能超过它的开发成本吗 3 操作可行性系统的操作方式在这个用户组织内行得通吗 4 法律可行性新系统开发是否会侵犯法藤 集体或国家利益 4 数据字典数据字典 1 内容 内容 1 数据流 2 数据流分量 即数据元素 3 数据存储 4 处理 2 作用 作用 对于数据流图中出现的所有被命名的图形元素在字典中作为一个词条加以定 义 使得每一个图形元素都有一个确切的定义 第三章第三章 需求分析需求分析 1 需求分析的任务需求分析的任务 1 确定对系统的综合要求 2 分析系统的数据要求 3 导出系统的逻辑模型 4 修正系统的开发步骤 2 获取需求的方法获取需求的方法 1 访谈 2 面向数据流自顶向下 3 简易的应用规模说明技术 4 快速建立软件模型 3 实体实体 关系图 关系图 层次方框图 层次方框图 和 和 IPO 图图 63 68 69 4 结构化分析模型结构化分析模型 数据流图 数据流图 描绘当数据在软件系统中移动时被变换的逻辑过程 指明系统具有的变换数 据的功能 是建立功能模型的基础 实体实体 联系图 联系图 描绘数据对象及数据对象之间的关系 用于建立数据模型 状态转换图 状态转换图 指明了作为外部事件结果的系统行为 描绘了系统的各种行为模式 称为 状 态 和在不同状态间转换的方式 是行为建模的基础 第四章第四章 总体设计总体设计 1 模块独立性与耦合性 模块独立性与耦合性 97 1 模块化 把程序划分成独立命名且可独立访问的模块 每个模块完成一个子功能 把 这些模块集成起来构成一个整体 可以完成指定的功能满足用户的需求 模块化的优点 1 使软件结构清晰 容易设计也容易阅读与理解 2 容易测试与调试 提高可靠性 3 提高软件的可修改性 4 有助于软件开发工程的组织管理 2 模块独立的重要性 有效的模块化 即具有独立的模块 的软件比较容易开发出来 独立的模块比较容易测试和维护 3 耦合 衡量不同模块彼此间互相依赖 连接 的紧密程度 耦合要低 即每个模块和 其他模块之间的关系要简单 1 数据耦合 数据耦合 两个模块之间通过参数交换信息 而且交换的信息仅仅是数 据 2 控制耦合 控制耦合 传递的信息中有控制信息 3 特征耦合 特征耦合 当把整个数据结构作为参数传递而被调用的模块只需要使用 其中一部分数据元素 4 公共环境耦合 公共环境耦合 两个或多个模块通过一个公共环境相互作用 5 内容耦合 内容耦合 出现一下情况之一 则为内容耦合 1 一个模块访问另一个模块的内部数据 2 一个模块不通过正常入口而转到另一个模块的内部 3 两个模块有一部分代码重叠 4 一个模块有多个入口 数据耦合 控制耦合 特征耦合 公共环境耦合 内容耦合 4 内聚 99 衡量一个模块内部各个元素彼此结合的紧密程度 内聚要高 每个模块完成 一个相对独立的特定子功能 信息隐藏 96 应该这样设计和确定模块 使得一个模块内包含的信息 过程和数据 对于不需要 这些信息的模块来说 是不能访问的 2 启发规则启发规则 1 改进软件结构提高模块独立性 2 模块规模应该适中 3 深度 宽度 扇入 扇出都应适中 4 模块的作用域应该在控制域之内 5 力争降低模块接口的复杂度 6 设计单入口 单出口模块 7 模块功能应该可以预测 3 层次图和层次图和 HIPO 图 图 102 4 面向数据流的设计方法 面向数据流的设计方法 104 1 概念 面向数据流设计就是把信息流映射成软件结构 信息流的类型决定了映射的方 法 信息流包括变换流 事物流 2 变换分析与事务分析 105 5 小结小结 i 进行软件结构设计遵循的最主要的原理是模块独立原理 ii 抽象和求精是一对互补概念 iii 软件工程师在实践中总结经验得出一些很有参考价值的启发式规则 iv 自顶向下逐步求精是进行软件结构设计的常用途径 v 用形式化的方法由数据流图映射出软件结构 第五章第五章 实现实现 1 选择程序设计语言选择程序设计语言 为了使程序容易测试和维护以减少软件的总成本 所选用的高级语言程序应该有 理想的模块化机制 以及可读性好的控制结构和数据结构 为了便于调试和提高软件 可靠性 语言特点应该是编译程序能够尽可能多地发现程序中的错误 为了降低软件 开发和维护的成本 选用的高级语言应该有良好的独立编译机制 第六章第六章 软件测试软件测试 2 测试的概念测试的概念 1 测试是为了发现程序中的错误而执行程序的过程 2 好的测试方案是极可能发现了至今为止尚未发现的错误的测试方案 3 成功的测试是发现了至今为止尚未发现的错误的测试 3 测试的过程与步骤 测试的过程与步骤 153 大型软件的测试过程基本由下述几个步骤组成 1 模块测试 单元测试 发现编码和详细设计的错误 2 子系统测试 3 系统测试 集成测试 4 验收测试 确认测试 5 平行运行 4 单元测试 单元测试 153 着重从下述 5 个模块进行测试 主要使用白盒测试技术 1 模块接口 2 局部数据结构 3 重要的执行通路 4 出错处理通路 5 边界条件 5 集成测试 集成测试 156 集成测试就是测试和组装软件的系统化技术 主要目标是发现与接口有关的问题 有两种集成策咯 1 自顶向下集成 2 自底向上集成 6 确认测试 确认测试 160 也称验收测试 它的目标是验证软件的有效性 通常使用黑盒测试法 7 白盒测试技术 白盒测试技术 162 白盒方法测试软件时设计测试数据的典型技术 1 逻辑覆盖逻辑覆盖 1 语句覆盖 2 判定覆盖 3 条件覆盖 4 判定 条件覆盖 5 条件组合覆盖 6 点覆盖 7 边覆盖 8 路径覆盖 2 控制结构测试控制结构测试 1 基本路径测试 2 条件测试 3 循环测试 8 黑盒测试技术 黑盒测试技术 171 黑盒测试力图发现下述类型的错误 1 功能不正确或遗漏了功能 2 界面错误 3 数据结构错误或外部访问数据库错误 4 性能错误 5 初始化和终止错误 黑盒测试用到的技术 1 等价划分 2 边界值分析 3 错误推测 第七章第七章 维护维护 1 维护的定义 维护的定义 189 所谓软件维护就是在软件已经交付使用周 为了改正错误或满足新的需要而修改 软件的过程 根据交付使用之后可能进行的 4 项活动具体定义软件维护 1 改正性维护改正性维护 纠正在使用过程中暴露出来的错误 诊断和改正错误的过程 2 适应性维护适应性维护 为了和变化了的环境适当地配合而进行的修改软件活动 3 完善性维护完善性维护 在使用软件的过程中增加新的功能或修改已有功能 还可能提出一般性的改 进意见的过程 4 预防性维护预防性维护 为了改进未来的可维护性与可靠性 或为了给未来的改进奠定更好的基础而 修改软件的过程 2 维护的过程 维护的过程 192 1 维护组织 2 维护报告 3 维护的事件流 4 保存维护记录 5 评价维护活动 3 小结小结 1 软件生命周期每个阶段的工作都和软件可维护性有密切关系 2 再工程过程可以在完成任意一个活动之后中止 第八章第八章 面向对象技术面向对象技术 1 面向对象方法学要点面向对象方法学要点 203 面向对象方法学的出发点和基本原则 是尽可能模拟人类思维方法 是开发软件 尽可能接近人类认识世界解决问题的方法与过程 2 面向对象方法学优点面向对象方法学优点 1 与人类习惯的思维方法一致 2 稳定性好 3 可重用性好 4 较易开发大型软件产品 5 可维护性好 3 对象模型对象模型 216 对象模型表示静态的 结构化的系统的 数据 性质 它是对模拟客观世界实体的 对象以及对象彼此之间的关系的映射 描述了系统的静态结构 4 动态模型动态模型 223 动态模型表示瞬时的 行为化的系统的 控制 性质 它规定了对象模型中的对象 的合法序列 5 功能模型功能模型 224 功能模型表示变化的系统的 功能 性质 他指明了系统应该 做什么 因此更直 接反映了用户对目标系统的需求 6 三种模型之间的关系三种模型之间的关系 228 功能模型指明了系统应该 做什么 动态模型明确规定了什么时候 即在何种状 况下接受什么时间的触发 做 对象模型则定义了做事情的实体 在面向对象方法学中 对象模型是最基本的 它为其他两种模型奠定了基础 人 们依靠对象模型完成了 3 中模型的集成 下面扼要地叙述 3 种模型之间的关系 三种模型描述了系统的不同方面 三种模型描述了系统的不同方面 对象模型对象模型动态模型动态模型功能模型功能模型 对象的静态结构对象的静态结构 及相互关系及相互关系 与时间和顺序有与时间和顺序有 关的系统性质关的系统性质 与值的变化有关与值的变化有关 的系统性质的系统性质 描述系统的数据描述系统的数据 结构结构 控制结构控制结构系统的功能系统的功能 干事的主体干事的主体 什么时候干什么时候干 干什么干什么 7 其他其他 复杂问题 大型系统 的对象模型通常由下述 5 个层次组成 主题层 类与对象 层 结构层 属性层 服务层 主题层 类与对象层 结构层 属性层 功能模型与对象模型的关系 对象模型描述了功能模型中的动作对象 数据存储以及数据流结构 功能模型中的处理对应于对象模型中的操作 动态模型与对象模型的关系 状态转换驱使行为发生 这些行为在 DFD 中被映射成处理 它们
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年下半年广东佛山市规划城建档案馆佛山市城市规划展览馆招考易考易错模拟试题(共500题)试卷后附参考答案
- 2025年下半年广东事业单位招聘高校应届毕业生阳江市场监督管理局所属事业单位拟聘用重点基础提升(共500题)附带答案详解
- 呼和浩特市人民医院脑电图室感染控制考核
- 2025年下半年广东中山市三乡镇人民政府所属事业单位招聘11人(第二期)重点基础提升(共500题)附带答案详解
- 2025年下半年常德市安乡县事业单位招考易考易错模拟试题(共500题)试卷后附参考答案
- 2025年资料员考试基础知识巩固考题(附答案)
- 2025年哮喘持续状态试题及答案
- 2025年宗教政策测试题及答案
- 2025年考试公共卫生实践案例试题及答案
- 赤峰市人民医院放疗在妇科肿瘤中应用考核
- 《LNG操作手册》(完整版)资料
- LY/T 2459-2015枫香培育技术规程
- 法布雷病诊治最新进展课件
- CRM-客户关系管理系统毕业论文
- 质量源于设计-QbD课件
- 教学第三章土壤侵蚀课件
- 仓储物流安全隐患排查表-附带法规依据
- 三年级道德与法治下册不一样的你我他
- 基本安全授权培训试题题库
- 幼儿绘本故事:绘本PPT
- 厂房设备基础施工一次成优QC成果(41页)
评论
0/150
提交评论