第1章软件工程概述_第1页
第1章软件工程概述_第2页
第1章软件工程概述_第3页
第1章软件工程概述_第4页
第1章软件工程概述_第5页
已阅读5页,还剩49页未读 继续免费阅读

下载本文档

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

文档简介

信息工程系软件教研室 1 软件工程 山东交通学院信息工程系徐延峰邮箱 yanf xu 信息工程系软件教研室 2 上课相关说明 上课按时到 不迟到课堂认真听讲 手机关机或设为静音有问题及时问 不积攒问题有事请假 严格考勤 信息工程系软件教研室 3 课程说明 本课以传统的软件工程和面向对象的软件工程为主线 根据软件开发 工程化 思想 通过大量的应用实例 系统地介绍软件工程的基本概念 基本原理 软件开发的过程 开发方法 应用技术和实用工具 主要包括可行性研究 需求分析 总体设计 详细设计 编码 测试 维护以及有关软件管理 软件开发工具和环境等方面的内容 本课程的特点是该领域涉及范围非常广泛 更新非常快 另一突出特点是实践性强 信息工程系软件教研室 4 课程考核 本课程最后成绩由平时成绩和期末考试卷面成绩综合确定 平时成绩主要考查学生的作业 出勤 测验等方面 占30 期末卷面成绩占70 信息工程系软件教研室 5 参考书 1 美 ShariLawrencePfleeger SofewareEngineeringTheoryandPractice SecondEdition 吴丹 史争印 唐忆译 北京 清华大学出版社 2003 82 英 IanSommerville SofewareEngineering 6thEdition 程成等译 北京 机械工业出版社 2003 13 实用软件工程 第二版 郑人杰 殷人昆 陶永雷编著 清华大学出版社 4 软件工程 张海藩编著 人民邮电出版社 5 实用软件工程 赵池龙编著 电子工业出版社 6 软件工程 杨文龙 姚淑珍等编著 电子工业出版社 7 软件开发管理的实践 张少仲 李远明编著 清华大学出版社 信息工程系软件教研室 6 第一章软件工程概述 信息工程系软件教研室 7 主要内容 软件工程产生的背景软件工程的概念及相关的基本知识软件生存周期的六个阶段及各阶段的主要任务软件开发的主要开发模型软件开发过程及软件工程三要素 信息工程系软件教研室 8 1 1软件工程学产生的背景 一 问题一 什么是软件 软件是由计算机程序的发展而形成的一种概念 程序是按既定算法 用某种计算机语言所规定的指令或语句编写的一系列指令或语句的集合 软件是程序再加上程序实现和维护程序时所必须的文档的总称 信息工程系软件教研室 9 软件 被普遍接受的软件的定义是 软件 software 是计算机系统中与硬件 hardware 相互依存的另一部分 它包括程序 program 相关数据 data 及其说明文档 document 其中程序是按照事先设计的功能和性能要求执行的指令序列 数据是是程序能正常操纵信息的数据结构 文档是与程序开发维护和使用有关的各种图文资料 信息工程系软件教研室 10 软件 中国大百科全书中对软件的定义是 软件是计算机系统中的程序和有关文件 文档 根据国际标准化组织的定义 软件是 与计算机系统操作有关的程序 过程 规则 及任何有关的文档资料 软件 程序 数据 文档 信息工程系软件教研室 11 软件工程学产生的背景 二 问题二 软件发展经历了哪些阶段 50 60年代 程序设计阶段 个性化软件环境 60 70年代 程序系统阶段 软件作坊 70年代以后 软件工程阶段 信息工程系软件教研室 12 软件工程学产生的背景 三 问题三 什么是软件危机 开发软件所需的高成本同产品低质量之间有着尖锐的矛盾 即计算机软件的开发和维护中遇到的一系列严重问题 信息工程系软件教研室 13 IBM公司的OS 360 共约100万条指令 花费了5000个人年 经费达数亿美元 而结果却令人沮丧 错误多达2000个以上 系统根本无法正常运行 OS 360系统的负责人Brooks这样描述开发过程的困难和混乱 像巨兽在泥潭中作垂死挣扎 挣扎得越猛 泥浆就沾得越多 最后没有一个野兽能够逃脱淹没在泥潭中的命运 1963年美国飞往火星的火箭爆炸 造成1000万美元的损失 原因是FORTRAN程序 DO5I 1 3误写为 DO5I 1 3 1967年苏联 联盟一号 载人宇宙飞船在返航时 由于软件忽略一个小数点 在进入大气层时因打不开降落伞而烧毁 软件危机 信息工程系软件教研室 14 软件危机的表现 对开发成本和进度估计不准确用户对已完成的软件不满意软件产品的质量往往靠不住软件常常是不可维护的软件通常没有合适的文档资料软件成本在计算机系统总成本中比例逐年上升软件开发生产率提高的速度 跟不上计算机普及速度 信息工程系软件教研室 15 软件危机产生的原因 1 与软件自身的特点有关 1 软件不同于硬件 管理和控制软件开发过程相当困难 软件不会因为使用时间过长而被用坏 2 软件不同于一般程序 它的一个显著特点是规模庞大 2 和软件开发与维护的方法不正确有关 1 对用户要求没有完整准确地认识就匆忙编写程序是许多软件开发工程失败的主要原因之一 2 没有认识到程序只是完整的软件产品的一个组成部分 信息工程系软件教研室 16 解决软件危机的途径 要解决软件危机 既要有技术措施 方法和工具 又要有必要的组织管理措施 软件工程正是从管理和技术两方面研究如何更好地开发和维护计算机软件的一门新兴学科 信息工程系软件教研室 17 1 2软件工程的概念 软件工程是指导计算机软件开发和维护的工程学科 采用工程的概念 原理 技术和方法来开发与维护软件 把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来 这就是软件工程 信息工程系软件教研室 18 软件工程具有的本质特性 软件工程关注于大型程序的构造软件工程的中心课题是控制复杂性软件经常变化开发软件的效率非常重要和谐地合作是开发软件的关键软件必须有效地支持它的用户在软件工程领域中是由具有一种文化背景的人替具有另一种文化背景的人 信息工程系软件教研室 19 软件工程的基本原理 著名的软件工程专家B W Boehm综合这些学者们的意见并总结了TRW公司多年开发软件的经验 于1983年在一篇论文中提出了软件工程的7条基本原理 他认为这7条原理是确保软件产品质量和开发效率的原理的最小集合 信息工程系软件教研室 20 软件工程的基本原理 1 用分阶段的生命周期计划严格管理2 坚持进行阶段评审3 实行严格的产品控制4 采用现代程序设计技术5 结果应能清楚地审查6 开发小组的人员应该少而精7 承认不断改进软件工程实践的必要性 信息工程系软件教研室 21 软件工程与其他学科的区别 软件工程和计算机科学有何区别 计算机科学侧重理论和基础 而软件工程则侧重于开发和交付的实际活动 软件工程和系统工程有何区别 系统工程侧重基于计算机系统开发的所有方面 包括硬件 软件和处理工程 软件工程只是它的一部分 信息工程系软件教研室 22 软件工程所面临的主要问题是什么 1 遗留系统的挑战 维护和更新这些软件 既要避免过多的支出 又要不断地交付基本的业务服务 2 多样性的挑战 必须开发出新技术 制作可靠的软件 从而足以灵活应对这种多样性 3 交付上的挑战 在不损及系统质量的前提下 缩短大型 复杂系统的移交时间 信息工程系软件教研室 23 软件工程方法学 软件工程包括技术和管理两方面的内容 是技术与管理紧密结合所形成的工程学科 所谓管理就是通过计划 组织和控制等一系列活动 合理地配置和使用各种资源 以达到既定目标的过程 通常把在软件生命周期全过程中使用的一整套技术方法的集合称为方法学 信息工程系软件教研室 24 软件工程方法学 软件工程方法学包含3个要素 方法 工具和过程 方法是完成软件开发的各项任务的技术方法 回答 怎样做 的问题 工具是为运用方法而提供的自动的或半自动的软件工程支撑环境 过程是为了获得高质量的软件所需要完成的一系列任务的框架 它规定了完成各项任务的工作步骤 信息工程系软件教研室 25 软件工程方法学 目前使用得最广泛的软件工程方法学 分别是传统方法学和面向对象方法学 1 传统方法学生命周期方法学或结构化范型 它采用结构化技术 结构化分析 结构化设计和结构化实现 来完成软件开发的各项任务 并使用适当的软件工具或软件工程环境来支持结构化技术的运用 这种方法学把软件生命周期的全过程依次划分为若干个阶段 然后顺序地完成每个阶段的任务 采用这种方法学开发软件的时候 从对问题的抽象逻辑分析开始 一个阶段一个阶段地进行开发 信息工程系软件教研室 26 软件工程方法学 2 面向对象方法学结构化范型只能获得有限成功的一个重要原因是 这种技术要么面向行为 即对数据的操作 要么面向数据 还没有既面向数据又面向行为的结构化技术 数据和对数据的处理原本是密切相关的 把数据和操作人为地分离成两个独立的部分 自然会增加软件开发与维护的难度 与传统方法相反 面向对象方法把数据和行为看成同等重要 它是一种以数据为主线 把数据和对数据的操作紧密地结合起来的方法 信息工程系软件教研室 27 1 3软件生存期 1 可行性研究与计划 调查用户需求及处理过程 进行可行性分析研究2 需求分析 分析用户需求 建立目标系统逻辑模型 3 系统设计 分为概要设计和详细设计 概要设计建立目标系统的总体结构及数据库设计 详细设计对模块进行过程描述 确定模块间的详细接口 4 程序设计 按详细设计说明书为每个模块编写程序 5 系统测试 检查和调试程序的正确性 排除错误 6 维护运行 运行软件 对程序扩充修改 修改有关的文档 信息工程系软件教研室 28 1 4开发模型 瀑布模型演化模型螺旋模型喷泉模型RUP开发敏捷过程与极限编程微软过程 信息工程系软件教研室 29 问题定义 编码 需求分析 设计 可行性研究 运行与维护 测试 开发时期 运行维护时期 计划时期 目标与范围说明书 可行性论证论告 维护报告 测试报告 程序 设计文档 需求说明书 1 4 1瀑布模型 WaterfallModel 瀑布模型 信息工程系软件教研室 30 软件生存周期及软件开发模型 瀑布模型软件开发具有以下几个特征 1 阶段间的顺序性和依赖性顺序性是指 只有等前一阶段的工作完成以后 后一阶段的工作才能开始 前一阶段的输出文档 就是后一阶段的输入文档 依赖性又同时表明了 只有前一阶段有正确的输出时 后一阶段才可能有正确的结果 信息工程系软件教研室 31 软件生存周期及软件开发模型 2 推迟实现的观点过早地考虑程序的实现 常常导致大量返工 有时甚至给开发人员带来灾难性的后果 瀑布模型在编码以前安排了分析阶段和设计阶段 并且明确宣布 这两个阶段都只考虑目标系统的逻辑模型 不涉及软件的物理实现 把逻辑设计与物理设计清楚地划分开来 尽可能推迟程序的物理实现 这是瀑布型软件开发的一条重要的指导思想 信息工程系软件教研室 32 软件生存周期及软件开发模型 3 质量保证的观点为了保证质量 瀑布型软件开发在各个阶段坚持了两个重要的做法 1 每一阶段都要完成规定的文档 没有完成文档 就认为没有完成该阶段的任务 2 每一阶段都要对完成的文档进行复审 以便尽早发现问题 消除隐患 信息工程系软件教研室 33 软件生存周期及软件开发模型 1 4 2演化模型 evolutionalmodel 先做试验开发 其目标只是在于探索可行性 弄清软件需求 然后在此基础上获得较为满意的软件产品 通常把第一次得到的试验性产品称为 原型 显然 演化模型在克服瀑布模型缺点 减少由于软件需求不明确而给开发工作带来风险方面 确有显著的效果 信息工程系软件教研室 34 1 4 3螺旋模型 SpiralModel 对于大型软件 只开发一个原型往往达不到要求 螺旋模型将瀑布模型和增量模型结合起来 并加入了风险分析 螺旋模型将开发过程分为几个螺旋周期 每个螺旋周期可分为4个工作步骤 1 确定目标 方案和限制条件 2 评估方案 标识风险和解决风险 3 开发确认产品 4 计划下一周期工作 螺旋模型 信息工程系软件教研室 35 1 4 4喷泉模型WaterFountainModel 该模型是由B H Sollers和J M Edwards于1990年提出的一种新的开发模型 主要用于采用对象技术的软件开发项目 它克服了瀑布模型不支持软件重用和多项开发活动集成的局限性 喷泉模型使开发过程具有迭代性和无间隙性 其特点如下 开发过程有分析 系统设计 软件设计和实现4个阶段 各阶段相互重叠 它反映了软件过程并行性的特点 以分析为基础 资源消耗成塔型 反映了软件过程迭代性的自然特性 从高层返回低层无资源消耗 强调增量开发 整个过程是一个迭代的逐步提炼的过程 信息工程系软件教研室 36 1 4 5RUP软件开发 1 RUP总结了经过多年商业化验证的6条最有效的软件开发经验 这些经验被称为最佳实践 迭代式开发管理需求使用基于构件的体系结构可视化建模验证软件质量控制软件变更 信息工程系软件教研室 37 1 4 5RUP 2 RUP软件开发生命周期核心工作流 RUP有9个核心工作流 前6个为核心过程工作流程 后3个位核心支持工作流程 业务建模需求分析与设计实现测试部署配置与变更管理项目管理环境 信息工程系软件教研室 38 1 4 5RUP 3 RUP工作阶段初始阶段 建立业务模型 定义最终产品视图 并且确定项目的范围精化阶段 设计并确定系统的体系结构 制定项目计划 确定资源需求构建阶段 开发出所有构建和应用程序 把它们集成为客户需要的产品 并且详尽地测试所有功能 移交阶段 把开发出的产品提交给用户使用 信息工程系软件教研室 39 1 4 5RUP 4 信息工程系软件教研室 40 1 4 6敏捷过程与极限编程 1 敏捷过程个体和交互胜过过程和工具可以工作的软件胜过面面俱到的文档客户合作胜过合同谈判响应变化胜过遵循计划 信息工程系软件教研室 41 1 4 6敏捷过程与极限编程 2 XP是敏捷过程中最负盛名的一个XP的有效实践客户作为开发团队的成员使用用户素材短交付周期验收测试结对编程测试驱动开发集体所有 持续集成可持续的开发速度开放的工作空间及时调整计划简单的设计重构使用隐喻 信息工程系软件教研室 42 1 4 6敏捷过程与极限编程 3 XP项目的整体开发过程 信息工程系软件教研室 43 1 4 6敏捷过程与极限编程 4 XP迭代开发过程 信息工程系软件教研室 44 1 4 7微软过程 1 微软过程准则项目计划应该兼顾未来的不确定因素用有效的风险管理来减少不确定因素的影响经过生成并快速地测试软件的过渡版本 从而提高产品的稳定性和可预测性 采用快速循环 递进的开发过程用创造性的工作来平衡产品特性和产品成本项目进度表应该具有较高稳定性和权威性使用小型项目组并发地完成开发工作在项目早期把软件配置项基线化 项目后期则冻结产品使用原型验证概念 对项目进行早期结论把零缺陷作为追求的目标里程碑评审会的目的是改进工作 切忌相互指责 信息工程系软件教研室 45 1 4 7微软过程 2 微软软件生命周期阶段划分和主要里程碑 信息工程系软件教研室 46 1 4 7微软过程 3 微软过程的生命周期模型 信息工程系软件教研室 47 各模型比较 1 每个软件开发组织应该选择适合于该组织的软件开发模型 并且应该随着当前正在开发的特定产品特性而变化 以减小所选模型的缺点 充分利用其优点 下表列出了几种常见模型的优缺点 信息工程系软件教研室 48 各模型比较 2 信息工程系软件教研室 49 软件工程项目的基本目标 1 付出较低的开发成本 2 达到要求的软件功能 3 取得较好的软件性能 4 开发的软件易于移植 5 需要较低的维护费用 6 能按时完成开发工作 及时交付使用 信息工程系软件教研室 50 软件工程项目的基本目标 信息工程系软件教研室 51 职业和道德上的责任 软件工程人员必须坚持诚实正直的行

温馨提示

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

评论

0/150

提交评论