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

下载本文档

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

文档简介

第二讲软件工程概述 一 软件技术面临的问题 软件的定义软件是指计算机系统中与硬件相互依存的一部分 包括程序 相关数据和及其说明文档 程序是按照事先设计的功能和性能要求执行的指令序列 数据是程序能正常操纵信息的数据结构 文档是与程序开发维护和使用有关的文字或图形资料 一 软件技术面临的问题 软件的特征1 软件是一种逻辑产品 是以程序和文档形式存在 2 软件使用过程中 不会磨损 老化 3 软件一旦研究开发成功 其生产过程就变成复制过程 4 软件对硬件和环境有着不同程度的依赖性 升级和移植 5 手工方式生产 开发人员压力大 6 软件是复杂度最高的工业产品 但通用性差 7 软件涉及人类社会的各行各业 涉及到领域专门知识 对软件工程师提出了很高的要求 软件开发应该有明确的分工 8 软件生产过程的不可见性 增加了管理的难道 9 软件产品的生产成本主要体现在软件的开发和研制上 软件的成本昂贵 一 软件技术面临的问题 软件的分类按软件的功能进行划分 系统软件操作系统数据库管理系统设备驱动程序通信处理程序等 一 软件技术面临的问题 软件的分类按软件的功能进行划分 支撑软件文本编辑程序文件格式化程序磁盘向磁带向数据传输的程序程序库系统支持需求分析 设计 实现 测试和支持管理的软件 一 软件技术面临的问题 软件的分类按软件的功能进行划分 应用软件商业数据处理软件工程与科学计算软件计算机辅助设计 制造软件系统仿真软件智能产品嵌入软件医疗 制药软件事务管理 办公自动化软件计算机辅助教学软件 一 软件技术面临的问题 软件的分类按软件规模进行划分 类别参加人员数研制期限源程序行数微型11 4周0 5k小型11 6月1k 2k中型2 51 2年5k 50k大型5 202 3年50k 100k甚大型100 10004 5年1M 1000k 极大型2000 50005 10年1M 10M 一 软件技术面临的问题 软件的分类按软件的功能进行划分 应用软件商业数据处理软件工程与科学计算软件计算机辅助设计 制造软件系统仿真软件智能产品嵌入软件医疗 制药软件事务管理 办公自动化软件计算机辅助教学软件 一 软件技术面临的问题 规模复杂性生产率 软件危机存在问题的分析 软件的规模越来越大 结构越来越复杂 软件工程的管理困难 软件开发费用不断增加 软件开发技术落后 生产方式落后 开发工具落后 软件危机实例1 IBM公司1963 1966年开发IBM360操作系统 项目花了5000人 年的工作量 最多时有1000人投入开发工作 写出100万行源程序 但发行的每一新版本都是上一版1000个错误的修正 事后负责人F D Brooks总结教训时说 正象一只逃亡的野兽落到泥潭中做垂死的挣扎 越是挣扎 陷的越深 最后无法逃脱灭顶的灾难 程序设计工作正像这样一个泥潭 一批批程序员被迫在泥潭中拼命挣扎 谁也没料到问题竟会陷入这样的困境 美国阿波罗8号太空飞船的一个软件错误 造成了存储器部分信息丢失 而阿波罗14号在飞行的10天中 出现了18个软件错误 软件危机实例2 1900年错误1992年 来自明尼苏达州怀俄明的玛丽收到一份幼儿园的入园通知 她当时是104岁 闰年错误1988年2月29日 一家超市因出售过期一天的肉而被罚款1000美元 因为在肉的标签上打印保质期的计算机程序没有考虑到1988年是闰年 接口误用1990年4月10日 在伦敦地铁运营过程中 司机还没上车 地铁列车就驶离车站 当时司机按了启动键 正常情况下如果车门是开着的 系统就应该可以阻止列车起动 当时的问题是司机离开了列车去关一扇卡着的门 但当门终于关上时 列车还没有等到司机上车就开动了 安全问题软件工程学院的CERT组 ComputerEmergencyResponseTeam 计算机紧急反应小组 是一个政府资助的组织 用来协助社区处理安全事件 突发事件和安全技能方面的问题 美国报道的CERT的安全事件从1990年的252件增加到2000年的21756件 而到2001年已增加到了40000多件 软件危机实例3 拖延和超支在1995年 由于新丹佛尔国际机场自动行李系统的错误 造成旅客行李箱的损坏 机场则被迫推迟16个月再开放 且大部分采用手工行李系统 产生32亿美元超支 拖延和超支 2 2002年的Swanick空运控制系统 包括英格兰和威尔士全部空运线路 在系统交付时 已延期6年且严重超支 实际花费6 23亿英傍 原计划花费3 5亿英镑 其中两次主要的系统升级是在运输操作员培训已经开始后才交付的 延期交付1984年 经过18个月的开发 一个耗资2亿美元的系统交付给了威斯康星州的一家健康保险公司 但是该系统无法正常工作 只好追加了6千万美元 又花了3年才解决了问题 不必要的复杂性麦克道尔道格拉斯的C 17货机因为控制系统的软件问题 而超支5亿美元 C 17含有19台机载计算机 80个微处理器以及6种不同的编程语言 新世纪软件产业的趋势 网络化趋势 计算机与通信的融合趋势万维网 智能网络服务化趋势 打包式 软件 服务式 软件全球化趋势 软件工程的协作 处在十字路口的中国软件产业 主权大国必须建立基于自主技术的 完整的软件产业体系 软件本国提供率 中国1 3左右 美国97 印度模式 还是 中国模式 软件人才结构不合理 缺乏中高级软件人才 软件人员缺乏软件工程化的概念 二 软件工程的定义 FritzBauer在NATO会议上给出的定义 软件工程是为了经济地获得可靠的和能在实际机器上高效运行的软件而确立和使用的健全的工程原理 方法 二 软件工程的定义 简陋的小屋 不用设计 软件工程的定义 新别墅造型 软件工程的定义 别墅的平面图 切面图 软件工程的定义 软件工程的定义 图书馆信息管理系统需求表 软件工程的定义 软件工程的定义 软件工程的定义 软件工程的定义 图书馆信息管理系统数据库设计 软件生产同建筑行业一样需要工程化 规模化 自动化 标准化 软件生产过程中也有中间环节 设计物理模型 逻辑模型 界面 数据 过程等等 也可以随时进行质量检查 软件生产中也需要有高效的工具 软件生产人员也可以细分为 分析员 设计员 程序员 测试员 操作员 维护人员等等 软件生产低水平的手工作坊不能适应当今的大规模软件开发需求 IEEE IEE83 给出的软件工程定义 软件工程是开发 运行 维护和修复软件的系统方法 IEEE IEE93 给出了一个更加综合的定义 将系统化的 规范的 可度量的方法应用于软件的开发 运行和维护的过程 即将工程化应用于软件中 软件工程是一门交叉学科 软件工程的主要研究内容软件开发技术 软件开发方法学软件开发过程软件工具和软件工程环境软件工程管理 软件管理学软件经济学软件心理学软件工程所包含的内容不是一成不变的 随着人们对软件系统的研制开发和生产的理解 应用发展的眼光看待它 软件工程与一般工程的差异 软件是逻辑产品而不是实物产品软件的功能依赖于硬件和软件的运行环境以及人们对它的操作软件设计的复杂性软件特征 功能的多样性实现的多样性能见度低软件结构合理性差智力密集及知识产权保护 三 软件生存周期模型 软件生存周期模型是描述软件开发过程中各种活动如何执行的模型软件生存周期模型确立了软件开发和演绎中各阶段的次序限制以及个阶段活动的准则 便于各种活动的协调以及各类人员的有效通信 有利于活动重用和活动管理 1 瀑布模型 瀑布模型特点 以文档形式驱动以里程碑开发为原则整体开发适合于功能和性能明确 完整 无重大变化的软件开发 瀑布模型的局限性 是一种理想的线性开发方式 缺乏灵活性 无法解决软件需求不明确和不准确的问题 缺乏应付变化的机制 最终产品可能难以维护 2 增量模型 特点 快速分析与构造一个小的原型系统 满足用户的某些要求后 使用户在使用过程中受启发 逐步确定各种需求 3 螺旋模型 特点 将开发过程分为几个螺旋周期 每个螺旋周期大致和瀑布周期相符合 螺旋模型 4 喷泉模型 喷泉模型认为软件自下而上周期的各阶段是相互重叠和多次反复的 就像水喷上去可以落下来 既可以落在中间 也可以落在最底部 类似一个喷泉 各个开发阶段是没有特定的次序要求的 并且是可以交互进行的 可以在某个开发阶段中随时补充其它任何开发阶段中的遗漏 喷泉模型的最大特点是可以从任何一个开发阶段 泡泡 转到其它任一个开发阶段 各个阶段之间没有明显的界限 也就是 在整个过程中补漏 拾遗 纠错的切入点大大增多 不受开发阶段的限制 喷泉模型的缺点是要求对文档的管理较为严格 审核的难度加大 尤其是面对可能随时加入各种信息 需求与资料 敏捷开发与极限编程 2001年 为了解决许多公司的软件团队陷入不断增长的过程泥潭 一批业界专家一起概括出了一些可以让软件开发团队具有快速工作 响应变化能力的价值观和原则 他们称自己为敏捷联盟 敏捷开发与极限编程 在敏捷开发中 软件项目的构建被切分成多个子项目 各个子项目的成果都经过测试 具备集成和可运行的特征 简言之 就是把一个大项目分为多个相互联系 但也可独立运行的小项目 并分别完成 在此过程中软件一直处于可使用状态 敏捷开发与极限编程 我们最优先要做的是通过尽早的 持续的交付有价值的软件来使客户满意 即使到了开发的后期 也欢迎改变需求 敏捷过程利用变化来为客户创造竞争优势 经常性地交付可以工作的软件 交付的间隔可以从几个星期到几个月 交付的时间间隔越短越好 在整个项目开发期间 业务人员和开发人员必须天天都在一起工作 围绕被激励起来的个体来构建项目 给他们提供所需的环境和支持 并且信任他们能够完成工作 在团队内部 最具有效果并富有效率的传递信息的方法 就是面对面的交谈 工作的软件是首要的进度度量标准 敏捷过程提倡可持续的开发速度 责任人 开发者和用户应该能够保持一个长期恒定的开发速度 断地关注优秀的技能和好的设计会增强敏捷能力 简单是最根本的 最好的构架 需求和设计出于自组织团队 每隔一定时间 团队会在如何才能更有效地工作方面进行反省 然后相应地对自己的行为进行调整 敏捷开发与极限编程 极限编程 XP 是一种轻量级的软件开发方法论 XP从实践中来 是对实践的总结 也是经过实践检验的 其主要特征是要适应环境变化和需求变化 充分发挥开发人员的主动精神 XP承诺降低软件项目风险 改善业务变化的反应能力 提高开发期间的生产力 为软件开发过程增加乐趣 敏捷开发与极限编程 极限编程 XP 四个准则 沟通 简单 反馈和勇气十二条原则 计划游戏 小版本 隐喻 简单设计 测试 重构 结队编程 代码集体所有 持续集成 每周工作40小时 现场客户 编码标准 对开发人员的工作要求 编码 测试 倾听和设计 四 GIS软件工程建设的主要过程 GIS运行及维护 制定GIS开

温馨提示

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

评论

0/150

提交评论