软件工程笔记之软件危机及其原因
143 浏览量
更新于2024-01-04
收藏 191KB DOC 举报
软件工程是一门关于软件开发与维护的学科,是对软件开发过程中遇到的问题进行系统分析和规范化方法的研究。软件工程的出现源于对软件危机的深刻认识。软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题,主要表现为开发成本和进度估计不准、用户对“已完成的”软件系统不满意、软件质量往往靠不住、软件常常是不可维护的等问题。软件危机的产生原因主要与软件本身的特点和软件开发与维护的方法有关。软件不同于硬件,是逻辑部件而不是物理部件,缺乏可见性、难于测试、管理和控制开发过程困难等特点导致软件危机的产生。软件不同于一般程序,规模庞大,而且程序复杂性随着程序规模的增加而呈指数上升,也是产生软件危机的原因之一。此外,软件开发与维护的方法不正确也是导致软件危机的原因之一。对软件开发和维护有关的错误观念和方法的使用,也是导致软件危机的原因之一。
为了解决软件危机,提高软件开发和维护的质量和效率,人们开始对软件开发与维护过程进行了系统分析和研究。软件工程涌现出来,软件工程是一门工程学科,涉及计算机科学、管理学和工程学等多个学科,是对软件开发过程中遇到的问题进行系统分析和规范化方法的研究。软件工程的主要目标是开发出高质量、维护方便且能够在预算和进度范围内完成的软件系统。软件工程以系统化、分阶段的方法来开发和维护软件,这种方法包括:软件开发方法和工具、软件工程的管理方法和工具、软件工程规范和准则、组织的软件工程文化和教育等方面。
软件工程的发展可以分为几个阶段。早期,软件开发过程并没有系统化的方法,程序员主要靠经验进行软件开发。这些方法缺乏一致性和可重复性,导致软件质量难以保证。接着,软件工程的第一个显著事件发生在1968年,在德国的尼克劳斯·维尔特(Niklaus Wirth)教授发表了《软件工程》一书后,软件工程正式成为一个独立的领域。此后,软件工程经历了不断的发展和演进,在其中形成了许多经典的软件开发方法和工具,如结构化分析和设计方法(SADT)、信息工程(IE)、原型法、面向对象方法和统一建模语言(UML)等。这些软件开发方法和工具,为软件工程的进一步发展奠定了基础。
在现代的软件开发中,软件工程的概念和方法已经被广泛应用。例如,在软件开发初期,要对软件系统的需求进行分析与管理,使用需求分析方法来获取完整、准确、清晰、一致和可验证的需求。在软件开发过程中,要使用结构化方法、面向对象方法等进行软件设计与编码。同时,要使用软件配置管理(SCM)、软件质量保证(QA)等方法进行软件开发与管理。在软件系统的维护与测试中,要使用自动化测试工具、软件性能测试工具、软件缺陷管理工具等进行软件测试与维护。这些软件工程的方法和工具,使软件开发变得更加规范、高效、可控,并有助于提高软件的质量和可靠性。
总之,软件工程是一门关于软件开发与维护的学科,涉及计算机科学、管理学和工程学等多个学科。软件工程的出现源于对软件危机的深刻认识,是对软件开发过程中遇到的问题进行系统分析和规范化方法的研究。软件工程的主要目标是开发出高质量、维护方便且能够在预算和进度范围内完成的软件系统。软件工程的发展经历了多个阶段,其中形成了许多经典的软件开发方法和工具。在现代软件开发中,软件工程的概念和方法已经被广泛应用,有助于提高软件的质量和可靠性。软件工程是当前计算机科学和软件工程学中的一个重要学科,对于推动科学技术的发展和应用具有重要的意义。
点击了解资源详情
点击了解资源详情
点击了解资源详情
2020-05-18 上传
2024-04-30 上传
2009-12-04 上传
2010-04-18 上传
2021-10-04 上传
2021-12-15 上传
zzzzl333
- 粉丝: 790
- 资源: 7万+
最新资源
- WordPress作为新闻管理面板的实现指南
- NPC_Generator:使用Ruby打造的游戏角色生成器
- MATLAB实现变邻域搜索算法源码解析
- 探索C++并行编程:使用INTEL TBB的项目实践
- 玫枫跟打器:网页版五笔打字工具,提升macOS打字效率
- 萨尔塔·阿萨尔·希塔斯:SATINDER项目解析
- 掌握变邻域搜索算法:MATLAB代码实践
- saaraansh: 简化法律文档,打破语言障碍的智能应用
- 探索牛角交友盲盒系统:PHP开源交友平台的新选择
- 探索Nullfactory-SSRSExtensions: 强化SQL Server报告服务
- Lotide:一套JavaScript实用工具库的深度解析
- 利用Aurelia 2脚手架搭建新项目的快速指南
- 变邻域搜索算法Matlab实现教程
- 实战指南:构建高效ES+Redis+MySQL架构解决方案
- GitHub Pages入门模板快速启动指南
- NeonClock遗产版:包名更迭与应用更新