假設您有一個特定的項目,它可以分爲多個部分,並且您不完全確定將出現的所有困難。 時間是至關重要的。如何使用軟件產品和自己的代碼組裝項目
- 如何決定零件是否應該使用軟件產品或您自己的代碼? (考慮到一些工具很棒,但需要花費很多時間學習)
- 如何選擇合適的軟件產品?
- 選擇合適產品的這個階段(如果有)需要多少時間(以百分比表示),以及評估單個產品需要多少時間?
- 有沒有回頭路,改變主意後,努力在產品中,發現它不適合?
我很想聽聽有關這些的任何經驗法則。
假設您有一個特定的項目,它可以分爲多個部分,並且您不完全確定將出現的所有困難。 時間是至關重要的。如何使用軟件產品和自己的代碼組裝項目
我很想聽聽有關這些的任何經驗法則。
如同在任何技術中一樣,困難在於基於非常大的可能的解決方案空間來構建好的解決方案。開發人員有很多方法可以解決這個問題。
我通常會花一些時間來理解問題,並儘可能簡潔明瞭地表述,最好是書面形式。問題描述應該完全從任何可能的解決方案中抽象出來。接下來,我通常會列出需要應用於解決方案的可用約束(時間,預算,法律,政治,性能,可用性,團隊內的技能可用性等)。
然後,理論認爲,你需要在市場上尋找解決問題並同時滿足約束條件的東西。在實踐中,這個過程並不是那麼直截了當的:你試圖找出可能有用的市場類別,然後研究它們,看看有什麼可用的,並儘可能地儘量縮小約束和能力之間的差距,通常是回顧並重新討論約束條件。
一些通用的技巧:
在研究過程中不斷地來回到原來的問題。
總有不止一種解決方案,在深入之前嘗試擴展搜索空間的寬度(集中解決問題的方法非常不同)。
在做出是否進一步調查的決定之前,請先清楚一些值得研究的選項和值得花費的時間。
很少找到最佳解決方案,特別是當技術格局變化非常迅速時。尋找一個足夠好的解決方案:「The Paradox of Choice - Why More is Less」。
很少有值得turning to users for help(除非他們是軟件專家)在幾個選項之間進行選擇。如果你有很多選擇都看起來同樣有吸引力,這意味着你需要回頭去更好地理解原來的問題,那麼很可能你錯過了一兩個要求。
關於using third-party components的一些進一步註釋(指GUI組件,但也易於應用於其他軟件領域)。
甚至更多有關scoping, composing and researching項目的筆記。
感謝您的回答和鏈接。 – 2009-06-16 21:12:20
改變你的決定就像改變你房子的藍圖,而它正在建造。
這完全取決於你花在時間和金錢上的那一點。
一些注意事項:
0)瞭解在開始之前明確簡單的形式問題。知道什麼對其成功至關重要,然後使用該列表來查看是否有任何軟件,語言或工具可以幫助它,並且花費多少,以及成本是否超過了收益。
1)使用電報的時間表。如果你只有1天或1周而沒有更多的工作,就按照你要建立的順序構建它。當您必須以100%的質量完成50%的功能時,多少無關緊要。關注價值,價值,價值。閱讀37 Signal這本書獲得更多信息。
2)不要重新發明輪子。它似乎從頭開始構建起來總是比較容易。除非你只是做了一小部分的實現,並且它真的很簡單,這意味着你可以避免抽象,直到你忘記了自己正在構建的東西爲止。如果你可以更快,更好,更便宜地在相同的時間內完成它,那就做吧。
3)瞭解您的工具的功能,以及任何工具提供解決方案所需的好處。您應該熟悉或至少知道您可能會或可能不會集成的許多工具。
4)選擇一種用來解決很多問題的語言。機會是你會發現許多偉大的圖書館和工具來建立你的軟件,將節省您的時間。如果你需要一些能夠交付,可以運行的東西,並且可以依靠別人的聰明才智,可以使用已經建立的東西,或者需要時可以輕鬆訪問.NET或Java的語言。
感謝您的回答,關於Crammer日程安排的好消息,我一定會詳細瞭解它。 – 2009-06-22 18:29:47
問你自己兩個問題。
1)它是一個成熟的產品。如果是,那麼
2)需要多長時間才能創建它自己提供的功能。如果該值乘以小時費率大於產品成本,則使用該產品。
請諮詢您的其他開發人員的網絡。他們是否使用過它,是否遇到問題?諮詢interweb。使用該產品創建原型。它工作正常嗎?任何重大錯誤?
這取決於項目的規模以及產品對成功的關鍵性。大多數情況下,您將能夠在很短的時間內獲得產品的高級視圖。
在你說,沒有 - 沒有準備好黃金時間之前,它可能只用了幾分鐘。如果過去那樣,一兩天的實驗可能會告訴你它通過了你的項目。
如果它與許多開發商一個巨大的工程,那麼你可能要花費更多的時間做與它的原型應用,以確保它是值得投資的所有時間英寸
如果您發現它沒有解決問題,回去沒有任何問題。事實上,你可能不得不這樣做。理想情況下,你會很早就發現這一點。不是在第11個小時。再次,這是原型設計的目的。
謝謝,請記住這些。 – 2009-06-22 18:25:43
對於你認識到作爲一個軟件組件/包軟件的每一部分:
你如何決定一個部分是否應該使用軟件產品或自己的代碼? (考慮,有些工具是真棒,但需要大量的時間去學習)
問問自己,你正在考慮的組件是否是你的產品的主要核心業務的一部分。
如果不是,那麼通常使用現有的解決方案更好,而不是發送太多的時間。
如果是,那麼確保沒有現有的產品比您計劃的更好。 - 它有,考慮購買許可證,而不是開發你的產品。
在線搜索類似的組件(商業,開源,甚至文章/演示源代碼)。
如果組件包含一個用戶界面,它是否容易看和易於使用?
如果您對上述所有問題回答「是」,則不要親自開發組件。
如果不是:
是組件開源或發表的一篇文章/演示代碼? - 如果是這樣,它很健壯,你可以讓代碼改進它,或者用它作爲例子來幫助你編寫更適合你的需求的代碼? - 如果這樣編寫自己的代碼,請使用代碼作爲您自己的組件的一部分,即而非從頭開發。
如果您對上述問題的回答是否定的,那麼您將不得不開發自己的(或者您正在尋找錯誤的地方)。
你如何選擇合適的軟件產品?
多少時間(以百分比表示)應此階段選擇合適的產品,如果有的話,拿的,多少時間來評估的單品?
有沒有退路,是不是改變了主意,在努力在產品後發現它不合適?
始終設計您的軟件,以便每個組件都可以更換。
- (使用接口&適配器的設計模式,分給許多組件,連接所有組件鬆散地(使用事件,裝訂,如等)。還有一個辦法回來 - 有時你可能使用了錯誤的技術/設計,並與你開發/購買更換新的部件
拇指的其他規則:
考慮其中。在考慮每個部件之前使用應用範圍廣泛的技術。
寫作大會將最長的,在C較少,C++甚至更少,在更現代的語言,如C#,Java和德爾福甚至更少。
哪些有更多與您相關的自我組件?你的團隊有什麼經驗?
如果你使用的是.NET(C#),那麼WPF可以幫助你降低GUI和業務邏輯之間的耦合性,並使GUI看起來更好看,但是需要花費時間來學習使用它(非常推薦5天的最低課程)。
目前已經在這裏了一些很好的答案,所以我就不再重複了,但是有一點,你一定要考慮,雖然我還以爲其明顯的我還沒有看到它提到在此處:
您可用於執行解決方案的人員,他們的核心能力以及他們的總體勝任能力。
你必須實現這個目標(假設它是一個團隊,而不僅僅是你自己 - 但即使它只是你自己也是相關的......)會對結果產生巨大的影響。如果你沒有經驗豐富的程序員來幫助你開發它,你最好找一些OTS產品來爲你做這項工作......或者,即使你有程序員不可能成功,你仍然可能希望找到一個整體項目風險較低的解決方案。
有人建議關閉,是否有原因? – 2009-06-13 21:10:18
不確定我自己。如何構建和決定使用或創建哪些編程工具對於任何軟件的體系結構,設計,方法和實現都至關重要。編程之前的思考,理解和規劃比編程本身更重要......除了牛仔編碼器之外。 ;) – 2009-06-13 21:15:03
得到了一些很好的答案,謝謝大家誰回答,對不起,我不能標記多個答案接受:)。 – 2009-06-22 18:24:58