2020 Google开发者大会重磅开幕 了解详情

适应性——新软件危机的主因

2008 年 6 月 17 日

按照软件工程学的介绍,软件危机(Software Crisis)是软件发展第二阶段末期,由于硬件快速发展,引发作为“人件”的软件不能满足需求所导致的,作为副产品它催生了软件工程学的快速发展。但在很多企业已经把软件作为其业务神经的今天,通用的商业软件和开源软件已经相对过剩,但软件行业的危机不仅没有缓解,而是更加严峻。“适应性”成了新软件危机的主因。

软件危机的主要表现如下:

  • 费用支出大大超出预算
  • 用户不认可其功能
  • 可靠性和维护性差
  • 时间进度失控

40 多年前我们总结其主因如下:

  • 软件规模膨胀,逻辑趋于复杂
  • 开发技术落后
  • 开发方式落后
  • 工具落后

但 40 年之后,除了第一条主因之外,其他方面都已经大大改善,尤其是伴随着 C++、.NET、Java 等一大批开源框架、开源工具、开源产品出现后,实际项目中我们需要自己编码的比例越来越小,常常是“技术等人”,而非“人等技术”。

但现实如何呢?我们不难发现危机的表现不仅没有减轻,反而愈盛。这说明主因发生了变化,在“唯一不变是变化本身”概念下“适应性”越来越突出。为什么工具、手段、方法学已经大大改善的今天还要一遍遍出现这个问题呢?技术和业务,尤其是后者。

  • 十年前,传真还算很迅捷的通信手段,20 年前电报和长途电话的地位更加突出,但现在信息往往是基于预定的邮件、短信和“WIFI Touch”
  • 地球被互联网拉平,对外贸、制造业、投资、能源等类型的企业,很多时候商机的出现不再是年、月,而是几天甚至几个小时,IT 如何快速解决这些问题,甚至是让用户凭借既有的 IT 系统自己解决,一直是软件行业奋斗但似乎还很遥远的目标
  • 企业内部的竖井、企业间的信息壁垒因为资金和人员协作被逐个打破,防火墙(更确切地说应该叫“防火筛子”)只是在维持着技术上的安全区域,业务伙伴间信息协同的需要更加迫切,但在此之前还要跨越频频出现的软件平台之争、技术标准之争
  • 语义网络(Semantic Web)、BPEL、面向对象语言 / 脚本语言、战术性 BI、XML 数据库系统集成虽然都可以从某个方面“更快”地解决业务逻辑、技术环境、数据实体方面的变化,不过相对于市场而言,尤其是那些不期而至同时很可能转瞬即逝的市场商机而言,还是适应得不够快

但如果要满足这些要求,对于软件产品的提供者似乎也太过苛刻,毕竟“众口难调”,既然不好调和就不妨交给用户自选,更加人性化、易用的 Mashup 也许会成为解决新软件危机的一个突破口。

2008 年 6 月 17 日 09:06 432
用户头像

发布了 61 篇内容, 共 46690 次阅读, 收获喜欢 0 次。

关注

评论

发布
暂无评论
发现更多内容

Linux 进程必知必会

cxuan

Linux 操作系统

Python中的@staticmethod和@classmethod的区别

Young先生

Python classmethod staticmethod

30 张图带你分分钟看懂进程和线程基础知识全家桶

爱嘤嘤嘤斯坦

Java 线程 进程 进程线程区别

领域驱动设计(DDD)实践之路(一)

vivo互联网技术

架构 领域驱动设计 DDD

Tomcat8.5源码构建

知春秋

tomcat tomcat构建 tomcat源码解读 tomcat剖析

字节跳动面试经验分享,已拿 Offer!

伍陆柒

Java 面试 大厂

关于计划的思考

zhongzhq

漫画 | 架构设计中的那些事

码农神说

架构设计 架构师 漫画编程

SpringBoot入门:00 - 初始化项目

封不羁

Spring Boot java 14

性能碾压 POI !利用模板语法快速生成 Excel 报表

Geek_Willie

表格控件 GCExcel 服务器端开发

推荐一款Python开源库,技术人必备的造数据神器!

狂师

Python 开源 自动化 开发工具 开发数据

不是完成你学习的 KPI ,而是要形成指导你行动的 OKR

非著名程序员

学习方法 程序员 提升认知 知识管理 程序员成长

带你解析MySQL binlog

Simon

MySQL Binlog

图片处理不用愁,给你十个小帮手

阿宝哥

JavaScript 前端 工具 开源项目 图片

还在划水?这个SQL你能写出来吗?

书旅

php MySQL SQL语法 sql查询

信创舆情一线--《关键信息基础设施安全保护条例》纳入2020年立法计划

统小信uos

信息安全

Java集合总结,从源码到并发一路狂飙

给你买橘子

Java 编程 算法 集合

​区块链技术的重要性

CECBC区块链专委会

一文看懂 OAuth2

pingan8787

JavaScript 前端 Web oauth2.0

mac vmware centos7 设置静态IP

愤毛阿青

network vmware Centos 7

LR.Net平台研发轶事,每一个点都很难,但我们不将就

力软.net/java开发平台

C# .net 跨平台 框架开发

Python类中的__new__和__init__的区别

Young先生

Python __init__ __new__

Node.js与二进制数据流

自然醒

JavaScript node.js 前端 二进制

Rust是如何保障内存安全的

博文视点Broadview

读书笔记 rust

开发者必备——IDEA配置清单

Noneplus

配置 IDEA

Redis进阶篇三——主从复制

多选参数

redis redis高可用 redis6.0.0 Redis项目

一些思考

张健

数据结构与算法知识点总结

hiqian

编程能力 —— 异步编程

wendraw

JavaScript 前端进阶训练营 编程能力

流水账

zack

猿灯塔:spring Boot Starter开发及源码刨析(二)

猿灯塔

Java 猿灯塔 源码刨析

适应性——新软件危机的主因-InfoQ