【AICon】AI 基础设施、LLM运维、大模型训练与推理,一场会议,全方位涵盖! >>> 了解详情
写点什么

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

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

    阅读完需:约 4 分钟

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

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

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

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

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

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

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

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

当然也少不了消息模式:

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

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

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

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

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

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

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

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

关注

评论

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

IOC架构设计之控制反转和依赖注入(一),2021大厂Android面试经验

android 程序员 移动开发

Java泛型,安卓面试项目经验

android 程序员 移动开发

GitHub标星3-5K+【Android校招面试指南,flutter中文本框的长度

android 程序员 移动开发

Git各指令的本质,真是通俗易懂啊,h5移动端开发进行定位

android 程序员 移动开发

Hook 技术初探,【2021Android最新学习路线

android 程序员 移动开发

Google禁止Android-11-自定义-Toast-了?,android开发实战数据

android 程序员 移动开发

Gradle多维度使用,h5开发移动端

android 程序员 移动开发

🍃【Spring专题】「实战系列」重新回顾一下Spring框架的异步执行调用的原理和实战

洛神灬殇

spring 异步编程 异步调度 11月日更

Handler源码分析之二 异步消息的处理,2021金三银四面试季

android 程序员 移动开发

IT-架构师绝对不能错过的-34-技术知识图谱帮你轻松拿下大厂offer

android 程序员 移动开发

Fresco实践总结,阿里P7大牛亲自教你

android 程序员 移动开发

Kubernetes + 焱融 SaaS 数据服务平台,个性化需求支持就没输过

焱融科技

云计算 分布式 高性能 公有云 文件存储

Gson 解析 Json 容错才是关键,举几个常用的实例!,android开发视频百度网盘

android 程序员 移动开发

HTTPS详解,谈谈我认为的高级Android开发到底应该是怎样的

android 程序员 移动开发

IOC架构设计之Dagger2架构设计(三),进阶加薪全靠它

android 程序员 移动开发

万字解读鸿蒙轻内核物理内存模块

华为云开发者联盟

鸿蒙 内存 虚拟内存 物料内存 内存页

javascript中的原型与对象(一),12个View绘制流程高频面试题

android 程序员 移动开发

恒源云(GPUSHARE)_云GPU服务器如何使用Tmux?

恒源云

深度学习

GitHub标星9K的Google官方MVP+Rxjava项目详解,靠这份资料我从6K变成了40K

android 程序员 移动开发

Groovy脚本基础全攻略,重磅

android 程序员 移动开发

Framework掌握不熟?字节跳动大牛带你系统化学习,小白以及计算机类学生的福音

android 程序员 移动开发

GitHub标星3,Android面试

android 程序员 移动开发

Gbox开源:比RN和WebView更轻的高性能动态化业务容器,解决首页动态化的痛点

android 程序员 移动开发

GitHub标星3(1),腾讯Android开发面试记录

android 程序员 移动开发

HashMap 源码解析二、put 相关函数,android原生开发教程

android 程序员 移动开发

IT圈的“年龄歧视”,移动互联网app开发实例

android 程序员 移动开发

GitHub 上优质项目整理,推荐一个GitHub项目

android 程序员 移动开发

如何实现高效运维?来谈谈性能优化那些事(含直播回顾 Q&A)

墨天轮

oracle 性能优化

Glide源码学习五:回调与监听,Android快速转战Kotlin教程

android 程序员 移动开发

GDP大跳水,“溢价阶层,kotlinandroid开发教程

android 程序员 移动开发

移动端1px解决方案

CRMEB

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