中小型軟件項目開發(fā)_第1頁
中小型軟件項目開發(fā)_第2頁
中小型軟件項目開發(fā)_第3頁
中小型軟件項目開發(fā)_第4頁
中小型軟件項目開發(fā)_第5頁
已閱讀5頁,還剩3頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領

文檔簡介

1、中小型軟件項目開發(fā)一:編寫目的本文檔的編寫旨在探尋規(guī)范的軟件開發(fā)流程、加快軟件開發(fā)速度、提高軟件開發(fā)質(zhì)量、降低項目綜合成本。IT界有一句格言:"You can do it right; you can do it fast; you can do it cheap. Pick two." 而我們要做的就是:提供優(yōu)質(zhì)服務、項目周期短、成本低廉二:總體說明項目從用戶需求說明書的提出,到系統(tǒng)的第一個完整版本的交付使用經(jīng)歷了若干或復雜或簡單的過程,但不管項目大小如何一般需要經(jīng)歷以下幾個步驟:1 需求分析。2 撰寫需求規(guī)格說明書3 總體設計4 詳細設計5 編碼實現(xiàn)6 測試、試運行、上

2、線7 驗收8 日常維護9 (下一個版本的循環(huán)開發(fā))在以上各步驟中尤其重要的是系統(tǒng)分析和撰寫需求規(guī)格說明書。當定義好需求規(guī)格說明書后需要用戶簽字確認,以此作為項目驗收的依據(jù),在中大型項目中尤其重要。失敗的項目原因很多但以下幾點比較普遍:(1)商務運作中為了拉住“單子”對客戶的眾多紛繁復雜的要求一味的妥協(xié)讓步滿口答應。項目開發(fā)計劃、時間表等完全依照客戶意見,不以具體項目的客觀事實為依據(jù),不做認真細致嚴格的項目復雜度、項目工作量的評估。(2) 不做細致的用戶需求分析導致項目后期的需求變更較大不能按期完成項目。三:項目開發(fā)經(jīng)歷的各階段在項目開發(fā)的各階段時間比例方面,中小項目一般控制在1: 40% 設計

3、2: 40% 編碼3: 20% 總體設計/試運行31 需求分析階段研究客戶需求,從中找出需求中模糊不清的地方,反復討論確認。在不斷的確認中,包括需求的總體認知、需求邊界定義、目前技術(shù)條件下的可實現(xiàn)需求、用戶界面等。通過項目組內(nèi)討論、與客戶(直接客戶、間接客戶)討論等方式不斷清晰客戶真正的需求,從而撰寫需求規(guī)格說明書,在取的客戶認可后簽字,以此做為項目開發(fā)的第一個里程碑。在項目驗收時以此作為驗收的主要依據(jù)在系統(tǒng)分析階段與客戶的溝通方式可以通過(1)項目靜態(tài)圖、項目靜態(tài)界面DEMO(2) 系統(tǒng)用例圖(例如:rose軟件的用例圖) 等方式與客戶溝通。本階段要完成的工作有:1撰寫項目需求分析報告本報告

4、主要目的是項目分析人員提出需求的疑難不清問題,為與客戶有效、準確溝通準備必要的材料。2畫用例圖 描述系統(tǒng)各個不同用戶類型與本系統(tǒng)及其他系統(tǒng)等的交互過程。3建立項目靜態(tài)界面DEMO使得用戶在項目初期就可以看到項目上線實施后的使用界面和使用方法等4 做必要的技術(shù)預研等。32撰寫需求規(guī)格說明書需求規(guī)格說明書的撰寫主要目的是把客戶天馬行空、紛繁復雜、憑想象等的理想需求中變成在一定時間段、一定技術(shù)條件下可實現(xiàn)的需求。不然項目會很難滿足客戶的理想需求,永遠被客戶的理想需求所限制,陷入一種非常被動的狀態(tài)。33總體設計在完成項目需求規(guī)格說明書后,就進入項目總體設計的階段。在總體設計階段需要完成的文檔有:1 項

5、目總體設計-概要設計說明書、2 數(shù)據(jù)庫設計報告3 項目總體開發(fā)時間表在此階段應該建立項目的正式開發(fā)環(huán)境、項目測試環(huán)境、建立項目基本開發(fā)框架且導入項目管理配置工具中(例如:CVS、VSS等)等在項目的以上階段完成后,建議進行項目總體設計和總體開發(fā)準備情況的評審工作。在公司、集團專家組評審通過后本階段結(jié)束,這算做項目的第二個里程碑。在進行下一階段前,目前項目組可以對SCCB(軟件變更控制委員會)提交的資料有:1:需求規(guī)格說明書2:項目總體設計概要說明書3:項目界面設計說明書(及界面DEMO)4:項目數(shù)據(jù)庫設計說明書等5:項目總體開發(fā)時間表34詳細設計在項目完成總體設計和搭建完畢開發(fā)環(huán)境后,就可以進

6、行項目的詳細設計。在項目中建議詳細設計由項目編寫“后臺”程序的資深人員編寫。主要完成每個負責的業(yè)務模塊從界面到業(yè)務實現(xiàn)到數(shù)據(jù)庫連接操作的主要步驟和數(shù)據(jù)庫的實現(xiàn)SQL。最好在條件允許的情況下編寫模塊單元測試程序,在整個模塊編碼階段完成后進行程序單元測試工作。(“測試驅(qū)動”的開發(fā)理念)詳細設計目的是在不編寫代碼和少量代碼的情況下,完成項目模塊的模擬編程實現(xiàn)。在詳細設計階段可以對項目某模塊做準確的工作量統(tǒng)計,依此為依據(jù)整個項目比較準確的工作量就可以被統(tǒng)計出來。35編碼實現(xiàn)(略)36測試、試運行、上線(略)話說小型軟件項目開發(fā)的流程規(guī)范 一、 問題提出特點大家知道,“軟件危機”起源于一些大型項目的不斷

7、延遲甚至失敗。與大項目相比,小項目具有以下特點:n 項目功能相對較少 ;n 開發(fā)人員較少; n 開發(fā)周期較短。 現(xiàn)存問題小項目看起來比較簡單,比較容易成功,人們往往容易忽視小項目的管理,其實這是一種誤解。據(jù)我了解,小項目開發(fā)中容易出現(xiàn)以下問題: 1、開發(fā)之前沒有認真地進行項目可行性和工作量的估計。往往由于項目較小,便很草率地制定一個開發(fā)日程表,沒有認真地估計項目難度,結(jié)果實際完成時間與估計完成時間往往有較大差距。 2、沒有真正的設計過程 。開發(fā)人員少,不同人員的程序之間交互、接口相對少一些。開發(fā)周期短往往是幾個人從頭到尾負責一個項目,幾個人碰一下頭,討論一下最基本的數(shù)據(jù)結(jié)構(gòu)、函數(shù)接口便各自為政

8、了,沒有一份較正式的文檔來規(guī)范各自職責和項目細節(jié)。 這時帶來的危害有 :1)。 是有人可能會對所討論的接口、結(jié)構(gòu)理解有偏差,可能會造成以后的返工。 2)。 潛在的危險是由于討論時忽略了某些情況,等大家都按時完成分工任務后,才發(fā)現(xiàn)各個模塊組合起來卻無法形成一個完整的系統(tǒng)。其根源在于沒有一個負責協(xié)調(diào)的人員不斷監(jiān)控整個開發(fā)過程。 3)。 一旦有人中途退出開發(fā)隊伍,其他人加入時,難以理解以前別人做好的代碼,又要從頭做起。另外,沒有文檔的程序,日后維護和版本升級都比較困難。這個問題在*系統(tǒng)中尤其突出,有如下現(xiàn)象:一). 需求分析做得不好,沒有最終的需求文檔,很多需求到最后還要重新加進去,資料零散不集中,

9、甚至有些資料早已丟失。二). 沒有系統(tǒng)完整的設計文檔。系統(tǒng)中數(shù)據(jù)庫有三個,沒有完整的聯(lián)系起來。很多數(shù)據(jù)日冗余,各個系統(tǒng)的接口不友好,有些還欠缺,使得系統(tǒng)有些地方都連接不起來。 三). 由于人員的流動,文檔資料不全,給后面的修改帶來極大的困難。3、不經(jīng)過單元測試而直接進入系統(tǒng)測試 。造成這一現(xiàn)象的原因是每個模塊相對比較簡單,但是為了測試一個模塊需要建立一些測試環(huán)境。例如,為了測試一個函數(shù)是否正確,應該用一些測試數(shù)據(jù)去調(diào)用該函數(shù),需要編寫一些測試數(shù)據(jù)。但很多開發(fā)人員嫌麻煩,覺得反正其他模塊也很快出來了,直接用真正的數(shù)據(jù)來運行幾次就行了。 針對以上問題,結(jié)合日神系統(tǒng)及我之前的開發(fā)經(jīng)驗,我在開發(fā)小型系

10、統(tǒng)時應該注意如下幾個方面,嚴格把關(guān),應該可以順利完成項目。二、 解決之道1開發(fā)原則1)。團結(jié)合作,整體至上。2)。注意項目進度和項目質(zhì)量,記住我們是提供一個符合合同要求且限時的解決方案給客戶,不是完美產(chǎn)品(公司現(xiàn)狀)。3)。麻雀雖小,五臟俱全。即使是小型軟件的開發(fā),仍然應該遵循軟件開發(fā)的一般規(guī)律,必須的步驟不能省略。但是小軟件有它自身的一些特點,實行起來可以相對靈活些。4)。盡量重用現(xiàn)有的資源。2整個軟件實施周期1).需求獲取在進入正式開發(fā)之前,必須先從用戶處獲取準確的需求。在這上面花費相當時間是很必要的。軟件項目可以大致分為專用軟件和通用軟件兩大類。l 對于專用軟件,例如給某客戶開發(fā)一套該公

11、司專用的系統(tǒng),一般用戶對于軟件要完成哪些功能已經(jīng)有了一個比較清楚的輪廓,而且往往在開發(fā)合同中已經(jīng)大致地規(guī)定了。但是,開發(fā)合同上規(guī)定的只是一個大概的框架,在進入開發(fā)之前必須與用戶進行比較具體的交流和討論,了解清楚用戶心目中的產(chǎn)品究竟是什么樣子。這個步驟如果沒有好好做,往往到了開發(fā)工作的后期才發(fā)現(xiàn)開發(fā)人員的理解和用戶的要求有一些誤解,那么必然造成時間上的浪費。 如果客戶是想升級現(xiàn)有系統(tǒng),那么現(xiàn)在你要做的是理解之前系統(tǒng)實現(xiàn)了什么,客戶新增的需求是否合理,舊系統(tǒng)的各個功能跟新需求怎么聯(lián)系起來等問題。l 對于通用軟件,在開發(fā)之前應該做一定的市場調(diào)查工作,一方面是從經(jīng)濟效益考慮,調(diào)查產(chǎn)品的潛在市場有多大,

12、另一方面是從技術(shù)的角度,必須了解清楚潛在用戶對軟件的各種技術(shù)上的要求,例如:用戶現(xiàn)有硬件配置如何,軟件配置如何,使用什么網(wǎng)絡,使用什么數(shù)據(jù)庫等等,根據(jù)調(diào)查的統(tǒng)計結(jié)果決定即將開發(fā)的軟件的一些技術(shù)指標。對通用的軟件,盡量使用軟件復用,不過這是要評估修改的規(guī)模。為了比較好地與用戶進行交流,使用一些工具是很有好處的。 為了討論用戶界面,可以用vc#.net,dream waver,frontpage等做一個原型,根據(jù)原型有針對性地與用戶討論需求。(原型開發(fā)不僅僅可以用于準確獲取用戶的需求,開發(fā)出來的原型本身可以作為下一步開發(fā)的基礎,增量式地完成開發(fā))為了討論軟件運行的流程,可以采用Visio的Use

13、Case圖。注意:要讓所以需求都界面化,并提交客戶確認,會簽保存文檔 2).需求分析在了解用戶的需求之后,將需求用一種模型來表示,就是需求分析,目前比較流行的分析方法是面向?qū)ο蟮姆椒?,通過分析用戶需求,用類、類之間的各種關(guān)系來表示整個系統(tǒng)。這部分涉及到具體的方法,在此不詳細討論,但是原則上是提取類->類之間關(guān)系,可能需要不斷修改而形成一份分析文檔。這邊強調(diào)幾個問題。一)是要分清問題域與系統(tǒng)責任。系統(tǒng)責任是指所要開發(fā)的軟件應該完成的功能,而問題域是包含所有相關(guān)的部分。例如你要開發(fā)一個程控機計費程序,程控機已經(jīng)是現(xiàn)成,輸出的數(shù)據(jù)格式也已經(jīng)是固定的,你的程序僅僅需要從程控機中讀取相應的信息,那

14、么,程控機在你的系統(tǒng)里只是一個外部的東西,把它作為一個類也許就是不必要的,僅僅需要一個類來完成讀數(shù)據(jù)的操作。又如,你需要在一個已經(jīng)存在的數(shù)據(jù)庫上開發(fā)一些應用,數(shù)據(jù)庫的格式已經(jīng)固定,并且已經(jīng)有一個后臺程序在運行,你需要開發(fā)一個新的前臺程序,這時,服務器程序?qū)δ銇碚f就是一個外部的東西。但是,象這種外部的內(nèi)容必須在分析文檔中有一些說明,作為系統(tǒng)的外在約束。并且要組織要接口。二)是需求獲取與需求分析的關(guān)系。用什么方法來完成需求的獲取,在很大程度上影響了需求分析的做法。例如當初采用Use Case來表示用戶需求,那么從各種序列圖中選出相互交互的各個實體,就是一個個類。三)。是分析與設計過程的銜接。分析過

15、程的內(nèi)容是用類的結(jié)構(gòu)來表示目標系統(tǒng),并不設計具體實現(xiàn),如采用什么編程 語言,在什么操作系統(tǒng)平臺上運行等等。這些具體實現(xiàn)是在設計階段來完成的。面向?qū)ο蠓椒ǖ膬?yōu)點是分析、設計、編碼過程表示法統(tǒng)一,能比較好的銜接。但是,是把分析和設 計階段分開,采用瀑布式開發(fā),還是采用其他方式,要看具體的情況。對于需求潛在變化不大的項目,可以采用瀑布模型,有一個很明顯的設計階段,這樣做的好處是有一份比較完整的分析文檔,這樣以后如果需要采用不同的編程語言、或者采 用其他的平臺時,便可以以這份分析文檔作為開發(fā)的基礎。對于需求變化頻繁的項目,可能采用少量分析;少量設計少量編碼測試的方式更合適,而且隨時可能要返回到前面某個

16、一階段去進行修改。但是這意味著可能沒有一份完整的分析文檔。不過當項目驗收時,要把需求重新整理一下,確認存檔?,F(xiàn)在很多CASE工具并不區(qū)分分析和設計的階段。但是,這并不意味著開發(fā)就可以對分析和設計不加區(qū)分,CASE工具如同一支筆,如何用好還得由人。3).設計過程設計階段的工作包括:對分析模型必要的修改。可能需要對某些類結(jié)構(gòu)進行一些修改,這些修改的原因可能是編程環(huán)境的要求,或者為了重用以前的某些工作。定義界面部分、數(shù)據(jù)訪問(數(shù)據(jù)庫)部分。由于目前很多編程語言都可以可視化地設計界面,所以界面部分工作往往留到了編碼階段來完成。于是設計階段的工作量并不大。設計后要把所有的文檔提交客戶確認后才進行下面的編

17、碼4).編碼進入編碼工作之后,可能會發(fā)現(xiàn)前面分析或設計階段的某些錯誤,這時應返回到前面的階段進行必要的修改。5).測試如前所述,即使是小項目,也應該嚴格地進行測試。由于人員少,如果沒有獨立的測試人員的話,可以進行交叉測試,既程序員之間交互測試對方的程序。千萬別自己測試自己的程序,但是程序在開發(fā)提交前,程序員是要自己認真測試所做單元的。3、人員的安排比較小的項目,往往是幾個人來完成,這幾個人基本上從頭到尾參加開發(fā)。在這幾個人中,有一位項目負責人,負責分析、設計和協(xié)調(diào)的工作。由于項目小,項目負責人也要參加編程,那么這人必須把時間合理運用,經(jīng)驗告訴我?guī)讞l原則:1)協(xié)調(diào)幾個人的工作比自己完成一段編碼更

18、重要.由于協(xié)調(diào)上出了漏洞,可能導致很大的問題,所以項目負責人必須隨時監(jiān)控各開發(fā)人員的工作,包括內(nèi)容是否與要求發(fā)生偏差,進度是否滯后等等。 只有在完成這些工作之后,項目負責人剩下的時間才能用于編程。 2)給每個開發(fā)人員明確的任務書.不管是用面向?qū)ο蠡蛘咂渌椒ㄩ_發(fā),分析、設計模型只是從功能的角度來描述系統(tǒng)。但是,具體開發(fā)時每個開發(fā)人員必須非常明確自己的任務和完成時間(最好先給開發(fā)人員預估時間,我不喜歡項目經(jīng)理強力下放),在執(zhí)行過程中項目負責人要及時了解進度,這些任務應該盡量采用明確的文檔來表示。3)讓大家都大致熟悉設計模型.讓每個開發(fā)人員都清楚自己所做的工作在整個系統(tǒng)中處于什么地位,有時侯可能會

19、發(fā)現(xiàn)設計模型中的漏洞,避免了各人的代碼編寫完畢之后又要修改的后果。4)整個系統(tǒng)再怎么小,都必須安排兩個人以上負責。在獲取客戶需求時最好有兩個人在場:項目經(jīng)理和一個開發(fā)人員,開發(fā)人員一般做筆錄和一些遺漏的提示。這樣,不管以后人員怎樣變動,整個項目應該就不會被人“遺忘”。 4項目雙方的配合1。提供百分百的服務 1)。滿足客戶需求 客戶需求肯定是永無止境的,所以要按合同的需求來做。 滿足客戶一些方便性的需求,注意必須是可以解決的而且要及時給以解決。 2)。提供和諧的溝通服務l 提供全方位的溝通環(huán)境(方式)提供全天的在線服務(就是讓客戶在工作時間內(nèi)都能跟你-項目經(jīng)理聊上幾句,當然這是一定要是業(yè)務范圍之

20、內(nèi))。l 提供多種方式的服務(可以msn,qq,電話,郵件,直接上門等)。l 用對待老板的態(tài)度來對待你的客戶。 3)。提供更有建設性的專業(yè)服務。l 很多客戶只知道他們的生產(chǎn)流程,他們的工作方式,所以我們要提供專業(yè)性的建議,溝通利害關(guān)系,注意此時態(tài)度要溫和。如果客戶執(zhí)意要執(zhí)行,可以給他們一個反例,然后夸大后果,注意要專業(yè)性和合理性,之后我認為客戶就會馴服些了。l 多提供一些能使需求更快捷的方案。2。以結(jié)果為向?qū)?)。項目只有驗收才能收款,所以要有結(jié)果,對于項目開發(fā)人員來說,任何一件事都是要朝著項目驗收的方向進行。2)。我們是提供有限額限時的項目解決服務,因此要及時把項目收攏,分階段。客戶的需求不

21、一定全都要做的。不屬于該階段的需求應該及時友好提示制止客戶的需求,任何新的額外的必要的需求都要提交給上級和業(yè)務經(jīng)理評估是否要做。3與客戶溝通的心得 應該來說,一般的程序員跟客戶的接觸是比較少,但是由于是小項目,人員少,所以在這種情況下一般項目組里的人都有機會跟客戶進行接觸(只不過是直接或者是間接),一般在溝通是注意如下幾點: 1請用開朗的微笑給你的客戶服務。2明白客戶是公司生存的根本,所以要用友好的,積極,熱誠的態(tài)度來跟他們溝通, 記住要把對待你的老板的態(tài)度來對待你的客戶,得罪客戶意味著你跟你的老板過不 起。3 記住要把客戶的意見/需求及時記下來,盡量當面記下,不清楚的及時提問。4 客戶的意見/需求是可以修改的,這時需要用商量和建議性的態(tài)度,還有加上合理專業(yè)性。千萬別無理強制。5 及時將客戶一切動向跟項目總監(jiān)和相關(guān)的業(yè)務經(jīng)理反映,積極提出意見供參考。6 當與客戶溝通出現(xiàn)

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論