第1章[2]-软件工程学范畴_第1页
第1章[2]-软件工程学范畴_第2页
第1章[2]-软件工程学范畴_第3页
第1章[2]-软件工程学范畴_第4页
第1章[2]-软件工程学范畴_第5页
已阅读5页,还剩31页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、1 1968 1968年北大西洋公约组织年北大西洋公约组织(NATO)(NATO)在联邦德国召开的一次会议在联邦德国召开的一次会议上上Fritz Bauer首次提出首次提出“软件工程软件工程”的概念,的概念,试图将工程化方法试图将工程化方法应用于软件开发。应用于软件开发。它反映了软件人员认识到软件危机的出现以及它反映了软件人员认识到软件危机的出现以及为谋求解决这一危机的一种努力。为谋求解决这一危机的一种努力。 其其中心思想中心思想就是把软件当作一种工业产品,要求就是把软件当作一种工业产品,要求“采用工程采用工程化的原理与方法对软件进行计划、开发和维护化的原理与方法对软件进行计划、开发和维护”。

2、1.2 1.2 软件工程学软件工程学2一、定义一、定义n 在在NATONATO会议上,会议上,Fritz Bauer对软件工程的定义是:对软件工程的定义是: “ “软件工程就是为了经济地获得可靠的且能在实际机器上有效软件工程就是为了经济地获得可靠的且能在实际机器上有效地运行的软件,而建立和使用完善的工程原理。地运行的软件,而建立和使用完善的工程原理。” n 19931993年年IEEEIEEE给出的定义:给出的定义: “ “软件工程是:软件工程是: 把系统的、规范的、可度量的途径应用于软把系统的、规范的、可度量的途径应用于软件开发、运行和维护过程,也就是把工程应用于软件;件开发、运行和维护过程

3、,也就是把工程应用于软件; 研究研究中提到的途径。中提到的途径。”3总之总之n 软件工程软件工程是指导计算机软件开发和维护的一门工程学科。是指导计算机软件开发和维护的一门工程学科。n 采用工程的概念、原理、技术和方法来开发和维护软件,把经采用工程的概念、原理、技术和方法来开发和维护软件,把经过时间考验而证明正确的管理方法和当前能够得到的最好技术结过时间考验而证明正确的管理方法和当前能够得到的最好技术结合起来,以经济地开发出高质量的软件并有效地维护它。合起来,以经济地开发出高质量的软件并有效地维护它。4二、软件工程的目标二、软件工程的目标 运用先进的软件开发技术和管理方法来提高软件的运用先进的软

4、件开发技术和管理方法来提高软件的质量质量和和生生产率产率,以较短的周期、较低的成本生产出高质量的软件产品,并,以较短的周期、较低的成本生产出高质量的软件产品,并最终实现软件的工业化生产。最终实现软件的工业化生产。 5n 生产率与成本密切相关生产率与成本密切相关 生产率的提高往往意味着开发周期的缩短,成本下降。生产率的提高往往意味着开发周期的缩短,成本下降。n 生产率与质量之间也有着内在的联系生产率与质量之间也有着内在的联系 表面上看,追求高质量会延长软件开发时间,并因此增加了表面上看,追求高质量会延长软件开发时间,并因此增加了成本,似乎降低了生产率。但如果生产的软件质量差,虽然开发成本,似乎降

5、低了生产率。但如果生产的软件质量差,虽然开发的时间可能缩短,但之后可能会造成返工,总的开发时间可能会的时间可能缩短,但之后可能会造成返工,总的开发时间可能会更长。即使不返工,也无疑会增加维护代价。更长。即使不返工,也无疑会增加维护代价。6三、软件工程三要素三、软件工程三要素 软件工程是一种层次化的技术,其中过程、方法和工具是软件软件工程是一种层次化的技术,其中过程、方法和工具是软件工程的三个要素。工程的三个要素。n 软件工程软件工程方法方法为软件开发为软件开发提供了提供了 “ “如何做如何做” ” 的技术;的技术;n 软件软件工具工具为软件工程方法提为软件工程方法提供了自动的或半自动的软件支供

6、了自动的或半自动的软件支撑环境;撑环境;n 过程过程是为了获得高质量的软是为了获得高质量的软件所需要完成的一系列任务框件所需要完成的一系列任务框架,它规定了完成各项任务的工作步骤。架,它规定了完成各项任务的工作步骤。7四、软件工程学的范畴四、软件工程学的范畴1. 软件开发技术软件开发技术软件开发方法学软件开发方法学软件工具软件工具软件工程环境软件工程环境2. 软件工程管理软件工程管理软件管理学软件管理学软件经济学软件经济学软件度量学软件度量学81. 软件开发方法学软件开发方法学 软件方法学是指组织软件生产过程的一系列方法、技术和规软件方法学是指组织软件生产过程的一系列方法、技术和规范。通常将软

7、件开发全过程中使用的一整套技术方法的集合称为范。通常将软件开发全过程中使用的一整套技术方法的集合称为方法学方法学( (methedology) ),也称为,也称为范型范型( (paradigm) )。 目前使用最广泛的软件工程方法学:传统方法(结构化方法)目前使用最广泛的软件工程方法学:传统方法(结构化方法)和面向对象方法。和面向对象方法。9(1) 结构化方法结构化方法 也称为生命周期方法学或结构化范型。将软件生命周期的全也称为生命周期方法学或结构化范型。将软件生命周期的全过程依次划分为若干个阶段,采用结构化技术来完成每个阶段的过程依次划分为若干个阶段,采用结构化技术来完成每个阶段的任务。任务

8、。 特点:特点:n 强调自顶向下顺序地完成软件开发的各阶段任务;强调自顶向下顺序地完成软件开发的各阶段任务;n 结构化方法要么面向行为,要么面向数据,缺乏使两者有机结结构化方法要么面向行为,要么面向数据,缺乏使两者有机结合的机制。合的机制。10(2) 面向对象方法面向对象方法n 把数据和行为看的同等重要,将数据和对数据的操作紧密地结把数据和行为看的同等重要,将数据和对数据的操作紧密地结合起来的方法。合起来的方法。n 软件开发过程是多次反复迭代的演化过程。软件开发过程是多次反复迭代的演化过程。n 面向对象方法在概念和表示方法上的一致性,保证了各项开发面向对象方法在概念和表示方法上的一致性,保证了

9、各项开发活动之间的平滑过渡。活动之间的平滑过渡。n 对于大型、复杂及交互性比较强的系统,使用面向对象方法更对于大型、复杂及交互性比较强的系统,使用面向对象方法更有优势。有优势。 11(3) 形式化方法形式化方法 形式化方法是一种基于形式化数学变换的软件开发方法,它形式化方法是一种基于形式化数学变换的软件开发方法,它可将系统的规格说明转换为可执行的程序。可将系统的规格说明转换为可执行的程序。 该过程的具体描述如图所示。该过程的具体描述如图所示。 12形式化方法的主要特点:形式化方法的主要特点:n 软件需求规格说明被细化为用数学记号表达的详细的形式化规软件需求规格说明被细化为用数学记号表达的详细的

10、形式化规格说明;格说明;n 设计、实现和单元测试等开发过程由一个变换开发过程代替。设计、实现和单元测试等开发过程由一个变换开发过程代替。通过一系列变换将形式的规格说明细化成为程序。这种细化的过通过一系列变换将形式的规格说明细化成为程序。这种细化的过程如图所示。程如图所示。132.2.软件工具软件工具 在软件开发的整个过程中,辅助软件开发的软件。在软件开发的整个过程中,辅助软件开发的软件。 软件工具有:需求分析工具、软件设计工具、编译工具、编辑软件工具有:需求分析工具、软件设计工具、编译工具、编辑工具、软件测试工具、软件配置工具。工具、软件测试工具、软件配置工具。143.3.软件工程环境软件工程

11、环境 方法与工具相结合,再加上配套的软、硬件支持就形成环境。方法与工具相结合,再加上配套的软、硬件支持就形成环境。4 4、软件工程管理、软件工程管理 为了按照进度及预算完成开发计划,实现预期的经济和社会为了按照进度及预算完成开发计划,实现预期的经济和社会效益。包括:成本估算、进度安排、人员组织和质量保证等多方效益。包括:成本估算、进度安排、人员组织和质量保证等多方面的内容,涉及管理学、度量学和经济学等多项学科。面的内容,涉及管理学、度量学和经济学等多项学科。151.3 传统软件工程和面向对象软件工程传统软件工程和面向对象软件工程一、程序设计方法的两次飞跃一、程序设计方法的两次飞跃1.1.结构化

12、程序设计结构化程序设计 程序设计风格从程序设计风格从“追求技巧与效率追求技巧与效率”到到“清晰第一、效率第清晰第一、效率第二二”的转变,从而提高了程序的易读性和可靠性。的转变,从而提高了程序的易读性和可靠性。2020世纪世纪7070年代年代以后,结构化的技术从编码阶段扩展到设计与分析阶段,逐步形以后,结构化的技术从编码阶段扩展到设计与分析阶段,逐步形成了结构化的软件开发范型,即传统软件工程或经典软件工程。成了结构化的软件开发范型,即传统软件工程或经典软件工程。 结构化程序设计的结构化程序设计的“程序程序= =数据结构数据结构+ +算法算法”,使得数据与其,使得数据与其上的操作分离,使得解空间和

13、问题空间不一致。上的操作分离,使得解空间和问题空间不一致。 面对大规模软件产品的开发,结构化技术不能很好实现。面对大规模软件产品的开发,结构化技术不能很好实现。162.2.面向对象程序设计面向对象程序设计 在面向对象的程序设计中,数据及其操作被封装在一个个称在面向对象的程序设计中,数据及其操作被封装在一个个称为为“对象对象”的统一体中,对象之间通过的统一体中,对象之间通过“消息消息”相互连接,相互连接,“对对象象+ +消息消息”机制取代了机制取代了“数据结构数据结构+ +算法算法”的思路,较好第实现了的思路,较好第实现了“解空间解空间”与与“问题空间问题空间”的一致性。的一致性。 程序程序 =

14、 = 对象对象 + + 消息消息 17 结构化程序设计和面向对象程序设计编码示例结构化程序设计和面向对象程序设计编码示例n银行储蓄处理事务。这一事务包含银行储蓄处理事务。这一事务包含1个数据个数据(账户余额账户余额)和和3个对个对数据的操作数据的操作存款、取款与利息结算存款、取款与利息结算(每年度一次每年度一次)。 采用结构化程序设计中,数采用结构化程序设计中,数据据“账户余额账户余额”与施加在其上的与施加在其上的操作是分离的,存款、取款与利操作是分离的,存款、取款与利息结算等息结算等3个过程模块分别将相个过程模块分别将相应的操作施加于应的操作施加于“账户余额账户余额”,使数据获得更新。使数据

15、获得更新。 存款存款取款取款利息利息结算结算帐户帐户余额余额数据数据操操作作18 采用面向对象范型时,采用面向对象范型时,存款、取款与利息结算作为存款、取款与利息结算作为对象内部的对象内部的3个事件过程,个事件过程,与与“账户余额账户余额”一起封装在一起封装在称为称为“银行账户银行账户”的对象中,的对象中,通过来自对象外部的通过来自对象外部的3种不种不同的消息,可以采用启动相同的消息,可以采用启动相应的操作。应的操作。帐户帐户余额余额利息结算利息结算存存 款款取取 款款银行账户银行账户消息消息消息消息消息消息19二、两类软件工程方法二、两类软件工程方法1.1.传统软件工程传统软件工程n结构化开

16、发方法结构化开发方法n软件分析软件分析总体设计总体设计详细设计详细设计面向过程的编码面向过程的编码测试测试2.2.面向对象软件工程面向对象软件工程n面向对象的开发方法面向对象的开发方法n软件分析与对象抽取软件分析与对象抽取对象详细设计对象详细设计面向对象的编码面向对象的编码测试测试 201.4 软件工程知识体系及知识域软件工程知识体系及知识域一、软件工程知识体一、软件工程知识体n 19941994年,美国年,美国Embry-Riddle航空大学计算与数学系航空大学计算与数学系Thomas B.Hilburn教授开始了教授开始了“软件工程知识体系指南软件工程知识体系指南”(Guide to So

17、ftware Engineering Body of Knowledge,SWEBOK)研究研究项目。项目。 n 20012001年年4 4月,发布月,发布SWEBOK0.95版。版。n 20042004年年6 6月,发布月,发布SWEBOK2004版。版。21二、软件工程知识体系指南的目标二、软件工程知识体系指南的目标 SWEBOKSWEBOK指南的指南的目的目的是确认软件工程学科的范围,并为支持该是确认软件工程学科的范围,并为支持该学科的本体知识提供指导。学科的本体知识提供指导。目标目标:1. 1. 促使软件工程本体知识成为世界范围的共识;促使软件工程本体知识成为世界范围的共识;2. 2.

18、 澄清软件工程与其他相关学科之间的关系(如与计算机科学、澄清软件工程与其他相关学科之间的关系(如与计算机科学、项目管理、计算机工程以及计算机数学),并且确定软件工程学项目管理、计算机工程以及计算机数学),并且确定软件工程学科的范围;科的范围;3. 3. 反映软件工程学科内容的特征;反映软件工程学科内容的特征;4. 4. 确定软件工程本体知识的各个专题;确定软件工程本体知识的各个专题;5. 5. 为相应的课程和职业资格认证材料的编写奠定基础。为相应的课程和职业资格认证材料的编写奠定基础。 22 为达到上述目标为达到上述目标1,SWEBOK指南完成的每一阶段都要广泛指南完成的每一阶段都要广泛征求业

19、界各方人士意见。征求业界各方人士意见。 目标目标2和和3则有一个知识深浅程度的定位问题,也就是软件工则有一个知识深浅程度的定位问题,也就是软件工程师应具有什么样的知识,知识定位深了程师应具有什么样的知识,知识定位深了(如数学建模如数学建模),一般人,一般人达不到,知识定位浅了,不敷使用。达不到,知识定位浅了,不敷使用。 SWEBOK定位在大学毕业后有四年工作经验的人。这是因为定位在大学毕业后有四年工作经验的人。这是因为如果没有参加过软件系统开发全过程,不了解如何与用户沟通,如果没有参加过软件系统开发全过程,不了解如何与用户沟通,不理解延误交付期遭受的罚款压力,不理解没完没了的质量纠纷,不理解延

20、误交付期遭受的罚款压力,不理解没完没了的质量纠纷,就很难对其中的知识点有深刻的了解和体验。就很难对其中的知识点有深刻的了解和体验。23三、软件工程知识体系指南的内容三、软件工程知识体系指南的内容 SWEBOK指南将软件工程知识体系划分为指南将软件工程知识体系划分为1010个知识域个知识域(knowledge areas,KA),),分为两类过程。分为两类过程。n 一类是开发与维护过程,包括软件需求、软件设计、软件构造、一类是开发与维护过程,包括软件需求、软件设计、软件构造、软件测试和软件维护;软件测试和软件维护;n 另一类是支持和组织过程,包括软件配置管理、软件工程管理、另一类是支持和组织过程

21、,包括软件配置管理、软件工程管理、软件工程过程、软件工程工具与方法和软件质量。软件工程过程、软件工程工具与方法和软件质量。 每个知识域还可进一步分解为若干论题,形成一个多级层次每个知识域还可进一步分解为若干论题,形成一个多级层次结构,以此确定软件工程知识体系的内容和边界。结构,以此确定软件工程知识体系的内容和边界。 24软件工程知识体系指南软件工程知识体系指南1010个知识域个知识域25261.5 软件工程的软件工程的7 7条基本原理条基本原理1. 1. 用分阶段的生命周期计划严格管理用分阶段的生命周期计划严格管理 在软件开发与维护的漫长的生命周期中,需要完成许多性质各在软件开发与维护的漫长的

22、生命周期中,需要完成许多性质各异的工作。这条基本原理意味着,应该把软件生命周期划分成若干异的工作。这条基本原理意味着,应该把软件生命周期划分成若干个阶段,并相应地制定出切实可行的计划,严格按照计划对软件的个阶段,并相应地制定出切实可行的计划,严格按照计划对软件的开发与维护工作进行管理。开发与维护工作进行管理。 不同层次的管理人员都必须严格按照计划各尽其职地管理软件不同层次的管理人员都必须严格按照计划各尽其职地管理软件开发与维护工作,绝不能受客户或上级人员的影响而擅自背离预定开发与维护工作,绝不能受客户或上级人员的影响而擅自背离预定计划。计划。272. 2. 坚持进行阶段评审坚持进行阶段评审 软

23、件的质量保证工作不能等到编码阶段结束之后再进行,在每软件的质量保证工作不能等到编码阶段结束之后再进行,在每个阶段都须进行严格的评审,以便尽早发现在软件开发过程中所犯个阶段都须进行严格的评审,以便尽早发现在软件开发过程中所犯的错误。的错误。 原因:原因:n 大部分错误是在编码之前造成的。根据大部分错误是在编码之前造成的。根据BoehmBoehm等人的统计,设计等人的统计,设计错误占软件错误的错误占软件错误的63%63%,编码错误仅占,编码错误仅占37%37%;n 错误发现与改正得越晚,所需付出的代价也越高。错误发现与改正得越晚,所需付出的代价也越高。283. 3. 实行严格的产品控制实行严格的产

24、品控制 在软件开发过程中改变需求是难免的,只能依靠科学的产品控在软件开发过程中改变需求是难免的,只能依靠科学的产品控制技术来顺应这种要求。也就是说,当改变需求时,为了保持软件制技术来顺应这种要求。也就是说,当改变需求时,为了保持软件各个配置成分的一致性,必须实行严格的产品控制,其中主要是实各个配置成分的一致性,必须实行严格的产品控制,其中主要是实行基准配置管理。行基准配置管理。 所谓所谓基准配置基准配置也称为也称为变动控制变动控制。即:一切有关修改软件的建议,。即:一切有关修改软件的建议,特别是涉及到对基准配置的修改建议,都必须按照严格的规程进行特别是涉及到对基准配置的修改建议,都必须按照严格

25、的规程进行评审,获得批准以后才能实施修改,绝对不能随意进行修改。评审,获得批准以后才能实施修改,绝对不能随意进行修改。294. 4. 采用现代程序设计技术采用现代程序设计技术 从提出软件工程的概念开始,人们一直把主要精力用于研究各从提出软件工程的概念开始,人们一直把主要精力用于研究各种新的程序设计技术,并进一步研究各种先进的软件开发与维护技种新的程序设计技术,并进一步研究各种先进的软件开发与维护技术。实践表明,采用先进的技术不仅可以提高软件开发和维护的效术。实践表明,采用先进的技术不仅可以提高软件开发和维护的效率,而且可以提高软件产品的质量。率,而且可以提高软件产品的质量。305. 5. 结果

26、应能清楚地审查结果应能清楚地审查 软件产品不同于一般的物理产品,它是看不见摸不着的逻辑产软件产品不同于一般的物理产品,它是看不见摸不着的逻辑产品。软件开发人员品。软件开发人员( (或开发小组或开发小组) )的工作进展情况可见性差,难以准的工作进展情况可见性差,难以准确度量,从而使得软件产品的开发过程比一般产品的开发过程更难确度量,从而使得软件产品的开发过程比一般产品的开发过程更难于评价和管理。于评价和管理。 为了提高软件开发过程的可见性,更好地进行管理,应该根据为了提高软件开发过程的可见性,更好地进行管理,应该根据软件开发项目的总目标及完成期限,规定开发组织的责任和产品标软件开发项目的总目标及

27、完成期限,规定开发组织的责任和产品标准,从而使得所得到的结果能够清楚地审查。准,从而使得所得到的结果能够清楚地审查。316. 6. 开发小组的人员应该少而精开发小组的人员应该少而精 这条基本原理的含义是,软件开发小组的组成人员的素质应该这条基本原理的含义是,软件开发小组的组成人员的素质应该高,而人数不宜过多。开发小组人员的素质和数量是影响软件产品高,而人数不宜过多。开发小组人员的素质和数量是影响软件产品质量和开发效率的重要因素。高素质人员的开发效率比低素质人员质量和开发效率的重要因素。高素质人员的开发效率比低素质人员的开发效率可能高几倍至几十倍,而且高素质人员所开发的软件中的开发效率可能高几倍

28、至几十倍,而且高素质人员所开发的软件中的错误明显少于低素质人员所开发的软件中的错误。此外,随着开的错误明显少于低素质人员所开发的软件中的错误。此外,随着开发小组人员数目的增加,因为交流情况讨论问题而造成的通信开销发小组人员数目的增加,因为交流情况讨论问题而造成的通信开销也急剧增加。也急剧增加。327. 7. 承认不断改进软件工程实践的必要性承认不断改进软件工程实践的必要性 遵循上述遵循上述6 6条基本原理,就能够按照当代软件工程基本原理实条基本原理,就能够按照当代软件工程基本原理实现软件的工程化生产,但是,仅有上述现软件的工程化生产,但是,仅有上述6 6条原理并不能保证软件开条原理并不能保证软

29、件开发与维护的过程能赶上时代前进的步伐,能跟上技术的不断进步。发与维护的过程能赶上时代前进的步伐,能跟上技术的不断进步。因此,因此,BoehmBoehm提出应把承认不断改进软件工程实践的必要性作为软提出应把承认不断改进软件工程实践的必要性作为软件工程的第件工程的第7 7条基本原理。按照这条原理,不仅要积极主动地采纳条基本原理。按照这条原理,不仅要积极主动地采纳新的软件技术,而且要注意不断总结经验。新的软件技术,而且要注意不断总结经验。331.6 软件工程的基本目标软件工程的基本目标 软件工程旨在开发满足用户需要、及时交付、不超过预算和软件工程旨在开发满足用户需要、及时交付、不超过预算和无故障的软件,其主要目标如下:无故障的软件,其主要目标如下:1. 合理预算开发成本,付出较低的开发费用;合理预算开发成本,付出较低的开发费用;2. 实现预期的软件功能,达到较好的软件性能,满足用户的需求;实现预期的软件功能,达到较好的软件性能,满足用户的需求;3. 提高所开发软件的可

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论