什么样的软件架构是好的?

文章探讨了衡量软件架构好坏的AAA原则,即可考核、可自主和可复用,并强调可考核性是关键。提出在软件开发中,应确保每个团队对业务目标负责,通过Bounded Contexts和虚拟空间与智慧体的模型来分解和管理任务。此外,文章指出编程语言应更好地支持描述业务流程和因果关系,以增强团队的自主性和责任归属感。
摘要由CSDN通过智能技术生成

“All models are wrong, some models are useful” ——George Box
没有放之四海皆准的好与坏的标准。下面我对于衡量软件架构好坏的AAA原则:

可考核(Accountable):好的软件架构让每个团队都有自己负责的业务目标
可自主(Autonomous):好的软件架构让每个团队都一定的自主性可以独立往前跑,而不总是被其他团队阻塞
可复用(Amortized):好的软件架构鼓励对未来投资,使得基础设施的成本可以被摊销
可考核>>可自主>可复用。在上世纪90年代,代码复用是面向对象社区的热门话题。然后SOA和DDD又来告诉我们“可自主”才是最重要的。但是我发现实践中,无论是“可自主”还是“可复用”都很模棱两可。很难用这两个原则去说服其他人,用X的方式来分解问题会比用Y的方式来分解问题更好。但是如果你说,这么分解可以让每个团队更可考核,就显得特别理所当然。

开发者无法估算工作量

“可考核性”是一切的关键。我认为“缺乏可考核性”是现在的软件开发模式最大的危机,这个问题比”无法管理所谓的复杂性“还要更严重。

开发者是无法估算工作量在行业里也不算什么秘密了。这带来了很多根本性问题:

因为我们无法知道真正多少人才是必须的,所以中层管理总是比着招聘人头上限,尽可能的加人。为什么会这样做?很简单,他们的薪酬和他们所管理的人头数是成正比的。

把软件重构得”更可维护“没有商业价值。什么叫可维护性?问题如果解决不了,扔更多的人进去总是可以解决的。软件工程又不是造火箭,能有多难?根本无法证明重构可以节省多少人力,因为就没有可对标的重构前的应投入人力。

要解决这个问题,我认为不是去搞明白开发工作量的评估的魔法。恰恰相反,如果我们和业务负责人是以同一个团队的方式来工作ÿ

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值