软件工程高效学 | 软件的内涵与危机

简介: 软件工程是计算机领域的一门专业基础课,它对于培养大家的软件素质、提高大家的软件开发能力与软件项目管理能力具有重要意义。本篇介绍软件工程的基本概念,包括软件的内涵、软件危机的产生、软件危机的表现及原因等相关内容。

640.jpg


软件工程是计算机领域的一门专业基础课,它对于培养学生的软件素质、提高学生的软件开发能力与软件项目管理能力具有重要意义。本篇介绍软件工程的基本概念,包括软件的内涵、软件危机的产生、软件危机的表现及原因等相关内容。

01、软件的内涵

软件是计算机系统中与硬件相互依存的另一部分,它是由计算机程序、数据、文档以及服务组成的完整集合。概括地说:软件=程序+数据+文档+服务。其中,程序是按事先预定的功能性能等要求设计和编写的指令序列;数据为进行通信、解释和处理而使用的数据结构和信息表示;文档是与程序开发、维护和使用有关的图文材料;服务是提供的现场维护、技术支持、技术培训及变更管理等业务活动。

02、软件危机

软件危机的产生

20世纪60年代以前,计算机刚刚投入实际使用,软件的规模比较小,文档资料通常也不存在,很少使用系统化的开发方法,设计软件往往等同于编制程序,基本上是自给自足的私人化软件生产方式。

20世纪60年代中期,大容量、高速度计算机的出现,使计算机的应用范围迅速扩大,同时,高级语言的出现和操作系统的发展又引起了计算机应用方式的变化。这些都使得软件开发规模急剧扩大,软件系统的复杂程度也越来越高,软件可靠性问题愈加突出。原来的个人设计、个人使用的软件模式不再能满足要求,迫切需要改变软件生产方式,提高软件生产率,软件危机开始爆发。

之后,计算机科学家正式讨论软件危机问题,并提出“软件工程”一词。人们开始研究软件生产的客观规律性,建立与系统化软件生产相关的原则、方法、技术和工具,以期达到降低软件生产成本、改进软件产品质量和提高软件生产率水平的目标。

软件危机的表现

软件危机是指落后的软件生产方式无法满足迅速增长的计算机软件需求,从而导致软件开发与维护过程中出现一系列严重问题的现象。软件危机的具体表现包括以下几个方面。

(1) 软件开发进度难以控制。

软件开发进度难以控制,拖延工期现象并不罕见,这种现象降低了软件开发组织的信誉。

(2) 软件开发成本难以控制。

软件开发成本难以控制,投资一再追加,往往是实际成本比预算成本高出一个数量级。而为了赶进度和节约成本所采取的一些权宜之计又往往损害了产品的质量,从而不可避免地会引起用户的不满。

(3) 产品功能难以满足。

开发人员和用户之间很难沟通、矛盾很难统一。往往是软件开发人员不能真正了解用户的需求,而用户又不了解计算机求解问题的模式和能力,双方无法用共同熟悉的语言进行交流和描述。在双方互不充分了解的情况下,就仓促上阵设计系统,匆忙着手编写程序,这种“闭门造车”的开发方式必然导致最终的产品不符合用户的实际需要。

(4) 软件产品质量无法保证。

软件是逻辑产品,质量问题很难以统一的标准度量,因而造成质量控制困难。软件产品并不是没有错误,而是盲目监测很难发现错误,隐藏的错误往往是造成重大事故的隐患。

(5) 软件产品难以维护。

软件产品本质上是开发人员的代码化的逻辑思维活动,他人难以替代。除非是开发者本人,否则很难及时检测,排除系统故障。

(6) 软件缺少合适的文档资料。

文档资料是软件必不可少的重要组成部分。缺乏必要的文档资料或者文档资料不合格,将给软件开发和维护带来许多严重的困难和问题。

产生软件危机的原因

(1) 用户需求不明确。

用户需求主要体现在:在软件开发出来之前,用户自己也不清楚软件开发的具体需求;用户对软件开发需求的描述不精确,可能有遗漏、有二义性,甚至有错误;在软件开发过程中,用户又提出修改软件开发功能、界面、支撑环境等方面的要求;软件开发人员对用户需求的理解与用户本来愿望有差异。

(2) 缺乏正确的理论指导。

软件开发过程是复杂的逻辑思维过程,其产品极大程度地依赖于开发人员高度的智力投入。由于过分地靠程序设计人员在软件开发过程中的技巧和创造性,加剧了软件开发产品的个性化,也是产生软件开发危机的一个重要原因。

(3) 软件开发规模越来越大。

随着软件开发应用范围的增大,软件开发规模愈来愈大。大型软件开发项目需要组织一定的人力共同完成,而多数管理人员缺乏开发大型软件系统的经验,多数软件开发人员又缺乏管理方面的经验。各类人员的信息交流不及时、不准确,有时还会产生误解。软件开发人员不能有效地处理大型软件开发的全部关系和各个分支,因此容易产生疏漏和错误。

(4) 软件开发复杂度越来越高。

软件开发不仅是在规模上快速地发展扩大,而且其复杂性也急剧增加。软件开发产品的特殊性和人类智力的局限性导致人们难以处理“复杂问题”。“复杂问题”的概念是相对的,一旦人们采用先进的组织形式、开发方法和工具提高了软件开发效率和能力,新的、更大的、更复杂的问题又摆在了人们的面前。

软件工程的诞生

为了避免和解决软件开发中再出现软件危机,不仅需要标准规范的技术措施,更要有强有力的组织管理保障。各方面密切配合、齐抓共管,切实以软件工程的方法和规程进行运作,才能确保软件质量和信息化的健康发展。

软件工程的主要对象是大型软件。软件工程研究的内容主要包括软件质量保证和质量评价,软件研制和维护的方法、工具、文档,用户界面的设计以及软件管理等。软件工程的最终目的是摆脱手工生产软件的状况,逐步实现软件研制和维护的自动化。

目录
相关文章
|
数据采集 数据挖掘 API
主流电商平台数据采集API接口|【Python爬虫+数据分析】采集电商平台数据信息采集
随着电商平台的兴起,越来越多的人开始在网上购物。而对于电商平台来说,商品信息、价格、评论等数据是非常重要的。因此,抓取电商平台的商品信息、价格、评论等数据成为了一项非常有价值的工作。本文将介绍如何使用Python编写爬虫程序,抓取电商平台的商品信息、价格、评论等数据。 当然,如果是电商企业,跨境电商企业,ERP系统搭建,我们经常需要采集的平台多,数据量大,要求数据稳定供应,有并发需求,那就需要通过接入电商API数据采集接口,封装好的数据采集接口更方便稳定高效数据采集。
|
XML 编解码 前端开发
【web组件库系列】封装自己的字体图标库
【web组件库系列】封装自己的字体图标库
383 0
|
9月前
|
存储 监控 Linux
Linux: 检测磁盘坏块 你得会吧!
Linux: 检测磁盘坏块 你得会吧!
639 19
Linux: 检测磁盘坏块 你得会吧!
|
8月前
|
SQL 关系型数据库 MySQL
Flink CDC 3.4 发布, 优化高频 DDL 处理,支持 Batch 模式,新增 Iceberg 支持
Apache Flink CDC 3.4.0 版本正式发布!经过4个月的开发,此版本强化了对高频表结构变更的支持,新增 batch 执行模式和 Apache Iceberg Sink 连接器,可将数据库数据全增量实时写入 Iceberg 数据湖。51位贡献者完成了259次代码提交,优化了 MySQL、MongoDB 等连接器,并修复多个缺陷。未来 3.5 版本将聚焦脏数据处理、数据限流等能力及 AI 生态对接。欢迎下载体验并提出反馈!
1501 1
Flink CDC 3.4 发布, 优化高频 DDL 处理,支持 Batch 模式,新增 Iceberg 支持
|
数据采集 测试技术 API
在BrowserStack上进行自动化爬虫测试的终极指南
随着互联网的发展,数据价值日益凸显,爬虫技术成为提取网页信息的关键工具。然而,不同环境下的测试与运行挑战重重,特别是在多浏览器、多平台上保证爬虫的稳定性和兼容性尤为困难。BrowserStack作为领先的跨浏览器测试平台,提供了强大的工具和服务。本文将详细介绍如何在BrowserStack上进行自动化爬虫测试,并结合代理IP技术提升爬虫的隐蔽性和成功率。通过具体步骤和案例分析,展示如何利用Selenium、自定义用户代理和Cookie设置来应对反爬虫机制。本指南旨在为开发者提供实用模板,帮助其在多变的测试环境中构建高效的爬虫系统。
580 1
|
存储 网络安全 数据安全/隐私保护
|
计算机视觉 存储 机器学习/深度学习
r语言中对LASSO回归,Ridge岭回归和弹性网络Elastic Net模型实现3
用SPSS Modeler的Web复杂网络对所有腧穴进行关联规则分析2
r语言中对LASSO回归,Ridge岭回归和弹性网络Elastic Net模型实现3
|
监控 安全 搜索推荐
企业应用集成(EAI):连接企业系统的技术探索
【6月更文挑战第25天】企业应用集成(EAI)技术连接异构系统,实现数据共享和业务流程优化。EAI包括界面、业务过程、应用和数据集成,提升协同效率、降低成本、改善客户体验、支持创新及强化风险管控。实施涉及规划、需求分析、选择方案、开发测试、部署监控及维护优化。EAI在企业信息化中扮演关键角色。
1029 3
|
网络协议 算法 开发者
如何实现网络同步?
【5月更文挑战第3天】如何实现网络同步?
521 9
|
API Python
Python实现大麦网抢票的四大关键技术点解析
随着互联网的普及和发展,线上购票已经成为人们生活中不可或缺的一部分。然而,在抢购热门演出门票时,往往会遇到抢票难、抢票快的问题,有时候一秒钟的延迟就意味着与心仪的演出擦肩而过。为了解决这个问题,技术爱好者们开始探索利用Python多线程技术来提高抢票效率。本文将介绍Python实现大麦网抢票的四大关键技术点,帮助读者了解抢票脚本的核心原理,并通过示例代码详细说明实现过程。