写点什么

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

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

    阅读完需:约 4 分钟

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

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

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

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

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

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

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

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

当然也少不了消息模式:

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

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

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

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

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

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

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

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

关注

评论

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

云监控治理检测:云监控的自助化最佳实践

阿里巴巴云原生

阿里云 云原生 云监控

安全合规、资源专属!即构科技联合亚马逊云科技推出实时互动解决方案

ZEGO即构

AWS 亚马逊云科技 实时互动 安全出海

面试官:说说停止线程池的执行流程?

王磊

万界星空科技MES:磷酸铁锂正极新材料生产管理系统

万界星空科技

mes 万界星空科技 万界星空科技mes 新材料mes 新材料行业

EMR Spark-SQL性能极致优化揭秘 Native Codegen Framework

阿里云天池

避免数据复制延迟,解读 GaussDB (for MySQL) 主备 0 延迟

华为云开发者联盟

数据库

桌面运维工具之打印机驱动安装

京东科技开发者

MobPush个性化通知

MobTech袤博科技

开发者 生产动态

聚焦数据分析:看低代码平台应用下的数字化校园

EquatorCoco

数据分析 低代码 数字化

音频平台开发创新:短视频融合如何提升用户黏性?

软件开发-梦幻运营部

流程自动化变革:看低代码开发如何赋能企业创新转型

不在线第一只蜗牛

运维 低代码 流程自动化

新能源领军企业的选择:XSKY 易数管理平台实现质检效率飞跃

XSKY星辰天合

复赛总榜TOP1方案Champion Chasing Boy分享

阿里云天池

ShareSDK第三方平台使用指南:Pinterest

MobTech袤博科技

开发者 产品动态

聊一聊 C# 弱引用 底层是怎么玩的

快乐非自愿限量之名

C# 算法

SD-WAN和MPLS专线有什么区别?怎么选择?

Ogcloud

SD-WAN MPLS 企业组网 SD-WAN组网 SDWAN

百度薛苏:已有百万量级智能体分发在新搜索文小言

Geek_2d6073

万泰生物用飞书:打造信息交流、业务管理、安全协同三大平台

ToB行业头条

吃透 JVM 诊断方法与工具使用

EquatorCoco

Python JVM

深度长文解析SpringWebFlux响应式框架15个核心组件源码

快乐非自愿限量之名

spring Web

Apache IoTDB 毕业四周年快乐!龙年 T 恤别错过

Apache IoTDB

Vidu 全球首发「主体参照」新功能,一键同步角色特征;GPT-4o 实时音频项目负责人离职创业丨 RTE 开发者日报

声网

MobPush查看推送数据

MobTech袤博科技

开发者 生产者

SD-WAN与IPSec:区别、应用与选择

Ogcloud

SD-WAN IPsec SD-WAN组网 SD-WAN服务商 SD-WAN国际专线

Java Executors类的9种创建线程池的方法及应用场景分析

不在线第一只蜗牛

Java

黑神话,XSKY 星飞全闪单卷性能突破310万

XSKY星辰天合

看过来!2024 云栖大会操作系统技术 Workshop 怎么玩?

OpenAnolis小助手

AI 操作系统 云栖大会 C++

软件测试学习笔记丨Docker 原理分析与使用场景

测试人

Docker 软件测试

第一,才够安全!

京东科技开发者

HelixFold 3 全球首个完整复现 AlphaFold 3,百度智能云 CHPC 为人类生命探索提供算力平台支撑

Baidu AICLOUD

生命科学 AlphaFold

评估您的数据是否可用于人工智能的三个考虑因素

码语者

人工智能 AI

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