AICon上海「Agent与多模态解决方案专场」火热来袭!即刻报名,与创新同行~ 了解详情
写点什么

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

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

    阅读完需:约 4 分钟

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

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

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

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

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

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

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

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

当然也少不了消息模式:

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

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

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

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

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

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

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

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

关注

评论

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

HyperWorks汽车B-柱网格变形

智造软件

CAE Hypermesh hyperworks

DNS DDoS攻击:网络世界中的“洪水猛兽”

国科云

YashanDB 知识库|YCP 高可用离线升级指南(以 23.2.4.100 升级至 23.2.11.100 为例)

数据库砖家

数据库

华为云中间件助力AI应用智能进化与创新突破

华为云开发者联盟

华为云

2025低代码开发平台大揭秘:国内十大低代码厂商全面解析

优秀

低代码开发平台

YashanDB 知识库|UNDO 表空间一直在涨?查原因 + 给方案,一文说明白

数据库砖家

数据库

怀进鹏强调高效优化学科布局和专业建设,多所985成立“AI+”新学院

ModelWhale

TikTok运营网络问题怎么解决?试试这个企业级网络方案!

Ogcloud

SD-WAN tiktok运营 tiktok网络 sd-wan专线

金贝灯光儿童摄影3大布光方案,解锁专业级童趣写真

科技热闻

数字化与信息化的关系

优秀

数字化 信息化

YashanDB 知识库|MySQL 的 GROUP BY 语句在崖山报错?问题出在这个标准!

数据库砖家

数据库

排行榜的5种实现方案!

不在线第一只蜗牛

架构 开发

YashanDB 知识库|yasql 报 YASQL-00021:单行字符超 4000.如何绕过限制?

数据库砖家

数据库

YashanDB|用 yasldr 批量导入时报内存不足?一文搞懂 bulkload 内存分配逻辑

数据库砖家

数据库

高效财税自动化软件的特点与优势

Techinsight

财务管理

VMware ESXi 8.0U3e macOS Unlocker & OEM BIOS NVMe 驱动特殊定制版 (集成驱动版)

sysin

esxi

企业如何利用SD-WAN优化多云架构网络性能

Ogcloud

SD-WAN 企业组网 SD-WAN组网 SD-WAN厂商 sd-wan专线

网易游戏 Flink 云原生实践

Apache Flink

大数据 flink 云原生

图片导航组件 | 纯血鸿蒙组件库AUI

华哥的全栈次元舱

HarmonyOS 开发语言 纯血鸿蒙 ArkUI / eTS 鸿蒙组件库AUI

YashanDB|如何优化跑批性能?这些参数配置值得关注

数据库砖家

数据库

MCP 如何构建企业级数据分析 Agent?

阿里巴巴云原生

阿里云 云原生 函数计算

酷睿、锐炫加持!英特尔点亮智慧零售新场景

E科讯

淘宝天猫商品详情API接口(附代码示例)

tbapi

淘宝商品详情接口 淘宝API 天猫商品详情接口

如何选择适合企业的高效财税自动化软件

Techinsight

财税

“工作区”升级为“磁盘”、数据集统计概览优化|ModelWhale 版本更新

ModelWhale

大模型

YashanDB 共享集群实测报告:性能、稳定性、架构三重验证,细节见真章

数据库砖家

数据库

YashanDB 知识库|YCP 单机部署如何离线升级?一文详解 -rpc 升级流程

数据库砖家

数据库

CST如何在三维里截取部分区域进行仿真

思茂信息

cst CST软件 CST Studio Suite

YashanDB 知识库|Oracle 里的大整数插入正常,换到崖山却报错?问题可能出在字段类型上

数据库砖家

数据库

教育部加快推进教育数字化,2024年来国家级人工智能教育政策合集

ModelWhale

焱融科技联合 FastGPT 推出 Datalnsight,加速 AI 精准推理

焱融科技

数据管理 AI推理 rag 知识库平台

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