从软件危机中处理软件工程问题

本文涉及的产品
应用实时监控服务-可观测链路OpenTelemetry版,每月50GB免费额度
应用实时监控服务-应用监控,每月50GB免费额度
可观测可视化 Grafana 版,10个用户账号 1个月
简介: 【6月更文挑战第28天】本文介绍软件危机及其处理方式。1968年的北约会议首次提出“软件危机”,指软件开发的复杂性和成本超支问题。现代解决策略包括多种方法和模型,如OO、结构化、RUP和SOA,旨在提高效率和适应性。
       宇宙是离散的吗? 或者是连续的?

       这涉及到以何种方式对世界进行程序开发。

1 面向软件危机:其中问题

软件危机软件可以定义为在软件开发期间提出的一系列问题。

而在过去,曾经存在过一次严重的软件危机,这也导致了许多新的方法和事物出现。

这是在1968年的北约会议上“软件危机”一词首次使用。

自1960年代初以来计算机的可用性和效率提高了。人们对计算机的认识提高了,硬件变得更便宜了。

随着更强大的机器和更人性化的操作系统的出现,计算机的应用迅速增长。计算机使用的增加和应用程序的复杂化,对软件的需求也在增加。

人们从简单的编程开始练习,逐渐将重点转移到开发软件系统。然而编写简单程序的技术无法扩展到整个开发软件系统,这导致了软件危机。

软件危机一词用于描述计算机能力迅速增加的影响和要解决的问题的复杂性。因此,复杂性、期望和变化阻碍了软件开发过程,导致软件危机迅速发展。

随着计算机应用增长,简单的编程技术不足以应对大规模系统,导致延迟、不可靠性和高昂维护成本。软件工程应运而生,采用如面向对象方法(OO)来应对危机,通过抽象、封装、继承和多态来管理和简化复杂性。OO方法虽有效,但需恰当使用。
mandala曼德罗符号.png

2 造成软件危机主要问题

软件危机的原因与开发过程相关的所有问题和复杂性有关,导致软件危机的各种因素包括:

  • 复杂性问题

软件本质上是复杂的,因为我们试图解决复杂领域中的问题,问题的大小迫使我们以团队的形式工作。

软件是不可思议的建筑材料,离散系统容易出现不可预测的行为,软件系统由许多部分组成,其中许多部分相互进行通信,这种复杂性导致了大型软件项目的许多问题。

  • 规模问题:

开发一个有一百行的小型软件的方法不适合大型对象系统。换句话说,用于开发小型系统的方法通常不会扩展到大型系统。

  • 软件昂贵而且成本超支:

用户对最终产品的不满意,总是会有缺陷的软件,因为软件是脆弱的。

与硬件相比,开发软件的成本很高。开发软件需要高素质和熟练的人力。
他们必须支付大量资金,这增加了开支。因此,在这种情况下,人力成本是主导成本。

  • 软件延迟交付:

术语“延迟”是指软件无法在指定时间段内完成。软件未及时交付的原因有很多包括以上这些。

  • 软件不可靠:

不可靠性意味着软件无法执行所需的功能。许多故障是由于引入软件中的错误而发生的。

  • 生产力不一致:

程序员的生产能力跟不上市场的需求,对软件开发时间和成本通常都高度地被乐观估计了。
这是由于缺乏对问题及其环境的了解,通常开发的软件不适合系统的预期用途。

  • 代码很难维护:

维护围绕着对现有软件的理解,维护者必须花费大部分时间来了解他们想要修改的软件,这将提高软件维护成本。

  • 问题区域复杂性的增加:

影响和反映软件复杂性的一些因素,对大型和更复杂的软件系统的需求通常会持续地增加。
比如:

可见的名称(变量、函数等)的数量增加。

对操作时间序列的约束(实时约束)。

内存管理(垃圾回收和地址空间)。

  • 重复劳动:

由于大多数软件开发活动缺乏自动化,因此必须人工重复这些努力。人类如何应对日常生活中的复杂性?有些工作甚至无法自动化。

3 软件工程存在的意义就是软件危机

随着计算系统变得越来越大和复杂,对计算机软件的需求增长速度超过了我们生产和维护它的能力。

为了控制这场软件危机,软件开发需要一些有条不紊的方法。

这就是软件工程的用处,为了应对这场危机,“软件工程”被创造出来。

IEEE将“软件”定义为计算机程序、程序、规则以及相关文档和数据的集合。

软件工程一词被定义为“软件开发、操作、维护和退役的系统方法”。

软件工程是一门以处理软件危机问题为目标的学科。

4 使用OO方法解决软件危机

OO在其他范式和实践中有着深厚的历史根基。它的出现是为了解决通常被归类为“软件危机”的问题。

面向对象方法是对客观世界的一种看法,它是把客观世界从概念上看成一个由相互配合、协作的离散对象所组成的系统。信息系统开发的面向对象方法的兴起是信息系统发展的必然趋势。数据处理包括数据与处理两部分。

面向对象的分析方法是利用面向对象的信息建模概念,如实体、关系、属性等,同时运用封装、继承、多态等机制来构造模拟现实系统的方法。

传统的结构化设计方法的基本点是面向过程,系统被分解成若干个过程,然后制作对应的数据流图分析数据流。而面向对象的方法是采用构造模型的观点,在系统的开发过程中,各个步骤的共同目标是建造一个问题域的模型。在面向对象的设计中,初始元素是对象,然后将具有共同特征的对象归纳成类,组织类之间的等级关系,构造类库。在应用时,在类库中选择相应的类。

但是如果应用不当,或者由没有技能、知识和经验的人使用,它并不能解决任何问题,甚至可能使事情变得更糟。它可以是解决方案的重要组成部分,但不是保证或灵丹妙药。

为什么可以解决软件危机:
抽象化,人类通过对细节进行抽象来处理复杂性。这是基于一些特别的现实理由,例如:

正面理由:驾驶汽车不需要内燃机知识,足以将汽车视为简单的交通工具。
负面理由:呆板印象是抽象的负面例子。

为了有用,抽象(模型)必须小于它所表示的内容。比如路线图、地形照片、物理模型比实际物体内容少得多。

软件危机问题在软件开发过程中遇到。现如今目前的软件开发方法中,面向对象的方法占据着主导地位。面向对象方法的主导地位也决定着软件开发过程模型化技术的发展,面向对象的建模技术方法也就成为主导的方法。

一个典型的OO方法雅各布森OOSE方法:

371aa870d0994b072f5efbb7de7559c.png

5 小结

当代解决软件危机的方法已经大大增加了,包括面向对象OO,结构化方法,虚拟机,RUP,SOA等等知名方法,大致分为以软件需求完全确认为前提的结构化方法(如瀑布模型);在软件开发初期只能提供基本需求为前提的渐进式开发模型(如螺旋模型等);以形式化开发方法为基础的变换模型。

面向对象方法不断发展,曾经是软件开发方法的一场革命,它代表了计算机程序设计的新的思维方法。

该方法与通常的结构化程序设计不同,它支持一种概念,即旨在使计算机问题的求解更接近人的思维活动,人们能够利用各种面向对象开发语言(如C++,JAVA,C#,Python)充分挖掘硬件的潜力,在减少开销的前提下提供更有力的开发工具。

它们通常具备可重用性好,编程效率高,安全性好,程序运行时系统不容易崩溃和跨平台的特性。

目录
相关文章
|
机器学习/深度学习 自然语言处理 数据处理
零样本学习的易懂解释
零样本学习是一种机器学习的方法,它的目标是在没有任何标记样本的情况下,通过学习从未见过的类别或任务。这意味着模型需要在没有任何先验知识的情况下进行学习和推理。
482 0
|
前端开发 Java Go
深入理解 Spring MVC 的工作原理
深入理解 Spring MVC 的工作原理
317 0
|
10月前
|
SQL 数据采集 分布式计算
【赵渝强老师】基于大数据组件的平台架构
本文介绍了大数据平台的总体架构及各层的功能。大数据平台架构分为五层:数据源层、数据采集层、大数据平台层、数据仓库层和应用层。其中,大数据平台层为核心,负责数据的存储和计算,支持离线和实时数据处理。数据仓库层则基于大数据平台构建数据模型,应用层则利用这些模型实现具体的应用场景。文中还提供了Lambda和Kappa架构的视频讲解。
871 3
【赵渝强老师】基于大数据组件的平台架构
|
11月前
|
机器学习/深度学习 传感器 数据采集
使用Python实现深度学习模型:智能设备故障预测与维护
【10月更文挑战第10天】 使用Python实现深度学习模型:智能设备故障预测与维护
1536 2
|
监控 网络协议 JavaScript
WebSocket技术详解与应用指南
WebSocket是全双工TCP协议,解决HTTP的单向通信问题,允许服务器主动推送信息。本文档介绍了WebSocket的基本概念、工作原理(基于HTTP握手,通过帧进行数据通信)、应用场景(实时聊天、在线游戏、数据监控等)和实现方法(客户端使用JavaScript API,服务器端有多种编程语言库支持)。学习WebSocket能提升Web应用的实时性和交互性。
2042 1
|
canal 关系型数据库 MySQL
"揭秘阿里数据同步黑科技Canal:从原理到实战,手把手教你玩转MySQL数据秒级同步,让你的数据处理能力瞬间飙升,成为技术界的新晋网红!"
【8月更文挑战第18天】Canal是一款由阿里巴巴开源的高性能数据同步系统,它通过解析MySQL的增量日志(Binlog),提供低延迟、可靠的数据订阅和消费功能。Canal模拟MySQL Slave与Master间的交互协议来接收并解析Binary Log,支持数据的增量同步。配置简单直观,包括Server和Instance两层配置。在实战中,Canal可用于数据库镜像、实时备份等多种场景,通过集成Canal Client可实现数据的消费和处理,如更新缓存或写入消息队列。
1557 0
|
存储 SQL 关系型数据库
OceanBase的架构特点
【8月更文挑战第10天】OceanBase的架构特点
490 66
|
搜索推荐 数据可视化 5G
从《三体》中的“降维打击”看网络世界,论维度升级的方法与实践
刘慈欣的《三体》为人们拉开一副天马行空的科幻画卷。在地球人类文明和三体文明的信息交流、生死搏杀历程中,“黑暗森林”推动星球文明间的关系发展,也通过一个毁灭性武器--二向箔,“降维打击”终结了人类文明。 在商业的暗黑森林中,无论是商业帝国还是创业公司,都面临着被“降维打击”的潜在风险,而防御风险的最高效模式,是通过维度的增值来引导发展,真正实现“发展+转型”,在业务主航道上拓展出新的领域。随着新领域,新方向、新业务的不断拓展,企业底层的ICT核心架构也需要随之升级增维,此时企业们该如何抓住破局关键呢?
|
11月前
|
传感器 监控 安全
物联网:NB卡的应用场景
物联网NB-IoT(窄带物联网)卡作为一种低功耗、广覆盖、大连接的物联网通信技术,广泛应用于各种需要远程监控、数据传输和智能管理的场景中。以下是一些NB-IoT卡的具体应用场景及其操作概述:
|
存储 缓存 JSON
详解HTTP四种请求:POST、GET、DELETE、PUT
【4月更文挑战第3天】
65320 3
详解HTTP四种请求:POST、GET、DELETE、PUT

热门文章

最新文章