2天时间,聊今年最热的 Agent、上下文工程、AI 产品创新等话题。2025 年最后一场~ 了解详情
写点什么

对软件架构和企业组织结构的思考

  • 2008-08-01
  • 本文字数:1123 字

    阅读完需:约 4 分钟

大企业的软件架构所面的挑战不但与技术有关,还与企业的组织结构有关。Dan Greenblog 最近在一篇博客里分析了软件架构与高效的组织结构在原则上的相似性,以之回答下面的问题:

企业结构与软件相似在哪里?对于两者的设计,有哪些实践是共通的?

作者特意从一个技术视角的、受环境影响的、特殊的观点入手去逼近所讨论的主题,使这篇文章更切合软件架构。他是这样立论的:

一家组织良好的企业,就像良好架构的软件,被分成一套规整的功能组件,分别承担各不相同的、预先定义的、清楚描述的角色。所有组件都能通过一种共同的、全体约定好的协议互相交流。最后,所有组件都被监控、维护、升级以及必要时被重构或者逐步淘汰。

乍看起来读者似乎只好祈愿自己所在的组织也能像上面说的那样定义良好而且高效。不过上面的一番比较其实是颇有帮助的,因为它阐述了一个威胁到大多数软件架构师的题目——对组织的管理,还点明了一个事实——其实架构师的工具箱里已经有了很多工具可以帮助他们把工作做好。Greenblog 从模块性开始阐述他的四大观点:

模块性可能是一家企业或者一个软件应该具备的最重要的性质。每个节点,不管是软件模块还是一队员工,得到的指令都是在一个大的背景下执行一项非常专门的任务;如果每个节点都能彼此协调,那么整体就能顺畅地运行。

接着谈到契约式设计(Design by Contract)原则和需求管理:

在软件开发里,程序员编写前置和后置条件来确立特定软件组件的角色。有了这些在设计时明确定义的界限,程序员就不太可能在代码里偷偷塞进不符合设计的额外功能。对于企业组织来说也一样,如果团队的使命定义明确,又符合团队成员所具有的技能,那么这个团队就很可能表现出色。如果团队的使命变了,那就要有一些检查取保证团队在新的定义下仍然能够正确地执行其职责。

当然也少不了消息模式:

在一行代码都没写的时候就把通信范式预先筹划好,并且在整个程序中都保持一致,程序员就能在增加新模块的时候给自己省下许多发明新消息系统的麻烦。

通信的概念对模块和团队都适用,团队和模块都会频繁地彼此互动,并且在互动中都要求为异步的、中断驱动的消息定义一套严密的 API,最好还要有一套基于事件的通知系统来处理这些消息。

接下来他谈到了一个严峻而真实的方面——软件和组织都需要重构:

一家公司,或者一个软件,就像任何有生命体一样受到生存法则的支配:适应或者灭绝。市场总是优胜劣汰的,要想始终站在高处就不能静止,只能去拥抱变化。

如果大公司里的软件架构师在求解架构的发展方向时能把网撒得更宽些,把组织的变化也包含在内,把在软件上运用原则也用来管理组织的变化,那么整个系统(包括程序和用户在内)都能取得更大的成功。

查看英文原文: Thoughts On Software Architecture and Corporate Structure

2008-08-01 17:482801
用户头像

发布了 225 篇内容, 共 73.8 次阅读, 收获喜欢 52 次。

关注

评论

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

龙蜥开发者说:为爱发电!当一个龙蜥社区打包 Contributor 是怎样的体验?| 第16期

OpenAnolis小助手

Linux 开源 rpm 龙蜥社区 贡献

爆肝!《Java权威面试指南(阿里版)》,冲击“金三银四”有望了

程序知音

Java java面试 java架构 后端技术 Java面试八股文

云数据库 TiDB 入门级别的体验

TiDB 社区干货传送门

6.x 实践

Pycharm+PyQt5+Python3.5开发环境配置(详细教程)

Python pycharm 环境安装 PyQt PyQt5

打造江西数智产业高地,百度飞桨人工智能产业赋能中心落户南昌青山湖

飞桨PaddlePaddle

飞桨 PaddlePaddle

云数据库TiDB免费试用初体验

TiDB 社区干货传送门

社区活动 6.x 实践

春季3月 · CSPO认证周末班【提前报名特惠】“价值交付课程” | 全国招生

ShineScrum

产品经理 PO Product Owner 产品负责人 产品愿景

Serverless Kubernetes的思考与征程

阿里技术

Kubernetes Serverless

春季3月 · CSM认证周末班【提前报名特惠】“全球金牌课程”CST导师亲授

ShineScrum

ScrumMaster CSM

互联网企业如何进行数字化转型?业务需求迭代频繁的应对之策!

优秀

数字化转型 互联网行业

Python基础知识入门(一)

漫步桔田

Flink CDC+Kafka 加速业务实时化

Apache Flink

大数据 flink 实时计算

集度汽车 Flink on native k8s 的应用与实践

Apache Flink

大数据 flink 实时计算

手把手教你为基于Netty的IM生成自签名SSL/TLS证书

JackJiang

颜色的认识与使用(大屏颜色/仪表板报告设计)

Data 探险实验室

大屏配色 颜色 可视化颜色 配色搭配

一文详解 Netty 组件

京东科技开发者

Java 架构 Netty nio 企业号 2 月 PK 榜

即时通讯技即时通讯技术文集(第8期):移动端弱网优化系列 [共14篇]

JackJiang

测试角色在项目各阶段的项目管理tips

京东科技开发者

项目管理 测试 测试 单元测试 企业号 2 月 PK 榜

DevEco Studio 3.1 Beta1版本发布——新增六大关键特性,开发更高效

HarmonyOS开发者

HarmonyOS

英方软件加入龙蜥社区,联手夯实数字基础设施坚实底座

OpenAnolis小助手

开源 数据复制 英方软件 龙蜥社区 CLA

2023年关于身份安全的4 个预测

HummerCloud

“四维一体”,银行数据使用安全新姿势|盾见

极盾科技

数据安全

ChatGPT“狂飙”出圈,快来分享你眼中的ChatGPT吧!

InfoQ写作社区官方

热门活动 ChatGPT

最佳实践|用腾讯云智能文字识别实现网约车信息管理

牵着蜗牛去散步

人工智能 腾讯云 腾讯 最佳实践 文字识别

前端监控之性能与异常

京东科技开发者

监控 服务端 页面 企业号 2 月 PK 榜 js代码

EasyNLP集成K-Global Pointer算法,支持中文信息抽取

阿里云大数据AI技术

人工智能 深度学习 信息抽取 算法模型 企业号 2 月 PK 榜

中移链结合CA证书实现节点准入控制

BSN研习社

BSN-DDC基础网络详解(三):注册门户账号和业务开通(2)

BSN研习社

BSN-DDC

云数据库TiDB-试用

TiDB 社区干货传送门

管理与运维 版本测评 安装 & 部署

对软件架构和企业组织结构的思考_架构_Mark Figley_InfoQ精选文章