由於是乙個小專案,感覺需求也簡單,再加上時間緊,如果從需求開始一步步來,時間肯定來不及,在這種情況下,專案就匆匆的開始了。為了節省時間,分層、設計等等都不去考慮了,想到哪寫到哪,完全瀑布式開發。直接結果是,完工時間一拖再拖,最後不得不決定下一版本整個推倒重來。=庡l恀鉒m?
專案失敗的原因有兩個:需求分析不到位、架構設計不合理。豏鬩倰3
需求和架構設計是相輔相成的,如果需求分析做的好,架構設計合理,那麼就可以靈活的適應變化的需求,這是理想的狀況。如果需求好了,架構有不合理的地方,專案也可以實現,只是以後的維護會有困難。架構好了,需求沒有做好,隨著需求的進一步完善,專案也會完成,這是容易實現的一種狀況。如果都沒有做好,象這個專案一樣,就只能有兩種選擇:9z覝^u啈?
1、 盡早重來,這樣雖然會推出專案的完成日期,但總的來說還是省了時間,也可以交出乙個滿意的專案。_猁#爀 裓?
2、 通過架構的修補、需求的完善,先在規定時間交出乙個不完善的版本,等下乙個版本在重新開始。(:i/?媉
難做時,也可以先動手實現乙個版本,讓客戶體驗,這樣可以防止設計上迷失方向,在設計上走錯路。3詡_籤i?
小型專案是不是還需要設計?蒻?p炙
我以前一直認為,專案小,完全可以不做任何設計,類、介面等都不用去想,分層也是不必要的,因為做設計會花時間,實現設計也會花比直接寫**(如雙擊按鈕,在事件中寫**,而不去掉用已經封裝好的實現。)花更多的時間。簡單有效的方法就是邊想邊寫,這樣可以有最快的開發速度。但通過這個專案,我認識到,小的專案,也可能存在你現在還沒有發現的陷阱,如果採用上面的開發方式,遇到陷阱時就不能靈活應對,因為架構不好。更不用說,經常要變化的需求,等需求一變,又是頭痛的時候,還是因為架構不好,最後設計越來越糟,到處都是重複的**,時間在逐漸的流逝,而專案的進度會越來越慢,你最後發現,要想讓專案完美的實現已經不可能了,時間都浪費在一些重複的勞動上,而有好的架構,這些都是可以避免的。人也會變的絕望,面對著象線團一樣的**,根本沒有了工作的激情,也沒有了動力。再加上一些小專案有時候會牽扯到幾個系統,按照這種設計,根本沒有辦法進行單元測試,整合測試又會耗費太多的時間,有時根本就不能測試。結果只有痛苦的重新開賽。gla 戍h
而有好的設計,情況就會完全不同,開始會慢一些,而隨著專案的進行,一切會逐漸的明晰,你也不會懼怕陷阱和需求的變化。看著專案在一天天的完善,心情也會開心。最好專案會成功。n!??夛w?
因此,即使是小的專案設計也是十分必要的。聶}?豞靦
什麼是好需求?eh埦?磣
需求要從客戶的角度去尋找,需求是客戶要求的抽象,而不是具體的表現,這樣做的需求才能對以後的設計產生積極的影響。而一些具體的要求可能都是易變的,這些可能是商業政策,而不是真正的需求。需求總是易變的,這就要求架構要有靈活性,靈活性不是靠提前設計實現「你認為將來會有的需求」,而是靠抽象,這樣可以在需求變化時,架構做最少的修改。從開發者角度說,需求是架構必須要實現的要求,要把抽象的需求再擴充套件到具體。這樣需求就經歷了從具體(客戶的描繪)到抽象(架構,好的需求)再到具體(實現)的乙個過程都是自己的理解,有不合理的地方請指教,剛才圖書館借了本關於需求的書,以前對需求了解太少了,上學時學的印象不深,只有碰到問題才能加深理解。鈽膤y銣zdr
第乙個因為需求失敗的專案
從我 作為乙個開發人員 的角度看,是由於我輕視了這個測試專案而導致的合作失敗。這個輕視不是說在態度上不重視,而是在具體的需求方法上,沒有將已經積累的最好的經驗付諸行動。由於看到測試專案規模很小,所以我的想法是只要多溝通幾次就可以了。我沒有能夠在發現客戶不會描述需求的情況下用正確的方法去引導客戶,從而...
mybatis快取,從乙個「靈異」事件說起
talk is cheap.show me the code.該問題涉及的主要 實現包括 listlistgoodstrack param criteria goodstrackquerycriteria criteria 2.xml定義 select 3.service定義 service tra...
從乙個看似簡單的卡片動畫說起
一天,產品經理過來找我,要我實現卡片的動畫,就是很多view疊在一起,可以上拉讓view移走,下拉讓view出現.看起來很簡單的動畫,沒有多做深入的思考,直接開工了,然後.乙個禮拜的恐怖生涯來臨了 新增每個view,並給每個view新增手勢 nsmutablearray cardviewarray ...