




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、软件工程概论Software Engineering贾恒彬E-mail: jiahengbin李恒E-mail:liheng软件工程软件业是信息时代的朝阳产业oftware$软件工程课程设计课程目的:充分理解软件工程的概念、原理和典型的方法学,掌握软件项目的设计以及管理技术。课程安排:共32学时;每周二3、4节课 绪论(2学时) 软件开发模型和可行性研究(2学时) 软件需求分析(4学时) 软件设计 (10学时) 软件实现(4学时) 软件维护(2学时) 软件项目管理(6学时) 复习总结(2学时)软件的概念1、软件softwaresoft+ware软制品(软体) 软件是计算机系统中与硬件相互依存的
2、另一部分。 它包括程序、数据及其相关文档的完整集合。软件的特点. 软件是一种逻辑实体,而不是具体的物理实体. 软件的生产与硬件不同 . 在软件的运行和使用期间,没有硬件那样的机械 磨损,老化问题磨合调整磨损用坏修改点实际曲线理想曲线硬件失效率曲线时间失效率时间失效率软件失效率曲线软件的分类(功能)分类(1)基础设施类:系统软件、支撑软件应用类:应用软件分类(2)一般性软件嵌入式软件:嵌入在硬件中的操作系统和开发工具软件软件的分类(规模) 按开发软件所需的 人力、时间以及完成的 源代码行数。类别参加人数研制期限产品规模(源代码行数)微型小型中型大型甚大型极大型112-55-20100-10002
3、000-50001-4周1-6周1-2年2-3年4-5年5-10年约500行 约2000行 5000-50000行5万-10万行100万行1000万行软件发展历史软件发展史40-50年代,实用高级语言出现前(直接二进制编码,主要用于解决科学计算问题,编程难以掌握,汇编语言出现,程序质量取决于个人技巧)60年代,软件工程出现前(软件应用领域扩大,高级语言出现,硬件无关性,软件危机出现)70年代,软件工程出现后(程序=算法+数据结构,结构化思想的提出,软件的分类)新世纪以来,互联网广泛应用后软件产业软件产业的地位教育部创建示范性软件学院,培养软件工程人才全球软件产业发展(1)全球软件产业发展(2)
4、全球软件产业发展(3)全球软件产业发展(4)中国软件产业现状(1)中国软件产业现状(2)中国软件产业现状(3)中国软件产业发展的瓶颈从软件产业分类上看,基础软件是瓶颈从软件产业组织上看,缺乏大企业、软件产业生态环境不完善是瓶颈从软件技术上看,缺乏核心技术是瓶颈从软件产业要素配置上看,高级人才缺乏、融资难是瓶颈 1.1软件危机不断增加的为大系统制造可靠软件的困难度 20世纪60年代中期以前:程序规模小、软件设计是一个隐含过程 20世纪60年代中期到70年代中期:软件作坊软件危机 1968年北大西洋公约组织的计算机科学家国际会议软件工程IBM 360系统开发时间:1963-1966年投入人力:50
5、00人/年代码量:100万行每个版本都是从上一个版本找出1000个错误而修订的结果正像一只逃亡的野兽落到泥潭中做垂死的挣扎,越是挣扎,陷的越深,最后无法逃脱灭顶的灾难。1.1软件危机 1963年美国飞往火星的火箭爆炸,造成1000万美元的损失。原因是FORTRAN程序: DO 5 I=1,3 误写为:DO 5 I=1 . 31967年苏联“联盟一号”载人宇宙飞船在返航时,由于软件忽略一个小数点,在进入大气层时因打不开降落伞而烧毁。1.1.1 软件危机的介绍软件危机:指在计算机软件的开发和维护过程中所遇到的一系列严重问题软件危机包含两个问题:如何开发、如何维护软件危机典型表现:(1) 对软件开发
6、成本和进度的估计常常很不准确(2) 用户对“已完成的“软件系统不满意的现象经常发生(3) 软件产品的质量往往靠不住(4) 软件常常是不可维护的(5) 没有文档资料(6) 软件成本在计算机系统总成本中所占比例逐年上升(7) 软件开发生产率1.1.2 产生软件危机的原因软件本身的特点、软件开发和维护的方法错误软件不同于硬件,它是计算机系统中的逻辑部件而不是物理部件。管理和控制软件开发过程相当困难。运行中发现错误,很可能是遇到了一个在开发时期引入的,在测试阶段没能检测出来的故障。因此,软件维护通常意味着改正或修改原来的设计,这就在客观上使得软件较难维护。软件规模大,程序的复杂性将随着程序规模的增加而
7、呈指数上升 如何保证每个人完成的工作合在一起确实能构成一个高质量的大型软件系统,更是一个极端复杂困难的问题,不仅涉及许多技术问题,诸如分析方法、设计方法、形式说明方法、版本控制等,更重要的是必须有严格而科学的管理。与软件开发和维护有关的许多错误认识和作法的形成,可以归因于在计算机系统发展的早期软件开发的个体化特点。错误认识和作法主要表现为忽视软件需求分析的重要性,认为软件开发就是写程序并设法使之运行,轻视软件维护等。事实上,对用户要求没有完整准确的认识就匆忙着手编写程序是许多软件开发工程失败的主要原因之一。软件的生命周期:一个软件从定义、开发、使用和维护,直到最终被废弃,要经历一个漫长的周期。
8、问题定义可行性研究需求分析软件设计(总体设计和详细设计)编写程序(软件开发全部工作量的10%-20%)测试(软件开发全部工作量的40%-50%)Boehm指出:软件是程序以及开发、使用和维护程序需要的所有文挡。“软件维护 严重的问题是,在软件开发的不同阶段进行修改需要付出的代价是很不相同的,根据美国一些软件公司的统计资料,在后期引入一个变动比在早期引入相同变动所需付出的代价高23个数量级。轻视维护是-个最大的错误。许多软件产品的使用寿命长达10年甚至20年,在这样漫长的时期中不仅 a) 必须改正使用过程中发现的每一个潜伏的错误。 b) 当环境变化时(例如硬件或系统软件更新换代)还必须相应地修改
9、软件以适应新的环境。 c) 必须经常改进或扩充原来的软件以满足用户不断变化的需要。 所有这些改动都属于维护工作,而且是在软件已经完成之后进行的,因此维护是极端艰巨复杂的工作,需要花费很大代价。统计数据表明,实际上用于软件维护的费用占软件总费用的5570。软件工程学的一个重要目标就是提高软件的可维护性,减少软件维护的代价。1.1.3 消除软件危机的途径组织管理:软件开发不是某种个体劳动的神秘技巧,软件开发应该是一种组织良好、管理严密、各类人员协同配合、共同完成的工程项目。方法:应该推广使用在实践中总结出来的开发软件的成功的技术和方法,并且研究探索更好更有效的技术和方法,尽快消除在计算机系统早期发
10、展阶段形成的一些错误概念和做法。工具:应该开发和使用更好的软件工具。在软件开发的每个阶段都有许多繁琐重复的工作需要做,在适当的软件工具辅助下,开发人员可以把这类工作做得既快又好。如果把各个阶段使用的软件工具有机地集合成一个整体,支持软件开发的全过程,则称为软件工程支撑环境。1.1.3 消除软件危机的途径组织管理:软件开发不是某种个体劳动的神秘技巧,软件开发应该是一种组织良好、管理严密、各类人员协同配合、共同完成的工程项目。方法:应该推广使用在实践中总结出来的开发软件的成功的技术和方法,并且研究探索更好更有效的技术和方法,尽快消除在计算机系统早期发展阶段形成的一些错误概念和做法。工具:应该开发和
11、使用更好的软件工具。在软件开发的每个阶段都有许多繁琐重复的工作需要做,在适当的软件工具辅助下,开发人员可以把这类工作做得既快又好。如果把各个阶段使用的软件工具有机地集合成一个整体,支持软件开发的全过程,则称为软件工程支撑环境。1.1.4 软件现状危机依然存在对软件的需求远超出现有的生成能力信息技术的爆炸性增长促进了对新软件的空前需求软件系统的规模和复杂性不断增长用来开发这些软件的资源没有与上述需求保持同步人们依赖于脆弱的软件不可靠、缺乏安全性、性能下降、出错、难以升级73%的软件项目被延迟、超资、取消或失败构造可靠、安全的软件的技术能力不足过去40年,硬件性能至少跨越了8个重要的阶段开发软件的
12、能力未能与硬件提供的机会保持同步1.2 软件工程的概念及范畴 1、“软件工程”-Software Engineering 于1968年北大西洋公约组织(NATO)在德国召开的一次会议上提出 是把软件当作一种工业产品,要求 “采用工程化的 原理与方法对软件进行计划、开发和维护 ”。 1993年IEEE进一步给出了一个更全面更具体的定义:“软件工程是: 把系统的、规范的、可度量的途径应用于软件开发、运行和维护过程,也就是把工程应用于软件; 研究中提到的途径。”1.2.1 软件工程的介绍软件工程定义为: “采用工程的概念、原理、技术和方法来开发与维护软件,把经过时间考验而证明正确的管理技术和当前能够
13、得到的最好的技术方法结合起来,以经济的开发出高质量的软件并维护它。” 2022/10/4 软件工程学 软件开发技术 软件工程管理软件开发方法学 软件工具 软件工程环境 软件工程管理学 软件经济学 软件产权保护 - 软件工程学的范畴 软件工程学 软件开发方法为软件开发提供了 “如何做” 的技术个性化方法-结构化方法-面向对象方法-软件复用软件工具为软件开发提供了自动的或半自动的软件支撑环境单个工具-工具箱、集成工具-环境软件工程管理目的:为了按进度及预算完成软件计划内容:成本估算、进度安排、人员组织、质量保证等软件工程学的研究范畴软件工程的发展已经历了四个重要阶段:1、第一代软件工程 传统的软件
14、工程1.2.1 软件工程的发展 60年代末到70年代为了克服“软件危机” (Software crisis)提出“软件工程”的名词, 将软件开发纳入工程化的轨道,基本形成软件工程的概念、框架、技术和方法。称为传统的软件工程。软件工程的发展已经历了四个重要阶段:2、第二代软件工程 对象工程 80年代中到90年代,面向对象的方法与技术得到发展,研究的重点转移到面向对象的分析与设计,演化为一种完整的软件开发方法和系统的技术体系,称为对象工程。1.2.1 软件工程的发展 80年代中开始,人们在软件开发的实践过程中认识到:提高软件生产率,保证软件质量的关键是“软件过程”,是软件开发和维护中的管理和支持能
15、力,逐步形成软件过程工程。软件工程的发展已经历了四个重要阶段:3、第三代软件工程 过程工程1.2.1 软件工程的发展 90起年代,基于构件(Component)的开发方法取得重要进展,软件系统的开发可通过使用现成的可复用构件组装完成,而无需从头开始构造,以此达到提高效率和质量,降低成本的目的。称为构件工程。软件工程的发展已经历了四个重要阶段:4、第四代软件工程 构件工程1.2.1 软件工程的发展2022/10/4程序软件的演变(即从传统软件开发到现代软件开发) 软件软件产品传统软件开发现代软件开发 1975 1989 2000 0.00016240营业额增长曲线 8037软件工程的基本目标:付
16、出较低的开发成本达到要求的软件功能取得较好的软件性能开发的软件易于移植需要较低的维护费用能按时完成开发,及时交付使用1.2.1软件工程的特性38软件工程的基本原理有:按软件生存期分阶段制定计划并认真实施;坚持进行阶段评审;坚持严格的产品控制;使用现代程序设计技术;明确责任,使得工作结果能够得到清楚的审查;用人少而精;不断改进开发过程。承认不断改进软件工程实践的必要性1.2.2软件工程的基本原理391.2.3软件工程方法学软件工程学定义为 “建立并使用完善的工程化原则, 以较经济的手段获得能在实际机器上有效运行的可靠软件的一系列方法。”软件工程包括三个要素:方法、工具和过程。传统方法学生命周期方法学/结构化范型从时间角度对软件开发和维护的复杂问题进行分解,把软件生命的漫长周期依次划分为若干个阶段,每个阶段有相对独立的任务,然后逐步完成每个阶段的任务。 文档是通信的工具,它们清楚准确地说明了到这个时候为止,关于该项工程已经知道了什么,同时确立了下一步工作的基础。此外,文档也起备忘录的作用,在完成生命周期每个阶段的任务时,应该采用适合该阶段任务特点的系统化的技术方法结构
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 旋律与节奏关系解读试题及答案
- 广西评标专家试题及答案
- 新能源汽车的切换技术研究试题及答案
- 智能投顾平台2025年风险控制与合规操作策略研究报告
- 新能源汽车行业技术考试发展战略题及答案
- 2025教育学面试题库及答案
- 金融衍生品市场2025年创新产品与风险识别报告
- 天然气水合物(可燃冰)开采技术对全球能源安全的影响研究报告
- 应用写作试题及答案a卷
- 家具行业设计中的用户导向与人性化设计原则分析试题及答案
- 感悟考古智慧树知到期末考试答案章节答案2024年北京大学
- 2025陕西省高二学业水平考试数学模拟试卷试题(含答案详解)
- DL-T5142-2012火力发电厂除灰设计技术规程
- 2024年全国青少年航天创新大赛航天知识竞赛试题
- DB11∕2075-2022 建筑工程减隔震技术规程
- 铅锌矿的冶炼技术进展与设备改进
- 煤矿劳动组织管理培训课件
- 仓储绩效考核实施细则仓库人员绩效考核内容与评分标准
- 混凝土拌合物凝结时间自动计算记录
- 2022睡眠医学中心建设指南
- 地磅允许误差
评论
0/150
提交评论