什么时候项目不需要应用程序架构师



中型或大型项目是否不需要架构师?我参与过许多项目,其中涉及的开发公司选择不指派应用程序架构师。要么软件是有机构建的,几乎不关心设计,要么设计责任落在高级开发人员身上。

没有架构师的动机从成本考虑到认为开发方法使体系结构角色变得不必要(这一论点可以用于敏捷开发)。一些开源项目遵循集体贡献的原则,而不是在体系结构领导下进行开发。

如果您已经有了一个架构/系统模式,可以构建您的项目,那么您根本不需要架构师。

我在大学里教软件体系结构,我们认为建筑师的核心技能是一个系统、彻底的设计过程,它能满足所有利益相关者的需求,并仔细考虑相互竞争的利益。架构师必须具备一系列技术知识,但开发人员拥有相同的知识(甚至更多)并不罕见。

关键是捕捉质量场景,并了解如何应用符合这些质量的设计技术/模式。或者如果必须的话,在飞行中发明一些东西。

行业中的体系结构重用率很高,通常到了建筑师多余的地步。

既然我谈论了很多这些东西,我真的可以继续下去…

更新:我本想整理一下其他答案中表达的一些想法。

  • 建筑师是一个中心沟通点
  • 建筑师沟通设计——优秀的建筑师能有效地完成设计
  • 建筑师为产品/项目带来必要的经验
  • 更大的建筑需要更大的设计、更多的规划、原型设计等,需要有人来确保"正确的系统是正确的"
  • 与开发人员相比,架构师将开发人员视为利益相关者,并实施策略来处理他们所需的非运行时质量(可扩展性、可维护性、可测试性、可重用性、可配置性(MeTRiCS))

我将不得不在这里使用房屋的类比。不久前(相对而言),人们可以在没有建筑师或建筑规划的情况下建造房屋。他们砍伐了一些木材,用学到的技能切割和平整木板,建造了自己的房子。大教堂、城堡等等……他们当然有建筑师和工程师。但绝大多数时候,人们都是在使用流传下来的技能来建造房子。

这些房子起到了作用,但没有用那么久。它们可能有点漏水,可能很难改进,等等。但用水平整地基,然后添加木材是很容易的。

现代住宅有基础设施需要接入,必须满足规范等。在建造之前,我们需要建筑师创建或批准我们的住房设计。建筑师确保一切都符合要求,房子将屹立不倒,适合居住。


应用程序也不例外。我们并不是生活在一个复杂的结构可以在没有建筑的情况下逃脱的世界里。当然,我可以为我的图书馆写一个数据库,作为一个琐碎的练习;我也可以在没有建筑师参与的情况下为我的图书馆建造书架。但是,一旦你超越了简单的结构,你就绝对应该确保有人关注大局——你的结构(房子或应用程序)是否会做它需要做的事情,它是否与他人相处融洽,以及它是否符合建筑规则。

定义"需要"

毫无疑问,你可以在没有核心愿景或领导力的情况下构建一个大型产品。它只需要更长的时间,有更多的错误,更难维护,并且需要更多的工时才能完成。

根据我的经验,拥有应用程序架构师的好处远远超过了缺点,而且项目越大,效果就越大。

现在你可以做一些事情来减轻这种影响,比如有关于应用程序预期设计的强大而完整的文档,开发者会忠实地遵循这些文档——但这只是用一个文档来代替应用程序架构师,这并不是一种真正的不同方法。

敏捷开发可能是成功的,但它的成功在于拥有一个运转良好的开发团队,他们每个人都同意程序设计的基本概念,并且在做出糟糕的决策并纠正彼此的错误时,都能自如地相互指出。

同样,您并没有真正取代应用程序架构师的角色,您只是将职责分散到一群人身上。

简单的事实是,这个角色[i]是你想要坐的东西。如何安置它取决于你,但最行之有效的方法是让一个人来做。

在我工作的地方,我们有一个大型项目的架构师。如果你喜欢"理智的声音",并弥合业务分析师风格的角色("这是我们认为行业所需要的")和高级开发人员("这就是它的工作方式")之间的差距,那么架构师就是。它们为软件应该如何开发提供了一致的观点——如果你愿意的话,可以从更大的角度来看。

在我看来,开发人员四处走动,尤其是那些优秀的开发人员,在项目中保持一致性是关键。建筑师专注于项目的某个领域(记住,大型项目),不会四处走动,所以他们对要实现的目标以及我们应该如何实现目标有了深刻的理解。

它们还提供了一条"平滑曲线",以应对不断变化的业务需求和开发人员对改变已经成熟的流程的自然抵制所带来的突发情况。

即使是开源项目也有我所说的架构师-项目的核心人员通常对正在构建的内容和应该如何构建有一个愿景。合作者正在提供想法并突破界限,但如果不合适,也有人会否决改变。

这取决于你所说的"架构师"是什么意思。如果你指的是CVertex的意思,那么这确实是正确的。如果你的意思是"一个胖*的人,他不编码,但非常喜欢UML,并在背后亲吻管理层",那么主要的风险是该项目将发挥作用,而不会得到管理层的支持,而不是相反。

*根据我的经验,很多没有代码的人比我更胖。不过,我看到很多瘦程序员。

当只涉及不需要任何架构返工或分析的小维护时。

我的经验是,有时架构师并不是这样称呼的。通常有人或某个小组负责代码的总体设计。我曾经有过技术负责人、团队负责人或项目负责人。它还倾向于由开发人员承担指导大规模设计的额外责任。也许我只是在较小的开发商店工作过,但我从未见过有人只做建筑工作的意义,任何一个项目都做不到!

相关内容

最新更新