什么是优秀的软件架构?

时间:2009-08-27 15:40:08

标签: architecture

我知道我的问题太难以回答,但让我给你一些背景信息。

去年我作为一名软件经理找到了一份新工作,我认为该工作做得很好。我在许多不同的编程领域经验丰富,如GUI,Web,RIA,网络应用程序。我是一个很好的问题解决者。一般来说,我知道如何以干净的方式组织代码。我总是努力工作。

但是差不多一年之后,我不得不承认我的老板对我的工作非常不满。最重要的原因是他认为我的产品软件解决方案不够先进。 我想我已经精心分解了系统,我为每个组件选择了最流行的平台,大部分代码都很健壮,干净。

但是我的老板不这么认为。他真的觉得我们可以做得更好。他想要的不仅仅是好的,而是优秀的。具有几乎最终可扩展性的东西,看起来非常容易扩展,有些东西有一些很棒的概念和想法。

这是我从未见过的挑战。我不知道如何向我的老板展示当前系统是否足够好。我告诉他“我们使用xxx,yyy”,但他不知道它们是什么。我向他展示了UML来解释我们已经做了什么,但他对C非常有趣并且对OO和UML持怀疑态度。

那么你有没有见过一些你觉得很棒,很棒且很容易扩展的软件架构师?我想我真的需要看一些优秀的软件架构意味着什么的例子。

说实话,我真的怀疑是否值得尝试建立一个架构来准备一些尚不存在的要求,但我必须让我的老板很高兴继续我的工作。

12 个答案:

答案 0 :(得分:14)

我怀疑这根本不是技术问题。我想你的经理并不真正理解软件架构,但可能只是对热门的知识有所了解。

您的工作是将您的架构出售给您的老板并管理他(或他们)的期望。如果你的老板担心你的解决方案不够性能或没有足够的可扩展性,那么你很可能还没有完全掌握这种关系。

我认为你没有为可能不会发生的事情进行构建是完全正确的。你可以疯狂地这样做。你无法预料到一切。

答案 1 :(得分:3)

不久前,微软免费发布了一个应用程序架构指南,以及一些口袋引用。我想你和你的老板应该一起阅读。

答案 2 :(得分:2)

考虑到你的老板是OO怀疑论者,我建议你用Lego重建你的应用程序。我相信他会认为这是“优秀”。

答案 3 :(得分:2)

完美的架构是渐近的。你可以瞄准它,但永远不会达到它。无论什么对你的软件有好处,让你现在就能做到你需要的东西,并且有足够的弹性来满足未来的需求,对你来说是完美的。

答案 4 :(得分:2)

“优秀”的架构是一件非常主观的事情。根据项目目标,架构是否优秀。

每个项目,根据其要求,可能会有不同的理想架构。有许多内容可以用于此,以及一些几乎总是有效的基本软件架构概念(例如关注点分离),但没有一个“终极”架构适用于每个应用程序。

您的申请是做什么的? 业务和技术方面的限制是什么? 它的规模有多大? 这个应用程序的预期寿命是多少?

这些是您需要询问的一些问题,以确定特定架构是否对应用程序“最佳”。


我的建议是扭转局面。问你的老板他的项目架构的目标是什么?向他展示您当前的架构如何满足它们,或使其适应工作。

答案 5 :(得分:2)

  

我有很多不同的经历   编程领域,如GUI,Web,   RIA,网络应用。我很好   问题解决。一般我知道如何   以干净的方式组织代码。和我   我总是努力工作

这让我很怀疑,我不是你的老板。不好意思是直言不讳,但现实是你并不是那么精通所有那些非常不同的领域,从图书馆到建筑,就像你认为的那样(这会与亲切关系相提并论)。这意味着您设计的建筑也不如您想象的那么好。

可能解决方案不是实现一些不明确的卓越,而是找出并修复一些你没有注意到或选择忽视的特定错误

答案 6 :(得分:1)

良好的架构是满足业务需求的架构。

使用的一个好原则是YAGNI你不需要它。在你真正需要之前不要建造东西。

答案 7 :(得分:0)

Scalable Internet Architectures上买你的老板Schlossnagle的书。那么除了“我们的产品不够高级”之外你还有其他的话要谈。

你应该,BTW,找出你的老板认为“高级”的意思。做一些事情来提供你老板想要的更多“先进”的东西。不要做老板要求的所有事情,但要确保看起来就像你关心“高级”一样。无论这意味着什么。

答案 8 :(得分:0)

当谈到设计的“美丽”时,你永远不会就任何事情达成一致。

最好将讨论简化为事实和数据:

  • 缺陷率,平均缺陷解决时间以及检测代码质量的其他各种统计信息
  • 衡量交付功能的指标(例如代码行),以及与COCOMO等普遍接受的行业模型的比较
  • 衡量项目上市时间的指标,再次与常见模型进行比较。

如果事实说你做得好,你的老板就没有争论。如果你的老板坚持争论,你需要一个更好的老板(他可能只是试图阻止你加薪或类似的东西)。

答案 9 :(得分:0)

优秀的架构是适合问题需求的架构。如果你已经做到了,那你就做得很好。

答案 10 :(得分:0)

嗯,你说你被聘为软件经理,但你谈的是软件架构。这通常是两件不同的事情。软件管理是关于过程和规划,软件架构是关于设计。虽然相互关联的是两个不同的技能组合,可以在同一个人身上找到,但你的工作任务是否明确了这个档案?

答案 11 :(得分:0)

'优秀'架构取决于项目类型和细节,因此它是可变的。但是一个好的架构大多应该至少符合以下规则:

  • 可维护性
  • 扩展
  • 状况
  • 效能
  • 可扩展性
  • 可靠性
  • 可测
  • 可用性