软件工程概述文档格式.docx

上传人:b****2 文档编号:1437909 上传时间:2023-04-30 格式:DOCX 页数:26 大小:149.26KB
下载 相关 举报
软件工程概述文档格式.docx_第1页
第1页 / 共26页
软件工程概述文档格式.docx_第2页
第2页 / 共26页
软件工程概述文档格式.docx_第3页
第3页 / 共26页
软件工程概述文档格式.docx_第4页
第4页 / 共26页
软件工程概述文档格式.docx_第5页
第5页 / 共26页
软件工程概述文档格式.docx_第6页
第6页 / 共26页
软件工程概述文档格式.docx_第7页
第7页 / 共26页
软件工程概述文档格式.docx_第8页
第8页 / 共26页
软件工程概述文档格式.docx_第9页
第9页 / 共26页
软件工程概述文档格式.docx_第10页
第10页 / 共26页
软件工程概述文档格式.docx_第11页
第11页 / 共26页
软件工程概述文档格式.docx_第12页
第12页 / 共26页
软件工程概述文档格式.docx_第13页
第13页 / 共26页
软件工程概述文档格式.docx_第14页
第14页 / 共26页
软件工程概述文档格式.docx_第15页
第15页 / 共26页
软件工程概述文档格式.docx_第16页
第16页 / 共26页
软件工程概述文档格式.docx_第17页
第17页 / 共26页
软件工程概述文档格式.docx_第18页
第18页 / 共26页
软件工程概述文档格式.docx_第19页
第19页 / 共26页
软件工程概述文档格式.docx_第20页
第20页 / 共26页
亲,该文档总共26页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

软件工程概述文档格式.docx

《软件工程概述文档格式.docx》由会员分享,可在线阅读,更多相关《软件工程概述文档格式.docx(26页珍藏版)》请在冰点文库上搜索。

软件工程概述文档格式.docx

有的系统不能符合用户当初的期望;

有的系统则无法进行修改维护。

例如:

IBM公司的OS/360,共约100万条指令,花费了5000个人年;

经费达数亿美元,而结果却令人沮丧,错误多达2000个以上,系统根本无法正常运行。

OS/360系统的负责人

Brooks这样描述开发过程的困难和混乱:

“像巨兽在泥潭中作垂死挣扎,挣扎得越猛,泥浆就沾得越多,最后没有一个野兽能够逃脱淹没在泥潭中的命运。

1962年6月,美国飞往金星的第一个空间探测器(水手Ⅰ号),因其飞舱中计算机导航程序的一条语句出错,致使空间探测器偏离航线无法取得成功。

还有,可以称为上世纪世界上最精心设计,并花费了巨额投资的美国阿波罗登月飞行计划的软件,也仍然没有避免出错,例如阿波罗8号由于太空飞船的一个计算机软件错误,造成存储器的一部分信息丢失;

阿波罗14号在飞行的10天中,出现了18个软件错误。

2、软件危机的表现

20世纪60年代末期所发生的软件危机,反映在软件可靠性没有保障、软件维护工作量大、费用不断上升、进度无法预测、成本增长无法控制、程序人员无限度地增加等各个方面,以致形成人们难以控制软件开发的局面。

软件危机”主要表现在两个方面:

(1)软件产品质量低劣,甚至在开发过程中就夭折。

(2)软件生产率低,不能满足需要。

1.1.3软件工程的定义

究竟什么是“软件工程”?

自从1968年提出软件工程这个术语,对于软件工程就有了各种各样的定义,但是它们的基本思想都是强调在软件开发过程中应用工程化原则的重要性。

例如,

Boehm曾经为软件工程下了以下定义:

“运用现代科学技术知识时间并构造计算机程序及为开发、运行和维护这些程序所必需的相关文件资料。

”。

1983年,IEEE(国际电气与电子工程师协会)所下的定义是:

软件工程是开发、运行、维护和修复软件的系统方法。

1990年,IEEE又将定义更改为:

对软件开发、运作、维护的系统化的、有规范的、可定量的方法之应用,即是对软件的工程化应用。

软件工程有方法、工具和过程三个要素。

软件工程方法就是研究软件开发“如何作”的技术;

软件工具是研究支撑软件开发方法的工具、软件工具的集成环境—计算机辅助软件工程CASE;

软件工程过程则是指将软件工程方法与软件工具相结合实现合理、及时的进行软件开发的目的。

1.1.4软件工程研究的内容

软件工程是一门指导软件开发的工程学科,是以计算机理论及其他相关学科的理论为指导,采用工程化的概念、原理、技术和方法进行软件的开发和维护,把经实践证明的科学的管理措施与最先进的技术方法结合起来,以较少的代价获得高质量的软件。

1、软件工程研究的内容

软件工程是一门新兴的边缘学科,涉及的学科多,研究的范围广。

归结起来软件工程研究的主要内容有以下4个方面:

方法与技术、工具及环境、管理技术、标准与规范。

软件开发方法,主要讨论软件开发的各种方法及其工作模型,包括了多方面的任务,如软件系统需求分析、总体设计、以及如何构建良好的软件结构,数据结构及算法设计等,同时讨论具体实现的技术,软件工具为软件工程方法提供了支持,研究计算机辅助软件工程CASE,建立软件工程环境。

软件工程管理,是指对软件工程全过程的控制和管理,包括计划安排、成本估算、项目管理、软件质量管理。

软件工程标准化与规范化,使得各项工作有章可循,以保证软件生产率和软件质量的提高。

软件工程标准可分为个层次:

国际标准、行业标准、企业规范和项目规范。

必须要强调的是,随着人们对软件系统研究的逐渐深入,软件工程所研究的内容也不是一成不变的。

2、软件工程的目标

软件工程研究的目标是“以较少的投资获取高质量的软件”。

即软件的开发要在保证质量和效率的同时,尽量缩短开发期,降低软件成本。

软件过程所实现的多目标中,有的是互补的,例如缩短开发期,显然可降低成本,维护是需要代价的,易于维护就可降低总成本。

高性能与高可靠性是互补的。

而有的目标则是互斥的,例如:

要获得高的可靠性,通

常要采取一些冗余的措施,往往成本会增加。

为了实现软件工程的多目标,要对软件的的各项质量指标进行综合考虑,以实现软件开发的“多!

快!

好!

省!

”的总目标。

 

互斥

互补

图1.1软件工程的目标

3、软件工程的基本原则

过去,软件工程的基本原则是抽象、模块化、清晰的结构、精确的设计规格说明。

但今天的认识已经发生了很大的变化。

现已提出的软件工程四条基本原则是:

第一,必须认识软件需求的变动性,便采取适当措施来保证结果产品能忠实地满足用户要求。

在软件设计中,通常要考虑模块化、抽象与信息隐蔽、局部化、一致性等原则。

第二,稳妥的设计方法大大地方便软件开发,以达到软件工程的目标。

软件工具与环

境对软件设计的支持来说,颇为重要。

第三,软件工程项目的质量与经济开销直接取决于对它所提供的支撑的质量与效用。

第四,有效的软件工程只有在对软件过程进行有效管理的情况下才能实现。

近年来,印度的软件产业迅速发展,其成功的经验是,严格按照国际规范进行科学管理。

在本教材中,虽然主要讨论软件开发技术,只在第十章讨论软件管理技术,但软件管理仍然是软件开发成功的关键,因此,将介绍当前质量管理的国际规范CMM(软件成熟度的度量)。

1.2软件与软件生存期

“软件工程”是在软件生产中采用工程化的方法,采用一系列科学的、现代化的方法技术来开发软件。

这种工程化的思想贯穿到软件开发和维护的全过程。

为了进一步学习有关软件工程的方法、技术,先介绍软件、软件生存期及软件工程过程,这几个重要的概念。

1.2.1软件的概念和特点

1.软件(Software)

“软件就是程序,开发软件就是编写程序”是一个错误观念。

这种错误观点的长期存在,影响了软件工程的正常发展。

事实上,正如Boehm指出的:

软件是程序以及开发、使用和维护程序所需的所有文档。

它是由应用程序,系统程序,面向用户的文档及面向开发者的文档四部分构成。

即:

软件=程序+文档,

2.软件的特点

(1)软件是一种逻辑实体,不是具体的物理实体。

(2)软件产品的生产主要是研制。

(3)软件具有“复杂性”,其开发和运行常受到计算机系统的限制。

(4)软件成本昂贵,其开发方式目前尚未完全摆脱手工生产方式。

(5)软件不存在磨损和老化问题,但存在退化问题。

失效率

图1.1硬件失效率曲线

时间

实际曲线

理想曲线

图1.2软件失效率曲线

图1.1给出了硬件的失效率曲线,它是一个U型曲线(即浴盆曲线),说明硬件随着使用时间的增加失效率急剧上升。

图1.2所描述的软件失效率曲线,它没有U型曲线的右半翼表明软件随着使用时间的增加失效率降低,因为软件不存在磨损和老化问题,然而存在退化问题。

3、软件的分类

(1)按照软件功能划分

∙系统软件—如操作系统、设备驱动程序等。

∙支撑软件(实用软件)—协助用户开发的工具软件,如编辑程序、程序库、图形软件包等。

∙应用软件—如工程与科学计算软件、CAD/CAM软件、CAI软件、信息管理系统等。

(2)按照软件规模划分

如表1-1所示,按照软件的不同大小(源代码行)、参加人数、研制时间分为微型、小型、中型、大型、甚大型和极大型。

需要说明的是:

随着软件产品规模的不断增大,类别的指标也会变化。

(3)按照软件工作方式划分

实时处理软件、交互式软件、批处理软件

(4)按照软件服务对象的范围划分

∙项目软件—由客户委托开发的软件。

∙产品软件—由软件开发机构开发,提供给市场的。

此外,还可以按照软件使用的频度及按照软件失效的影响进行划分。

表1-1软件规模分类

类别

参加人数

研制期限

产品规模(源代码行)

微型

1

1—4周

0.5K

小型

1—6月

1K—2K

中型

2—5

1—2年

5K—50K

大型

5—20

2—3年

5K—500K

甚大型

100—1000

4—5年

1M

极大型

2000—5000

5—10年

1M—10M

1.2.2软件工程过程

软件工程过程(Softwareengineeringprocess)是指在软件工具的支持下,所进行的一系列软件工程活动。

通常包括以下四类基本过程:

1.软件规格说明:

规定软件的功能及其运行环境。

2.软件开发:

产生满足规格说明的软件。

3.软件确认:

确认软件能够完成客户提出的要求。

4.软件演进:

为满足客户的变更要求,软件必须在使用的过程中演进。

软件工程过程具有可理解性、可见性(过程的进展和结果可见)、可靠性、可支持性(易于使用CASE工具支持)、可维护性、可接受性(为软件工程师接受)、开发效率和健壮性

(抵御外部意外错误的能力)等特性。

1.2.3软件Th存期

软件生命周期(SDLD)是指一个从用户需求开始,经过开发、交付使用,在使用中不断地增补修订,直至软件报废的全过程,亦称软件生存期(lifecycle)。

GB8567中规定,软件生命周期分为7个阶段:

1.可行性研究和项目开发计划

可行性研究和项目开发计划阶段必须要回答的问题是“要解决的问题是什么”。

2、需求分析

需求分析阶段的任务不是具体地解决问题,而是准确地确定“软件系统必须做什么”,确定软件系统必须具备哪些功能。

3.概要设计

概要设计就是设计软件的结构,该结构由哪些模块组成,这些模块的层次结构是怎样地,这些模块的调用关系是怎样地,每个模块的功能是什么。

同时还要设计该项目的应用系统的总体数据结构和数据库结构,即应用系统要存储什么数据,这些数据是什么样的结

构,它们之间有什么关系等。

4.详细设计

详细设计阶段就是为每个模块完成的功能进行具体描述,要把功能描述变为精确的、结构化的过程描述。

5.编码

编码阶段就是把每个模块的控制结构转换成计算机可接受的程序代码,即写成以某特定程序设计语言表示的“源程序清单”。

6.测试

测试是保证软件质量的重要手段,其主要方式是在设计测试用例的基础上检验软件的各个组成部分。

测试分为模块测试、组装测试、确认测试。

7.维护

软件维护是软件生存期中时间最长的阶段。

已交付的软件投入正式使用后,便进入软件维护阶段,它可以持续几年甚至几十年。

在大部分文献中将生存周期划分为5个阶段,即要求定义、设计、编码、测试及维护。

其中要求定义阶段包括可行性研究和项目开发计划、需求分析,设计阶段包括概要设计和详细设计。

为了描述软件生存期的活动,提出了多种生存期模型。

瀑布模型、循环模型、演化模型、螺旋模型等。

1.3软件生存期模型

软件生存期模型是描述软件开发过程中各种活动如何执行的模型。

它确立了软件开发和演绎中各阶段的次序限制以及各阶段活动的准则,确立开发过程所遵守的规定和限制,便于各种活动的协调以及各种人员的有效通信,有利于活动重用和活动管理。

目前有若干软件生存期模型,如瀑布模型、增量模型、螺旋模型、喷泉模型、变换模型和基于知识的模型等。

1.3.1瀑布模型

瀑布模型如图1.3所示,这是1970年W.Royce提出的最早出现的软件开发模型。

瀑布模型是将软件开发活动中的各项活动规定为依线性顺序联接的若干阶段工作,形如瀑布流水,最终得到软件系统或软件产品。

换句话说,它将软件开发过程划分成若干个互相区别而又彼此联系的阶段,每个阶段中的工作都以上一个阶段工作的结果为依据,同时作为下一个阶段的工作基础。

该模型说明整个软件开发过程是按图中的各个阶段进行的,每个阶段的任务完成之后,产生相应的文档。

它是以文档作为驱动、适合于需求很明确的软件项目开发的模型。

瀑布模型得到了广泛的应用,它在消除非结构化软件、降低软件的复杂性、促进软件开发工程化方面起了很大的作用。

但在大量的仍然机软件开发实践中也逐渐暴露出它的缺

点。

由于瀑布模型是一种理想的线性开发模式,缺乏灵活性,也无法解决软件需求不准确或者不明确的问题。

这些缺点对软件开发带来了严重影响,由于需求不明确,会导致开发的软件不符合用户的需求而夭折。

目标与范围说明书

需求说明书

设计文档

程序

测试报告

维护报告

1.3.2循环模型

图1.3瀑布模型

瀑布模型的缺陷在于将充满回溯、相互重叠的软件开发过程硬性地割裂为几个阶段,随着开发的软件规模越来越大,造成的危害更加严重,循环模型是为了描述软件开发过程中可能的回溯,对瀑布模型进行了改进,开发各阶段可能循环重复。

图1.4描述了循环模型。

1.3.3增量模型

增量模型是一种非整体开发的模型。

根据增量的方式和形式的不同,分为基于瀑布模型的渐增模型和基于原型的快速原型模型。

图1.4循环模型

最终系统

系统不完全

图1.5增量模型

该模型具有较大的灵活性,适合于软件需求不明确、设计方案有一定风险的软件项目。

增量模型和瀑布模型之间的本质区别是:

瀑布模型属于整体开发模型,它规定在开始下一个阶段的工作之前,必须完成前一阶段的所有细节。

而增量模型属于非整体开发模型,它推迟某些阶段或所有阶段中的细节,从而较早地产生工作软件。

1.3.4螺旋模型

对于大型软件,只开发一个原型往往达不到要求。

螺旋模型将瀑布模型和增量模型结合起来,并加入了风险分析。

它是由TRW公司的B.Boehm于1988年提出的。

该模型将开发划分为制定计划、风险分析、实施工程和客户评估四类活动。

沿着螺旋线每转一圈,表示开发出一个更完善的新的软件版本。

如果开发风险过大,开发机构和客户无法接受,项目有可能就此终止;

多数情况下,会沿着螺旋线继续下去,自内向外逐步延伸,最终得到满意的软件产品。

制定计划

决定目标、方案和限制

费用累加

风险分析

评价方案、识别风险、消除风险

风险

评审分析原型1原型2原型3

可操作原型

提交部分

需求计划生存期计划

模拟,模型,基准点

操作概念

软件

开发计划

需求软件产

需求品设计

验证

详细设计编码

客户评估

计划下阶段工作

集成和测试计划

设计确认与验证

确认

运行测试

模块测试

组装

测试

实施工程

开发验证下一级产品

图1.6螺旋模型

螺旋模型将开发过程分为几个螺旋周期,每个螺旋周期可分为4个工作步骤:

第一,制定计划:

确定目标、方案和限制条件;

第二,风险分析:

评估方案、标识风险和解决风险;

第三,实施工程:

开发确认产品;

第四,客户评估:

计划下一周期工作。

1.3.5喷泉模型

该模型是由B.H.Sollers和J.M.Edwards于1990年提出的一种新的开发模型。

主要用于采用对象技术的软件开发项目。

它克服了瀑布模型不支持软件重用和多项开发活动集成的局限性。

喷泉模型使开发过程具有迭代性和无间隙

性。

软件的某个部分常常被重复工作多次,相关对象在每次迭代中随之加入渐进的软件成分,即为迭代的特性;

而分析和设计活动等各项活动之间没有明显的边界,即为无间隙的特性。

喷泉模型是以面向对象的软件开发方法为基础,以用户需求作为喷泉模型的源泉。

从右边喷泉模型的图中可以看出其特点如下:

(1)喷泉模型规定软件开发过程有4个阶段,

即分析、系统设计、软件设计和实现。

(2)喷泉模型的各阶段相互重叠,它反映了软件过程并行性的特点。

图1.7喷泉模型

(3)喷泉模型以分析为基础,资源消耗成塔型,在分析阶段消耗的资源最多。

(4)喷泉模型反映了软件过程迭代性的自然特性,从高层返回低层无资源消耗。

(5)喷泉模型强调增量开发,它依据分析一点,设计一点的原则,并不要求一个阶段的彻底完成,整个过程是一个迭代的逐步提炼的过程。

(6)喷泉模型是对象驱动的过程,对象是所有活动作用的实体,也是项目管理的基本内容。

(7)喷泉模型在实现时,由于活动不同,可分为系统实现和对象实现,这既反映了全系统的开发过程,也反映了对象族的开发和重用过程。

1.3.6智能模型

智能模型也成为基于知识的软件开发模型,是知识工程与软件工程在开发模型上结合的产物,是以瀑布模型与专家系统的综合应用为基础。

该模型通过应用系统的知识和规则帮助设计者认识一个特定的软件的需求和设计,这些专家系统已成为开发过程的伙伴,并指导开发过程。

从智能模型的图示中可以很清楚的看到,智能模型与其它模型不同,它的维护并不在程序一级上进行,这样把问题的复杂性大大地降低了。

该模型的优点主要有:

(1)通过领域的专家系统,可是需求说明更完整、准确和无二义性。

(2)通过软件工程的专家系统,提供一个设计库支持,在开发过程中成为设计者的助手。

(3)通过软件工程知识和特定应用领域的知识和规则的应用来提供开发的帮助。

但是,建立适合与软件设计的专家系统和一个既适合软件工程又适合应用领域的知识

库都是非常困难的。

目前,在软件开发中正应用AI技术,在CASE工具系统中使用专家系

统,用专家系统来实现测试自动化,在软件开发的局部阶段有所发展。

图1.8智能模型

1.4软件开发方法

为了克服软件危机,从60年代末开始,一直在进行软件开发方法的研究与实践,并取得了一系列研究成果,对软件产业的发展起着不可估量的作用。

软件工程的内容包括技术和管理两方面,两方面又紧密结合。

通常把在软件生命期中所使用的一整套技术的集合称为方法学(methodology)或范型(paradigm)。

软件开发方法是一种使用早已定义好的技术集及符号表示习惯来组织软件生产过程的方法,其方法一般表述成一系列的步骤,每一步骤都与相应的技术和符号相关。

其目标是要在规定的投资和时间内,开发出符合用户的需求,高质量的软件,为此需要有成功的开发方法。

软件工程方法学包括三要素:

方法、工具和过程。

方法:

完成软件开发各项任务的技术方法;

工具:

为方法的运用提供自动或者半自动的支撑环境;

过程:

为开发高质量软件所规定的各项任务的工作步骤。

软件开发方法可分为两大类:

面向过程的开发方法和面向对象的开发方法。

本节将对结构化开发方法、原型化开发方法和面向对象的开发方法进行介绍。

1。

传统的软件工程方法

也称为面向过程的软件开发方法,这类开发方法都典型地包含了分析、设计、实现、确认(测试)、演化(维护)等活动。

典型的传统软件开发方法有:

Jackson方法、结构化开发方法、原型化方法、HIPO法、IDEF法等。

2.面向对象的开发方法

是以对象作为基本的元素构建新系统的方法,从90年代开始面向对象的开发方法逐渐成为软件开发方法的主流。

具有代表性的有:

Coda方法,Booch方法和OMT方法以及

UML统一建模语言。

1.4.1结构化开发方法

结构化开发方法(StructuredDevelopingMethod)是一种面向数据流的开发方法,它的基本原则是功能的分解与抽象。

结构化方法提出了一组提高软件结构合理性的准则,如分解和抽象、模块的独立性、信息隐蔽等。

它是现有的软件开发方法中最成熟,应用最广泛的方法,该方法的主要特点是快速,自然和方便。

结构化方法总的指导思想自顶向下、逐步求精。

1、结构化开发方法的组成

结构化方法由三部分构成,按照推出的先后次序有:

70年代初推出的结构化程序设计方法SP法(StructuredProgram);

70年代中推出的结构化设计方法SD法(StructuredDesig

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 小学教育 > 语文

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2