版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第1章 软件工程1 1.1 软件概述软件概述 1.2 软件危机软件危机 1.3 软件工程软件工程 1.4 软件工程的基本原理软件工程的基本原理1.1 软件概述2 1717世纪世纪6060年代,年代,AdaAda(Augusta Ada LovelaceAugusta Ada Lovelace)成为史上第一个写软件的人,)成为史上第一个写软件的人,她第一次为她第一次为BabbageBabbage的分析机编制程序,实现了计算伯努利函数、级数相乘函数等的分析机编制程序,实现了计算伯努利函数、级数相乘函数等功能。也因此,人们公认她是世界上第一位软件工程师。功能。也因此,人们公认她是世界上第一位软件工程
2、师。 2020世纪世纪4040年代末,第一台电子计算机年代末,第一台电子计算机ENIACENIAC(ElectronicElectronic NumericalNumerical Integrator And CalculatorIntegrator And Calculator)在美国问世,软件也随之诞生,从此很多软件工程)在美国问世,软件也随之诞生,从此很多软件工程师陆续出现。师陆续出现。 到了到了2020世纪世纪6060年代,美国出现了专门编写软件的专业,软件起到了越来越突年代,美国出现了专门编写软件的专业,软件起到了越来越突出的作用,人们对软件的认识也更为深刻。出的作用,人们对软件的认
3、识也更为深刻。一、软件发展历程一、软件发展历程 1.1 软件概述1 1第一阶段(第一阶段(2020世纪世纪5050年代初期至年代初期至2020世纪世纪6060年代中期)年代中期) 这个阶段也被称为程序设计阶段。软件生产以个体化为主;计算机的存储容量这个阶段也被称为程序设计阶段。软件生产以个体化为主;计算机的存储容量小,运算速度比较慢;编写程序的工具只有低级语言;软件规模不大,几乎没有系小,运算速度比较慢;编写程序的工具只有低级语言;软件规模不大,几乎没有系统化的标准可遵循,对软件开发也没有良好的管理方法。统化的标准可遵循,对软件开发也没有良好的管理方法。2 2第二阶段(第二阶段(2020世纪世
4、纪6060年代中期至年代中期至2020世纪世纪7070年代末期)年代末期) 这个阶段也可称为程序系统阶段。在软件使用中,由于缺乏有效的工程化方法这个阶段也可称为程序系统阶段。在软件使用中,由于缺乏有效的工程化方法的指导,很多软件不能按计划完成,纠正源代码错误、变更程序功能等软件维护花的指导,很多软件不能按计划完成,纠正源代码错误、变更程序功能等软件维护花费了人们更多的精力和资源,到了费了人们更多的精力和资源,到了2020世纪世纪6060年代中期,出现了所谓的软件危机。年代中期,出现了所谓的软件危机。3 3第三阶段(第三阶段(2020世纪世纪7070年代末至今)年代末至今) 这个阶段,计算机硬件
5、向巨型机和微型机两个方面发展;出现了计算机网络,这个阶段,计算机硬件向巨型机和微型机两个方面发展;出现了计算机网络,特别是特别是InternetInternet得到了飞速发展。因此,以软件产品化、系列化、工程化、得到了飞速发展。因此,以软件产品化、系列化、工程化、标准化为特征的软件产业迅猛发展,推动了软件工程学的进步。标准化为特征的软件产业迅猛发展,推动了软件工程学的进步。31.1 软件概述 软件软件是计算机系统中与硬件(是计算机系统中与硬件(hardwarehardware)相互依存的另一部分,与硬件合为)相互依存的另一部分,与硬件合为一体完成系统功能。一体完成系统功能。软件定义包括如下几点
6、:软件定义包括如下几点:(1 1)功能和性能的指令集(即程序);)功能和性能的指令集(即程序);(2 2)程序能正常操纵信息的数据结构(即相关数据);)程序能正常操纵信息的数据结构(即相关数据);(3 3)与程序开发维护和使用有关的各种图文数据(即说明文档)。)与程序开发维护和使用有关的各种图文数据(即说明文档)。 随着计算机应用的日益普及,说明文档(即各种程序文本、报告、说明、手随着计算机应用的日益普及,说明文档(即各种程序文本、报告、说明、手册等)在软件开发与维护中体现的价值超出了软件产品本身。特别是在软件日益册等)在软件开发与维护中体现的价值超出了软件产品本身。特别是在软件日益成为产品的
7、今天,文档的作用更加重要了。成为产品的今天,文档的作用更加重要了。4二、软件的定义二、软件的定义 1.1 软件概述5 1. 1.软件是一种软件是一种抽象的逻辑实体抽象的逻辑实体。人们无法看到其具体形态,而必须通过观。人们无法看到其具体形态,而必须通过观察、分析、思考、判断等方式去了解它的特性功能。察、分析、思考、判断等方式去了解它的特性功能。 2. 2. 软件是通过人们的智力活动,把软件是通过人们的智力活动,把知识与技术转化为信息知识与技术转化为信息的一种产品,的一种产品,是在研制、开发中被创造出来的。一旦某一软件被研制成功,只需复制即可,但是在研制、开发中被创造出来的。一旦某一软件被研制成功
8、,只需复制即可,但其维护的工作量大。其维护的工作量大。 3. 3. 软件具有软件具有“复杂性复杂性”,开发和运行经常受到计算机系统的限制。,开发和运行经常受到计算机系统的限制。 4. 4. 软件软件成本昂贵成本昂贵,开发方式目前尚未摆脱手工生产方式。,开发方式目前尚未摆脱手工生产方式。 5. 5. 在软件的运行和使用期间,不存在硬件那样的机器磨损、老化问题。但是在软件的运行和使用期间,不存在硬件那样的机器磨损、老化问题。但是软件也存在退化问题,也需要软件也存在退化问题,也需要维护维护。三、软件的特点三、软件的特点 6硬件失效率曲线硬件失效率曲线软件失效率曲线软件失效率曲线1.1 软件概述1.1
9、 软件概述7四、软件的分类四、软件的分类 1 1基于软件的功能划分基于软件的功能划分(1 1)系统软件)系统软件系统软件是与计算机硬件紧密配合居于计算机系统中最靠近硬件系统软件是与计算机硬件紧密配合居于计算机系统中最靠近硬件的一层。的一层。例如,设备驱动程序、操作系统等。例如,设备驱动程序、操作系统等。 (2 2)支撑软件)支撑软件支撑软件是协助用户开发软件的工具性软件。支撑软件是协助用户开发软件的工具性软件。例如,网络软件、数据库管理程序等。例如,网络软件、数据库管理程序等。 (3 3)应用软件)应用软件应用软件是在特定领域内开发、为特定目的服务的软件。应用软件是在特定领域内开发、为特定目的
10、服务的软件。例如,工程与科学计算软件、系统仿真和人工智能软件等。例如,工程与科学计算软件、系统仿真和人工智能软件等。1.1 软件概述2 2基于软件规模划分基于软件规模划分(1 1)微型软件微型软件是指一个人在几天内完成、程序不超过是指一个人在几天内完成、程序不超过500500行语句且供个人专用的行语句且供个人专用的软件。这类软件没有严格的分析和完整的设计与测试。软件。这类软件没有严格的分析和完整的设计与测试。(2 2)小型软件小型软件是指由一个人在半年内完成的是指由一个人在半年内完成的20002000行语句以内的程序。这种程序需行语句以内的程序。这种程序需要有一定的标准化技术、正规的数据书写以
11、及定期的系统审查,但没有大型软要有一定的标准化技术、正规的数据书写以及定期的系统审查,但没有大型软件那样严格。件那样严格。(3 3)中型软件中型软件是指由是指由5 5个人以内在一年多的时间里完成的个人以内在一年多的时间里完成的500050005000050000行语句的程行语句的程序。中型软件开始出现软件人员之间、软件人员与用户之间的协调配合方面的序。中型软件开始出现软件人员之间、软件人员与用户之间的协调配合方面的问题,因而在开发中使用软件工程方法是很必要的。问题,因而在开发中使用软件工程方法是很必要的。(4 4)大型软件大型软件指指5 51010个人在两年多的时间里完成的个人在两年多的时间里
12、完成的5000050000到到100000100000行语句的程序。行语句的程序。在大型软件中采用软件工程方法进行规划可以有效解决和避免突发事件,减少在大型软件中采用软件工程方法进行规划可以有效解决和避免突发事件,减少危害性。危害性。(5 5)甚大型软件甚大型软件指指10010010001000人在人在4 45 5年时间里完成的具有年时间里完成的具有100100万行语句规模的程万行语句规模的程序的软件项目。这种项目可能会被划分成很多子项目,子项目间要建立复杂的序的软件项目。这种项目可能会被划分成很多子项目,子项目间要建立复杂的接口。接口。(6 6)极大型软件极大型软件指指20002000500
13、05000人在人在1010年内完成的年内完成的10001000万行以内语句的程序。这类万行以内语句的程序。这类软件一般用于军事指挥、弹道防御系统等项目。软件一般用于军事指挥、弹道防御系统等项目。81.1 软件概述3 3基于软件工作方式划分基于软件工作方式划分(1 1)实时处理软件实时处理软件 指在事件或数据产生时,立即处理,并及时反馈信号,以控制需要监测的部指在事件或数据产生时,立即处理,并及时反馈信号,以控制需要监测的部 分和控制过程的软件。分和控制过程的软件。(2 2)分时软件分时软件 允许多个联机用户同时使用计算机的软件。系统把处理机事件轮流分配给联允许多个联机用户同时使用计算机的软件。
14、系统把处理机事件轮流分配给联机用户,但用户感觉是只有自己在使用计算机。机用户,但用户感觉是只有自己在使用计算机。(3 3)交互式软件交互式软件 能实现人机通信的软件。这类软件接收用户给出的信息,但在时间上没有严能实现人机通信的软件。这类软件接收用户给出的信息,但在时间上没有严格的限定。这种工作方式给予用户很大的灵活度。格的限定。这种工作方式给予用户很大的灵活度。(4 4)批处理软件批处理软件 把一组输入作业或一批数据以成批处理的方式一次运行,按顺序逐个处理的把一组输入作业或一批数据以成批处理的方式一次运行,按顺序逐个处理的软件。软件。91.2软件危机10 软件危机软件危机是计算机软件在它的开发
15、和维护过程中所遇到的一系列严重问题。是计算机软件在它的开发和维护过程中所遇到的一系列严重问题。主要包含两方面的问题:一方面是如何开发软件,怎样满足对软件日益增长的需求主要包含两方面的问题:一方面是如何开发软件,怎样满足对软件日益增长的需求;另一方面是如何维护数量不断膨胀的已有软件。;另一方面是如何维护数量不断膨胀的已有软件。一、软件危机的定义一、软件危机的定义 二、产生软件危机的原因二、产生软件危机的原因 一、与软件本身的特点有关一、与软件本身的特点有关二、与软件开发和维护的方法不正确有关。二、与软件开发和维护的方法不正确有关。111.2软件危机软件危机的产生,与以下因素有着密切的关系:软件危
16、机的产生,与以下因素有着密切的关系:(1 1)软件是计算机系统的逻辑部件,缺乏)软件是计算机系统的逻辑部件,缺乏“可见性可见性”,且软件产品往往规模庞大,且软件产品往往规模庞大,给软件的开发和维护带来了客观的困难。给软件的开发和维护带来了客观的困难。(2 2)软件一般要使用)软件一般要使用5 51010年,在这段时间里,可能会出现当初没有预料的问题。年,在这段时间里,可能会出现当初没有预料的问题。如系统运行的环境发生变化、软件需求发生变化等,都需要及时地对软件进行维如系统运行的环境发生变化、软件需求发生变化等,都需要及时地对软件进行维护和更新,以延长软件的使用寿命。护和更新,以延长软件的使用寿
17、命。(3 3)软件的开发技术落后,生产方式和开发工具落后。)软件的开发技术落后,生产方式和开发工具落后。(4 4)软件开发人员忽视软件需求分析的重要性,轻视软件的维护,也是造成软件)软件开发人员忽视软件需求分析的重要性,轻视软件的维护,也是造成软件危机的原因。危机的原因。1.2软件危机12三、软件危机的表现形式三、软件危机的表现形式 1.1.软件发展速度跟不上硬件的发展和用户的实际需求软件发展速度跟不上硬件的发展和用户的实际需求 计算机硬件发展迅速,生产成本逐年下降,呈现出迅速普及和深入的趋势,计算机硬件发展迅速,生产成本逐年下降,呈现出迅速普及和深入的趋势,而软件开发生产率提高的速度远远跟不
18、上发展的要求,使人们不能充分利用计算而软件开发生产率提高的速度远远跟不上发展的要求,使人们不能充分利用计算机硬件提供的巨大潜力。机硬件提供的巨大潜力。2 2对软件开发成本和进度估计不准确使用户不满意对软件开发成本和进度估计不准确使用户不满意 由于软件应用范围的扩大,软件开发者对某些领域不熟悉,再加上和用户交由于软件应用范围的扩大,软件开发者对某些领域不熟悉,再加上和用户交流少,使得对软件开发成本的估算偏低,实际进度比预期进度推迟。流少,使得对软件开发成本的估算偏低,实际进度比预期进度推迟。3. 3. 软件产品的质量差软件产品的质量差软件质量保证技术没有应用到软件开发的全部过程,导致了软件产品的
19、质量软件质量保证技术没有应用到软件开发的全部过程,导致了软件产品的质量问题频繁发生。问题频繁发生。1.2软件危机134. 4. 软件产品的可维护性差软件产品的可维护性差 软件设计时不注重程序的可读性,程序中出现的很多错误难以改正,这些程软件设计时不注重程序的可读性,程序中出现的很多错误难以改正,这些程序也就不能很好地适应硬件环境的发展,对于用户提出的新需求不能在原程序的序也就不能很好地适应硬件环境的发展,对于用户提出的新需求不能在原程序的基础上增加功能,造成软件的不可重用,维护困难,从而影响到产品的寿命。基础上增加功能,造成软件的不可重用,维护困难,从而影响到产品的寿命。5 5软件文档资料不完
20、整软件文档资料不完整 计算机软件不仅仅是程序,还应该包括完整的文档资料。这些文档资料应该计算机软件不仅仅是程序,还应该包括完整的文档资料。这些文档资料应该是在软件开发过程中生产出来的,而且应该是和程序代码完全一致的。通过软件是在软件开发过程中生产出来的,而且应该是和程序代码完全一致的。通过软件危机的表现形式,可以得出结论,在软件开发和维护过程中存在着严重的问题。危机的表现形式,可以得出结论,在软件开发和维护过程中存在着严重的问题。这些问题一方面与软件本身的特点有关,另一方面也和软件开发与维护的方法有这些问题一方面与软件本身的特点有关,另一方面也和软件开发与维护的方法有关。关。1.2软件危机 (
21、1 1)加强软件开发过程的管理,构建良好的组织、严密的管理和协调工作的)加强软件开发过程的管理,构建良好的组织、严密的管理和协调工作的机制。机制。 (2 2)推广使用开发软件的成功技术与方法,探索更好的、更有效的技术和方)推广使用开发软件的成功技术与方法,探索更好的、更有效的技术和方法,尽快消除在计算机系统早期发展阶段形成的错误概念。法,尽快消除在计算机系统早期发展阶段形成的错误概念。 (3 3)开发和使用好的软件工具,在适当的软件工具的支持下,开发人员可以)开发和使用好的软件工具,在适当的软件工具的支持下,开发人员可以更好地完成工作。更好地完成工作。 总之,解决软件危机既有技术措施,又有管理
22、措施。软件工程正是从这两个总之,解决软件危机既有技术措施,又有管理措施。软件工程正是从这两个方面研究如何更好地开发和维护计算机软件的一门新兴学科。方面研究如何更好地开发和维护计算机软件的一门新兴学科。14四、解决软件危机的途径四、解决软件危机的途径 1.3软件工程15一、软件工程的定义一、软件工程的定义 “ “软件工程软件工程”一词是一词是19681968年北大西洋公约组织(年北大西洋公约组织(NATONATO)在联邦德国召开的一)在联邦德国召开的一次会议上首次提出的,这个会议专门讨论了软件危机问题次会议上首次提出的,这个会议专门讨论了软件危机问题. .这反映了软件人员认识这反映了软件人员认识
23、到软件危机的出现及谋求解决这一危机的努力,因此,这次会议被看作是软件发到软件危机的出现及谋求解决这一危机的努力,因此,这次会议被看作是软件发展史上一个重要的里程碑。到现在,软件工程走过了展史上一个重要的里程碑。到现在,软件工程走过了4040多年的历程。在这多年的历程。在这4040多年多年的发展中,人们针对软件危机的表现和原因,经过不断的实践和总结,越来越认的发展中,人们针对软件危机的表现和原因,经过不断的实践和总结,越来越认识到,按照工程化的原则和方法组织软件开发工作是摆脱软件危机的一个主要出识到,按照工程化的原则和方法组织软件开发工作是摆脱软件危机的一个主要出路。目前,尽管软件危机并没有被彻
24、底解决,但软件工程的发展可以说硕果累累。路。目前,尽管软件危机并没有被彻底解决,但软件工程的发展可以说硕果累累。1 1著名的软件工程专家著名的软件工程专家B.W.BoehmB.W.Boehm对软件工程的定义对软件工程的定义 “软件工程软件工程”是开发、运行、维护和修复软件的系统方法。这个定义概括了软是开发、运行、维护和修复软件的系统方法。这个定义概括了软件工程是一种系统方法,而不是单独的个人技巧的体现。件工程是一种系统方法,而不是单独的个人技巧的体现。2 2Frize BauerFrize Bauer在在NATONATO会议上对软件工程的定义会议上对软件工程的定义尽力使用完善的工程化原则,以较
25、经济的手段获得能在实际机器上有效运行尽力使用完善的工程化原则,以较经济的手段获得能在实际机器上有效运行的可靠软件的一系列方法。的可靠软件的一系列方法。3 3IEEEIEEE在软件工程术语汇编中的定义在软件工程术语汇编中的定义IEEEIEEE对软件工程给出了更加全面的定义。软件工程是把系统化的、规范化的、对软件工程给出了更加全面的定义。软件工程是把系统化的、规范化的、可度量的途径应用于软件开发、运行和维护的过程并研究其实现途径,即把工程可度量的途径应用于软件开发、运行和维护的过程并研究其实现途径,即把工程 化的方法应用于软件中。化的方法应用于软件中。1.3软件工程 除以上定义外,软件工程还有许多
26、其他的定义,但其基本思想都是强调在软件除以上定义外,软件工程还有许多其他的定义,但其基本思想都是强调在软件开发过程中应用工程化原则,解决软件的整体质量较低、最后期限和费用没有开发过程中应用工程化原则,解决软件的整体质量较低、最后期限和费用没有保证等问题保证等问题。16(1 1)质量保证层:支持软件工程的根基就在)质量保证层:支持软件工程的根基就在于对质量的关注。于对质量的关注。(2 2)过程层:与方法层结合在一起,定义了)过程层:与方法层结合在一起,定义了一组关键过程域框架,目的是保证软件工程一组关键过程域框架,目的是保证软件工程技术被有效地利用,使得软件能够被及时地、技术被有效地利用,使得软
27、件能够被及时地、高质量地和合理地开发出来。高质量地和合理地开发出来。(3 3)方法层:提供了软件开发的各种方法,)方法层:提供了软件开发的各种方法,包括如何进行软件需求的分析和设计,如何包括如何进行软件需求的分析和设计,如何实现设计、测试和维护等方法。实现设计、测试和维护等方法。(4 4)工具层:为软件工程方法和过程提供了)工具层:为软件工程方法和过程提供了自动软件工程工具,可以有效地改善软件开自动软件工程工具,可以有效地改善软件开发过程,提高软件开发的效率,降低开发和发过程,提高软件开发的效率,降低开发和管理成本。管理成本。软件工程层次结构图软件工程层次结构图1.3软件工程17 1 1、合理
28、预算开发成本,付出较低的开发费用。、合理预算开发成本,付出较低的开发费用。2 2、达到要求的软件功能,满足用户的需求。、达到要求的软件功能,满足用户的需求。3 3、取得较好的软件性能。、取得较好的软件性能。4 4、开发的软件易于移植。、开发的软件易于移植。5 5、提高开发软件的可维护性,降低维护费用。、提高开发软件的可维护性,降低维护费用。6 6、能按时完成开发工作,及时交付使用。、能按时完成开发工作,及时交付使用。二、软件工程的目标二、软件工程的目标1.3软件工程18软件工程目标之间的关系1.3软件工程序号序号研究内容研究内容具体内容具体内容1 1软件开发模型软件开发模型如瀑布模型、增量模型
29、等如瀑布模型、增量模型等2 2软件开发方法软件开发方法如面向过程方法、面向数据结构方法、面向对如面向过程方法、面向数据结构方法、面向对象方法等象方法等3 3软件支持过程软件支持过程如如CASECASE工具工具ROSEROSE、Power DesignerPower Designer等等 4 4软件管理过程软件管理过程如如ISO 9000ISO 9000、CMMCMM(软件能力成熟度模型)等(软件能力成熟度模型)等 19三、软件工程的研究内容三、软件工程的研究内容现代软件工程研究的内容现代软件工程研究的内容1.3软件工程 软件开发模型软件开发模型是描述软件开发过程中各种活动如何执行的模型;是描述
30、软件开发过程中各种活动如何执行的模型; 软件开发方法软件开发方法是使用定义好的计数集和符号来表示习惯,以组织软件生产是使用定义好的计数集和符号来表示习惯,以组织软件生产过程的方法;过程的方法; 软件工程中的过程软件工程中的过程,是指软件生命周期中的时间序列,它有起始点和终,是指软件生命周期中的时间序列,它有起始点和终止点,软件工程的支持过程,由支持软件生命周期各个阶段的生产工具组成,止点,软件工程的支持过程,由支持软件生命周期各个阶段的生产工具组成,如需求分析工具、设计工具实现工具、测试工具和开发环境等;如需求分析工具、设计工具实现工具、测试工具和开发环境等; 软件工程的管理过程软件工程的管理过程,能保证改进企业的管理过程,并最终促进产品质,能保证改进企业的管理过程,并最终促进产品质量的提高,但是不能保证企业软量的提高,但是不能保证企业软100%合格。合格。201.4软件工程的基本原理
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 车队安全培训经费预算表课件
- 《光世界巡行》教案物理科课件
- 车间级岗前安全培训体会课件
- 酒店客房预订与收益优化策略制度
- 2026年宁夏回族自治区中卫市中考数学试题及答案
- 银行外汇业务管理规范制度
- 2026年冬春季传染病及呼吸道常见病诊疗培训试题题及答案
- 计算机三级(数据库技术)模拟试卷97
- 车间安全课件
- 车间安全培训演讲课件
- 卒中的诊断与治疗
- DB51-T 1959-2022 中小学校学生宿舍(公寓)管理服务规范
- 教育机构安全生产举报奖励制度
- GB/T 4706.11-2024家用和类似用途电器的安全第11部分:快热式热水器的特殊要求
- FZ∕T 61002-2019 化纤仿毛毛毯
- 《公输》课文文言知识点归纳
- 碎石技术供应保障方案
- 园林苗木容器育苗技术
- 23秋国家开放大学《机电一体化系统设计基础》形考作业1-3+专题报告参考答案
- 2023年工装夹具设计工程师年终总结及下一年计划
- 第七章腭裂课件
评论
0/150
提交评论