常用的開發(fā)方法有:結(jié)構(gòu)化方法、原型法、面向?qū)ο蠓椒ā?/div>
結(jié)構(gòu)化方法:結(jié)構(gòu)化方法是應(yīng)用最為廣泛的一種開發(fā)方法。
按照信息系統(tǒng)生命周期,應(yīng)用結(jié)構(gòu)化系統(tǒng)開發(fā)方法,把整個(gè)系統(tǒng)的開發(fā)過程分為若干階段,然后一步一步她依次進(jìn)行,前一階段是后一階段的工作依據(jù);每個(gè)階段又劃分詳細(xì)的工作步驟,順序作業(yè)。每個(gè)階段和主要步驟都有明確詳盡的文檔編制要求,各個(gè)階段和各個(gè)步驟的向下轉(zhuǎn)移都是通過建立各自的軟件文檔和對關(guān)鍵階段、步驟進(jìn)行審核和控制實(shí)現(xiàn)的。它是由結(jié)構(gòu)化分析、結(jié)構(gòu)化設(shè)計(jì)和結(jié)構(gòu)化程序設(shè)計(jì)三部分有機(jī)組合而成的。它的基本思想:把一個(gè)復(fù)雜問題的求解過程分階段進(jìn)行,而且這種分解是自頂向下,逐層分解,使得每個(gè)階段處理的問題都控制在人們?nèi)菀桌斫夂吞幚淼姆秶鷥?nèi)。
以數(shù)據(jù)流圖,數(shù)據(jù)字典,結(jié)構(gòu)化語言,判定表,判定樹等圖形表達(dá)為主要手段,強(qiáng)調(diào)開發(fā)方法的結(jié)構(gòu)合理性和系統(tǒng)的結(jié)構(gòu)合理性的軟件分析方法。
結(jié)構(gòu)化方法方法具有如下特點(diǎn)。
(l)遵循用戶至上原則。
(2)嚴(yán)格區(qū)分工作階段,每個(gè)階段有明確的任務(wù)和取得的成果。
?。?)強(qiáng)調(diào)系統(tǒng)開發(fā)過程的整體性和全局性。
?。?)系統(tǒng)開發(fā)過程工程化,文檔資料標(biāo)準(zhǔn)化。
該方法的優(yōu)點(diǎn)是:理論基礎(chǔ)嚴(yán)密,它的指導(dǎo)思想是用戶需求在系統(tǒng)建立之前就能被充分了解和理解。由此可見,結(jié)構(gòu)化方法注重開發(fā)過程的整體性和全局性。
該方法的缺點(diǎn)是:開發(fā)周期長;文檔、設(shè)計(jì)說明繁瑣,工作效率低;要求在開發(fā)之初全面認(rèn)識系統(tǒng)的信息需求,充分預(yù)料各種可能發(fā)生的變化,但這并不十分現(xiàn)實(shí);若用戶參與系統(tǒng)開發(fā)的積極性沒有充分調(diào)動,造成系統(tǒng)交接過程不平穩(wěn),系統(tǒng)運(yùn)行與維護(hù)管理難度加大。
原型法:原型法的基本思想與結(jié)構(gòu)化方法不同,原型法認(rèn)為在很難一下子全面準(zhǔn)確地提出用戶需求的情況下,首先不要求一定要對系統(tǒng)做全面、詳細(xì)的調(diào)查、分析,而是本著開發(fā)人員對用戶需求的初步理解,先快速開發(fā)一個(gè)原型系統(tǒng),然后通過反復(fù)修改來實(shí)現(xiàn)用戶的最終系統(tǒng)需求。
是在投入大量的人力,物力之前,在限定的時(shí)間內(nèi),用最經(jīng)濟(jì)的方法開發(fā)出一個(gè)可實(shí)際運(yùn)行的系統(tǒng)模型,用戶在運(yùn)行使用整個(gè)原型的基礎(chǔ)上,通過對其評價(jià),提出改進(jìn)意見,對原型進(jìn)行修改,統(tǒng)一使用,評價(jià)過程反復(fù)進(jìn)行,使原型逐步完善,直到完全滿足用戶的需求為止。
適用范圍:處理過程明確、簡單系統(tǒng);涉及面窄的小型系統(tǒng)
不適合于:大型、復(fù)雜系統(tǒng),難以模擬;存在大量運(yùn)算、邏輯性強(qiáng)的處理系統(tǒng);管理基礎(chǔ)工作不完善、處理過程不規(guī)范;大量批處理系統(tǒng)
原型應(yīng)當(dāng)具備的特點(diǎn)如下。
(1)實(shí)際可行。
?。?)具有最終系統(tǒng)的基本特征。
?。?)構(gòu)造方便、快速,造價(jià)低。
原型法的特點(diǎn)在于原型法對用戶的需求是動態(tài)響應(yīng)、逐步納入的,系統(tǒng)分析、設(shè)計(jì)與實(shí)現(xiàn)都是隨著對一個(gè)工作模型的不斷修改而同時(shí)完成的,相互之間并無明顯界限,也沒有明確分工。系統(tǒng)開發(fā)計(jì)劃就是一個(gè)反復(fù)修改的過程。適于用戶需求開始時(shí)定義不清的系統(tǒng)開發(fā),開發(fā)方法更宜被用戶接受;但如果用戶配合不好,盲目修改,就會拖延開發(fā)過程。
面向?qū)ο蠓椒ǎ?/span>面向?qū)ο蠓椒ㄊ且环N運(yùn)用對象、類、封裝、繼承、多態(tài)和消息等概念來構(gòu)造、測試、重構(gòu)軟件的方法。隨著應(yīng)用系統(tǒng)日益復(fù)雜龐大和面向?qū)ο蟪绦蛟O(shè)計(jì)語言的日益成熟,面向?qū)ο蟮南到y(tǒng)開發(fā)方法以其直觀、方便的優(yōu)點(diǎn)獲得廣泛應(yīng)用。
是以認(rèn)識論為基礎(chǔ),用對象來理解和分析問題空間,并設(shè)計(jì)和開發(fā)出由對象構(gòu)成的軟件系統(tǒng)(解空間)的方法。 由于問題空間和解空間都是由對象組成的,這樣可以消除由于問題空間和求解空間結(jié)構(gòu)上的不一致帶來的問題。簡言之,面向?qū)ο缶褪敲嫦蚴虑楸旧?,面向?qū)ο蟮姆治鲞^程就是認(rèn)識客觀世界的過程。
面向?qū)ο蠓椒◤膶ο蟪霭l(fā),發(fā)展出對象,類,消息,繼承等概念。
面向?qū)ο蠓椒ǖ闹饕獌?yōu)點(diǎn)是:符合人們通常的思維方式;從分析到設(shè)計(jì)再到編碼采用一致的模型表示具有高度連續(xù)性;軟件重用性好。
敏捷開發(fā)方法:
是一種應(yīng)對快速變化的需求的開發(fā)方法,相對于“非敏捷”,更強(qiáng)調(diào)程序員團(tuán)隊(duì)與業(yè)務(wù)專家之間的緊密協(xié)作、面對面的溝通(認(rèn)為比書面的文檔更有效)、頻繁交付新的軟件版本、緊湊而自我組織型的團(tuán)隊(duì)、能夠很好地適應(yīng)需求變化的代碼編寫和團(tuán)隊(duì)組織方法,也更注重軟件開發(fā)中人的作用。
敏捷開發(fā)的價(jià)值觀
人和(人與人的)交互 優(yōu)先于過程和工具。
可以工作的軟件 優(yōu)先于求全責(zé)備的文檔。
客戶協(xié)作 優(yōu)先于合同談判。
隨時(shí)應(yīng)對變化 優(yōu)先于循規(guī)蹈矩。
敏捷開發(fā)的原則
對我們而言,最重要的是通過盡早和不斷交付有價(jià)值的軟件滿足客戶需要。
我們歡迎需求的變化,即使在開發(fā)后期。敏捷過程能夠駕馭變化,保持客戶的競爭優(yōu)勢。
經(jīng)常交付可以工作的軟件,從幾星期到幾個(gè)月,時(shí)間尺度越短越好。
業(yè)務(wù)人員和開發(fā)者應(yīng)該在整個(gè)項(xiàng)目過程中始終朝夕在一起工作。
圍繞斗志高昂的人進(jìn)行軟件開發(fā),給開發(fā)者提供適宜的環(huán)境,滿足他們的需要,并相信他們能夠完成任務(wù)。
在開發(fā)小組中最有效率也最有效果的信息傳達(dá)方式是面對面的交談。
可以工作的軟件是進(jìn)度的主要度量標(biāo)準(zhǔn)。
敏捷過程提倡可持續(xù)開發(fā)。出資人、開發(fā)人員和用戶應(yīng)該總是維持不變的節(jié)奏。
對卓越技術(shù)與良好設(shè)計(jì)的不斷追求將有助于提高敏捷性。
簡單——盡可能減少工作量的藝術(shù)至關(guān)重要。
最好的架構(gòu)、需求和設(shè)計(jì)都源自自我組織的團(tuán)隊(duì)。
每隔一定時(shí)間,團(tuán)隊(duì)都要總結(jié)如何更有效率,然后相應(yīng)地調(diào)整自己的行為。