中等或大型项目是否需要建筑师?我参与了许多项目,其中涉及的开发公司选择不分配应用程序架构师。无论是软件是有机构建的还是对设计的关注都很少,或者设计责任属于高级开发人员。
没有架构师的动机从成本考虑到相信开发方法使架构角色不必要(这个论点可以用于敏捷开发)。一些开源项目的工作原则是集体贡献,而不是建筑领导力的发展。
答案 0 :(得分:4)
如果您已经拥有允许构建项目的体系结构/系统模式,则根本不需要架构师。
我在大学教授软件架构,我们相信架构师带来的核心技能是一个系统的,彻底的设计过程,通过仔细考虑竞争利益来满足所有利益相关者的需求。架构师必须具备一系列技术知识,但开发人员拥有相同的知识(甚至更多)并不罕见。
关键是捕捉质量场景并了解如何应用满足这些品质的设计技术/模式。或者如果必须的话,可以随时发明一些东西。
行业中的架构重用很高,通常是建筑师的冗余。
由于我谈论了很多关于这些内容的事情,我可以继续下去......
<强>更新强> 我以为我会整理其他答案中表达的一些想法。
答案 1 :(得分:2)
我将不得不在这里利用房屋进行类比。不久前(相对)人们可以在没有建筑师或架构计划的情况下建造房屋。他们减少了一些木材,利用学到的技能来切割和铺设木板并建造房屋。大教堂,城堡等......他们有建筑师和工程师,当然。但绝大多数时候,人们使用技能传承建造房屋。
这些房子完成了这项工作但没有持续那么久。它们可能有点漏水,它们可能难以改善,等等。但是使用水来平整粉底然后添加木材很容易。
现代住宅拥有可插入的基础设施,必须满足的代码等。我们需要在建造之前由建筑师创建或批准我们的住房设计。建筑师确保一切都符合要求,并且房子将成立并且适合居住。
应用程序也不例外。我们不是生活在一个复杂的结构可以在没有架构的情况下逃脱的世界。当然,我可以为我的图书馆编写一个数据库作为一个简单的练习;我也可以为我的图书馆建造书架而不需要建筑师参与。但是,一旦你超越简单的结构,你应该绝对确保有人正在关注更大的图景 - 无论你的结构(房屋或应用程序)是否会做它需要做的事情,它是否能与其他人一起玩,以及是否它符合建设规则。
答案 2 :(得分:1)
定义“需要”。
你绝对可以建立一个没有中心愿景或领导力的大型产品。它只需要更长的时间,更多的错误,更难以维护,并需要更多的工时来完成。
拥有应用程序架构师的优势,根据我的经验,数量远远超过缺点,项目越大,效果越大。
现在您可以采取一些措施来减轻影响,例如,有关应用程序的预期设计的强大而完整的文档,开发人员忠实地遵循这些文档,但这只是取代应用程序的文档建筑师,这不是一个真正不同的方法。
敏捷开发可以取得成功,但它的成功在于拥有一个开发团队的机器,每个人都同意程序设计的基本概念,并且在他们制作时足够舒服地指出彼此糟糕的决定,纠正彼此的错误。
同样,你并没有真正取代应用程序架构师的角色,你只是将责任分散给一群人。
简单的事实是,[i]的角色是[/ i]你想要坐下的东西。你如何坐下来取决于你,但最有效,最有效的方法是让一个人去做。
答案 3 :(得分:0)
在我工作的地方,我们有一个大型项目的建筑师。建筑师如果你喜欢“理智的声音”,并弥合商业分析师风格角色('这是我们认为行业需要')和高级开发人员('这就是它的工作方式')之间的差距。它们提供了软件应如何开发的一致视图 - 如果您愿意,可以提供更大的图像。
在我看来,开发人员四处走动 - 尤其是好的开发人员 - 在项目中获得一致性是关键。建筑师专注于项目的一个区域(大型项目,请记住)并且不要四处走动,因此他们对将要实现的目标以及我们应该如何实现这一目标有了很好的理解。
它们还为不断变化的业务需求以及开发人员改变已经烘焙过程的自然阻力所带来的触发器情况提供了“平滑曲线”。
即使是开源项目也有我称之为架构师的东西 - 项目中的中心人员通常会对正在构建的内容及其构建方式有所了解。合作者提供想法并推动界限,但如果不适合,有人会否决变更。
答案 4 :(得分:0)
这取决于你对“建筑师”的意思。如果你的意思是CVertex的意思,那么确实是正确的。如果你的意思是“一个胖子*没有编码但很喜欢UML,亲吻管理背后”,那么主要的风险是项目将起作用而不是由管理层支持,而不是相反。
*根据我的经验,很多这些没有代码的人比我更重要。不过,我看到很多瘦小的程序员。
答案 5 :(得分:0)
当只涉及微小的维护时,不需要任何架构改造或分析。
答案 6 :(得分:0)
我的经验是,有时建筑师并没有被称为那样。通常有人或某个团队负责代码的整体设计。我有这个技术主管,团队负责人或项目负责人。它也往往是一个开发人员,负责指导大规模设计。也许我刚刚在较小的开发商店工作过,但我从来没有看到过只有一个人完全从事建筑工作的问题,在任何一个项目上都做得不够!