写点什么

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

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

    阅读完需:约 4 分钟

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

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

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

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

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

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

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

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

当然也少不了消息模式:

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

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

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

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

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

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

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

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

关注

评论

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

OPPO应用分发的燎原之火,照亮开发者的增长之路

脑极体

AI 应用

gpt-4o-audio-preview 发布,支持 STT/TTS 不含实时音频;Ministral 3B/8B 端侧模型发布

声网

构建工作流自动化的 5 个最佳工具

NocoBase

自动化 工作流 业务流程自动化 流程自动化 开发流程自动化工具

时序数据库 TDengine 支持集成开源的物联网平台 ThingsBoard

TDengine

时序数据库 #TDengine 数据库、

洋葱学园联合火山引擎打造AI智能学伴,聚焦精准学、陪伴学

新消费日报

Cloudera Impala与Hive:架构对比及协同工作机制

敏捷调度TASKCTL

hadoop cloudera 大数据平台 impala 大数据运维

火盾云APP盾的 防御机制及其应用场景

HUODUNYUN

节点 DDoS 应用安全防护 APP盾 游戏盾

Java常用类——包装类 小白版个人推荐

不在线第一只蜗牛

Java

日志审计是什么?为什么企业需要日志审计?

ServiceDesk_Plus

日志审计 合规性管理 审计日志

解析阿里巴巴商品详情API返回的JSON数据结构

技术冰糖葫芦

API 接口 API 文档 API 测试 API 性能测试

格睿科技完成数百万美元融资,助力可观测和物联网领域高效数据价值挖掘

Greptime 格睿科技

数据库 融资

构建行业应用生态:云原生应用市场简化企业软件安装

北京好雨科技有限公司

云原生 企业级应用 行业生态 应用市场

我的豆包MarsCode 体验官之旅

TRAE.ai

AI 人工智能、

【CEO访谈】从愿景到领导力:7thonline 的崛起之路

第七在线

创新数据新要素发展新质生产力!天翼云助力数字经济高质量发展

天翼云开发者社区

云计算 天翼云

深圳计算科学研究院YashanDB数据库系统斩获“鼎新杯”二等奖

极客天地

TDengine 与北微传感达成合作,解决传统数据库性能瓶颈

TDengine

数据库 tdengine 时序数据库

解锁电商决策新视角:淘宝天猫商品评论数据API接口的深度探索

代码忍者

pinduoduo API API 性能测试

精准监控,高效分析 —— 淘宝API助力商家实现商品信息精细化管理

技术冰糖葫芦

API 接口 API 文档 API 测试 API 性能测试

TapData 知识库 | 一文吃透数据整合(Data Consolidation)

tapdata

数据库 什么是ETL

分布式数据库安全可靠测评名录之平凯数据库(TiDB企业版)

TiDB 社区干货传送门

数据库架构设计

高效项目管理:利用低代码平台简化项目实施流程的策略与实践

天津汇柏科技有限公司

项目管理 低代码平台

【论文速读】| 针对大语言模型的有效且具有规避性的模糊测试驱动越狱攻击

云起无垠

ChatGPT背后的AI背景、技术门道和商业应用(万字长文,建议收藏)

京东科技开发者

TiDB 新版本:更稳、更快、更好的数据库体验

TiDB 社区干货传送门

版本升级 新版本/特性解读

Milvus 到 TiDB 向量迁移实践

TiDB 社区干货传送门

迁移 实践案例 TiDB Cloud TiDB Vector

【一文读懂LangGraph、AutoGen、Swarm】大模型时代AI智能体框架核心技术原理

小奇同学

智能体 多智能体 LangGraph AutoGen Swarm

内容出海新浪潮:AI工具迅猛发展,剑指视频翻译

阿里云CloudImagine

云计算 音视频 视频云 AI视频翻译 短剧出海

关于并发编程与线程安全的思考与实践

京东科技开发者

GreptimeDB vs. InfluxDB 性能测试报告

Greptime 格睿科技

时序数据库 查询 写入

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