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

问题描述:

中度或大型项目不需要建筑师吗?我曾参与多个涉及开发公司选择不分配应用程序架构师的项目。要么软件是有机构建的,而且很少涉及设计,或者设计责任落在高级开发人员身上。什么时候项目不需要应用程序架构师?

为不必相信开发方法使不必要的建筑的作用(这种说法可能对敏捷开发制作)从成本考虑一个建筑师范围的动机。一些开源项目按照集体贡献的原则工作,而不是以建筑领导的发展为基础。

我将不得不在这里使用一个比喻利用房屋。不久之前(相对而言),人们可以在没有建筑师或架构计划的情况下建造房屋。他们砍倒了一些木头,利用学过的技术来切割和飞机板并建造房屋。大教堂,城堡等......他们当然有建筑师和工程师。但绝大多数时间,人们使用技能传递建设房屋。

这些房子做的工作,但没有持续多久。他们可能有点泄漏,他们可能很难改善,等等。但是很容易使用水平衡你的基础,然后添加木材。

现代房屋有基础设施,以插入,有代码得到满足,等等。我们需要我们的住宅设计由建筑师创建或批准,他们可以建立之前。建筑师确保所有事情都可以遏制,并且房子将会站立并适合居住。


应用程序没有什么不同。我们不是生活在一个复杂的结构可以脱离而没有建筑的世界。当然,我可以为我的图书馆编写一个数据库,作为一项简单的练习;我也可以为我的图书馆建立书架,而不需要建筑师参与。但是一旦你超越了简单的结构,你就应该确保有人正在关注更大的局面 - 无论你的结构(房子还是应用程序)要做它需要做的事情,它是否与其他人搭讪,以及是否它符合建设时的规则。

+0

工程师。工程师是管理蓝图的建筑规范要求的人员。建筑师不这样做。 – 2008-10-17 14:37:50

如果你已经有一个架构/系统模式,将允许你建立你的项目,你会不会需要一个建筑师在所有。

我教软件架构上大学,*技能我们相信建筑师带来的表是一个系统的,全面的设计工艺,满足与利益争夺仔细考虑所有利益相关者的需求。建筑师必须拥有大量的技术知识,但开发人员拥有相同的知识(甚至更多)并不罕见。

最关键的事情是捕获质量方案,并知道如何应用设计技术/满足这些品质的图案。或者如果必须的话,可以发明一些东西。

行业中的建筑重用性很高,通常都是建筑师是多余的。

因为我这个东西很多说话,我真的可以去和和...

UPDATE: 我还以为我会整理一些在其他的答案表达的思想。

  • 建筑师是一个*通信点。
  • 建筑师沟通设计 - 好的设计高效地完成设计。
  • 建筑师为产品/项目带来重要经验。
  • 更大的建筑需要更大的设计,更多的规划,原型设计等,需要有人来确保“正确的系统是正确的”。与开发人员相反,架构师认为开发人员是利益相关者,并实施用于处理其期望的非运行时质量(可伸缩性,可维护性,可测试性,可重用性,可配置性(MeTRiCS))的策略。
+0

您是否鼓励软件架构师也是编码人员?您的回答表明架构和编码虽然相关,但不一定重叠。当然是 – 2008-10-17 14:44:42

+0

。通常需要进行早期原型设计以获得关键场景的感受。虽然,我已经看到高级设计没有为更大的项目编程。我会说这取决于规模和复杂性。 – CVertex 2008-10-17 15:51:17

定义“要求”。

您绝对可以在没有中心愿景或领导力的情况下构建大型产品。它会花更长的时间,有更多的错误,更难以维护,并且需要更多的人工时间才能完成。

根据我的经验,拥有Application Architect的优点远远超过并超过了缺点,而且项目越大,效果越大。

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

敏捷开发可以成功,但它的成功在于拥有一个开发团队的润滑油机器,他们每个人都同意程序设计的基本概念,并且足够舒适,当他们有时指出彼此做出糟糕的决定并纠正彼此的错误。

同样,你并不是真正取代应用程序架构师的角色,而只是将责任分散给一群人。

简单的事实是,角色[我]是[/ i]你想要坐的东西。你的座位取决于你,但最有效的方法是让一个人去做。

在我工作的地方,我们有一个大型项目的建筑师。如果您喜欢“理智的声音”,并且架起一座业务分析师风格角色(这是我们相信业界需要的角色)与高级开发人员之间的差距(“这就是它的工作原理”),那么架构师就是如此。它们提供了软件应该如何开发的一致视图 - 如果您愿意,可以提供更大的图片。

在我看来,开发人员四处移动 - 特别是好的 - 并且获得项目的一致性是关键。建筑师专注于项目领域(记住大型项目),不要四处走动,因此他们对将要实现的目标以及应该如何实现目标有了很好的理解。

它们还提供了一个“平滑曲线”,用于根据不断变化的业务需求获得的触发器情况以及开发人员改变已烘焙过程的自然阻力。

即使是开源项目,我也会称之为架构师 - 项目中的中心人员通常都会看到正在构建的内容以及应该如何构建。合作者正在提供想法和推动界限,但如果不合适,有人会否决一项改变。

这取决于你的意思是“建筑师”。如果你的意思是CVertex的意思,那么的确如此,这是正确的。如果你的意思是“一个不愿意编写代码但很喜欢UML并亲自管理背后的人”,那么主要的风险是该项目将工作,而不是由管理层支持,而不是相反。

*根据我的经验,很多这些无代码的人的体重比我更多。虽然我看到很多瘦的程序员。

当只涉及少量维护时,不需要任何架构修改或分析。

我的经验是,有时候建筑师不会被称为那个。通常有人或某个组织负责代码的整体设计。我曾经是技术领导,团队领导或项目负责人。它也倾向于成为一名开发者,负责指导大规模设计。也许我只是在较小的开发商店工作过,但我从来没有见过让某个人完成架构工作,在任何一个项目中都没有足够的工作量!