软件工程课件136114.pptx
《软件工程课件136114.pptx》由会员分享,可在线阅读,更多相关《软件工程课件136114.pptx(82页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、现代软件工程计算机信息工程学院2004年9月授课教师:李德生授课教师:李德生答疑时间:周三下午答疑时间:周三下午答疑地点:计算机应用教研室答疑地点:计算机应用教研室E_mail:Lids_E_mail:Lids_Software=Programming+DocumentsProgramming=Data Structure+algorithm第一章第一章 软件工程概述软件工程概述1.1 1.1 软件工程的基本概念、特点和分类软件工程的基本概念、特点和分类1.1.1 1.1.1 软件的概念、特征软件的概念、特征计算机软件是程序、数据及相关文档的集合。计算机软件是程序、数据及相关文档的集合。1.1
2、 1.1 软件工程的基本概念、特点和分类软件工程的基本概念、特点和分类软件的特征:软件的特征:P1P1。1.1 1.1 软件工程的基本概念、特点和分类软件工程的基本概念、特点和分类1.1.2 1.1.2 软件的分类:软件的分类:系统软件、支撑软件、应用软件。系统软件、支撑软件、应用软件。软件规模:软件规模:类别参加人员数研制期限产品规模(源程序行数)微型114周0.5k小型116月1k2k中型2512年5k50k大型52023年50k100k甚大型100100045年1M(=1000k)极大型20005000510年1M10M1.2.1 软件的发展软件的发展1946年,第一台计算机诞生,通过编
3、写机器码指令的方式来编写程年,第一台计算机诞生,通过编写机器码指令的方式来编写程序,满足了人们计算方面的需要。序,满足了人们计算方面的需要。之后,计算机硬件以空前的速度飞速发展。由电子管计算机时代之后,计算机硬件以空前的速度飞速发展。由电子管计算机时代晶体管计算机时代晶体管计算机时代集成电路计算机时代,集成电路计算机时代,按照摩尔法则(微处理器的性能每按照摩尔法则(微处理器的性能每18个月翻番)使计算机的性能不个月翻番)使计算机的性能不断提高。同时硬件技术的突破,为软件技术的发展提供了空间,断提高。同时硬件技术的突破,为软件技术的发展提供了空间,软件技术也得到了相应的发展,由最初的机器码编程软
4、件技术也得到了相应的发展,由最初的机器码编程汇编语言汇编语言高级语言。关系数据库理论的发展也促进了数据库应用系统的高级语言。关系数据库理论的发展也促进了数据库应用系统的发展。发展。软件技术上的这一系列发展的结果使得计算机的应用领域由最初的软件技术上的这一系列发展的结果使得计算机的应用领域由最初的科学计算发展到军事、经济、科学、文化等各个领域。计算机应科学计算发展到军事、经济、科学、文化等各个领域。计算机应用系统由简单到复杂,由小型到大型,到了用系统由简单到复杂,由小型到大型,到了60年代末期,从事软年代末期,从事软件开发的人员发现,他们使用过去一直使用的方法来开发大型复件开发的人员发现,他们使
5、用过去一直使用的方法来开发大型复杂的应用系统遇到了问题。过去,编制程序完全是一种技巧,主杂的应用系统遇到了问题。过去,编制程序完全是一种技巧,主要依赖于程序员的素质,程序是程序员智慧的结晶,每个程序员要依赖于程序员的素质,程序是程序员智慧的结晶,每个程序员编程无章法,随意性大,开发模式完全是手工小作坊式的。由此,编程无章法,随意性大,开发模式完全是手工小作坊式的。由此,60年代末,对大型系统的开发呈现出年代末,对大型系统的开发呈现出“软件危机软件危机”。1.2 软件危机与软件工程软件危机与软件工程例例:Windows9595有有10001000万行代码万行代码 Windows20002000有
6、有50005000万行代码万行代码Exchange2000和和 Windows20002000开发人员开发人员结构结构Exchange2000Windows20002000项目经理项目经理25人人约约250人人开发人员开发人员140人人约约1700人人测试人员测试人员350人人约约3200人人自自20世纪世纪40年代中出现了世界上第一台计算机年代中出现了世界上第一台计算机以后,就有了程序的概念。其后经历了几十以后,就有了程序的概念。其后经历了几十年的发展,计算机软件经历了四个发展阶段:年的发展,计算机软件经历了四个发展阶段:程序设计阶段,约为程序设计阶段,约为50至至60年代年代程序系统阶段,
7、约为程序系统阶段,约为60至至70年代年代软件工程阶段,约为软件工程阶段,约为70年代以后年代以后面向对象软件工程阶段,约为面向对象软件工程阶段,约为80年代以后年代以后Evolution of software 早期早期 第二阶段第二阶段 第三阶段第三阶段 第四阶段第四阶段面向批处理面向批处理 多用户多用户 分布式系统分布式系统 强大的桌面系统强大的桌面系统有限的分布有限的分布 实时实时 嵌入嵌入“智能智能”面向对象技面向对象技术术自定义软件自定义软件 数据库数据库 低成本硬件低成本硬件 专家系专家系统 软件产品软件产品 消费者的影响 人工神经网络人工神经网络 并行计算并行计算 网络计算机网
8、络计算机1950196019701980199020001.2.2 软件危机的主要表现软件危机的主要表现1.对软件开发成本和进度的估计常常很不准确。对软件开发成本和进度的估计常常很不准确。(下页下页图图)软件开发很难按预定计划实现,投入了资金,能否出结果,出软件开发很难按预定计划实现,投入了资金,能否出结果,出怎样的结果,事先难以预料。怎样的结果,事先难以预料。2.用户对用户对“已完成已完成”的软件系统不满意的现象经常发的软件系统不满意的现象经常发生。生。3.软件产品的质量往往不可靠。软件可靠性和质量保软件产品的质量往往不可靠。软件可靠性和质量保证的定量概念刚刚出现不久。证的定量概念刚刚出现不
9、久。1962年年6月,美国飞向金星的第一个空间探测号(水手月,美国飞向金星的第一个空间探测号(水手1号),因其号),因其飞舱中的计算机导航程序之一的一个语句的语义出错,总是偏离航线无飞舱中的计算机导航程序之一的一个语句的语义出错,总是偏离航线无法取得成功。法取得成功。1965年年1970年,美国范登堡基地因程序有错误造成发射年,美国范登堡基地因程序有错误造成发射火箭多次失败。火箭多次失败。1.2 软件危机与软件工程软件危机与软件工程yet,Success Hasnyet,Success Hasn t Come Easilyt Come Easily31%31%53%53%16%16%Succe
10、ssfullyChallengedCanceled4.软件常常是不可维护的。通常软件维护的费用占总软件常常是不可维护的。通常软件维护的费用占总费用的费用的55%-70%。错误具有累积和放大效应。错误具有累积和放大效应。在后期发现的错误改正的成本和难度将是巨大的(比早期进在后期发现的错误改正的成本和难度将是巨大的(比早期进行修正所付出的代价高行修正所付出的代价高2-3个数量级),甚至是不可能改正个数量级),甚至是不可能改正的。的。改正一个问题需付出的代价需求分析结构设计详细设计编码集成测试系统测试现场改正一个问题的估计费用改正一个问题估计的工作量20200200010005.02.50.050.
11、5(美元)(人天)5.软件通常没有适当的文档资料,给软件开发软件通常没有适当的文档资料,给软件开发和维护带来极大困难。和维护带来极大困难。文档的作用:文档的作用:管理人员:评价软件开发进度。管理人员:评价软件开发进度。开发人员:通讯工具。开发人员:通讯工具。维护人员:维护的依据。维护人员:维护的依据。6.软件成本在计算机系统总成本中所占的比例软件成本在计算机系统总成本中所占的比例逐年上升。(见下页图)逐年上升。(见下页图)7.软件开发生产率提高的速度远远跟不上计算软件开发生产率提高的速度远远跟不上计算机应用迅速普及深入的趋势。机应用迅速普及深入的趋势。处在十字路口的中国软件产业处在十字路口的中
12、国软件产业 主权大国必须建立基于自主技术的、主权大国必须建立基于自主技术的、完整的软件产业体系。完整的软件产业体系。软件本国提供率:中国软件本国提供率:中国1/31/3左右,美国左右,美国97%97%“印度模式印度模式”还是还是“中国模式中国模式”软件人才结构不合理,软件人才结构不合理,缺乏中高级软缺乏中高级软 件人才。软件人员缺乏软件工程化件人才。软件人员缺乏软件工程化的概念。的概念。1.2.3 1.2.3 软件工程软件工程 1968 1968年由年由NATO(北大西洋公约北大西洋公约组织组织)在德国在德国Garmish召开的学术会议召开的学术会议上,上,Feitz BauerFeitz B
13、auer首先提出了首先提出了“软件软件工程工程”概念。概念。P.Wegner 和和B.Boehm认为软件认为软件工程可定义为:工程可定义为:科学知识在设计和构造计算机程科学知识在设计和构造计算机程序,以及开发、运作和维护这些序,以及开发、运作和维护这些程序所要求的有关文档编制中的程序所要求的有关文档编制中的实际应用。实际应用。软件工程的定义软件工程的定义 Fritz Bauer在在NATO会议上会议上给出的定义:给出的定义:“软件工程是为了经济地软件工程是为了经济地获得可靠的和能在实际机器上高获得可靠的和能在实际机器上高效运行的软件而确立和使用的健效运行的软件而确立和使用的健全的工程原理(方法
14、)。全的工程原理(方法)。”软件工程的定义软件工程的定义 IEEE IEEE【IEE83】给出的软给出的软件工程定义:件工程定义:“软件工程是开发、运行、软件工程是开发、运行、维护和修复软件的系统方法。维护和修复软件的系统方法。”软件工程的定义软件工程的定义 IEEEIEEE【IEE93】给出了一个更给出了一个更加综合的定义:加综合的定义:“将系统化的、规范的、可将系统化的、规范的、可度量的方法应用于软件的开发、度量的方法应用于软件的开发、运行和维护的过程,即将工程化运行和维护的过程,即将工程化应用于软件中。应用于软件中。”软件工程的定义软件工程的定义 软件工程是指导软件开发和维护的软件工程是
15、指导软件开发和维护的工程类学科,它以计算机科学理论及工程类学科,它以计算机科学理论及其他相关学科的理论为指导,采用工其他相关学科的理论为指导,采用工程化的概念、原理、技术和方法进行程化的概念、原理、技术和方法进行软件的开发和维护,把经过时间证明软件的开发和维护,把经过时间证明正确的管理措施和当前能够得到的最正确的管理措施和当前能够得到的最好的技术方法结合起来,以较少的代好的技术方法结合起来,以较少的代价获取高质量的软件价获取高质量的软件 软件工程是应用计算机科学、数学及软件工程是应用计算机科学、数学及管理科学等原理,借鉴传统工程的管理科学等原理,借鉴传统工程的原则、方法来创建软件,从而达到原则
16、、方法来创建软件,从而达到提高质量、降低成本的目的其中提高质量、降低成本的目的其中计算机科学和数学用于构造模型、计算机科学和数学用于构造模型、分析算法,工程科学用于制定规范、分析算法,工程科学用于制定规范、明确风范(明确风范(paradigmparadigm)、评估成本、)、评估成本、确定权衡,管理科学用于进度、资确定权衡,管理科学用于进度、资源、质量、成本等的管理源、质量、成本等的管理1.2.4 软件工程的研究对象与基本原理软件工程的研究对象与基本原理研究对象:研究对象:软件工程主要研究与软件开发和维护有关的四个方面软件工程主要研究与软件开发和维护有关的四个方面的内容:过程与模型、方法和技术
17、、工具和环境、的内容:过程与模型、方法和技术、工具和环境、标准和规范。软件工程管理则贯穿于这四个方面。标准和规范。软件工程管理则贯穿于这四个方面。1.所有软件开发和维护都是由一系列过程所构成,它所有软件开发和维护都是由一系列过程所构成,它将其他三个方面结合起来。以合理及时地进行软件将其他三个方面结合起来。以合理及时地进行软件开发和维护。软件生存周期模型则将软件工程过程开发和维护。软件生存周期模型则将软件工程过程有机的结合起来,提供一个结构框架,明确主要活有机的结合起来,提供一个结构框架,明确主要活动和任务,忽略次要的细节,以利于开发维护人员动和任务,忽略次要的细节,以利于开发维护人员理解并适应
18、不同的项目。过程强调的是具体的活动理解并适应不同的项目。过程强调的是具体的活动和任务等,模型则突出表现过程的有机结合。和任务等,模型则突出表现过程的有机结合。2.软件开发和维护方法体现了软件开发和维护软件开发和维护方法体现了软件开发和维护人员看待系统的立场和观点,即方法论意义人员看待系统的立场和观点,即方法论意义上的方法。上的方法。例如,结构化方法认为系统是由一些结例如,结构化方法认为系统是由一些结构化的功能相互联系、相互作用而构成,面构化的功能相互联系、相互作用而构成,面向对象的方法则认为系统是由一些对象的相向对象的方法则认为系统是由一些对象的相互联系、相互作用而构成。技术则是方法的互联系、
19、相互作用而构成。技术则是方法的具体实现,有若干步骤构成,突出具体实现,有若干步骤构成,突出“如何做如何做”,有时也不加区别的称为技术方法。,有时也不加区别的称为技术方法。3.工具为软件开发和维护的方法、技术提供了工具为软件开发和维护的方法、技术提供了自动或半自动的软件支持,以提高软件生产自动或半自动的软件支持,以提高软件生产效率。效率。将各种工具结合起来,连同有关的软硬将各种工具结合起来,连同有关的软硬件便形成软件开发和维护环境,其目的是使件便形成软件开发和维护环境,其目的是使软件工具支持整个软件生存周期。如北大的软件工具支持整个软件生存周期。如北大的青鸟系统等。青鸟系统等。4.作为工程而言,
20、标准化、规范化可以使各种作为工程而言,标准化、规范化可以使各种工作有章可循,进而提高生产效率和产品质工作有章可循,进而提高生产效率和产品质量。量。软件工程标准主要有五个层次:国际标软件工程标准主要有五个层次:国际标准、国家标准、行业标准、企业规范和项目准、国家标准、行业标准、企业规范和项目规范。规范。软件工程是一门交叉学科软件工程是一门交叉学科软件工程的主要研究内容u软件开发技术软件开发技术:软件开发方法学软件开发方法学 软件开发过程软件开发过程 软件工具和软件工程环境软件工具和软件工程环境 u软件工程管理软件工程管理:软件管理学软件管理学 软件经济学软件经济学 软件心理学软件心理学 软件工程
21、所包含的内容不是一成不变的,软件工程所包含的内容不是一成不变的,随着人们对软件系统的研制开发和生产的理解而随着人们对软件系统的研制开发和生产的理解而不断变化。不断变化。软件工程的层次结构:软件工程的层次结构:任何工程化方法都必须围绕高质量这一核心。任何工程化方法都必须围绕高质量这一核心。软件工程的四个研究对象构成了以软件质量软件工程的四个研究对象构成了以软件质量为核心的层次结构。为核心的层次结构。软件工程 一种层次化技术一种层次化技术工具和环境层工具和环境层方法和技术层方法和技术层过程和模型层过程和模型层质量核心层质量核心层Software engineering layersSoftware
22、 engineering layers标准和规范层标准和规范层软件工程三个要素:软件工程三个要素:软件工程三个要素:软件工程三个要素:方法、工具、过程方法、工具、过程方法、工具、过程方法、工具、过程软件工程框架可可用用性性性性性性确确正正合合算算选取适宜的开发模型选取适宜的开发模型采用合适的设计方法采用合适的设计方法提供高质量的工程支持提供高质量的工程支持重视软件工程的管理重视软件工程的管理基基本本过过程程原则原则 目标目标 过过 程程支支支支持持持持过过过过程程程程组组组组织织织织过过过过程程程程软件工程知识结构软件工程知识结构 20012001年年5 5月月ISO/IEC JTC 1ISO
23、/IEC JTC 1(ISOISO和和IECIEC的第一联合技术委员会)发布了的第一联合技术委员会)发布了 SWEBOK指南指南V0.95(V0.95(试用版试用版)(Guide to the Software Engineering Body of Knowledge,简简称称SWEBOK)SWEBOK把软件工程学科的主把软件工程学科的主体知识分为体知识分为10个知识领域。个知识领域。软件工程知识结构软件工程知识结构 软件需求软件需求 软件设计软件设计 软件构造软件构造 软件测试软件测试 软件维护软件维护 软件配置管理软件配置管理 软件工程管理软件工程管理 软件工程过程软件工程过程 软件工程
24、工具和方法软件工程工具和方法 软件质量软件质量软件工程的基本原理:软件工程的基本原理:著名软件工程专家著名软件工程专家Boehm于于1983年提出了软年提出了软件工程的七条基本原理:件工程的七条基本原理:1.用分段的生存周期计划严格管理。用分段的生存周期计划严格管理。2.坚持进行阶段评审。坚持进行阶段评审。3.实施严格的产品控制。实施严格的产品控制。4.采用现代程序设计技术。采用现代程序设计技术。5.结果应能清楚地审查。结果应能清楚地审查。6.开发小组的成员应该少而精。开发小组的成员应该少而精。7.承认不断改进工程实践的必要性。承认不断改进工程实践的必要性。1.3.1 结构化方法结构化方法 结
25、构化方法基于软件工程生存周期的概结构化方法基于软件工程生存周期的概念之上。目前,已经形成了完整的念之上。目前,已经形成了完整的SA-SD-SP方法。方法。总的指导思想:自顶向下、逐步求精、总的指导思想:自顶向下、逐步求精、单入口、单出口。基本原则:抽象和功能分单入口、单出口。基本原则:抽象和功能分解。结构化方法围绕处理解。结构化方法围绕处理“功能功能”的实现过的实现过程来构造软件系统。适于需求可以预先确定程来构造软件系统。适于需求可以预先确定的系统开发。的系统开发。1.3 软件开发方法软件开发方法1.3.2 面向对象方法面向对象方法面向对象方法有如下要点:面向对象方法有如下要点:1.世界由世界
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 软件工程 课件 136114
限制150内