2009-08-27 155 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

相關問題