软件工程学科的诞生

1. 软件工程学科的产生背景

自从计算机问世以来,计算机科学技术不断发展,带领着人类历史上最为宏大的一次科技革命。随着计算机的推广,越来越多的人接触并使用到了软件。关于软件工程学科产生的背景,首先要明确软件这个概念。

软件是程序、数据及开发、使用和维护程序所需要的所有文档。软件是一个逻辑的而不是物理的产品,大多数软件是自定义的,而不是通过已有的构件组装而成。由于软件具有这些特点,这就导致大家可以根据自己的需求来制作自己的软件,那么问题来了。这样大家根据自己的需求所开发的软件是否适用于其他人的同种需求?随性所欲并不能解决这个问题。随着计算机的普及,这种个体化的软件环境或者软件作坊伴随着软件危机一同到来!

软件危机给整个计算机行业带来了巨大的负面影响,软件危机的定义是:在计算机软件的开发和维护中所遇到的一系列严重问题。它主要包含下面两个问题:一是如何开发软件,以满足不断增长,日趋复杂的需求;二是如何维护数量不断膨胀的软件产品。软件危机主要表现在:

一、软件的开发成本和开发进度的估计常常很不准确;
二、用户对“已完成”软件系统的不满意现象时常发生;
三、软件产品的质量往往靠不住;
四、软件通常没有适当的文档资料;
五、软件常常是不可维护的;
六、软件成本在计算机系统总成本中所占的比例逐年上升;
七、软件开发生产率提高的速度远远跟不上计算机应用迅速普及深入的趋势……以及其他方面的原因。

由此,1968 年,北大西洋公约组织的计算机科学家在联邦德国召开国际会议,讨论了软件危机问题,正式提出并使用了“软件工程”的概念,标志着软件工程正式诞生!

自 1970 年起,软件开发进入了软件工程阶段。由于“软件危机”的产生,迫使人们不得不研究、改变软件开发的技术手段和管理方法。从此软件产生进入了软件工程时代。此阶段的特点是:硬件已向巨型化、微型化、网络化和智能化四个方向发展,数据库技术已成熟并广泛应用,第三代、第四代语言出现;第一代软件技术:结构化程序设计在数值计算领域取得优异成绩;第二代软件技术:软件测试技术、方法、原理用于软件生产过程;第三代软件技术:处理需求定义技术用于软件需求分析和描述。

软件工程领域的主要研究热点是软件复用和软件构件技术,它们被视为是解决“软件危机”的一条现实可行的途径,是软件工业化生产的必由之路。而且软件工程会朝着开放性计算的方向发展,朝着可以确定行业基础框架、指导行业发展和技术融合的“开放计算”。

2. 软件工程学科解决软件危机问题的策略与途径

软件危机促使了软件工程学科的产生,如何解决软件危机就必须要考虑到软件危机产生的原因。通过对问题的分析产生软件危机的原因主要在两个方面。第一是由于软件本身的特点:

一、软件是逻辑部件,不具有直观可观性;
二、软件的规模日趋庞大,开发与管理十分复杂。

第二是由于错误的软件开发与维护方法,主要表现在:

一、忽视软件需求分析;
二、轻视文档的重要性;
三、忽略软件维护等。

通过对问题的细致分析,了解了产生软件危机的原因。我们就可以对症药。要想解决软件危机,以上原因告诉我们必须要对软件重新认识。软件不等于程序!在这个方面应该彻底消除在计算机系统早期发展阶段形成的“软件就是程序”的错误观念。软件是程序、数据及开发、使用和维护程序所需要的所有文档,这就是说软件不是某个人单独的可以随意开发使用的产品。必须充分意识到软件开发不是某种个体劳动的神秘技巧,而应该是一
种组织良好、管理严密的由各类人员协同配合、共同完成的工程项目,这样就能对软件开发的成本和软件使用过程中的管理和维护有更好的规划和预期。

软件工程概念的形成为解决软件危机提供了良好的解决方案。工程是对技术或社会实体的分析、设计、建造验证和管理。1968 年 NATO 在德国召开的一次会议上提出了把软件当作一种工业产品“采用工程化的原理与方法对软件进行计划、开发和维护”,软件工程学科主
要研究软件生产的客观规律性,建立与系统化软件生产有关的概念、原则、方法、技术和工具,指导和支持软件系统的生产活动,以期达到降低软件生产成本 、改进软件产品质量、提高软件生产率水平的目标。软件工程学从硬件工程和其他人类工程中吸收了许多成功的经验,明确提出了软件生命周期的模型,发展了许多软件开发与维护阶段适用的技术和方法,
并应用于软件工程实践,取得良好的效果。

推广使用在实践中总结出来的开发软件的成功技术和方法。此外,人工智能与软件工程的结合成为 80 年代末期活跃的研究领域。基于程序变换、自动生成和可重用软件等软件新技术研究也已经取得了一定进展,把程序设计自动化向前推进一部。在软件工程理论的指导下,发达国家已经建立起较为完备的软件工业化生产体系,形成了强大的软件生产能力。软件标准化与可重用性得到了工业界的高度重视,在避免重用劳动,缓解软件危机方面起到了重要作用。
开发和使用更好的软件工具也是一种行之有效的手段。在软件开发过程中人们开始研制和使用软件工具,用以辅助进行软件项目管理与技术生产,人们还将软件生命周期各阶段使用的软件工具有机地集合成为一个整体,形成能够连续支持软件开发与维护全过程的集成化软件支援环境,以期从管理和技术两方面解决软件危机问题。

技术措施:推广和使用在实践中总结出的好的软件开发技术和方法,并不断探索和研究更有效的技术;开发和使用更好的软件工具,包括采用好的开发工具,系统分析和辅助设计。工具等,以提高工作效率;管理措施:吸收和借鉴人类长期以来从事各类工程项目所积累的行之有效的原理、概念、技术和方法。以工程的方法和角度来解决软件危机。

3. 软件工程学科的研究内容

软件工程学科定义为:采用工程的概念 、原理、技术和方法来开发与维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的技术方法结合起来,来指导软件的开发与维护。软件工程有两个明显的特点:一是强调规范化,二是强调文档化。

软件工程的框架包括目标维,活动维和原则维。软件工程的目标是生产具有正确性、可用性以及开销适宜的软件产品;软件工程活动:生产一个最终满足需求且达到工程目标的软件产品所需的步骤,包括需求、设计、实现、确认和支持;软件工程原则:开发模型,设计方法,支持过程,管理过程。

软件生存周期方法学,是软件工程研究的内容之一,所谓的软件生存周期是指一个软件从定义、开发、使用和维护,直到最终被废弃为止的整个过程。基本思想是从时间角度对软件开发和维护的复杂问题进行分解,把软件生命的漫长周期依次分为若干阶段,每个阶段有相对独立的任务,然后逐步完成每个阶段的任务。可将软件开发阶段划分为定义时期、开发时期和维护时期。

软件生存周期阶段划分及基本任务:
一、问题定义:通过对系统实际用户和使用部门负责人的访问调查,明确要解决问题性质、工程目标和规模。
二、可行性研究:导出系统的高层逻辑模型(数据流图),并在此基础上更准确、更具体的确定工程的规模和目标;更准确的估计系统的成本和效益。
三、需求分析:和用户密切配合,充分交流信息,以得到用户确认的系统逻辑模型。
四、总体设计:提出系统的最佳设计方案,并且设计软件的结构确定各模块的关系。
五、详细设计:将问题的解决方案具体化,设计出程序的详细规格说明,并包含必要的细节信息。
六、编码和单元测试:将详细设计的结果翻译成高级程序设计语言的源程序,并仔细测试编写的每一个模块。
七、综合测试:通过各类型的严格测试与调试,使软件达到预定的要求。
八、软件维护:通过必要的系统维护使得系统持续满足用户的需要。

软件工程基本原理:
一、用分阶段的生命周期计划严格管理
二、坚持进行阶段评审(评审过程)
三、实行严格的产品控制
四、采用现代的程序设计技术
五、结果能清楚的审查
六、开发小组成员应该少而精
七、承认不断改进软件工程实践必要性

软件工程方法学:把在软件生命周期全过程中使用的一整套技术方法的集合称为方法学,主要有 3 个要素:方法、工具和过程。衍生除了基于“生命周期方法学”的传统方法学和面向对象的方法学。传统方法学采用结构化技术来完成软件开发的各项任务,并使用适当的软件工具或软件工程环境来支持结构化技术的运用。而面向对象的方法学把对象作为融合了数据及在数据上的操作行为的统一软件构件。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值