2009-08-27 109 views
3

我知道我的问题太不准确而无法回答,但让我给你一些背景资料。什么是优秀的软件架构?

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

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

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

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

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

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

+2

我意识到每个人都需要支付账单,但这真的是你想要坚持的工作吗?要么你的老板知道他想要什么,他告诉你可以执行它(不会问这个问题),或者他说这不好,因为他没有制作它,在这种情况下,你永远不会成功。 – olle 2009-08-27 15:44:13

+2

面向对象的怀疑C Fanboy - OOSCF诞生了一个新的缩写!我的同情心:( – 2009-08-27 15:51:08

+0

我认为这里有一个有趣的问题,但现在这个问题非常模糊,我们在讨论什么样的产品?你生产了什么样的解决方案?(或者,也许是什么样的你的老板可能是个混蛋或者他可能不是,但是很难对这个问题有太大的吸引力 – Telemachus 2009-08-27 15:51:52

回答

14

我怀疑这根本不是技术问题。我想你的经理不太了解软件架构,但可能只是通过了解热门的知识。

你的工作是将你的建筑卖给你的老板,并管理他的(或他们)的期望。如果你的老板担心你的解决方案不够性感或者没有足够的可扩展性,那么你很可能没有足够好地处理这种关系。

我认为你非常适合不为可能发生的事情而构建。你可以发疯。你无法预测一切。

+1

如果老板是C的粉丝,对OO持怀疑态度,我不认为(注意,我并没有对C和OO做出任何判断,我只是说OO现在在科技界当然很热门。) – Telemachus 2009-08-27 15:48:41

+3

我不认为OO现在很热。 OO在10多年前就很热,现在脚本编程已经很火热,函数式编程变得越来越热,托管代码变得很热,OO只是这个过程的标准(而且事实上并没有比程序编程更有效率) – cletus 2009-08-27 15:51:44

+0

@Cletus:你可能会我比我更了解这个领域,所以我应该讨论什么是热点问题。但是,老板对功能编程或脚本编程的热爱C如何呢? – Telemachus 2009-08-27 15:54:57

2

考虑到你的老板是面向对象的怀疑论者,我建议你用乐高重建你的应用程序。我相信他会认为它是“优秀的”。

2

完美的建筑是渐近的。你可以瞄准它,但从来没有达到它。无论对你的软件有什么好处,并且让你做现在需要的东西,并且足够有弹性以适应未来的需求,对你来说已经足够完美了。

+0

http://en.wikipedia.org/wiki/Asymptote – slf 2009-08-27 15:49:21

0

Scalable Internet Architectures上购买你的老板Schlossnagle的书。那么除了“我们的产品不是先进的就足够了”之外,你还有话要说。

你应该,顺便说一句,找出你的老板认为“高级”的含义。做一些事情来提供你的老板想要的更多这种“先进”的东西。不要做你的老板所要求的一切,但要确保它像看起来像你关心“先进”。无论这可能意味着什么。

2

“优秀”的建筑是一个非常主观的东西。一个架构很好或不是基于你的项目的目标。

根据不同的需求,每个项目可能会有不同的理想架构。有很多事情可以考虑到这一点,以及几乎总是有效的一些基本的软件体系结构概念(如关注点分离),但是没有一个“终极”体系结构对每个应用程序都是正确的。

你的应用程序做什么?
它对商业和技术有什么限制?
规模有多大?
这个应用程序的预期寿命是多少?

这些是您需要确定某个特定体系结构对于应用程序是否“最佳”的一些问题。


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

0

当谈论设计是多么“美丽”时,你永远不会同意任何事情。

更好减少讨论的事实和数字:

  • 缺陷率,平均缺陷时间到解决,以及其它各种统计信息来检测代码质量
  • 度量来测量递送特征(例如线的代码),以及与公认的行业模型(如COCOMO
  • )进行比较以衡量项目投放市场的时间,并再次与常见模型进行比较。

如果事实表明你的工作做得很好,你的老板就没有理由。如果你的老板坚持争论,你需要一个更好的老板(他可能只是想阻止你加薪或类似的东西)。

3

前段时间,微软发布了免费应用程序体系结构指南,以及一些口袋参考资料。我认为你和你的老板应该一起阅读。

2

我在许多不同的 编程领域经验丰富,像GUI,网络, RIA,网络应用。我是一个很好的 问题解决者。一般来说,我知道如何以一种干净的方式组织代码 。而我 总是努力工作

这使得我甚至怀疑,我不是你的老板。请原谅我的直言不讳,但现实情况是,如果您认为自己(这将与亲切无关),那么您并不是真正精通所有那些截然不同的领域,从GUI到建筑。这意味着你设计的架构也不如你想象的那么好。

可能的解决方案是不是在实现某些不明确的卓越,但识别和修复一些特定故障,你没有注意到或选择忽略

1

一个很好的架构是一个满足业务需求。

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

0

优秀的架构是适合问题需求的架构。如果你这样做了,你做得很好。

0

那么你说你被聘用为软件经理,但你谈论软件架构。这通常是2个不同的事情。软件管理是关于过程和规划,软件构架是关于设计。尽管可以在同一个人中找到两种不同的技能组合,但您的工作的任务清楚了解了个人资料?

0

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

  • 可维护性
  • 扩展
  • 可用性
  • 有效性
  • 可扩展性
  • 可靠性
  • 可测
  • 可用性
+0

通常是正确的,但并非总是如此。例如,火星探测器的软件可能不需要可扩展。 – SomeWittyUsername 2012-10-28 15:21:48

相关问题