赞
踩
软件工程是指导计算机软件开发和维护的一门学科。
采用工程的概念、原理、技术和方法来开发与维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来,以经济地开发出高质量的软件并有效地维护它,这就是软件工程。
以下是NATO和IEEE给出的软件工程定义:
IEEE(1993):1)把系统的、规范的、可度量的途径应用于软件开发、运行和维护过程,即把工程应用于软件;2)研究1)中的途径。软件工程是开发、运行、维护和修复软件的系统方法。
从前面的定义可以看出,软件工程从本质上就是为了解决软件危机。具体可总结为如下几条:
软件工程的中心课题是控制复杂性。软件所解决的问题十分复杂,以致于不能把问题作为一个整体通盘考虑,只能采用模块化分解的方法解决。模块化方法并不能降低问题的整体复杂性,但是却使它变成可以管理的。许多软件的复杂性主要不是由问题的内在复杂性造成的,而是由必须处理的大量细节造成的。
提高开发软件的效率。现实世界在不断的变化,软件为了不被很快的淘汰,必须随着所模拟的现实世界一起变化。如何更快的适应需求的变化,是软件工程面临的重要挑战。
注重团队合作。软件处理的问题十分庞大,必须许多人协同工作才能解决这类问题。纪律是成功地完成软件开发项目的一个关键,良好的团队合作有利于项目的成功。软件开发人员必须学会合作与沟通,才能保证软件的质量和开发效率。
充分了解用户需求。在软件工程领域中是由具有一种文化背景的人为另一种文化背景的人创造产品。缺乏应用领域的相关知识,是软件开发项目出现问题的常见原因。软件工程师不仅缺乏应用领域的实际专业知识,还缺乏该领域的文化知识。因此有必要通过访谈、阅读书面文件等方法了解用户组织的工作流程,然后用软件实现。
著名的软件工程专家巴利.玻姆(Barray W. Boehm)总结了七条软件工程基本原理并指出这七条原理是保证软件产品质量和开发效率的原理的最小集合。
| ![]() |
注:巴利.玻姆(1935-2022)是一位美国计算机科学家和软件工程师,曾在多家知名机构工作,包括IBM、美国国家航空航天局和南加州大学(USC)。他对软件工程领域做出了重大贡献(开发软件工程经济学模型、螺旋模型等),并因其工作获得了许多奖项,包括软件工程研究所的史蒂文斯奖和IEEE哈兰·D·米尔斯奖。详细介绍可参阅百度百科。
二八定律是一种经济学原理,也被称为帕累托定律。该定律认为,在一个系统中,大约80%的结果是由20%的原因所决定。这个原则也可以应用于软件工程领域,即:
注:帕累托定律又称帕累托分析法或巴雷托分析法、柏拉图分析、主次因分析法 、ABC分析法、分类管理法、物资重点管理法、ABC管理法、abc管理、巴雷特分析法,平常我们也称之为“80对20”规则是由意大利经济学家维尔弗雷多·帕累托首创的。帕雷托通过长期的观察发现:美国80%的人只掌握了20%的财产,而另外20%的人却掌握了全国80%的财产,而且很多事情都符合该规律。于是他应用此规律到生产上。详细介绍可参阅百度百科。
过程、方法和工具是软件工程的三个要素。
无论是过程、方法,还是工具,其最终目标都是提高软件的质量。
为了更好的理解软件工程过程,软件工程领域的专家们把软件比作生物体,就像其他生物体一样,软件也有一个孕育、诞生、成长、成熟、衰亡的生存过程,我们称其为软件的生命周期(或生存期)。
通常我们把软件生存期的活动划分为以下6个阶段:
软件设计:“应该如何解决这个问题?”。软件设计包括概要设计和详细设计。
软件实现:如何把软件设计转换成计算机可以接受的程序代码,即写成以某一种特定程序设计语言表示的“源程序清单”。程序应正确、容易理解、容易维护。
软件测试:目的就是通过各种测试使软件达到预定要求。
软件运行与维护:通过各种维护使系统持久地满足用户需要。通常包括改正性、适应性、完善性和预防性维护。
对这六个阶段的工作可以采用不同的组织过程,这便是软件生存期模型,也称作软件生命周期模型或软件过程模型。典型的软件生存期模型包括:
瀑布模型是传统的开发策略,软件过程分为若干个阶段,阶段间具有顺序性、依赖性,它的目的是为了推迟实现。随着瀑布模型的应用推广,人们发现为了解决软件维护过程中发现的问题,还需要对前面的工作进行改进,同时每一个阶段都会为前一阶段反馈问题。于是就有了下图所示的改进后的瀑布模型。
瀑布模型的优点是结构清晰、易于理解和管理,适用于较小规模的项目。它适合需求明确、不易变动的项目,且开发人员能够准确预估项目进度和资源需求。
然而,瀑布模型也存在一些缺点。由于各个阶段的边界严格,一旦某个阶段出现问题或变动,可能会导致整个项目延期或失败。另外,瀑布模型对于客户需求变化较为敏感,难以应对快速变化的市场需求和技术变革。
因此,在实际项目中,瀑布模型通常会与其他模型相结合,如迭代模型或敏捷开发模型,以弥补其局限性,并提高软件开发的灵活性和适应性。
原型模型属于演化模型。每一次演化都会完成一个原型系统,它是快速建立起来的可以在计算机上运行的程序,它所能完成的功能往往是最终产品的一个子集。原型模型的工作流程如下图所示:
在增量模型中,软件开发按照一系列的增量进行,每个增量代表软件系统的一个部分。每个增量开发完成后,都可以独立运行,并且可以在此基础上进行下一轮的增量开发。
增量模型的优点是可以快速地开发出可用的软件功能,并且可以及时获取用户的反馈。同时,增量模型也可以降低开发过程中的风险,因为每个增量都经过了测试和验证,可以及时发现和解决问题。
然而,增量模型也存在一些局限性。首先,由于每个增量都需要进行独立的开发和测试,因此可能增加开发成本和时间。其次,增量模型可能不适用于一些需要一次性交付完整功能的项目。
总的来说,增量模型是一种逐步递增地开发软件的方法,可以快速地获取软件功能和用户反馈,但也需要权衡开发成本和时间的局限性。
如图所示,螺旋模型是一种迭代的增量模型,它将软件开发过程划分为多个循环,每个循环包含四个主要阶段:计划、风险分析、工程构建和评审。每个循环都是前一个循环的增量,并且每个循环的目标是针对风险进行评估和缓解,以及开发软件的一部分功能。
螺旋模型的主要特点是强调风险管理和迭代开发。在每个循环中,团队会对风险进行评估,并根据评估结果制定相应的风险缓解计划。这种风险驱动的方法可以在项目早期就识别和解决潜在的问题,从而降低了项目失败的风险。
螺旋模型的优点包括能够灵活应对需求变化、提高软件质量、降低开发成本和缩短开发时间。然而,螺旋模型也有一些缺点,比如较高的复杂性和管理难度。
总的来说,螺旋模型适合于大型和复杂的软件项目,特别是在风险较高的情况下。它可以帮助项目团队更好地管理和控制项目风险,并以迭代的方式逐步开发和交付软件功能。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。