《软件工程导论第1章(Office2007版)》由会员分享,可在线阅读,更多相关《软件工程导论第1章(Office2007版)(66页珍藏版)》请在金锄头文库上搜索。
1、课程介绍及要求课程课程目的目的:用工程化的方法来开发软件用工程化的方法来开发软件教学目标为什么要学习这门课程有助于正确理解和认识“软件”的概念及其特点理解软件开发面临的问题和挑战掌握软件工程的原则、方法和思想来系统地开发 软件,尤其是复杂、庞大的软件的开发了解和接触软件开发所需的各种技术手段理解、掌握和运用理解什么是软件工程为什么需要软件工程(产生背景)软件工程需要解决那些问题软件工程涉及那些方面内容掌握软件工程概念技术过程手段工具运用运用工程化思想进行软件开发需求分析软件设计程序设计软件维护内容组织课程介绍和要求先导要求程序设计语言最好有一定的软件开发经验学习要求听理解知识点和思想以理解促记
2、忆做实践体会软件工程的原则、方法和技术,在实践中提高培养抽象思维能力培养独立解决问题的能力培养合作精神想阅读相关资料,学会以软件工程的方法来分析问题课程介绍和要求考核方式考试(100%)课程介绍和要求8课程综合练习要求内容选择一个项目开发课题,用软件工程的思想知道 其开发过程。完成需求分析,详细设计,测试, 项目汇报。项目:网站、计算机博弈9课程综合练习要求提交内容电子文档评价方法文档: 完整性、合理性、规范性注意: 严格按照软件工程要求执行(独立完成)设计用图形工具:1)MS VISIO2)Visual Paradigm3)LoadRunner4)Rational Rose5)Togethe
3、r课程介绍和要求10导出成相应的JPG文 件教师王静文Email: 课程介绍和要求11参考文献软件工程实践者的研究方法,R S. Pressman, 机械工业出版社系统分析与设计,Robert,电子工业出版社软件开发的科学与艺术,微软亚洲研究院,电 子工业出版社,2002 年 软件创新之路,Cooper,电子工业出版社软件工程导论学习辅导,张海藩,清华大学出 版社课程介绍和要求12第1章 软件工程概述软件工程产生的背景(软件危机) 软件工程定义软件工程方法学软件过程模型小结1.1 软件工程产生的背景1)软 件a. 软件的定义软件软件( Software)是计算机系统中与硬件相互依是计算机系统中
4、与硬件相互依 存的另一部分,它是包括存的另一部分,它是包括程序程序(Program) ,数据数据( Data)及其相关及其相关文档文档( Document)的完整集合。的完整集合。Software = Program + Data + Document 程序是按事先设计的功能和性能要求执行的程序是按事先设计的功能和性能要求执行的 指令序列指令序列 数据是使程序能正常操纵信息的数据结构数据是使程序能正常操纵信息的数据结构 文档是与程序开发,维护和使用有关的图文文档是与程序开发,维护和使用有关的图文 材料材料非常复杂逻辑复杂远远高于硬件的逻辑复杂度开发复杂成本难以估算进度难以控制人员素质要求质量得
5、不到保证96年Ariane火箭发射失败,浮点数转 换时发生错误Copyright Xinjun Mao151.1 软件工程产生的背景b、软件的特征成本高(1/2)1.1 软件工程产生的背景b、软件的特征软件成本硬件成本成本高(2/2)Copyright Xinjun Mao课程介绍和要求风险大美国Standish咨询集团的统计分析(至 90年代初的软件项目执行情况)成功:16.2%失败:31受到挑战:53.8%近几年来的统计数据成功:26失败:28受到挑战:46%Copyright Xinjun Mao课程介绍和要求 1.1 软件工程产生的背景b、软件的特征维护困难维护形式多样化改正性:修改故
6、障完善性:增加功能适应性:移植维护成本越来越高55%到70维护带来的问题1.1 软件工程产生的背景b、软件的特征1.1 软件工程产生的背景c. 软件的发展早期面向批处理有限的分布自定义软件第二阶段多用户实时数据库软件产品第三阶段分布式系统嵌入“智能”低成本硬件消费者的影响第四阶段强大的桌面系统面向对象技术专家系统人工神经网络并行计算网络计算机1950196019701980199020001968年10月,北大西洋公约组织约组织 (NATO)的科学家在德国 召开的学术术会议议上正式提出了软软件危机问题问题 。1.1 软件工程产生的背景2) 、软件危机a、软件危机的表现(1/3)成本高IBM 3
7、60 OS, 5000多人年, 耗时4年(19631966),花费2 亿多美元美国空军:1955年软件占总费 用(计算机系统)的18%,70年 60%,85年达到85美国全球军事指挥控制系统 ,硬件1亿美元,软件高达7.2 亿美元计算机软件和硬件费用比软件质量得不到保证软件应用面的扩大:科学计算、军事、航空航天、工业 控制、企业管理、办公、家庭软件越来越多的应用于安全攸关(safety critical)的系统, 对软件质量提出更高的要求80年代欧洲亚丽安娜火箭的发射失败,原因是软件错误美国阿托拉斯火箭的发射失败,原因是软件故障英国1986年开发的办公室信息系统Folios经4年,因性能 达不
8、到要求,1989年取消日本第5代机因为软件问题在投入50亿美元后于1993年下 马由于软件质量问题导致失败的软件项目非常多a、软件危机的表现(2/3)a、软件危机的表现(3/3)进度难以控制项目延期比比皆是由于进度问题而取消的软件项目较常见只有一小部分的项目能够按期完成维护非常困难软件维护的多样性软件维护的复杂性软件维护的副作用b、产生软件危机的原因-与软件本身的特点有关 (难于维护, 逻辑复杂)-与软件开发与维护的方法不正确有关:-软件程序-急于求成=拔苗助长-各自为阵无方法/学开发一个具有一定规模和复杂性的软件系 统与编写一个简单的程序不一样正如建设平房和高楼大厦大型、复杂软件系统的开发是
9、一项工程, 必须按照工程化的方法组织软件的生产和 管理,必须经过分析、设计、实现、测 试、维护等一系列软件过程和活动C、软件工程(学)因危机而产生d、软件工程(学):克服软件危机的努力(1)从管理的角度软件开发过程的研究、文档的标 准化以及人们交流方式等 (2)软件开发方法的研究 结构化软件开发方法, 面向对象的 开发提出有效的方法和工具支持软件开发1968年提出软件工程概念和思想20世纪70年代的结构化软件开发方法20世纪80年代的面向对象的软件开发方法新的技术: 软件重用、快速原型、需求工程典型技术: COM, Java, C+, J2EE, .Net, .支撑工具和环境:Jbuilder
10、, Visual Studio, WebLogic, 1、解决危机的技术途径20世纪80年代末,美国DoD和工业界开始认识到 管理的重要性美国DoD的一项研究表明,70%的项目由于管理不善导 致难以控制进步、成本和质量;进一步的研究发现:管理是影响软件项目成功开发的全 局性因素,而技术只影响局部如果软件开发组织不能对软件项目进行有效管理,就不 能充分发挥软件开发方法和工具的潜力,也就不能高效 率地开发出高质量的软件产品2、解决危机的管理途径1.2 软件工程定义(1)软件工程就是建立和使用一套合理 的工程原理,从而经济地获得可靠的、 可以在实际机器上高效运行的软件。1.2 软件工程定义(2)软件
11、工程是:(1)把系统的、规范的、可度量的途径应用于软件开发、运行和维护 过程,也就是把工程应用于软件;(2)研究 (1)中提到的途径。1.2 软件工程定义总之:软件工程是应用计算机科学、数学及 管理科学等原理开发软件的工程。它借鉴 传统工程的原则、方法,以提高质量,降 低成本为目的。软件工程的特性1. 软件工程关注于大型程序的构造 2. 软件工程的中心课题是控制复杂性 3. 软件经常变化 4. 开发软件的效率非常重要 5. 和谐地合作是开发软件的关键 6. 软件必须有效地支持它的用户 7. 在软件工程领域中是由具有一种文化背景的人替具有另 一种文化背景的人1.2 软件工程定义用分阶段的生命周期
12、计划严格管理坚持进行阶段评审实行严格的产品控制采用现代程序设计技术结果应能清楚地审查开发小组的人员应该少而精承认不断改进软件工程实践的必要性软件工程的基本原理1.3 软件生命周期模型问题定义软件定义 可行性研究需求分析总体设计详细设计 软件生命周期 软件开发 编码单元测试综合测试运行维护 持久满足用户需求1.4 软件过程模型软件过程是为了获得高质量软件所需要完成的一系 列任务的框架,它规定了完成各项任务的工作步骤。工作任务里程碑、交付物SQA点 A process defines Who is doing What, When, and How, in order to reach a cer
13、tain goal.公共过程框架辅助活动框架活动任务集合软件过程1.4 软件过程模型软件生命周期的每一阶段都有明确的任务, 把规模大、结构复杂、管理复杂的软件开发变 得容易控制和管理。各个阶段的活动如何衔接,开发过程中采 用什么样的策略,应遵守什么样的规定和制约 ,将这些活动框架(忽略不必要的细节)用一 种模型表示出来,称为软件过程模型(或软件 开发模型或软件生命周期模型)。也就是说, 软件过程模型是软件开发全部 过程、活动和任务的结构框架。1.4 软件过程模型(1)瀑布模型(Waterfall Model )传统瀑布模型1.4 软件过程模型传统瀑布模型的特点 提供了软件过程模型的基本框架(模
14、板)。 强调了每一阶段活动的严格顺序。 质量保证观点:以经过评审确认了的阶段工作产品(文档)驱动下一阶段的工作,便于管理。 是一种整体开发模型,程序的物理实现集中在开发阶段的后期,用户在最后才能看到自己的产品。传统瀑布模型存在什么问题?1.4 软件过程模型实际的瀑布模型1.4 软件过程模型瀑布模型适合于用户需求明确、完整、无 重大变化的软件项目开发。瀑布模型的成 功在很大程度上是由于它基本上是一种文 档驱动的模型。“瀑布模型是由文档驱动的”这个事实也 是它的一个主要缺点。实际项目很少按照该模型给出的顺序进行;用户常常难以清楚地给出所有需求;用户必须有耐心,等到系统开发完成。瀑布模型的优缺点1.
15、4 软件过程模型(2)原型模型快速原型模型(Rapid Prototype Model)在用户不能给出完整、准确的需求说明,或者开发者 不能确定算法的有效性、操作系统的适应性或人机交互的 形式等许多情况下,可以根据用户的一组基本需求,快速 建造一个原型(可运行的软件),然后进行评估,进一步 精化、调整原型,使其满足用户的要求,也使开发者对将 要做的事情有更好的理解。建造/修改 原型听取用户意见用户 测试 运行 原型原型实现范型1.4 软件过程模型快速原型 验证规格说明 验证设计 验证编码 测试综合测试维护变化的需求 验证维护过程 开发过程1.4 软件过程模型原型模型存在的问题 为了使原型尽快的工作,没有考虑软件的总体 质量和长期的可维护性。 为了演示,可能采用不合适的操作系统、编程 语言、效率低的算法,这些不理想的选择成了系统的 组成部分。 开发过程不便于管理。有效的使用原型模式建造原型仅是为了定义需求,之后就被抛弃(或被 部分抛弃),实际的软件在充分考虑了质量和可维护 性之后才被开发。1.4 软件过程模型(3)增量模型 (Incremental Model)是一种渐进地开发逐步完善的软件版本的模型。需求分析 验证规格说明 验证设计 验证维护针对每个构件完成 详细设