资源预览内容
第1页 / 共66页
第2页 / 共66页
第3页 / 共66页
第4页 / 共66页
第5页 / 共66页
第6页 / 共66页
第7页 / 共66页
第8页 / 共66页
第9页 / 共66页
第10页 / 共66页
亲,该文档总共66页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
Depart of Computer Science, Huaihai Institute of Technology Spring 2008,软件工程 Software Engeering,淮海工学院计算机工程学院,教材、参考书,教材 软件工程导论,张海藩编著,清华大学出版社,2004.9 软件工程导论学习辅导,张海藩编著,清华大学出版社,2004.9 参考书 软件工程,齐治昌 谭庆平 宁洪编著,高等教育出版社。 软件工程自考应试指导,刘海岩等编著,南京大学出版社。 软件工程学实验,周苏等编著,科学出版社,2005.4 软件工程(英文版第7版),Ian Sommerville,机械工业出版社,2004.11,软件工程课程说明,软件工程涉及: 软件生命周期(定义、设计、编码、测试、发布、维护、淘汰)各阶段的任务与内容 软件开发生产中有关工艺、模式、方法和工具的管理与技术问题 软件工程不涉及: 程序语言的内容 软件编程 软件工程着力于解决软件危机,即软件经常不能按时按质地交付使用,与其它软件专业课的区别,(1) 立足于系统的整体。 (2) 讲授系统分析、系统设计、 测试及维护的理论和方法。 (3) 构筑一个软件系统,实践 软件开发全过程。,“软件工程”课程教学与实践的目标,转变对软件开发的认识: 上升 程序 系统 转变思维定式: 上升 程序员 系统工程师 (系统分析员) 工程化训练,软件工程与一般工程的差异,软件是逻辑产品而不是实物产品 软件的功能依赖于硬件和软件的运行环境以及人们对它的操作 软件设计的复杂性 软件特征: 功能的多样性 实现的多样性 能见度低 软件结构合理性差 智力密集及知识产权保护,内容安排,第一章 软件工程学概述 第二章 可行性研究 第三章 需求分析 第四章 总体设计 第五章 详细设计 第六章 实现 第七章 测试,第八章 维护 第九章 面向对象方法学引论 第十章 面向对象分析 第十一章 面向对象设计 第十二章 面向对象实现 第十三章 软件项目管理,学习目标,了解软件产生软件危机的原因和消除软件危机的途径; 掌握软件生命周期的概念与生命周期中各阶段划分; 熟练掌握软件过程模型或生命周期模型中典型的几个模型瀑布模型、原型模型、增量模型和螺旋模型。,软件工程发展的大事记,1968.10 NATO在德国南部的Gamisch会议上首次提出“软件工程” 1976 IEEE 成立标准委员会,“软件工程”成为计算机科学专业的一门课程 1987 ISO/IEC成立标准委员会,“软件工程”成为一个专业 1993 IEEE CS/ACM 成立联合委员会 1998 美国德州首次发布“软件工程师”执照; 开始执行软件工程知识体项目,软件是程序及其有关的文件与数据的集合。 软件的开发周期大大长于生产周期。 软件不像硬件一样会磨损,但会过时。 软件很容易复制,因此具有复杂的知识产权问题。 软件是计算机系统产品的灵魂。 随着计算机系统的普及,软件的复杂性与重要性与日俱增。,软件的特点,软件与硬件产品的故障率,时间,时间,故障率,使用初期,磨损期,理想曲线,实际曲线,修改,硬件故障率分布曲线,软件故障率分布曲线,软件应用领域,系统软件 操作系统 编译器 编辑器 应用软件 企业管理 教育应用,实时软件 系统控制 嵌入软件 个人计算机软件 所有用于个人计算机的软件 科学与工程计算 仿真 计算机辅助设计 人工智能 专家系统 人工神经网络,软件应用于所有需要 人类智能的领域,类别 参加人员数 研制期限 源程序行数 微型 1 14周 0.5k 小型 1 16月 1k2k 中型 25 12年 5k50k 大型 520 23年 50k100k 甚大型 1001000 45年 1M(=1000k) 极大型 20005000 510年 1M10M,按软件规模进行划分:,软件的发展,1950 1960 1970 1980 1990,第一代,第二代,第三代,第四代,批处理 分发量小 专用软件,多用户 实时性 数据库 商品软件,C/S结构 开发工具 分布式系统 嵌入式 数据仓库,面向对象 网络环境 合作开发 分布计算 并行计算,处在十字路口的中国软件产业,主权大国必须建立基于自主技术的、 完整的软件产业体系。 软件本国提供率:中国1/3左右,美国97% “印度模式”还是“中国模式” 软件人才结构不合理,缺乏中高级软 件人才; 软件人员缺乏软件工程化的概念。,印度模式与中国国情,是一种劳动密集型的“来料加工”模式,这有利于发挥中国的优势,充分利用更多的、具有一技之长的劳动力; 其次,它是一种标准的工厂式作业模式,比较适应全球制造业向中国转移的需要,有利于带动软件产业的普遍发展; 再次,与印度一样,长期看来,中国的软件业应该是具有国际竞争力的,其标志之一就在于大量的经过专门训练的软件人才的使用成本相对较低; 此外,印度模式是一种开放的外向型模式,它代表了全球化的方向,也代表了中国未来在这方面的发展趋势,软件发展趋势,并行计算提高计算速度 面向对象的软件开发方法 软件框架( frameworks) 用于处理大型软件系统 图形接口越来越强 人工智能和神经网络技术 高级程序设计语言 专用工具软件 开放资源软件(Open Source Software),第1章 软件工程学概述,1.1 软件危机 软件危机的出现:60年代中期到70年代中期,许多软件最终成为不可维护的,这就是软件危机. 软件工程就是为解决软件危机问题而出现的。1968年,正式提出并使用“软件工程”的概念。,1.1.1 什么是软件危机?,对软件开发成本和进度的估计常常很不准确。 用户对为他们开发的软件往往不满意。 软件产品的质量往往靠不住。 软件常常是不可维护的。,软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。包括:,软件通常没有适当的文档资料。 软件成本在计算机系统总成本中所占的比例逐年上升。 软件开发生产率提高的速度太慢。,以上的这些问题能够解决吗?,1.1.1 什么是软件危机?,1.1.2 产生软件危机的原因,不能用象硬件替换部件的方式修复软件的故障 软件质量是一个牵涉到人的因素的问题 软件项目管理者往往没有软件开发的经验 软件开发者往往没有经过正规的工程训练 编程人员不愿意将软件开发的艺术过程转化为工程过程,Windows95有1000万行代码 Windows2000有5000万行代码, 3000多个工程师,几百个小团队。 Exchange2000和 Windows2000开发人员结构,例,对软件的常见误解,用户的误解 开发人员的误解 管理者的误解,误解 先对软件需求做一般的说明,以后再逐步明确就可以了. 需求本身就是不断变化的,软件容易改变可以很快调整适应这种变化.,现实 软件需求不明确是造成软件开发费用增加和延时交货的主要原因. 软件开发费用随着开发阶段的后移而大大增加.,1x,1.5-6x,60-100x,软件开发 费用,设计阶段,开发阶段,维护阶段,用户的误解,开发人员的误解,误解 一旦程序开发完毕工作正常,我的任务就完成了 在程序工作之前,无法顾及软件的质量问题. 对于一个成功的项目来说,唯一能够提供的就是可以工作的程序.,现实 一个软件的50%-70% 的工作量耗在软件交付使用以后. 对于某些错误,软件审查比软件测试更加有效. 一个完整的软件要包括程序、各种文件和各种数据.,管理者的误解,误解 书上已经有各种软件开发的标准,拿来用就是了. 已经有足够的软件开发工具可供使用. 一旦项目的程序员不够可以随时增加.,现实 书上是有各种软件开发的标准,但不是过时就是不适用. 软件工具不是一拿来就能用的. “项目后期增加程序员会使项目的完成更加推后.“ - Brooks,1.1.3 解决软件危机的途径,推广使用在实践中总结出来的开发软件的成功的技术和方法。 开发和使用更好的软件工具。 总之,为了解决软件危机,既要有技术措施,又要有必要的组织管理措施。软件工程正是从管理和技术两方面研究更好地开发和维护计算机软件地一门新兴学科。,1.2 软件工程,IEEE std 610.12 定义为:应用一种系统的、科学严格的、定量的方法来开发、运行和维护软件; 也就是说将工程的方法用于开发软件. Boehm:运用现代科学技术知识来设计并构造计算机程序及为开发、运行和维护这些程序所必需的相关文件资料. Fritz Bauer:建立并使用完善的工程化原则,以较经济的手段获得能在实际机器上有效运行的可靠软件的一系列方法.,1.2.1软件工程的本质特性,关注大型程序的构造 中心问题是控制复杂性 软件经常变化 开发效率非常重要 和谐地合作是开发软件的关键 有效地支持它的用户 具有一种文化背景的人替另一种文化背景的人创造产品,1.2.2软件工程的基本原理,用分阶段的生命周期计划严格管理 坚持进行阶段评审 实行严格的产品控制 采用现代程序设计技术 结果应能清楚地审查 开发小组成员应少而精 承认不断改进软件工程实践地必要性,软件工程包括技术和管理两方面的内容,是技术与管理紧密结合所形成的工程学科。 所谓管理就是通过计划、组织和控制等一系列活动,合理地配置和使用各种资源,以达到既定目标的过程。 通常把在软件生命周期全过程中使用的一整套技术方法的集合称为方法学(methodology),也称为范型(paradigm)。在软件工程领域中,这两个术语的含义基本相同。,1.2.3 软件工程方法学,1.2.3软件工程方法学,传统方法学 面向对象方法学,1.3软件生命周期,生命周期方法学 从时间角度对软件开发和维护的复杂问题进行分解,把软件生命的漫长周期依次划分为若干个阶段,每个阶段有相对独立的任务,然后逐步完成每个阶段的任务。,软件定义 问题定义:要解决的问题是什么? 可行性研究:有可行的解决办法吗? 需求分析:为解决问题,目标系统必须做什么?,软件设计 总体设计:概括地说,应如何解决该问题? 详细设计:应怎样具体实现这个系统? 编码和单元测试:编写代码,测试模块 综合测试:通过测试,使软件达到要求 软件维护 软件维护:通过各种维护活动使系统持久地满足用户地需要,1.3软件生命周期,软件开发的过程,制定开发计划 软件项目划分 软件需求定义 编写软件需求说明 制定软件测试计划与方法 数据结构与数据字典 用户文件 软件设计 编写软件设计说明 制定软件测试计划与方法 数据结构与数据字典,编码与测试 编码 软件测试计划与方法 生产,销售与维护 用户手册 维护服务,软件设计 总体设计:概括地说,应如何解决该问题? 详细设计:应怎样具体实现这个系统? 编码和单元测试:编写代码,测试模块 综合测试:通过测试,使软件达到要求 软件维护 软件维护:通过各种维护活动使系统持久地满足用户地需要,1.4 软件过程,1.4 软件开发模型,软件开发模型(又称为软件生存周期模型) 软件项目开发和维护的总体过程思路的框架。 它指出了软件开发过程各阶段之间的关系和顺序,是软件开发过程的概括。它为软件开发过程提供原则和方法,并为软件工程管理提供里程碑和进度表。因此,软件开发模型也是软件工程的重要内容。,1.4 软件开发模型,软件开发模型的几种类型: 以软件需求完全确定为基础的瀑布模型; 在开发初期仅给出基本需求的渐进式模型,如原型模型、螺旋模型、喷泉模型等; 以形式化开发方法为基础的变换模型、基于四代技术的模型; 基于知识的智能模型等等。 在实际开发时,应根据项目的特点和现有的条件选取合适的模型,也可以把
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号