




已阅读5页,还剩49页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第0章传统软件工程概述 Question 什么是软件 为什么需要 软件工程 软件工程的研究内容有哪些 第0章传统软件工程概述 计算机系统的发展软件 软件生存周期和软件生存周期过程软件生存周期模型软件工程定义 第0章传统软件工程概述 进入上个世纪60年代 人们开始逐渐认识到了确实存在着 软件危机 这样一个事实 例如 软件生产不能满足日益增长的需要软件开发成本和开发进度估计往往不准确软件开发人员和用户之间信息交流不充分 用户对完成的软件满意度很低软件价格昂贵 软件成本在整个计算机系统中所占的比例急剧上升 软件已成为许多计算机系统中花钱最多的项目软件质量难以保证软件可维护性差 程序中的错误很难改正 适应性或完善性维护都极其困难 第0章传统软件工程概述 导致危机问题的一个重要原因 是由于软件研制和维护本身是工程性的任务 但软件人员采取的方式却未能工程化为克服软件危机 人们开始考虑采用工程化方法和工程途径来研制和维护软件 第0章传统软件工程概述 上个世纪60年代末至70年代初开始 逐渐发展起一组总称为 软件工程 的技术这些技术把软件作为一个工程产品来处理 它需要计划 分析 设计 实现 测试以及维护软件工程学主要研究软件结构 软件设计方法论 软件工具 软件工程标准和规范 以及与软件工程有关的理论等软件产业的逐步建立 也带动了软件工程这门学科的发展 同时 软件生产的系列化 产品化 工程化和标准化形成了软件产业的标志 0 1计算机系统的发展 软件工程和硬件工程都可以看成是一门更广义的学科 计算机系统工程的一部分用于计算机硬件的工程技术是由电子设计技术发展起来的 已经达到了比较成熟的水平 可靠性已是一种可以期待的现实而不再是一种愿望但是 软件已经取代硬件成为系统中设计起来最困难 最不容易成功 按时完成和不超过预计的成本 而且是最不易管理的部分另一方面 随着以计算机为基础的系统在数量 复杂程度和应用范围上的不断增长 对软件的需求却仍然有增无减 0 1 1计算机系统及其软件的发展 软件发展的历史与计算机系统发展紧密相关计算机系统发展的初期 50 60年代 程序设计时期计算机系统发展的第二个时期 从60年代中期到70年代中期 程序系统时期计算机系统发展的第三个时期从70年代初期开始 软件工程时期如今 计算机系统的发展处于第四个时期 即从技术性应用转向消费性市场 0 1 2计算机系统工程 计算机系统工程的主要内容是对系统所要求的功能加以揭示 分析 并把它们分配给系统的各个部分在大多数新系统创建时 对系统所要求的功能往往只有模糊的概念 系统分析和系统定义的目的在于揭示摆在面前的项目的范围要对需要进行处理的信息 所要求的功能 所期望的性能以及设计的约束和检验的标准等进行系统 详细的分析范围确定之后 系统工程师必须考虑多种能潜在地满足项目范围的 可供选择的配置 在综合考虑了各项因素之后 选择其中的一种配置 并将系统的功能分配给系统的各个部分 图0 1计算机系统工程 0 2软件和软件生存周期 中国大百科全书 给软件下的定义是 软件是计算机系统中的程序和有关文件也就是说 软件 不仅仅是指程序 在软件研制过程中按一定规格产生的各种文件也是软件不可缺少的组成部分 0 2软件和软件生存周期 一个计算机软件 从出现一个构思之日起 经过开发成功投入使用 在使用中不断增补修订 直到最后决定停止使用 并被另一项软件代替之时止 被认为是该软件的一个生存周期 或称生命周期 生存期 lifecycle 0 2软件和软件生存周期 一个软件产品的生存周期可以划分成若干个互相区别而又有联系的阶段 每个阶段中的工作均以上一阶段工作的结果为依据 并为下一阶段的工作提供了前提经验表明 失误造成的差错越是发生在生存周期的前期 在系统交付使用时造成的影响和损失就越大 要纠正它所花费的代价也越高 因而在前一阶段工作没有做好之前 决不要草率地进入下一阶段 0 2软件和软件生存周期 国家标准GB T8566 2001 信息技术软件生存周期过程 将软件生存周期划分为以下8个阶段可行性研究与计划需求分析概要设计详细设计实现 包括单元测试 组装测试 即集成测试 确认测试使用和维护 0 2软件和软件生存周期 GB T8567 88 计算机软件产品开发文件编制指南 建议在软件的开发过程中编制下述14种文件可行性研究报告项目开发计划软件需求说明书数据要求说明书概要设计说明书详细设计说明书数据库设计说明书 用户手册操作手册模块开发卷宗测试计划测试分析报告开发进度月报项目开发总结报告 图0 2软件生存周期的瀑布模型 0 2软件和软件生存周期 可行性研究与计划 策划 对软件进行可行性分析 估算开发费用和时间等需求分析 向用户了解需求 解决 做什么 的问题设计 分为概要设计和详细设计 对需要解决的问题进行分析 提出解决方案 解决 怎么做 的问题实现 编码 按照设计的结果 采用某种编程语言加以实现测试 编码结束后 要用大量的数据进行测试 找出其中隐藏的错误使用和维护 软件交付用户使用后 在运行过程中仍有可能出错 而且用户的需求也有可能改变 因此 软件需要继续修改 图0 3软件生存周期工作量分配 图0 4开发期工作量分配 0 3软件生存周期模型 在软件工程中 重要的概念是软件生存周期模型 又称软件开发模型 以及软件生存周期过程软件生存周期模型可以定义为 是软件开发全部过程 活动和任务的结构框架 在整个软件开发的发展过程中 为了要从宏观上管理软件的开发和维护 而对软件的发展过程的总体认识和描述 即对软件过程建立的模型 0 3软件生存周期模型 软件生存周期模型能清晰 直观地表达软件开发全过程 明确规定了开发工作各阶段所要完成的主要活动和任务 以作为软件项目开发工作的基础对于不同的软件系统 可以采用不同的开发方法 使用不同的程序设计语言以及各种不同技能的人员参与工作 运用不同的管理方法和手段等 以及允许采用不同的软件工具和不同的软件工程环境软件生存周期模型是稳定有效和普遍适用的 0 3软件生存周期模型 软件生存周期过程可分为基本生存周期过程获取过程 供应过程 开发过程 运作过程和维护过程等支持生存周期过程组织生存周期过程 0 3软件生存周期模型 软件生存周期模型仅对软件的开发 运作 维护过程有意义 在ISO12207和ISO9000 3中都提到软件生存周期模型 它包括 瀑布模型 渐增模型 演化模型 螺旋模型 喷泉模型和智能模型等 0 3 1瀑布模型 瀑布模型是1970年W Royce提出的最早的软件开发模型 其开发过程依照固定顺序进行 该模型严格规定各阶段的任务 上一阶段任务输出作为下一阶段工作输入 此模型适合于用户需求明确 开发技术比较成熟 工程管理严格的场合使用 其缺点是 由于任务顺序固定 软件研制周期长 前一阶段工作中造成的差错越到后期越大 而且纠正前期错误的代价高 0 3 1瀑布模型 软件维护构成了生存周期的循环表示如果把软件维护看作是软件的二次开发 便有了软件生存周期的b形表示 0 3 1瀑布模型 在评价瀑布模型时 应考虑以下的相关风险需求未被充分理解系统太大而一次不能做完所有的事事先打算采用的技术迅速发生变化需求迅速发生变化有限的资源无法利用某一中间产品 图0 5软件生存周期循环 图0 6具有维护循环的软件生存周期 维护循环 0 3 2渐增模型 是指从一组给定的需求开始 通过构造一系列可执行的中间版本来实施开发活动第一个中间版本纳入一部分需求 下一个中间版本纳入更多的需求 依此类推 直到系统完成每个中间版本都要执行必要的过程 活动和任务 如 需求分析和体系结构设计需要执行一次 而详细设计 编码和测试 软件组装和验收测试在每个中间版本构造过程中都执行 0 3 2渐增模型 在评价该模型时 需要考虑的风险因素是需求未被很好地理解突然提出一些功能事先打算采用的技术迅速发生变化需求迅速发生变化长时期内仅有有限的资源保证 工作人员 资金 图0 7渐增模型示意 0 3 3演化模型 主要针对事先不能完整定义需求的软件项目开发对需要开发的软件给出基本需求 作第一次试验开发 其目标仅在于探索可行性和弄清需求 取得有效的反馈信息 以支持软件的最终设计和实现通常把第一次试验性开发出来的软件称为原型 这种开发模型可以减少由于需求不明给开发工作带来的风险与渐增模型的区别是 演化模型承认需求不能被完全了解 且不能在初始时就确定 在该模型中 需求一部分被预先定义 然后在每个相继的中间版本中逐步完善对所有的中间版本 开发过程中的活动和任务通常接同一顺序被重复使用 维护过程和运作过程可以与开发过程平行地使用 获取过程 供应过程 支持过程和组织过程通常与开发过程平行地使用 图1 8演化模型示意 0 3 4螺旋模型 该模型是B Boehm于1988年提出的 它将瀑布模型与演化模型相结合 并增加了两者所忽略的风险分析该模型通常用来指导大型软件项目的开发 它将开发划分为制订计划 风险分析 实施开发和客户评估四类活动 沿着螺旋线每转一圈 表示开发出一个更完善的新的软件版本如果开发风险过大 开发机构和客户无法接受 项目有可能就此终止 多数情况下 会沿着螺旋线继续下去 自内向外逐步延伸 最终得到满意的软件产品沿着螺旋线旋转 在笛卡儿坐标的四个象限上分别表达了四类活动制定计划 风险分析 实施开发 客户评估 图0 9螺旋模型 0 3 5喷泉模型 是由B H So11ers和J M Edwards于1990年提出的一种开发模型 主要用于采用面向对象技术的软件开发项目 喷泉 一词本身就体现了迭代和无间隙的特性软件的某个部分常常被重复工作多次 相关对象在每次迭代中随之加入渐进的软件成分无间隙是指在各项活动之间无明显边界 如分析和设计活动之间没有明显的界限 由于对象概念的引入 表达分析 设计 实现等活动只用对象类和关系 从而可以较为容易地实现活动的迭代和无间隙 使其开发自然地包括复用 图0 10喷泉模型 0 3 6智能模型 也称为基于知识的软件开发模型 它是知识工程与软件工程在开发模型上结合的产物它的维护不在程序一级上进行 把问题的复杂性大为降低 从而可以把精力更加集中于具体描述的表达上 即维护在功能规约一级进行具体描述可以使用形式功能规约 也可以使用知识处理语言描述等等 因而必须将规则和推理机制应用到开发模型中 所以必须建立知识库 将模型本身 软件工程知识和特定领域的知识分别存入知识库 由此构成某一领域的软件开发系统 图0 11智能模型 0 4软件工程定义 定义一 科学知识在设计和构造计算机程序 以及开发 运作和维护这些程序所要求的有关文档编制中的实际应用定义二 为了经济地获得软件 这个软件是可靠的并且能在实在的计算机上工作 所需要的健全的工程原理 方法 的确立和使用定义三 1983年IEEE 国际电气与电子工程师协会 的 软件工程术语汇编 中 将软件工程定义为 对软件开发 运作 维护 退役的系统研究方法定义四 1990年新版的IEEE 软件工程术语汇编 又将定义更改为 对软件开发 运作 维护的系统化的 有纪律的 可定量的方法之应用 即是对软件的工程化应用 0 4软件工程定义 软件工程已经是一门交叉性学科 它是解决软件问题的工程 对它的理解不应是静止的和孤立的软件工程是应用计算机科学 数学及管理科学等原理 借鉴传统工程的原则 方法来创建软件 从而达到提高质量 降低成本的目的计算机科学和数学用于构造模型 分析算法工程科学用于制定规范 明确风格 评估成本 确定权衡管理科学用于进度 资源 质量 成本等的管理 0 4软件工程定义 软件工程的目标是明确的 就是研制开发与生产出具有良好的软件质量和费用合算的产品费用合算是指软件开发运行的整个开销能满足用户要求的程度软件质量是指该软件能满足明确的和隐含的需求能力的有关特征和特性的总和 0 4软件工程定义 软件工程的基础是一些指导性的原则必须认识软件需求的变动性 并采取适当措施来保证结果产品能忠实地满足用户要求 在软件设计中 通常要考虑模块化 抽象与信息隐蔽 局部化 一致性等原则稳妥的设计方法大大地方便软件开发 为达到软件工程的目标 软件工具与环境对软件设计的支持来说 颇为重要软件工程项目的质量与经济开销直接取决于对它所提供的支撑的质量与效用有效的软件工程只有在对软件过程进行有效管理的情况下才能实现 0 4 1软件工程学的内容 从软件的生产管理技术来分软件的需求定义和分析技术软件设计技术和设计审查技术软件设计表现技术软件测试技术软件可靠性的理论及其评价方法软件扩充和维护软件成本估算等 0 4 1软件工程学的内容 从内容上可分为理论 结构 方法 工具等部分理论与结构是方法论与工具的基础及前提在方法论与工具方面存在着这样的关系 为了找出行之有效的方法就应该具备合适的工具 反之 为了制造 改进软件工具 也应先有合适的方法要达到如何以较少的代价获得高质量的软件这个目的 就必须研究软件开发方法和软件开发工具 0 4 1软件工程学的内容 软件开发方法就是开发软件的规范化方法工作步骤 即明确软件系统的基本开发步骤及每一步的条件 目的 结果等软件文件格式评价标准 即确定对各种不同的软件开发方案的评价标准 0 4 2软件工程过程 是指为获得软件产品 在软件工具的支持下 由软件工程师完成的一系列软件工程活动 通常包含4种基本的过程活动P Plan 软件规格说明 规定软件的功能及其运行的限制D Do 软件开发 产生满足规格说明的软件C Check 软件确认 确认软件能够完成客户提出的要求A Action 软件演进 为满足客户的变更要求 软件必须在使用的过程中演进事实上 软件工程过程是一个软件开发机构针对某一类软件产品为自己规定的工作步骤 0 4 3软件工程学的基本目标和原则 软件工程项目的成功 是指达到以下几个主要目标付出较低的开发成本达到要求的软件功能取得较好的软件性能开发的软件易于移植需要较低的维护费用能按时完成开发工作 及时交付使用上述目标有些很可能是互相冲突的若只顾降低开发成本 很可能同时也降低了软件的可靠性如果过于追求提高软件的性能 可能造成所开发软件对硬件有较大的依赖 从而直接影响到软件的可移植性等等 图0 12软件工程目标之间的关系 0 4 3软件工程学的基本目标和原则 各种软件工程技术所遵循的基本原则是分解抽象和信息隐蔽一致性确定性 0 4 4软件工程与一般工程的差异 软件是逻辑产品而不是实物产品 其功能只能依赖于硬件和软件的运行环境以及人们对它的操作才能得以体现
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年机器人行业服务机器人市场前景分析报告
- 2025年智能健康行业智能健康监测设备市场前景分析研究报告
- 商场商品安全培训课件
- 2025年医疗健康行业智能医疗设备市场前景预测报告
- 压力容器安全培训证课件
- 含山县2025年安徽马鞍山含山县运漕镇招聘12人笔试历年参考题库附带答案详解
- 乌海市2025内蒙古乌海市直事业单位人才引进(第二批)笔试历年参考题库附带答案详解
- 云南省2025云南保山市市直事业单位引进高层次人才笔试历年参考题库附带答案详解
- 2025贵州亚疆建筑工程有限公司招聘4人笔试参考题库附带答案详解
- 2025福建上海浦东快递公司漳州市岗位招聘59人笔试参考题库附带答案详解
- 2025四川达州宣汉县国有资产管理服务中心县属国有企业招聘劳动合同职工26人笔试历年参考题库附带答案详解
- 2025年下半年杭州市上城区丁兰街道办事处招聘编外工作人员11人考试参考题库及答案解析
- 新教科版小学1-6年级科学需做实验目录
- GB/T 8492-2024一般用途耐热钢及合金铸件
- 主动防护网施工方案
- 三年级下册书法练习指导全册教案(湖南美术出版社)
- GB/T 17880.5-1999平头六角铆螺母
- 2023年陕西省直和西安市接收军转干部划分条件
- 客诉客退产品处理流程
- 自来水厂操作规程手册范本
- 中职实用美术设计基础 2基础教学课件
评论
0/150
提交评论