2009-06-13 33 views
3

假設您有一個特定的項目,它可以分爲多個部分,並且您不完全確定將出現的所有困難。 時間是至關重要的。如何使用軟件產品和自己的代碼組裝項目

  • 如何決定零件是否應該使用軟件產品或您自己的代碼? (考慮到一些工具很棒,但需要花費很多時間學習)
  • 如何選擇合適的軟件產品?
  • 選擇合適產品的這個階段(如果有)需要多少時間(以百分比表示),以及評估單個產品需要多少時間?
  • 有沒有回頭路,改變主意後,努力在產品中,發現它不適合?

我很想聽聽有關這些的任何經驗法則。

+2

有人建議關閉,是否有原因? – 2009-06-13 21:10:18

+0

不確定我自己。如何構建和決定使用或創建哪些編程工具對於任何軟件的體系結構,設計,方法和實現都至關重要。編程之前的思考,理解和規劃比編程本身更重要......除了牛仔編碼器之外。 ;) – 2009-06-13 21:15:03

+0

得到了一些很好的答案,謝謝大家誰回答,對不起,我不能標記多個答案接受:)。 – 2009-06-22 18:24:58

回答

1

如同在任何技術中一樣,困難在於基於非常大的可能的解決方案空間來構建好的解決方案。開發人員有很多方法可以解決這個問題。

我通常會花一些時間來理解問題,並儘可能簡潔明瞭地表述,最好是書面形式。問題描述應該完全從任何可能的解決方案中抽象出來。接下來,我通常會列出需要應用於解決方案的可用約束(時間,預算,法律,政治,性能,可用性,團隊內的技能可用性等)。

然後,理論認爲,你需要在市場上尋找解決問題並同時滿足約束條件的東西。在實踐中,這個過程並不是那麼直截了當的:你試圖找出可能有用的市場類別,然後研究它們,看看有什麼可用的,並儘可能地儘量縮小約束和能力之間的差距,通常是回顧並重新討論約束條件。

一些通用的技巧:

  1. 在研究過程中不斷地來回到原來的問題。

  2. 總有不止一種解決方案,在深入之前嘗試擴展搜索空間的寬度(集中解決問題的方法非常不同)。

  3. 在做出是否進一步調查的決定之前,請先清楚一些值得研究的選項和值得花費的時間。

  4. 很少找到最佳解決方案,特別是當技術格局變化非常迅速時。尋找一個足夠好的解決方案:「The Paradox of Choice - Why More is Less」。

  5. 很少有值得turning to users for help(除非他們是軟件專家)在幾個選項之間進行選擇。如果你有很多選擇都看起來同樣有吸引力,這意味着你需要回頭去更好地理解原來的問題,那麼很可能你錯過了一兩個要求。

  6. 關於using third-party components的一些進一步註釋(指GUI組件,但也易於應用於其他軟件領域)。

  7. 甚至更​​多有關scoping, composing and researching項目的筆記。

+0

感謝您的回答和鏈接。 – 2009-06-16 21:12:20

3

改變你的決定就像改變你房子的藍圖,而它正在建造。

這完全取決於你花在時間和金錢上的那一點。

一些注意事項:

0)瞭解在開始之前明確簡單的形式問題。知道什麼對其成功至關重要,然後使用該列表來查看是否有任何軟件,語言或工具可以幫助它,並且花費多少,以及成本是否超過了收益。

1)使用電報的時間表。如果你只有1天或1周而沒有更多的工作,就按照你要建立的順序構建它。當您必須以100%的質量完成50%的功能時,多少無關緊要。關注價值,價值,價值。閱讀37 Signal這本書獲得更多信息。

2)不要重新發明輪子。它似乎從頭開始構建起來總是比較容易。除非你只是做了一小部分的實現,並且它真的很簡單,這意味着你可以避免抽象,直到你忘記了自己正在構建的東西爲止。如果你可以更快,更好,更便宜地在相同的時間內完成它,那就做吧。

3)瞭解您的工具的功能,以及任何工具提供解決方案所需的好處。您應該熟悉或至少知道您可能會或可能不會集成的許多工具。

4)選擇一種用來解決很多問題的語言。機會是你會發現許多偉大的圖書館和工具來建立你的軟件,將節省您的時間。如果你需要一些能夠交付,可以運行的東西,並且可以依靠別人的聰明才智,可以使用已經建立的東西,或者需要時可以輕鬆訪問.NET或Java的語言。

+0

感謝您的回答,關於Crammer日程安排的好消息,我一定會詳細瞭解它。 – 2009-06-22 18:29:47

1
  • 你如何決定一個部分是否應該使用軟件產品或自己的代碼? (考慮到有些工具很棒,但需要花費很多時間學習)

問你自己兩個問題。
1)它是一個成熟的產品。如果是,那麼
2)需要多長時間才能創建它自己提供的功能。如果該值乘以小時費率大於產品成本,則使用該產品。

  • 如何選擇正確的軟件產品?

請諮詢您的其他開發人員的網絡。他們是否使用過它,是否遇到問題?諮詢interweb。使用該產品創建原型。它工作正常嗎?任何重大錯誤?

  • 選擇合適產品的這個階段(如果有的話)需要多少時間(以百分比爲單位)以及評估單個產品需要多少時間?

這取決於項目的規模以及產品對成功的關鍵性。大多數情況下,您將能夠在很短的時間內獲得產品的高級視圖。

在你說,沒有 - 沒有準備好黃金時間之前,它可能只用了幾分鐘。如果過去那樣,一兩天的實驗可能會告訴你它通過了你的項目。

如果它與許多開發商一個巨大的工程,那麼你可能要花費更多的時間做與它的原型應用,以確保它是值得投資的所有時間英寸

  • 有沒有辦法回,在努力投入產品之後,改變主意並發現它不適合?

如果您發現它沒有解決問題,回去沒有任何問題。事實上,你可能不得不這樣做。理想情況下,你會很早就發現這一點。不是在第11個小時。再次,這是原型設計的目的。

+0

謝謝,請記住這些。 – 2009-06-22 18:25:43

2

對於你認識到作爲一個軟件組件/包軟件的每一部分:

  1. 你如何決定一個部分是否應該使用軟件產品或自己的代碼? (考慮,有些工具是真棒,但需要大量的時間去學習)

    • 問問自己,你正在考慮的組件是否是你的產品的主要核心業務的一部分。

      • 如果不是,那麼通常使用現有的解決方案更好,而不是發送太多的時間。

      • 如果是,那麼確保沒有現有的產品比您計劃的更好。 - 它有,考慮購買許可證,而不是開發你的產品。

    • 在線搜索類似的組件(商業,開源,甚至文章/演示源代碼)。

      • 它們中的任何一個都可以實現組件中的所有需求?
      • 他們需要多少費用,開發和維護是否會花費更多成本?
      • 什麼是許可條件? - 它們適合你的產品嗎?
      • 如果組件包含一個用戶界面,它是否容易看和易於使用?

      • 如果您對上述所有問題回答「是」,則不要親自開發組件。

      • 如果不是:

      • 是組件開源或發表的一篇文章/演示代碼? - 如果是這樣,它很健壯,你可以讓代碼改進它,或者用它作爲例子來幫助你編寫更適合你的需求的代碼? - 如果這樣編寫自己的代碼,請使用代碼作爲您自己的組件的一部分,即而非從頭開發

      • 如果您對上述問題的回答是否定的,那麼您將不得不開發自己的(或者您正在尋找錯誤的地方)。

  2. 你如何選擇合適的軟件產品?

    • 見答案1.
  3. 多少時間(以百分比表示)應此階段選擇合適的產品,如果有的話,拿的,多少時間來評估的單品?

    • 清空整整一天,搜索現有組件,瞭解它們(功能,價格,評論)並下載並安裝最多5個組件。
    • 清除另一天評估2-3個產品,比較演示/示例,看看代碼,編寫2個使用每個示例(相同的示例不同的產品)的小例子。
    • 如果您選擇3個以上,請清理另一天並測試其他日期。
  4. 有沒有退路,是不是改變了主意,在努力在產品後發現它不合適?

    • 始終設計您的軟件,以便每個組件都可以更換。

      • 這保證總會有「回頭路」。即使你實現自己的東西確保鬆耦合
    • - (使用接口&適配器的設計模式,分給許多組件,連接所有組件鬆散地(使用事件,裝訂,如等)。還有一個辦法回來 - 有時你可能使用了錯誤的技術/設計,並與你開發/購買更換新的部件

    • 拇指的其他規則:

    考慮其中。在考慮每個部件之前使用應用範圍廣泛的技術。

    • 寫作大會將最長的,在C較少,C++甚至更少,在更現代的語言,如C#,Java和德爾福甚至更少。

    • 哪些有更多與您相關的自我組件?你的團隊有什麼經驗?

    • 如果你使用的是.NET(C#),那麼WPF可以幫助你降低GUI和業務邏輯之間的耦合性,並使GUI看起來更好看,但是需要花費時間來學習使用它(非常推薦5天的最低課程)。

1

目前已經在這裏了一些很好的答案,所以我就不再重複了,但是有一點,你一定要考慮,雖然我還以爲其明顯的我還沒有看到它提到在此處:
您可用於執行解決方案的人員,他們的核心能力以及他們的總體勝任能力。
你必須實現這個目標(假設它是一個團隊,而不僅僅是你自己 - 但即使它只是你自己也是相關的......)會對結果產生巨大的影響。如果你沒有經驗豐富的程序員來幫助你開發它,你最好找一些OTS產品來爲你做這項工作......或者,即使你有程序員不可能成功,你仍然可能希望找到一個整體項目風險較低的解決方案。

相關問題