软件工程综述

上传人:鲁** 文档编号:431745612 上传时间:2023-03-10 格式:DOCX 页数:10 大小:95.48KB
返回 下载 相关 举报
软件工程综述_第1页
第1页 / 共10页
软件工程综述_第2页
第2页 / 共10页
软件工程综述_第3页
第3页 / 共10页
软件工程综述_第4页
第4页 / 共10页
软件工程综述_第5页
第5页 / 共10页
点击查看更多>>
资源描述

《软件工程综述》由会员分享,可在线阅读,更多相关《软件工程综述(10页珍藏版)》请在金锄头文库上搜索。

1、软件工程综述摘要:本文简单介绍了软件工程。分别从软件工程的定义、发展历程、危机及解决途径、 软件过程的基本原理、软件工程包含的领域和生命周期模型等方面介绍。从而对软件工程的 基本内容有了初步了解。关键词: 定义 过程 原理 领域 模型1引言:软件工程(Software Engineering,简称为SE)是一门研究用工程化 方法构建和维护有效的、实用的和高质量的软件的学科。它涉及到程序设计语言, 数据库,软件开发工具,系统平台,标准,设计模式等方面。在现代社会中,软 件应用于多个方面。典型的软件比如有电子邮件,嵌入式系统,人机界面,办公 套件,操作系统,编译器,数据库,游戏等。同时,各个行业几

2、乎都有计算机软 件的应用,比如工业,农业,银行,航空,政府部门等。这些应用促进了经济和 社会的发展,使得人们的工作更加高效,同时提高了生活质量。2.系统介绍2.1软件工程的定义概括地说,软件工程是指导计算机软件开发和维护的工程学科。采用工程的概念、原理、 技术和方法来开发与维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最 好的科技方法结合起来,经济地开发出高质量的软件并有效地维护它,这就是软件工程。下面给出软件工程的几个定义:1983年IEEE (美国电气和电子工程师协会)给软件工程下的定义是:“软件工程是开发、 运行、维护和修复软件的系统方法。”这个定义相当概括,它主要强调软件

3、工程是系统方法 而不是某种神秘的个人技巧。Fairly认为:“软件工程学是为了在成本限额以内按时完成开发和修改软件产品所需要 的系统生产和维护技术及管理学科。”这个定义明确指出了软件工程的目标是在成本限额内 按时完成开发和修改软件的工作,同时也指出了软件工程包含技术和管理两方面的内容。Fritz Bauer给出了下述定义:“软件工程是为了经济地获得可靠的且能在实际机器上 有效地运行的软件,而建立和使用的完善的工程化原则。”这个定义不仅指出软件工程的目 标是经济地开发出高质量的软件,而且强调了软件工程是一门学科,它应该建立并使用完善 的工程化原则。1993年IEEE进一步给出了一个更全面的定义。

4、软件工程是:把系统化的、规范的、可度量的途径应用于软件开发、运行和维护的过程,也就是把工程化应用于软件中;研究中提到的途径。12.2软件发展及危机2.2.1软件发展的历程程序设计阶段 计算机发展的早期阶段(20世纪50年代初期20世纪60年代中期)。在 这个阶段硬件已经同用花,而软件的生产却是个体化。程序系统阶段 计算机系统发展的第二阶段(20世纪60年代中期20世纪70年代末期)。 引入了人机交互的新概念。出现了实时系统和第一代数据库管理系统。软件工程阶段 计算机系统发展的第三阶段(始于20世纪70年代中期)。以软件的产品 化、系列化、工程化、标准化为特征的软件产业发展起来,打破了软件生产的

5、个体化特征, 有了可以遵循的软件工程化得设计原则、方法和标准。第四阶段有复杂操作系统控制的强大的桌面机、广域网络和局域网络,配以先进的软件 应用已成为标准。从技术的软件刚才阶段过渡到社会信息化得计算机系统阶段。随着第四阶段的进展,一些新技术开始涌现。.速礙代袪统软件廿蚣方抉-应1斛岀ciw机瞪限r甌閔旳观和n :酔険1竿一财股1 一 1鄭丄.简段细啊輸讹 mA 血机航即也总低戒序確件*片浆务址悄钳样的觀喑人飞牌曲啊棉i*杵馆计询*怦磧枣_L_1*曲向批址理巾建嵐韓件輿型技术1 1左用户宾时散鹏序软件产品22.2.2软件危机由于缺乏软件开发经验和科学的理论指导,开发者不能准确地估计软件开发的成本

6、和进 度。所制定的成本规划可能大大低于实际的成本,实际的开发进度也可能要比计划的慢,为 了赶进度往往就会牺牲软件的质量。由于缺乏使开发人员与用户进行交流的有效机制,开发人员常会犯闭门造车的错误。从 而会造成用户对已完成的软件系统不满意。由于测试工作不够充分,又没有好的软件质量保证技术,导致提交给用户的软件质量不 高。软件的可维护性差,程序的错误难以改正。程序的可移植性差,很难适应不同的运行环 境。软件的可重用性差,大量的软件人员在重复开发。开发过程缺乏标准和规范的指导,各个开发组织都有自己的开发方法,开发组织之间进 行工作交接的流程也不规范。软件开发生产率的提高速度难以满足对软件需求的增长速度

7、,软件产品供不应求。由于软件开发和维护方法不当,使得软件成本居高不下,过高的成本已严重制约了软件 的开发。造成软件危机的原因很多,归纳起来主要有两个方面:一是与软件本身的特点有关,二是 与软件开发与维护方法不当有关。2.2.3解决软件危机的途径(1) 采用工程化方法来开发和维护软件。软件开发不应只是个体化的劳动,而应该是由组 织良好、管理严密、各类人员共同配合完成的一个工程项目,因此应该注意吸收和借鉴从事 其他工程项目的行之有效的科学原理和方法。采用先进的技术、方法、工具开发和软件设计。即采用先进的管理技术、规范的开发 方法和模型、各种提高开发效率的软件工具等。采用必要的组织管理措施。软件工是

8、正式在解决软件危机问题的过程中形成的一门综 合技术与管理两个方面的新兴学科,并逐渐成为指导计算机开发、维护、管理的理论依据。32.3软件过程的基本原理2.3.1软件的生命周期 一个软件产品从构想到不再使用,期间会经历若干阶段,我们称其为软件的生命周期(life cycle)。生命周期中的3个主要阶段是:开发阶段(development),使用阶段(use) 和维护阶段(maintenance)。通常情况是:客户提出需要解决的问题,软件开发者就构思并 开发相应的软件,并藉此获得酬劳。新的软件是在开发阶段建立的。软件开发完毕之后就交付用户使用。用户在使用过程中,通常都会发现各种问题(错 误)及提出

9、各种修改建议。这些信息都会反馈给开发者,这就进入了维护阶段.在软件维护阶段中,软件中的错误被修改(标识),功能被增强。如果需要进行较大的修改, 通常会开发一个新版本的软件并发布和使用。当一个软件的维护费用过于昂贵时,开发者就考虑不再使用该软件,也不再发布新的 版本。软件开发阶段是生命周期中的第一个阶段,也是最重要的阶段。如果一个软件开发得 好,后续的维护将十分容易,相应的也就节约维护成本。2.3.2软件开发阶段软件工程师通常将软件的开发阶段分为下面4个子阶段: 分析阶段 设计阶段 实现阶段 测试和调试阶段1. 分析阶段 分析问题是第一步也是最为重要的一部。在这一步中。您需要做以下事情: 全面理

10、解所要解决的问题 进行需求分析(requirement analysis):理解问题需求,包括程序是否需要和用户进 行交互,是否操纵数据,是否有输出结果以及输出结果的格式等等。举一个例子,如果您需 要编写一个自动取款机(ATM)的程序。在分析阶段,您要给出该ATM机可以进行的操作, 如:取款,存款,转账及余额查询等等。您会和使用该ATM机的客户进行讨论,理解他们 的需求,增加必要的操作,以便是您的程序是用户友好的。 如果程序需要对数据进行操作,开发人员必须了解数据类型及它们的表示方法。这时候 可能会接触一些样本数据。如果程序有输出信息,必须确定它们所生成的结果及输出格式等。 如果需要解决的问题

11、过于复杂,可以把它分解为多个子问题,在对每个子问题做相应的 需求分析。2. 设计阶段当您仔细分析完问题后,就需要设计相应的算法去解决问题。如果已经将问题分解为若干子 问题,那么对每个子问题都需要设计相应的算法。算法(algorithm):在有限时间内获得问题解决方案的逐步求解过程。O1结构化设计方法将一个问题分解为若干个子问题的方法叫做结构化设计方法(struetured design)。结构化 设计方法又叫做自顶向下的设计方法(top-down design)、逐步求精方法(stepwise refinement)和模块化程序设计方法(modular programming)。在结构化设计方

12、法中,问题 被分解为若干子问题,然后分别对每个子问题进行分析和求解。所有子问题的解合并起来就 是原始问题的解。使用结构化设计方法进行编程就叫做结构化程序设计( strueture programming)。O2面向对象设计方法在面向对象设计方法(objeet-oriented, 00D)中,求解问题的首要步骤是识别称为“对象” (objeet)的组件(它是运用该方法求解问题的基础)和确定对象之间如何进行交互。比如, 我们要为一家录像出租店编写一个可以使其业务自动化的程序。在这个问题中,我们可以确 定两个主要对象,即:录像带对象和客户对象。明确系统中的对象之后,下一步就是为每个对象确定有关数据和

13、数据上进行的相关操作。对 于录像带对象而言,数据可能包括影片名称,演员名单,制片人,出版公司,库存副本数等 等。在录像带对象可以进行的相关操作包括查询影片名,每租出一盘录像带就将库存副本数 减一,客户每归还一盘录像带就将库存数加一。由上文可知:对象包括数据和在数据上执行的操作。对象可以看作数据和其上操作的统一体。 使用面向对象方法编程,最终的程序是交互对象的集合。实现面向对象设计方法的编程语言 叫做面向对象程序设计(objeet-oriented programming, OOP)语言。面向对象设计方法的3个基本原则: 封装性(eneapsulation):将数据和操作集成在一个单元(对象)中

14、的能力。继承性(inheritance):从已有数据类型中派生新数据类型的能力。多态性(polymorphism):使用相同表达形式来实现不同操作的能力。在C+中,封装性是通过叫做类(elass)的数据类型实现的。 在面向对象的设计方法中,我们要确定需要哪些类,它们的数据成员和成员方法。我们还需 要描述个各类之间如何进行交互。4. 实现阶段在实现阶段,您将编写和编译程序代码,以实现在设计阶段分析得到的类和函数。 最终的程序通常由几个函数组成,它们分别完成不同的任务。有些函数是主程序的一部分, 其他的则是在对象上完成的操作。显然函数之间存在交互关系,从而能够利用彼此的函数功 能。要使用一个函数,

15、用户只需要知道该函数的功能和用法即可,而不必关心该函数的实现 的具体细节。5. 测试和调试测试(t es ting)这个术语表示检测程序的正确性,即检查程序是不是完成了需要完成的工 作。而调试(debugging) 一词指,如果程序存在错误,如何找到并修改错误。 在每写完一个函数或算法后,接下来应该验证它是否正确工作。在复杂的大型程序中,错误 是一定存在的。为了提高程序的可靠性,必须在交付用户前发现并修改其中的错误。 您可以使用某些方法,通常是数学方法来证明程序的正确性。然而,对于大型的程序来说, 单单使用证明方法是不行的,因为在证明过程中就有可能引入错误。所以,我们必须使用测 试的方法考察程序的质量。通过让程序运行一些特定的例子,即测试用例(test case )来 找出程序中的问题。测试用例的组成部分包括:一组输入数据、用户操作、初始条件和期望的结果等。由于测试 用例将被多次使用,所以需要正确地记录它们。通常,一个程序需要对大量的数据进行操作, 虽然理论上可以将所有的输入情况在测试用例中体现,但在实际工作中显然是不现实的。例 如,一个程序需要对整数进行处理,显然,为每个整数做一个测试用例是不可能的。我们可 以将测试用例分类,即分为等价类(equiva

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 建筑/环境 > 建筑资料

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