研究生课软件工程第一讲

上传人:pu****.1 文档编号:584167522 上传时间:2024-08-30 格式:PPT 页数:47 大小:407.52KB
返回 下载 相关 举报
研究生课软件工程第一讲_第1页
第1页 / 共47页
研究生课软件工程第一讲_第2页
第2页 / 共47页
研究生课软件工程第一讲_第3页
第3页 / 共47页
研究生课软件工程第一讲_第4页
第4页 / 共47页
研究生课软件工程第一讲_第5页
第5页 / 共47页
点击查看更多>>
资源描述

《研究生课软件工程第一讲》由会员分享,可在线阅读,更多相关《研究生课软件工程第一讲(47页珍藏版)》请在金锄头文库上搜索。

1、2024/8/301课名:课名: 软软 件件 工工 程程主讲教师:李文立办公室:科技园C座309房间电话:84708058Email: 2024/8/302课程内容n软件工程的基本知识(软件危机、生命周期)n传统软件工程(结构化分析、设计和实现)n面向对象软件工程(OOA概念、方法、设计和实现)n软件项目管理(软件计划、组织、控制,国际标准)n高级软件工程( CORBA, J2EE, web)n补充知识2024/8/303课程目标1)理解软件工程管理的概念和任务;2)理解软件生存期过程;3)掌握需求分析、测试、维护基本技术;4)掌握软件度量、软件配置管理方法;5)理解软件质量保证的手段;6)理

2、解软件项目对人员的需求;7)理解软件知识产权的基本知识;8)掌握面向对象的设计思想;9)了解一个或多个高级建模方法;10)能自行设计、规划一个小型软件项目能自行设计、规划一个小型软件项目。2024/8/304第一章 软件工程概述2024/8/305计算机软件计算机软件n计算机软件是程序、数据及相关文档的集合。nSoftware=Programming + DocumentsnProgramming = Data Structure + algorithm2024/8/306软件工程与编程软件工程与编程n前者是一门学科,一种前者是一门学科,一种科学理论来指导软件系科学理论来指导软件系统设计、开发

3、、部署、统设计、开发、部署、维护以及软件文档管理维护以及软件文档管理n指导如何分解一个系统,指导如何分解一个系统,以便各人分工开发;以便各人分工开发;n指导如何说明每个部分指导如何说明每个部分的规格要求;怎样才能的规格要求;怎样才能易于维护易于维护n单纯的代码编写单纯的代码编写n是软件工程发展的前是软件工程发展的前身身n是软件工程中占据很是软件工程中占据很少时间和空间的一部少时间和空间的一部分分n蓝领工作蓝领工作2024/8/3071.1 1.1 软件工程的背景和历史软件工程的背景和历史n19681968年由年由NATO ( (北大西洋公约组织北大西洋公约组织) )在德国在德国Garmish召

4、开的学术会议上,召开的学术会议上,Feitz Bauer首先首先提出了提出了“软件工程软件工程”概念。概念。软件工程软件工程(SE):计算机科学、管理科学、数学、工程管理计算机科学、管理科学、数学、工程管理等的综合等的综合2024/8/308软件的发展软件的发展1946年,第一台计算机诞生,通过编写机器码指令的方式来年,第一台计算机诞生,通过编写机器码指令的方式来编写程序,满足了人们计算方面的需要。编写程序,满足了人们计算方面的需要。之后,计算机硬件以空前的速度飞速发展。由电子管计算机时之后,计算机硬件以空前的速度飞速发展。由电子管计算机时代代晶体管计算机时代晶体管计算机时代集成电路计算机时代

5、,集成电路计算机时代,按照摩尔法则(微处理器的性能每按照摩尔法则(微处理器的性能每18个月翻番)使计算机的个月翻番)使计算机的性能不断提高。同时硬件技术的突破,为软件技术的发展性能不断提高。同时硬件技术的突破,为软件技术的发展提供了空间,软件技术也得到了相应的发展,由最初的机提供了空间,软件技术也得到了相应的发展,由最初的机器码编程器码编程汇编语言汇编语言高级语言。关系数据库理论的发展高级语言。关系数据库理论的发展也促进了数据库应用系统的发展。也促进了数据库应用系统的发展。软件技术上的这一系列发展的结果使得计算机的应用领域由最软件技术上的这一系列发展的结果使得计算机的应用领域由最初的科学计算发

6、展到军事、经济、科学、文化等各个领域。初的科学计算发展到军事、经济、科学、文化等各个领域。计算机应用系统由简单到复杂,由小型到大型计算机应用系统由简单到复杂,由小型到大型。 早期早期 第二阶段第二阶段 第三阶段第三阶段 第四阶段第四阶段面向批处理面向批处理 多用户多用户 分布式系统分布式系统 强大的桌面系统强大的桌面系统有限的分布有限的分布 实时实时 局、广域网 面向对象、面向对象、B/SB/S自定义软件自定义软件 数据库数据库(1G)(1G) 低成本硬件低成本硬件 专家系专家系统 软件作坊软件作坊 PCPC人工神经网络人工神经网络 C/S 并行计算并行计算 网络计算机网络计算机1950196

7、01970198019902000Evolution of software#2024/8/3010软件开发面临的问题软件开发面临的问题n软件软件规模不断变大规模不断变大n软件复杂性增大软件复杂性增大n不准确的时间和金钱的估算不准确的时间和金钱的估算n软件质量难以达到用户要求软件质量难以达到用户要求n相对硬件产品开发软件开发费用的增加相对硬件产品开发软件开发费用的增加n维护变得越来越困难维护变得越来越困难n硬件价格大幅度下降硬件价格大幅度下降Windows95 有有10百万行代码百万行代码Windows2000 有有50百万行代码百万行代码Windows XP 40百万行代码百万行代码Wind

8、ows Server 2003 50百万行代码百万行代码Debian 5.0 324百万行代码百万行代码OpenSolaris 9.7百万行代码百万行代码FreeBSD 8.8百万行代码百万行代码Mac OS X 10.4 86百万行代码百万行代码Linux kernel 2.6.0 5.2百万行代码百万行代码Linux kernel 2.6.29 11.0百万行代码百万行代码Linux kernel 2.6.32 12.6百万行代码百万行代码例:例: Windows9595有有10001000万行代码万行代码 Windows20002000有有50005000万行代码万行代码例:例:Exch

9、ange2000和和 Windows20002000开发人员结构开发人员结构Exchange2000Windows20002000项目经理项目经理25人人约约250人人开发人员开发人员140人人约约1700人人测试人员测试人员350人人约约3200人人2024/8/3013人月神话人月神话焦油坑焦油坑 n史前史中,没有别的场景比巨兽在焦油坑中垂史前史中,没有别的场景比巨兽在焦油坑中垂死挣扎的场面更令人震撼。上帝见证着恐龙、死挣扎的场面更令人震撼。上帝见证着恐龙、猛犸象、剑齿虎在焦油中挣扎。它们挣扎得越猛犸象、剑齿虎在焦油中挣扎。它们挣扎得越是猛烈,焦油就缠得越紧,没有任何猛兽足够是猛烈,焦油就

10、缠得越紧,没有任何猛兽足够强壮或具有足够的技巧,能够挣脱束缚,它们强壮或具有足够的技巧,能够挣脱束缚,它们最后都沉到了坑底。最后都沉到了坑底。2024/8/3014“焦油坑焦油坑”寓意寓意n过去几十年的大型系统开发就犹如这样一个焦油坑,很多大型和强壮的动物在其中剧烈地挣扎。他们中大多数开发出了可运行的系统不过,其中只有非常少数的项目满足了目标、时间进度和预算的要求。各种团队,大型的和小型的,庞杂的和精干的,一个接一个淹没在了焦油坑中。表面上看起来好像没有任何一个单独的问题会导致困难,每个都能被解决,但是当它们相互纠缠和累积在一起的时候,团队的行动就会变得越来越慢。对问题的麻烦程度,每个人似乎都

11、会感到惊讶,并且很难看清问题的本质。2024/8/3015IT神话 or IT陷阱n质疑企业信息化的功效nIT神话 or IT陷阱n政府的导向?企业内部抵制?n等死? or 找死?2024/8/30161.对软件开发成本和进度的估计常常很不准确。对软件开发成本和进度的估计常常很不准确。(下页下页图图)软件开发很难按预定计划实现,投入了资金,能否出结果,出软件开发很难按预定计划实现,投入了资金,能否出结果,出怎样的结果,事先难以预料。怎样的结果,事先难以预料。2.用户对用户对“已完成已完成”的软件系统不满意的现象经常发的软件系统不满意的现象经常发生。生。3.软件产品的质量往往不可靠。软件可靠性和

12、质量保软件产品的质量往往不可靠。软件可靠性和质量保证的定量概念刚刚出现不久。证的定量概念刚刚出现不久。 1962年年6月,美国飞向金星的第一个空间探测号(水手月,美国飞向金星的第一个空间探测号(水手1号),因号),因其飞舱中的计算机导航程序之一的一个语句的语义出错,总是偏离航线其飞舱中的计算机导航程序之一的一个语句的语义出错,总是偏离航线无法取得成功。无法取得成功。1965年年1970年,美国范登堡基地因程序有错误造成年,美国范登堡基地因程序有错误造成发射火箭多次失败。发射火箭多次失败。软件危机的主要特征软件危机的主要特征yet, Success yet, Success HasnHasn t

13、 t Come Easily Come Easily31%31%53%53%16%16%SuccessfullyChallengedCanceled2024/8/30184.软件常常是不可维护的。通常软件维护的费用占总费软件常常是不可维护的。通常软件维护的费用占总费用的用的55%-70%。 错误具有累积和放大效应。错误具有累积和放大效应。在后期发现的错误改正的成本和难度将是巨大的(比早期进行修在后期发现的错误改正的成本和难度将是巨大的(比早期进行修正所付出的代价高正所付出的代价高2-3个数量级),甚至是不可能改正的。个数量级),甚至是不可能改正的。改正一个问题在不同阶段需付出的代价需求分析结构

14、设计详细设计编码集成测试系统测试现场改正一个问题的估计费用改正一个问题估计的工作量20200200010005.02.50.050.5(美元)(人天)2024/8/3020 软件开发时,一个错误发现得越晚,为改正它所付出的代价就越大。软件开发时,一个错误发现得越晚,为改正它所付出的代价就越大。这个说法是对的。在这个说法是对的。在1970年代,年代,GTE(通用电话电子)、TRW(美国天合公司,大型综合汽车零件供应商)和和IBM等三家公司对此问题做了等三家公司对此问题做了独立研究,最后它们得到相似的结论:独立研究,最后它们得到相似的结论:在需求分析阶段检查和修复一个错误所需的代价只有编码阶段所需

15、代价的1/5到1/10,而在维护阶段做同样的工作所付出的代价却是编码阶段的20倍。 5.软件通常没有适当的文档资料,给软件开发和维护带来极大困难。软件通常没有适当的文档资料,给软件开发和维护带来极大困难。 文档的作用:文档的作用:管理人员:评价软件开发进度。管理人员:评价软件开发进度。开发人员:通讯工具。开发人员:通讯工具。维护人员:维护的依据。维护人员:维护的依据。6.软件成本在计算机系统总成本中所占的比例逐年上升。(见下页图)软件成本在计算机系统总成本中所占的比例逐年上升。(见下页图)7.软件开发生产率提高的速度远远跟不上计算机应用迅速普及深入的趋势。软件开发生产率提高的速度远远跟不上计算

16、机应用迅速普及深入的趋势。2024/8/3021 处在十字路口的中国软件产业处在十字路口的中国软件产业n 主权大国必须建立基于自主技术的、完整的软件产业体系。n 软件本国提供率:中国1/3左右,美国97%n “印度模式”还是“中国模式”n 软件人才结构不合理,缺乏中高级软件人才。软件人员缺乏软件工程化的概念。我国政府对于软件产业的健康发展高度重我国政府对于软件产业的健康发展高度重视;相关部门正着力于视;相关部门正着力于“可信软件基础可信软件基础”的相关研究。的相关研究。2024/8/3023软件工程的定义软件工程的定义 Fritz Bauer在在NATO会议上给出的定义:会议上给出的定义: “

17、软件工程是为了经济地获得可靠的和能软件工程是为了经济地获得可靠的和能在实际机器上高效运行的软件,而确立和使用在实际机器上高效运行的软件,而确立和使用的健全的工程原理和方法。的健全的工程原理和方法。”2024/8/3024软件工程的定义(软件工程的定义(2) IEEE IEEE【83】给出的软件工程定给出的软件工程定义:义: “软件工程是开发、运行、软件工程是开发、运行、维护和修复软件的系统方法。维护和修复软件的系统方法。”2024/8/3025软件工程的定义(软件工程的定义(3) IEEEIEEE【93】给出了一个更加综给出了一个更加综合的定义:合的定义: “将系统化的、规范的、可将系统化的、

18、规范的、可度量的方法应用于软件的开发、度量的方法应用于软件的开发、运行和维护的过程,即将工程化运行和维护的过程,即将工程化应用于软件中。应用于软件中。”软件工程的定义软件工程的定义 软件工程是指导软件开发和维护的工程软件工程是指导软件开发和维护的工程类学科,它以计算机科学理论及其他相关类学科,它以计算机科学理论及其他相关学科的理论为指导,采用工程化的概念、学科的理论为指导,采用工程化的概念、原理、技术和方法进行软件的开发和维护,原理、技术和方法进行软件的开发和维护,把经过时间证明正确的管理措施和当前能把经过时间证明正确的管理措施和当前能够得到的最好的技术方法结合起来,以较够得到的最好的技术方法

19、结合起来,以较少的代价获取高质量的软件少的代价获取高质量的软件 2024/8/3027软件工程三要素软件工程三要素工具工具方法方法过程过程质量焦点质量焦点Software engineering layers软件工程三个要素:软件工程三个要素:方法、工具、过程方法、工具、过程任何工程化方法都必须围绕高质量这一核心。软件工程的四个研究对象构成了以任何工程化方法都必须围绕高质量这一核心。软件工程的四个研究对象构成了以软件质量为核心的层次结构。软件质量为核心的层次结构。2024/8/3028n软件工程方法为软件开发提供了软件工程方法为软件开发提供了“如何做如何做”的技术。的技术。它包括了多方面的任务

20、,如项目计划与估算、软件系它包括了多方面的任务,如项目计划与估算、软件系统需求分析、数据结构、系统总体结构的设计、算法统需求分析、数据结构、系统总体结构的设计、算法过程的设计、编码、测试以及维护等。软件工程方法过程的设计、编码、测试以及维护等。软件工程方法常采用某一种特殊的语言或图形的表达方法及一套质常采用某一种特殊的语言或图形的表达方法及一套质量保证标准。量保证标准。n软件工具为软件工程方法提供了自动的或半自动的软软件工具为软件工程方法提供了自动的或半自动的软件支撑环境。目前,已经推出了许多软件工具,已经件支撑环境。目前,已经推出了许多软件工具,已经能够支持上述的软件工程方法。特别地,已经有

21、人把能够支持上述的软件工程方法。特别地,已经有人把诸多的软件工具集成起来,使得一种工具产生的信息诸多的软件工具集成起来,使得一种工具产生的信息可以为其它的工具所使用,这样建立起一种被称之为可以为其它的工具所使用,这样建立起一种被称之为计算机辅助软件工程计算机辅助软件工程(CASE)的软件开发支撑系统。的软件开发支撑系统。CASE将各种软件工具、开发机器和一个存放开发过程将各种软件工具、开发机器和一个存放开发过程信息的工程数据库组合起来形成一个软件工程环境。信息的工程数据库组合起来形成一个软件工程环境。n软件工程的过程则是将软件工程的方法和工具综合起软件工程的过程则是将软件工程的方法和工具综合起

22、来以达到合理、及时地进行计算机软件开发的目的。来以达到合理、及时地进行计算机软件开发的目的。过程定义了方法使用的顺序、要求交付的文档资料、过程定义了方法使用的顺序、要求交付的文档资料、为保证质量和协调变化所需要的管理、及软件开发各为保证质量和协调变化所需要的管理、及软件开发各个阶段完成的里程碑(工作)。个阶段完成的里程碑(工作)。2024/8/3029软件工程与一般工程的差异软件工程与一般工程的差异u软件是逻辑产品而不是实物产品软件是逻辑产品而不是实物产品u智力密集及知识产权保护智力密集及知识产权保护u软件的功能依赖于硬件和软件的运行环境以及人们软件的功能依赖于硬件和软件的运行环境以及人们对它

23、的操作对它的操作2024/8/3030软件工程知识结构软件工程知识结构 20012001年年5 5月月ISO/IEC JTC 1ISO/IEC JTC 1(ISOISO和和IECIEC的第一联合的第一联合技术委员会)发布了技术委员会)发布了 SWEBOK指南指南V0.95(V0.95(试用试用版版) )( Guide to the Software Engineering Body of KnowledgeGuide to the Software Engineering Body of Knowledge )SWEBOK把软件工程学科的主体知识分为把软件工程学科的主体知识分为10个知个知识领

24、域。识领域。2024/8/3031软件工程知识结构软件工程知识结构n 软软件件需需求求n 软软件件设设计计n 软软件件构构造造n 软软件件测测试试n 软软件件维维护护n 软软件件配配置置管管理理n 软软件件工工程程管管理理n 软软件件工工程程过过程程n 软软件件工工程程工工具具和和方方法法n 软软件件质质量量2024/8/3032学习学习“软件工程软件工程”可以实现两个转变可以实现两个转变u转变对软件的认识:转变对软件的认识: 上升上升 程序程序 系统系统u 转变思维定式:转变思维定式: 上升上升 程序员程序员 系统工程师系统工程师 ( (系统分析员系统分析员) )2024/8/3033软件产

25、品的标准化软件产品的标准化软件开发过程的标准化软件开发过程的标准化2024/8/3034软件的工业化生产过程应具备的特点:软件的工业化生产过程应具备的特点:F明确的工作步骤明确的工作步骤F详细具体的规范化文档详细具体的规范化文档F明确的质量评价标准明确的质量评价标准“一个好的工业,应有一套良好的标准来配套”2024/8/3035软件工程技术的两个特点u 强调规范化强调规范化u 强调文档化强调文档化2024/8/3036“软件工程软件工程”课程课程 与其它软件专业课的区别与其它软件专业课的区别(1) (1) 立足于系统的整体。立足于系统的整体。(2) (2) 讲授系统分析、系统设计、讲授系统分析

26、、系统设计、 测试及维护的理论和方法。测试及维护的理论和方法。(3) (3) 构筑一个软件系统,实践构筑一个软件系统,实践 软件开发全过程。软件开发全过程。2024/8/30371.2 1.2 软件和软件生命期模型软件和软件生命期模型(Software Life Cycle) 软件产品或软件系统从设计、投入使用软件产品或软件系统从设计、投入使用到被淘汰的全过程。到被淘汰的全过程。2024/8/3038软件生存期的阶段划分(1)(1)可行性研究与计划可行性研究与计划(2)(2)需求分析需求分析(3)(3)总体设计总体设计 (4)(4)详细设计详细设计(5)(5)实现实现(6)(6)集成测试集成测

27、试(7)(7)确认测试确认测试 (8)(8)使用和维护使用和维护成长期(开发期)成长期(开发期)怀孕期(计划期怀孕期(计划期) 成年期(运行期)成年期(运行期)2024/8/3039新的国际标准定义的软件生存过程(新的国际标准定义的软件生存过程(1995 ISO/IEC 12207)软件生存期过程软件生存期过程支持过程支持过程组织过程组织过程主要过程主要过程获获取取过过程程供供应应过过程程开开发发过过程程运运行行过过程程维维护护过过程程文文档档编编制制过过程程配配置置管管理理过过程程质质量量保保证证过过程程验验证证过过程程确确认认过过程程联联合合评评审审过过程程审审核核过过程程问问题题解解决决

28、过过程程管管理理过过程程基基础础设设施施过过程程改改进进过过程程培培训训过过程程2024/8/3040软件工作的范围只考虑只考虑编写程序编写程序 涉及整个涉及整个软件生存软件生存周期周期扩展到扩展到2024/8/3041 软件开发模型是软件开发全部过程、活动和任务的软件开发模型是软件开发全部过程、活动和任务的结构框架结构框架。它能直观表达软件开发全过程,明确规定要。它能直观表达软件开发全过程,明确规定要完成的主要活动、任务和开发策略。软件开发模型也常完成的主要活动、任务和开发策略。软件开发模型也常称为:称为: 软件过程模型软件过程模型 软件生存周期模型软件生存周期模型 软件工程范型软件工程范型

29、软件开发模型软件开发模型可行性研究与计划可行性研究与计划需求分析需求分析设计设计编码编码运行维护运行维护测试测试定义定义阶段阶段开开发发阶阶段段维护阶段维护阶段瀑布模型( (Waterfall Model) )2024/8/3043开发软件不仅仅是编程开发软件不仅仅是编程2024/8/3044按照传统瀑布模型开发软件的特点按照传统瀑布模型开发软件的特点1.1.阶段间具有顺序性和依赖性。阶段间具有顺序性和依赖性。2.2.推迟实现的观点。推迟实现的观点。3.3.每个阶段必须完成规定的文档每个阶段必须完成规定的文档; ; 每个阶段结束前完成文档审查每个阶段结束前完成文档审查, , 及早改正错误。及早改正错误。2024/8/3045原型模型(快速原型模型(快速原型模型)原型范型原型范型用户测试用户测试运行原型运行原型建造建造/ /修改修改 原型原型 听取用听取用 户意见户意见采用原型模型的软件生存周期分析定义分析定义系统需求系统需求生成生成原型原型系统系统设计设计程序程序设计设计编码编码测试测试运运 行行和维护和维护原型化原型化含原型化的含原型化的软件生存期软件生存期2024/8/3047其他模型n螺旋模型螺旋模型(风险驱动模型):增加了风险分析的快速原型模型n增量模型增量模型:组件叠加模型n喷泉模型喷泉模型:强调阶段迭代,适合面向对象设计n以上三个在实际应用中较少使用。

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 工作计划

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号