NVIDIA 初创加速计划,免费加速您的创业启动 了解详情
写点什么

架构漫谈(五):什么是软件

  • 2016-03-15
  • 本文字数:2466 字

    阅读完需:约 8 分钟

架构漫谈是由资深架构师王概凯 Kevin 执笔的系列专栏,专栏将会以 Kevin 的架构经验为基础,逐步讨论什么是架构、怎样做好架构、软件架构如何落地、如何写好程序等问题。

本文是漫谈架构专栏的第五篇,作者将会从自己的认知角度再次反思什么是软件,文中作者探讨了软件发展火热的根本原因以及软件扮演的角色等问题。如前几天一位架构师所说,我们并不缺架构实践,而是缺少对于架构的反思,希望这系列文章能帮你重新理解架构,重新认识软件。

前面通过四篇文章,把什么是架构,如何做好架构等必要的概念澄清了一下。这些概念对于在各种不同的领域都应该也是有用的,需要读者自行思考,并应用到自己所在的领域中。在这篇文章开始,我们用同样的思考,来看看软件是怎么回事,以及如何运用架构思维,更好的设计和实现软件。

冯诺依曼结构,图灵机,以模拟人为目标

软件的历史,实际上可以说是用机器模拟人的历史。不管大家(包括在这个历史过程中的参与者)有没有意识到,我们都有意无意的在计算机上模仿人类的行为。从冯诺依曼结构开始,程序逻辑开始脱离硬件,采用二进制编码。加上存储,配合输入输出,一个简化的大脑就出现了。图灵机则是模拟大脑的计算,用数学的方式把计算的过程定义了出来,著名的邱奇 - 图灵论题:一切直觉上能行可计算的函数都可用图灵机计算,反之亦然。软硬件两者一结合,一个可编程的大脑出现了,这也是现在为什么我们把计算机叫做电脑。在硬件上编写出的程序,就是软件,是用来控制硬件的行为的。

成本为王

在初期,软件使用二进制编写的,从硬件到软件,成本都非常的高。随着半导体技术的进步,硬件的成本越来越低,性能越来越高,甚至出现了摩尔定律:当价格不变时,集成电路上可容纳的元器件数目,约每隔 18-24 个月增加一倍,性能提升一倍。软件方面,为了简化难度,开始采用汇编,进一步出现了类似于人类的语言的高级语言,比如 C/C++/Java 等,这使得人类可以用类似于人的语言来和计算机沟通。软件工程师慢慢越来越多,开发软件的成本也越来越低。计算机就好像是一个只需要电,不需要休息的人,可以无休无止的工作。

人们越来越愿意把原来只有人才能做的事情,交给计算机来做。结果就导致软件越来越丰富,能够做的事情也越来越多,成本也越来越低。可以这么说,成本是我们为什么采用软件的主要动力,可以节省大量的人员培训,减少雇员的数目。随着互联网的发展,人类社会也开始软件化了。原来必须实体店来进行售卖的,搬到互联网上,开店成本更低,并且能够接触到更多的人。想象一下,一个门店每天的人流达到百万级别是很恐怖的,由实体空间大小来决定。但是在互联网上,访问量千万级别都不算什么。最终的结果就变成,每个人能够负担的工作越来越多,成本越来越低。这也是为什么软件这么热的原因。

软件扮演的角色

随着软件的规模的变大,做好一个软件也变得越来越难了。早期的程序员写程序,主要是为了帮助自己研究课题。这些程序员熟练了之后,提高了自己的生产力,并发现还可以帮助别人写程序,慢慢软件就变成了一个独立的行业。程序从早期由一个人完成,也逐渐变成了由很多不同角色的人共同合作来完成。以下讨论的前提,都是基于帮助别人写程序,多人合作的基础上的。结论对于单人为自己写程序也适用。

在没有软件之前,每个人干自己的工作,自行保存自己的工作结果。人们面对面或者通过电话等沟通,如下图所示。

有了软件之后,实际上,我们是把我们日常生活中所做的事情,包括我们自己本人都一起虚拟化到了计算机中。而人则演化成了,通过计算机的输入输出设备,控制计算机中的自己,来完成日常的工作,以及与其他人的沟通。也就是说,软件一直以来的动力,始终都是来模拟人和这个社会的。比如模拟大气运动(天气预报),模拟人类社会(互联网社交),模拟交易,包括现在正在流行的 VR,人工智能等等。模拟的对象越来越高级,难度越来越大。

不管如何发展,模拟人的所有行为都是一个大的趋势。也就是说,软件的主要目的,还是把人类的生活模拟化,提供更低成本,高效率的新的生活。从这个角度来看,软件主要依赖的还是人类的生活知识。软件更多的是扮演一个 cost center,这也是为什么会出现很多的软件代工。

(点击放大图像)

软件开发的架构演变

软件工程师是实现这个模拟过程的关键人物,他必须先理解人是怎么在日常生活中完成工作的,才能够很好的把这些工作在计算机中模拟出来。可是软件工程师需要学习大量的计算机语言和计算机知识,还需要学习各行各业的专业知识。软件工程师本身的培养就比较难,同时行业知识也要靠时间的积累,这样就远远超出了软件工程师的能力了。所以软件开发就开始有分工了,行业知识和业务的识别,会交给BA,系统的设计会交给架构师,设计的实现交给架构师,实现的检验交给测试,还有很多其他角色的配合。为了组织这些角色的工作,还有项目经理。这就把原来一个人的连续工作,拆分成了不同角色的人的连续配合,演化成了不同的软件开发的模式。然后慢慢演变出专门为别人开发软件的软件公司。

软件架构的出现

如同前面描述的架构的定义,软件架构的出现也是同样的。一开始是懵懵懂懂的去写软件,后来慢慢的就有意识的去切分,演变成了不同的架构。这个背后的动力也是一样的,就是提升参与的人的利益,降低成本。导火索也是软件工程师的任务太重,我们需要把很多工作拆分出来。拆分的原则也是一样的,如何让权责一致。同样,这个拆分也是需要组织架构的调整,来保证架构的落地。具体如何分拆,如何调整,我们将在另外一篇中着重讨论。

以上通过简单的描述计算机和软件的发展历史,阐明软件的本质,其实就是通过把人类的日常工作生活虚拟化,减少成本,提升单个人员的生产力,提升人类自己的利益。软件工程师的职责在这个浪潮中,不堪重负,自然而然就分拆为不同的角色,形成了一个独特的架构体系。这一切的背后,仍然是为了提升人类自己的利益,解决人类自己的问题。


感谢郭蕾对本文的策划和审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ @丁晓昀),微信(微信号: InfoQChina )关注我们。

2016-03-15 16:506970

评论 1 条评论

发布
用户头像
“设计的实现交给架构师”应该是“设计的实现交给程序员”
2020-06-26 19:11
回复
没有更多了
发现更多内容

Microsoft Office LTSC 2021 for Mac v16.84正式版下载:专业办公的得力助手

影影绰绰一往直前

office2021下载 office2021 office2021 Mac破解版

Python动态变量名定义与调用方法

百度搜索:蓝易云

Python 云计算 Linux 运维 云服务器

git快速查看某个文件修改的所有commit

百度搜索:蓝易云

git 云计算 运维 log 云服务器

Nevercenter CameraBag Pro for Macv2024.1激活版:专业的照片滤镜与编辑工具

iMac小白

css3多行文本多行文本缩略点击更多展开显示全部

zhoulujun

css3

提升用户体验的UUID设计策略

南城FE

JavaScript 前端 后端 nodejs uuid

支付系统概述(十):风控能力

agnostic

支付系统设计与实现

BetterMouse for Mac:强大的鼠标增强软件

影影绰绰一往直前

BetterMouse破解版 BetterMouse下载 BetterMouse mac

Iris for Mac:全方位屏幕护眼与录制利器

iMac小白

新牛市新方向:探索加密货币生态的未来

区块链软件开发推广运营

dapp开发 区块链开发 链游开发 NFT开发 公链开发

nginx跨域实战

智慧源点

nginx跨域

OceanBase 开发者大会资料

菜根老谭

oceanbase

Magic Disk Cleaner for Mac:磁盘垃圾清理工具下载

影影绰绰一往直前

Magic Disk Cleaner下载 Magic Disk Cleaner mac Magic Disk Cleaner破解

Downie for mac v4.7.10中文版 网页视频下载工具

影影绰绰一往直前

Downie 4 Mac版 Downie 4中文版 Downie mac破解版

MATLAB R2024a(商业数学软件)mac/win

iMac小白

MATLAB下载 MATLAB2024 MATLAB2024破解版下载

Mac电脑必备专业视频编辑软件:Final Cut Pro for Mac 中文破解版

影影绰绰一往直前

Final Cut Pro下载 Final Cut Pro中文版 Final Cut Pro破解版

Perfectly Clear Workbench(图片编辑软件)mac/win

iMac小白

Navicat Premium 16 for Mac(数据库管理软件)v16.3.7中文激活版

iMac小白

Sound Siphon for Mac:强大的音频传输与录制神器

iMac小白

把自己活成一个公司去经营

智慧源点

mybatisplus多租户原理略解

百度搜索:蓝易云

云计算 Linux 运维 mybatis 云服务器

2024-04-21:用go语言,给一棵根为1的树,每次询问子树颜色种类数。 假设节点总数为n,颜色总数为m, 每个节点的颜色,依次给出,整棵树以1节点做头, 有k次查询,询问某个节点为头的子树,一共

福大大架构师每日一题

福大大架构师每日一题

Photomator for Mac v3.3.5中文版:强大的照片编辑工具

iMac小白

OmniFocus Pro 4.2.1 for Mac永久破解版附完美激活注册码

影影绰绰一往直前

OmniFocus Pro OmniFocus Pro 4 OmniFocus Pro下载 OmniFocus Pro mac

AnyTrans 8 for Mac v8.9.8中文激活版:一款强大的跨平台数据管理工具

影影绰绰一往直前

AnyTrans 8下载 AnyTrans 8 mac AnyTrans 8破解

“愤怒的女友”:AI模拟女友生气、让男士们练习交流技巧

算AI

人工智能 AI 创新

OneCommander Pro(双窗口文件管理工具)v3.76.0.0 特别版+便携版win版

iMac小白

One Commander 3下载 One Commander 3 mac One Commander 3特别版

NetWorker Pro for Mac v9.0.2中文版:一站式网络管理

影影绰绰一往直前

NetWorker Pro for mac NetWorker Pro下载 NetWorker Pro破解版 NetWorker Pro中文版

一键永久激活使用版 parallels desktop19.1.0 虚拟机下载

影影绰绰一往直前

Parallels Desktop 虚拟机 Parallels Desktop 19 pd 19 Parallels Desktop mac

Magnet for Mac中文直装版:高效窗口管理工具

影影绰绰一往直前

Magnet for mac Magnet中文版 Magnet Mac下载 Magnet

Radiant Photo(照片编辑美化软件)特别版win

iMac小白

架构漫谈(五):什么是软件_架构_王概凯_InfoQ精选文章