第三部分最佳實踐
有些實踐并不是馬上就可以采用菜秦,有些甚至是相互排斥的甜害,有些實踐并不需要特殊的軟件開發(fā)方式,而有些實踐你必須從根本上改變你的項目開發(fā)方式球昨。
本章討論的最佳實踐,是出于對以下類型的改善而言:
l縮短原進度的潛力
l過程可視度的改進
l對項目進度風險的影響
l一次成功的可能性
l長期成功的可能性
l主要風險
l主要的相互影響和權(quán)衡
第17章變更委員會CCB
CCB是控制軟件產(chǎn)品變更的一種措施眨攘。它是通過召集個部門代表一起工作來進行的主慰。CCB對批準和拒絕項目變更有最終決定權(quán)。CCB通過提高變更的可視性鲫售,減少項目中難以控制的變更數(shù)目等方法共螺,對項目產(chǎn)生快速開發(fā)的效果。
效果
縮短原進度的潛力
一般
過程可視度的改善
一般
對項目進度風險的影響
減低風險
一次成功的可能性
很大
長期成功的可能性
很大
主要風險
l批準的變更太少或太多情竹。
主要的相互影響和權(quán)衡
l可以和其他方法自由地混合使用藐不。
第18章日創(chuàng)建和冒煙測試
日創(chuàng)建和冒煙測試是一個過程,在這個過程中秦效,軟件被每天完全創(chuàng)建并通過冒煙測試以檢驗基本運行情況雏蛮。這個過程可以減少不成功的整合,質(zhì)量低劣阱州,和項目進展可視度差等情況挑秉。
效果
縮短原進度的潛力
好
過程可視度的改善
好
對項目進度風險的影響
減低風險
一次成功的可能性
很大
長期成功的可能性
極大
主要風險
l有過于頻繁發(fā)布中間版本的壓力。
主要的相互影響和權(quán)衡
l項目開銷略微增加苔货,換取集成風險的降低和可視度的改善犀概。
l和里程碑一起使用效果特別好立哑。
l對增量式開發(fā)模型天然支持。
這個簡單的過程姻灶,在以下這些方面明顯地節(jié)約時間:
l使集成風險降到最小铛绰。
l減少低質(zhì)量風險。
l比較容易支持對缺陷的診斷产喉。
當產(chǎn)品被每天創(chuàng)建和測試時至耻,可以很容易的定位問題。比如17號的產(chǎn)品沒有問題镊叁,18號出現(xiàn)問題尘颓,那么問題一定是17號和18號中間。如果周創(chuàng)建或月創(chuàng)建晦譬,問題的排查將在一周或一個月內(nèi)疤苹。
l支持對項目進展的監(jiān)控。
l可以提高士氣
l可以改善客戶關(guān)系
1.使用日創(chuàng)建和冒煙測試
1.日創(chuàng)建
日創(chuàng)建的最基本原則就是每天都創(chuàng)建產(chǎn)品敛腌。
2.檢查失敗的創(chuàng)建
為了日創(chuàng)建過程有效卧土,必須保證被創(chuàng)建的產(chǎn)品有效。如果產(chǎn)品無效像樊,則解決產(chǎn)品問題成為最優(yōu)先的工作尤莺。
為了驗證創(chuàng)建是成功還是失敗,必須提前制定標準生棍。這個標準不能太細致或嚴格颤霎,但也需要有嚴格的質(zhì)量標準。成功的創(chuàng)建至少應該是:
成功的編譯了所有文件涂滴。
成功的鏈接了所有文件友酱。
不包含任何顯示停止的缺陷。
通過冒煙測試柔纵。
3.每天進行冒煙測試
如果沒有冒煙測試缔杉,日創(chuàng)建就沒有任何意義。冒煙測試不需要進行詳盡的測試搁料,但必須要能夠檢測主要的問題或详。
4.成立創(chuàng)建組
在某些情況下,創(chuàng)建工作大到足以成為一個任務郭计,你可以為日創(chuàng)建成立一個創(chuàng)建組霸琴。在工作量不大的情況下,也可以讓質(zhì)保人員做這件事拣宏。
5.只有有意義時沈贝,才將新代碼增加到日創(chuàng)建中
日創(chuàng)建并非要每天都加入新代碼。
6.新代碼加入日創(chuàng)建的頻率不能太低
7.在新代碼加入日創(chuàng)建前勋乾,要求開發(fā)者進行冒煙測試
8.對破壞系統(tǒng)創(chuàng)建的情況建立懲罰
9.在早上發(fā)布創(chuàng)建
在早上發(fā)布創(chuàng)建和冒煙測試有幾個好處:
測試可以測試那天最新的創(chuàng)建宋下。如果下午創(chuàng)建嗡善,測試者不得不在剩余的時間內(nèi)完成測試,這對測試是不公平的学歧。
如果創(chuàng)建失敗罩引,開發(fā)將有更充裕的時間處理問題。
10.即使在壓力下也要堅持創(chuàng)建和冒煙測試
當進度壓力較大時枝笨,維護日創(chuàng)建需要做的工作似乎是負擔袁铐,但這是錯誤的觀點。因為在壓力下横浑,開發(fā)者將在設計剔桨,實現(xiàn)和測試階段走捷徑,或工作不如平常仔細徙融,這將導致項目缺陷更多洒缀,越來越偏離軌道。
2.管理日創(chuàng)建和冒煙測試的風險
1.傾向于過早發(fā)布
3.日創(chuàng)建和冒煙測試的附加效果
有人認為欺冀,除了減少集成風險树绩,提高質(zhì)量和增加過程可視度之外,日創(chuàng)建和冒煙測試對改善產(chǎn)品質(zhì)量有重要作用隐轩。
4.日創(chuàng)建和冒煙測試與其他方法的交互作用
日創(chuàng)建最好是跟小型里程碑(第27章)一起使用饺饭。
日創(chuàng)建也支持增量式開發(fā)方法(第7章)。
5.日創(chuàng)建和冒煙測試的成功關(guān)鍵
l每天進行創(chuàng)建职车。
l每天進行冒煙測試瘫俊。
l冒煙測試隨著產(chǎn)品的增長而增長。
l應該把一個良好的創(chuàng)建放在首位提鸟。
l日常工作中军援,一定要確保失敗的創(chuàng)建只是例外,而不是常態(tài)称勋。
l在壓力下不要放棄。
第17章變更設計
變更設計包含了面向變更設計的一系列實踐涯竟。應在軟件生命期的早期赡鲜,引入這些活動,使它們能夠充分發(fā)揮作用庐船。變更設計是否成功取決于下列活動的進展情況:識別可能發(fā)生的變更银酬,制定可行的變更方案,隱藏設計變更結(jié)果以使變更不會對整個程序造成影響筐钟。如果這些活動完成得好揩瞪,將為開發(fā)出更靈活的程序打下基礎(chǔ),而程序靈活性的提高篓冲,有利于當變更請求較晚提出時李破,降低對進度的沖擊宠哄。
效果
縮短原進度的潛力
一般
過程可視度的改善
無
對項目進度風險的影響
減低風險
一次成功的可能性
大
長期成功的可能性
極大
主要風險
l過度依賴編程語言來解決設計問題,而不是采用面向變更設計的方法嗤攻。
主要的相互影響和權(quán)衡
l能為增量式開發(fā)提供必要支持毛嫉。
l設計時采用了軟件重用工作方法。
一些非預期的變更妇菱,常常發(fā)生在設計完成和編碼啟動之后承粤,這將對開發(fā)進度產(chǎn)生破壞性的影響。這種變更如果沒有處理好闯团,項目將被認為進展太慢辛臊,即使在變更之前進度是正常的。
1.采用變更設計
變更設計不是單一的設計方法房交,而是一種能夠使軟件設計靈活的一系列活動彻舰。下面列出了一些這樣的活動:
l識別可能發(fā)生變更的區(qū)域。
l采用隱藏信息的方法涌萤。
l制定變更計劃淹遵。
l定義程序族。
l采用面向?qū)ο蟮脑O計方法负溪。
下面將分別介紹每項活動透揣,其中有些活動是重疊的,但沒一項活動都有其獨特的作用川抡。
1.識別可能發(fā)生變更的區(qū)域
變更設計能夠成功的首要因素辐真,就是識別潛在的變更。以下是經(jīng)常發(fā)生變更的源頭:
l軟/硬件依賴性
l文件格式
l輸入和輸出
l非標準的語言特性崖堤?
l難以設計和實現(xiàn)的部分
l全局變量
l特殊數(shù)據(jù)結(jié)構(gòu)的實現(xiàn)
l抽象數(shù)據(jù)結(jié)構(gòu)的實現(xiàn)
l商業(yè)規(guī)則
l事件的處理順序
l當前版本中好不容易才排除的需求
l當前版本中簡簡單單就排除的需求
l基本上不會包含在當前版本中的需求
l為下一版本規(guī)劃的特性
2.采用信息隱藏的方法
一旦生成了潛在變更清單侍咱,就應該將與這些變更有關(guān)的設計結(jié)果,孤立在它自身的模塊中密幔。將可能變更的設計結(jié)果隱藏在它們自身的模塊中楔脯,這種方法叫做“信息隱藏”。信息隱藏胯甩,在實踐中發(fā)揮著極其巨大的作用昧廷。此外,信息隱藏也是機構(gòu)設計和面向?qū)ο笤O計方法的部分基礎(chǔ)偎箫。在結(jié)構(gòu)設計中舟茶,黑盒的概念來源于信息隱藏疯特,而在面向?qū)ο笤O計方法中嘹屯,信息隱藏引出了封裝和可視性的概念械哟。
使用信息隱藏方法進行設計,首先需要把易于發(fā)生變更或特殊的復雜的設計,列出清單速挑。然后設計各模塊谤牡,將變更帶來的影響隱藏在每一個設計結(jié)果中。
3.制定變更計劃
對于那些可能發(fā)生變更的地方梗摇,制定變更計劃拓哟。這里的變更計劃,并非是一個進度計劃伶授,而是一個規(guī)范文檔断序。規(guī)范中可以規(guī)定應用以下任何方法:
l模塊采用抽象的接口,而非暴露細節(jié)的接口糜烹。
l使用命名的常量來定義數(shù)據(jù)結(jié)構(gòu)的大小违诗,而不是直接使用文字或數(shù)字。
l使用后賦值策略疮蹦。
l使用表驅(qū)動策略诸迟。
l使用方法而非復制代碼行。
l使用簡單的方法愕乎,執(zhí)行單一的功能阵苇。
l將無關(guān)的操作分開。
l將通用代碼和專用代碼分開感论。
上述這些都是非常好的軟件工程方法绅项,它們非常支持變更。
4.定義程序族
設計者在設計產(chǎn)品時比肄,應該將各種版本中很少發(fā)生變更的部分放在樹的根部快耿。
定義程序族的好方法是:首先要確定最終用戶使用的最小功能集,然后在此基礎(chǔ)上確定最小的功能擴充芳绩。
第18章漸進交付
漸進交付是一種生命期模型:它在階段交付的控制性和漸進原型的靈活性之間尋找平衡掀亥。它盡可能把某些選定的功能,在整個產(chǎn)品開發(fā)完成之前交付客戶妥色,從而有利于快速開發(fā)搪花,并且也具有響應客戶改變產(chǎn)品方向的能力。慎重地使用這種方法嘹害,可以提高產(chǎn)品質(zhì)量鳍侣,較少代碼數(shù)量,使開發(fā)和資源檢查分配更加均勻吼拥。
效果
縮短原進度的潛力
好
過程可視度的改善
極好
對項目進度風險的影響
減低風險
一次成功的可能性
較大
長期成功的可能性
極大
主要風險
1.目標偏離。
2.減弱了對項目的控制线衫。
3.不切實際的項目進度和資金預算凿可。
4.在開發(fā)過程中,開發(fā)者對開發(fā)時間的低效率使用。
5.早期的快速發(fā)展枯跑,導致對進度和預算不切實際的期望惨驶。
6.項目控制性降低。
7.項目發(fā)展方向和目標偏離敛助。
8.缺乏用戶反饋粗卜。?纳击?续扔?不理解
9.產(chǎn)品質(zhì)量降低。
10.設計不佳焕数。
11.缺乏可維護性纱昧。
12.開發(fā)者效率低下。
主要的相互影響和權(quán)衡
l從階段交付和漸進原型中發(fā)展出來堡赔。
l其成功取決于對未來變化的預見识脆。
l提高了在項目中期進行矯正的能力。
l提前和頻繁交付善已,能提供更多控制點灼捂,幫助估算。
l造成每隔幾周就能推出新產(chǎn)品的假象换团。
l可以提高開發(fā)者和客戶的士氣悉稠。
l較早獲得客戶反饋。
有些人去超市前啥寇,會列出一個需要購買的商品清單偎球;還有一些人完全沒有清單,他們到超市后辑甜,看到什么好就買什么衰絮;大部分人則處于兩者時間,他們會先準備一份商品清單磷醋,但是到超市后猫牡,多多少少會進行一些調(diào)整。
在軟件生命期模型中邓线,階段交付就是準備商品清單的人淌友。階段交付可以為客戶提供明確的進度標志,在管理上也具有很高的控制性骇陈,但是缺乏靈活震庭;漸進原型就是完全沒有清單的人。漸進交付非常靈活你雌,但缺少管理上的控制性器联;漸進交付就是準備清單但還是會調(diào)整的人二汛。漸進交付就是將階段交付的控制性和漸進原型的靈活性結(jié)合在一起。它的利弊取決于在實際案例中拨拓,它更加偏向哪一邊肴颊。
漸進交付通過以下途徑對快速開發(fā)予以支持:
l減低最終產(chǎn)品與需求不符的風險。避免返工渣磷。
l對于定制軟件婿着,它通過提前和經(jīng)常性的交付,來提供開發(fā)過程的可視度醋界。
l對于商業(yè)封裝軟件竟宋,它支持更頻繁的版本更新。
l由于在每次漸進交付后允許進行進度調(diào)節(jié)物独,因而減少了進度估算錯誤袜硫。
l通過提前集成,降低集成風險挡篓。
l有利于鼓舞士氣婉陷。
1.應用漸進交付
首先你應該對客戶需要什么有一個初步概念,并以它為基礎(chǔ)建立一個系統(tǒng)框架和核心官研』喟模框架應該盡可能多地預見系統(tǒng)的走向,核心則應該是由那些不被客戶反饋而影響的功能組成戏羽。建立在核心之上的細節(jié)都可以是不確定的担神,但核心必須堅定地保持一致性。
正確地確定系統(tǒng)核心始花,是使用漸進交付的關(guān)鍵妄讯。
對于漸進交付,你可以從漸進原型的基礎(chǔ)上開始酷宵,逐步向階段交付的方向發(fā)展亥贸,以便增加控制性。也可以從階段交付開始浇垦,向漸進原型發(fā)展炕置,以增加靈活性。比如你已經(jīng)規(guī)定了123階段的產(chǎn)品男韧,但45階段并不確定朴摊。
2.何時使用漸進交付
如果你對系統(tǒng)了如指掌,并且不希望出現(xiàn)意外的話此虑,最好用階段交付而不是漸進交付甚纲。因為這時你更多的是需要控制性,階段交付能夠提供更好的控制性和可視度朦前。
如果你對系統(tǒng)知之甚少贩疙,并且希望活動意外的驚喜的話讹弯,最好用漸進原型而不是漸進交付。因為漸進交付需要你掌握系統(tǒng)核心內(nèi)容这溅,對漸進原型來說,就不必要棒仍。
漸進交付不僅可以用在全新系統(tǒng)開發(fā)上悲靴,也可以用在現(xiàn)有系統(tǒng)改造上。
第19章漸進原型
漸進原型是一種生命期模型莫其,系統(tǒng)以逐步增加的方式進行開發(fā)癞尚,以便隨時根據(jù)客戶或最終用戶的反饋來修正系統(tǒng)。對于任何一個高風險領(lǐng)域而言乱陡,漸進原型都是適用的浇揩。
效果
縮短原進度的潛力
極好
過程可視度的改善
極好
對項目進度風險的影響
增大風險
一次成功的可能性
較大
長期成功的可能性
極大
主要風險
1.不切實際的進度和財政預算。
客戶憨颠,用戶或市場人員看到快速開發(fā)的原型時胳徽,對真實產(chǎn)品的開發(fā)也會抱有不切實際的進度期望。當客戶發(fā)覺實現(xiàn)產(chǎn)品比產(chǎn)出原型的速度慢很多時爽彤,他們就會失望养盗。
2.項目可控性降低。
對于漸進原型來說适篙,在項目開始時往核,并不知道要多久才能完成。讓客戶始終看到項目進展標記嚷节,可以在一定程度上減少這種風險聂儒。
3.缺乏最終用戶或客戶反饋。
原型法并不能保證獲得高質(zhì)量的用戶反饋硫痰。因為當用戶看到原型時衩婚,并不能完全明白所看到的東西。常見的情況是碍论,客戶被那些活靈活現(xiàn)的原型軟件所傾倒谅猾,以至于根本就不去理解那些花哨東西下面的真實含義。如果他們輕易的同意了你的原型鳍悠,事實上你會發(fā)現(xiàn)他們并不理解他們看到的東西税娜。所以,一定要保證用戶和客戶能夠認真分析原型以便提供有意義的反饋意見藏研。
4.產(chǎn)品性能不佳敬矩。
有以下因素導致性能不佳:在產(chǎn)品設計時沒有考慮性能問題;在最終產(chǎn)品中保留著大量原型時期的代碼蠢挡。
你可以考慮以下步驟來降低質(zhì)量不佳的風險:及早考慮性能問題弧岳;不要匆匆忙忙不顧質(zhì)量低開發(fā)原型凳忙。
5.建立原型的時間沒有被充分利用。
項目在原型階段常常會浪費時間禽炬,因為原型法是一種探索性的不斷反復的過程涧卵,很難做到精細管理。
想要高效利用原型開發(fā)階段的時間腹尖,需要不斷跟蹤項目并對優(yōu)先級進行控制柳恐。在原型階段需要以小時或天來分割任務。
想要避免在原型階段浪費時間热幔,還有一定要注意乐设,就是避免使用缺乏經(jīng)驗的開發(fā)人員。
6.不切實際的質(zhì)量期望绎巨。
7.設計不佳近尚。
8.缺乏可維護性。
9.目標偏離
由于客戶與最終用戶會直接接觸到原型场勤,這時會導致他們對未來的要求不斷增加戈锻。除了跟他們交流控制之外,還可以使用變更管理方法來控制目標偏移却嗡。
主要的相互影響和權(quán)衡
l犧牲項目的控制性舶沛,來換取較多的客戶反饋和過程可視度。
l可以與用戶界面原型法和一次性原型法結(jié)合使用窗价。
l可作為漸進交付的基礎(chǔ)如庭。
漸進原型是一種軟件開發(fā)方法:你首先選擇系統(tǒng)的一部分完成,然后以此為基礎(chǔ)演化出系統(tǒng)的其余部分撼港。與其他原型發(fā)不同的是坪它,在漸進原型中,原型是不被丟棄的帝牡。
對于漸進原型來說往毡,它是一種探索型方法,通過較早發(fā)現(xiàn)風險來支持快速開發(fā)靶溜。對于不同的項目开瞭,不確定的部分也是不一樣的。所以你首先要確定從哪里作為系統(tǒng)開發(fā)的起點罩息,這個起點通常是系統(tǒng)中最直觀或風險最高的部分嗤详。
第20章目標設定
人的激勵是增加生產(chǎn)力的最重要因素,目標設定正是利用了這一規(guī)律瓷炮。在設定目標時葱色,只是簡單的告訴開發(fā)人員你想得到什么,開發(fā)者通常就會為了達到你附加的“最近目標”而努力工作娘香。然而苍狰,無法將項目劃分為一系列小而清晰的目標办龄,是目標設定的主要障礙。
效果
最短進度目標
最小風險目標
最高可視度目標
縮短原進度的潛力
很好
無
無
過程可視度的改善
無
好
極好
對項目進度風險的影響
增大風險
減小風險
減小風險
一次成功的可能性
大
大
大
長期成功的可能性
很大
很大
很大
主要風險
1.如果目標發(fā)生變化淋昭,則會大大影響士氣俐填。
主要的相互影響和權(quán)衡
l有助于限時開發(fā),自愿加班以及激勵員工响牛。
第21章檢查
檢查是一種正式性的技術(shù)回顧玷禽,參與者都應該受過良好的訓練,并被賦予特定的角色呀打。這種正式檢查比測試更有助于發(fā)現(xiàn)錯誤,無論是發(fā)現(xiàn)錯誤的比例糯笙,還是發(fā)現(xiàn)每個錯誤需要的時間贬丛。
效果
縮短原進度的潛力
很好
過程可視度的改善
一般
對項目進度風險的影響
降低風險
一次成功的可能性
大
長期成功的可能性
極大
主要風險
l無。
主要的相互影響和權(quán)衡
l可與其他快速開發(fā)方法結(jié)合使用给涕。
更多內(nèi)容豺憔,可以參看4.3節(jié)。
第22章聯(lián)合應用開發(fā)JAD
JAD是一種對需求進行定義并設計用戶界面的方法够庙。在JAD過程中恭应,用戶,開發(fā)者耘眨,管理人員通過會議昼榛,一起設計產(chǎn)品,共同澄清與系統(tǒng)相關(guān)的細節(jié)問題剔难。JAD更關(guān)注與商業(yè)問題胆屿,而非技術(shù)問題。它的好處在于更快更好的收集需求信息偶宫,從而避免后期需求變更非迹。JAD的成功依賴于JAD小組領(lǐng)導人的有效管理,依賴關(guān)鍵用戶纯趋,關(guān)鍵管理者和關(guān)鍵開發(fā)者的參與憎兽,依賴參與者在JAD會議中的合作。
效果
縮短原進度的潛力
好
過程可視度的改善
一般
對項目進度風險的影響
降低風險
一次成功的可能性
大
長期成功的可能性
極大
主要風險
1.由JAD會議產(chǎn)生不切實際的效率期望吵冒。
參與者只看到能夠這么快速的建立原型纯命,卻不知道建立系統(tǒng)將花費長的多的時間,所以對項目容易產(chǎn)生不切時間的期望桦锄。
可以通過兩種方式來減小這種風險:第一扎附,需要花費時間來制定一個可行的開發(fā)進度表。第二结耀,你可以選擇一種增量開發(fā)模型與JAD配合使用留夜。增量開發(fā)能讓人感覺系統(tǒng)的進度較快匙铡。
2.由JAD會議產(chǎn)生的對剩余工作量過早的,不精確的預估碍粥。
由于在JAD會議期間鳖眼,一直無法對估算進行修正,將導致預估不精確嚼摩。因此钦讳,在JAD規(guī)劃階段做出的預估,在完成JAD設計后枕面,一定要進行修正愿卒。
主要的相互影響和權(quán)衡
l與增量開發(fā)模型結(jié)合,能獲得最好的效果潮秘。
l可以跟快速開發(fā)語言和原型工具結(jié)合琼开。
l由于最終用戶參與到設計中來,使得用戶滿意度大大提高枕荞。
l避開了組織之間的障礙柜候。在JAD討論中,群體行為將暴露對立的需求以及政治分歧躏精,將有機會提前解決這些問題渣刷,從而避免這些因素在后期導致項目失敗孽文。
lJAD應該與一種增量式生命模型結(jié)合使用防楷,比較漸進交付,階段交付怠噪,漸進原型等(參考7高诺,20碌识,21,36章)虱而。增量式生命模型可以使JAD設計討論之后能較快交付部分軟件筏餐。
lJAD加原型法(參考21,38牡拇,42章)魁瞪。
JAD的本質(zhì)就是一系列由管理人員,最終用戶惠呼,開發(fā)者召開的會議导俘。JAD是開發(fā)之前弄清用戶需求的最有力方法之一。它通過以下方式使項目受益:
l使上層管理人員能盡早參與到開發(fā)過程中剔蹋。這種較早參與有助于縮短項目周期旅薄。
l縮短了明確用戶需求的過程。
l能盡早發(fā)現(xiàn)有問題的產(chǎn)品功能。
l有助于第一次就獲得正確的需求少梁。
l有助于第一次就獲得正確的用戶界面洛口。有些產(chǎn)品不斷變更,就是因為用戶不能接受產(chǎn)品界面凯沪。
l可以防止組織內(nèi)的相互牽制第焰。因為許多項目都受到內(nèi)部矛盾的阻礙,JAD方法在設計階段就把決策者召集在一起妨马,能盡早把這些矛盾擺到桌面上挺举,使問題能盡早解決。
1.使用JAD
JAD由JAD規(guī)劃階段和JAD設計階段兩個主要過程組成烘跺。在傳統(tǒng)意義上湘纵,這兩個階段都屬于需求階段,但又屬于不同的層次滤淳。
JAD規(guī)劃階段瞻佛,其重點在于構(gòu)思出系統(tǒng)總體上的功能。該階段主要產(chǎn)物是系統(tǒng)目標娇钱,首要方向和大致工程進度,以及是否需要繼續(xù)進一步開發(fā)绊困。同時它還需要對JAD設計階段進行規(guī)劃文搂。
JAD設計階段,重點在于導出更進一步的用戶需求秤朗。其目的是進行用戶層次上的軟件設計煤蹭。JAD設計階段,實際上是廣泛使用了原型方法取视,其產(chǎn)物是用戶界面設計硝皂,數(shù)據(jù)庫模型,以及進一步細化的預算和進度計劃作谭。
1.JAD規(guī)劃
JAD規(guī)劃側(cè)重于需求和計劃稽物。其目標是高層次需求,定義系統(tǒng)邊界折欠,對JAD設計進行規(guī)劃贝或,生成JAD規(guī)劃文檔,以及獲得對JAD的認可锐秦。
l定制
定制的目的在于咪奖,是JAD規(guī)劃會議合適于特定的項目需要。主要工作有:
n引導參與者了解JAD過程酱床。
n組織JAD小組羊赵。
n為特定項目設定JAD任務和結(jié)果。
n為JAD規(guī)劃討論準備材料扇谣。
通常參與規(guī)劃的并不是設計人員昧捷,而是相對較高位置的管理人員闲昭。
l討論
JAD討論是區(qū)別于其他需求采集方法的關(guān)鍵所在。JAD討論的關(guān)鍵因素包括:一個受過良好訓練的主持人料身,管理人員和其他關(guān)鍵決策者的參與汤纸,結(jié)構(gòu)化方法的使用,工作不被打斷的保證芹血,以及良好的會議管理方法贮泞。
l時間限制
JAD討論一般持續(xù)1到10天,它是一個團隊活動幔烛,必須保證所有參與者都全職出席啃擦。
l設施
JAD討論應該在非工作地點,比如酒店饿悬,會議室等令蛉。JAD設施必須保證參與人從日常工作中脫離出來。JAD設施應該準備可視化設備狡恬,計算機珠叔,本子,筆弟劲,白板等祷安。
l角色
JAD討論包含一系列角色:
n討論主席。他是對JAD成功與否起決定性作用的人兔乞。
n執(zhí)行贊助商汇鞭。他肩負著系統(tǒng)的財政重任。這種人是規(guī)劃討論之后決定項目是否實施的關(guān)鍵人物庸追。
n最終用戶代表霍骄。他是代表最終用戶的關(guān)鍵人物。有權(quán)利和義務對項目做出負責任的決定淡溯。
n開發(fā)者读整。他們的工作是轉(zhuǎn)變用戶觀點血筑,告訴他們一個完美的系統(tǒng)是不可能的豺总;他們還應該回答關(guān)于系統(tǒng)的問題,功能另玖,費用谦去,時間慷丽,方案等;開發(fā)者應該避免使用“是”或“否”等詞語來回答問題鳄哭。
n書記員要糊。他來自開發(fā)部門,主要任務是記錄討論過程發(fā)生了什么妆丘。他的工作是主動參與討論锄俄,主動詢問并澄清問題,提醒前后不一致的地方勺拣。
n專家奶赠。他們是被邀請來提供專業(yè)支持的。專家并非需要每天都參與會議药有,只有需要他們幫忙的時候才有必要參與毅戈。專家對于JAD來說是一種資源,而非參與者愤惰。
l常見問題
n關(guān)鍵人員無法保證全程參加苇经。
n過多的參與者,導致JAD小組渙散宦言。一個完整的JAD小組應該在8個人以下塑陵。
l在討論中發(fā)生了什么
一個典型的JAD規(guī)劃討論凉倚,要進行以下8項內(nèi)容:
n介紹總體方向稽寒。向小組介紹討論目的,時間以及各項議程宏侍。
n定義高層需求。勾畫出系統(tǒng)概況绷耍,包括確定系統(tǒng)需要滿足的商業(yè)需求诸典,系統(tǒng)目標,預期效果脑奠,系統(tǒng)可能包含的功能,各項功能的先后次序齿诞,系統(tǒng)策略和未來構(gòu)想。
n限定系統(tǒng)邊界但汞。
n確定并預測JAD設計所包含的階段私蕾。
n確定JAD設計階段的參加人員。
n安排JAD設計的進度容贝。
n記錄討論要點和思路,將規(guī)劃討論的問題茂缚,解決方案和思路制成文檔龟糕。
n討論總結(jié)。
在規(guī)劃時缓艳,每個活動的過程都大致相同:JAD主席提出任務,參與者提出想法溪窒,每個想法被提出澈蚌,參與者就要對它進行檢驗,最后書記員記錄每個問題的決定份汗,如系統(tǒng)目標,系統(tǒng)功能,大致次序,系統(tǒng)邊界摩幔,JAD設計階段的規(guī)劃等或衡。
l整理
整理應該盡可能多的記錄討論過程中產(chǎn)生的結(jié)論斯辰。JAD規(guī)劃的討論結(jié)果有:
n系統(tǒng)目標列表。
n詳述可能出現(xiàn)的系統(tǒng)功能闸氮。包括功能本身,功能需要滿足的商業(yè)需求或悲,功能帶來的效益,并對每個功能的投資回報率進行預估捌臊,以及每個功能的優(yōu)先級。
n限制系統(tǒng)邊界糠爬。包括系統(tǒng)不包含的功能列表。
n與其他系統(tǒng)的接口镀琉。
nJAD討論中未能解決的事情。包括問題描述钓试,負責人恋谭,預計解決的日期。
n下一步的計劃串稀。
2.JAD設計
JAD設計的核心是用戶需求和用戶界面設計。其作用是定義詳細的用戶需求清寇,系統(tǒng)邊界,屏幕和報表設計盔夜,開發(fā)原型,以及收集編輯校驗數(shù)據(jù)椭微。
l定制
跟JAD規(guī)劃一樣蝇率,定制主要是為討論做準備,包括硬件準備,會議室準備鉴象,參與人員培訓等纺弊。
l討論
通常JAD設計階段的討論比規(guī)劃討論要長,從幾天到10多天不等犹菱。
參與角色類似,但贊助商可以不參與了陕凹,除非需要他們的協(xié)助。開發(fā)代表將非常忙碌佑女,因為白天他們參與討論,晚上需要制作原型店茶。最終用戶代表必須是多個,他們必須全程參與以便對產(chǎn)品的設計丛楚,實現(xiàn)和測試進行討論。
l在討論中發(fā)生的事情
n介紹總體方向坏平。向小組介紹討論目的令境,時間安排,以及各項議程惕橙。
n回顧JAD規(guī)劃中形成的系統(tǒng)需求,需求邊界惶凝。
n制作工作流程表。介紹各項工作的流程混滔。
n設計用戶界面和報表。
n明確處理需求领跛。包括數(shù)據(jù)量,運算速度矢棚,安全需求等蒲肋。
n定義接口需求。明且有哪些外部系統(tǒng)需要交互。
n明確數(shù)據(jù)分組以及各項功能距糖。
n記錄討論要點和思路。
n討論總結(jié)趣斤。
JAD設計相比一對一的需求采集高效很多,因此將節(jié)省大量時間联贩。
l整理
n完成JAD設計文檔。
n完成原型祸泪。
n讓參與者都審核設計文檔和原型。
n將結(jié)果交付給贊助商升略。
迅速從JAD設計過度到功能設計和開發(fā)是非常重要的,如果間隔太久翰撑,可能導致需求過時涨醋。
2.JAD成功的關(guān)鍵
l經(jīng)驗豐富的討論主席。
l確保贊助商參與JAD過程溯警。
l確保關(guān)鍵人員全職參與JAD過程。
l精心對參與人員做好準備工作喳挑。確保他們理解JAD目標。
lJAD結(jié)束后日戈,幫助用戶建立切實的期望。
lJAD結(jié)束后弯屈,采用一種增量的生命期模型開發(fā)項目。