我知道我的问题太难以回答,但让我给你一些背景信息。
去年我作为一名软件经理找到了一份新工作,我认为该工作做得很好。我在许多不同的编程领域经验丰富,如GUI,Web,RIA,网络应用程序。我是一个很好的问题解决者。一般来说,我知道如何以干净的方式组织代码。我总是努力工作。
但是差不多一年之后,我不得不承认我的老板对我的工作非常不满。最重要的原因是他认为我的产品软件解决方案不够先进。 我想我已经精心分解了系统,我为每个组件选择了最流行的平台,大部分代码都很健壮,干净。
但是我的老板不这么认为。他真的觉得我们可以做得更好。他想要的不仅仅是好的,而是优秀的。具有几乎最终可扩展性的东西,看起来非常容易扩展,有些东西有一些很棒的概念和想法。
这是我从未见过的挑战。我不知道如何向我的老板展示当前系统是否足够好。我告诉他“我们使用xxx,yyy”,但他不知道它们是什么。我向他展示了UML来解释我们已经做了什么,但他对C非常有趣并且对OO和UML持怀疑态度。
那么你有没有见过一些你觉得很棒,很棒且很容易扩展的软件架构师?我想我真的需要看一些优秀的软件架构意味着什么的例子。
说实话,我真的怀疑是否值得尝试建立一个架构来准备一些尚不存在的要求,但我必须让我的老板很高兴继续我的工作。
答案 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)
当谈到设计的“美丽”时,你永远不会就任何事情达成一致。
最好将讨论简化为事实和数据:
如果事实说你做得好,你的老板就没有争论。如果你的老板坚持争论,你需要一个更好的老板(他可能只是试图阻止你加薪或类似的东西)。
答案 9 :(得分:0)
优秀的架构是适合问题需求的架构。如果你已经做到了,那你就做得很好。
答案 10 :(得分:0)
嗯,你说你被聘为软件经理,但你谈的是软件架构。这通常是两件不同的事情。软件管理是关于过程和规划,软件架构是关于设计。虽然相互关联的是两个不同的技能组合,可以在同一个人身上找到,但你的工作任务是否明确了这个档案?
答案 11 :(得分:0)
'优秀'架构取决于项目类型和细节,因此它是可变的。但是一个好的架构大多应该至少符合以下规则: