開發(fā)者面試百問-軟件項目管理部分答案 收藏【上次回答了 軟件開發(fā)者面試百問 中測試部分,這次,由于時間關(guān)系,簡單回答一下軟件項目管理部分的問題。這些問題的答案,一般沒有正確與否,各個人回答不同,這里僅供大家參考?!?/span>
1.范圍、時間、成本,這三項中哪些是可以由客戶控制的? 范 圍、時間、成本,是項目管理中常說的三角關(guān)系。任何一方改變都可能牽扯到其他兩方的變動。項目管理的本質(zhì),就是在保證質(zhì)量的前提下,尋求這三者之間的最佳 平衡。因為客戶是需求方和投資方,客戶有權(quán)對這三者進(jìn)行控制,當(dāng)然客戶主要控制范圍,即提出他們的需求——項目要實現(xiàn)的功能特性,其次,客戶也非常關(guān)心能 交付的時間和所付出的成本。在滿足客戶的需求情況下,可以在時間、成本上和客戶進(jìn)行交流、談判。從項目管理的角度看,最好固定其中一項,其他兩項可以根據(jù) 實際狀況來調(diào)節(jié)保證項目質(zhì)量。
2.誰該對項目中所要付出的一切做出估算?誰有權(quán)設(shè)置最后期限? 項目成功是團(tuán)隊協(xié)作的結(jié)果。在對項目進(jìn)行估算的時候,需要由參與項目各個環(huán)節(jié)的人進(jìn)行符合實際的估算,最后匯總起來進(jìn)行綜合分析計算,獲得項目總的估算結(jié)果。 項目的最后期限設(shè)置除了客戶定死最后交付時間,其他的情況都是根據(jù)項目的進(jìn)度估算結(jié)果而進(jìn)行符合實際的計劃得出的。
3. 減少交付的次數(shù),或是減少每個每個交付中的工作量,你喜歡哪種做法? 根 據(jù)項目的類型和項目進(jìn)行中的實際情況來決定,如果項目是規(guī)模比較大,時間長的,那么就應(yīng)增加交付次數(shù)或者減少每個每個交付中的工作量,以便及時考察項目進(jìn) 展,保證項目進(jìn)度。例如,一個項目按計劃進(jìn)行到第一個里程碑發(fā)現(xiàn)項目進(jìn)度明顯落后,而下一個檢查點(也就是交付的工作量)距離還很長管理層需要及時了解其 進(jìn)展,那么交付的次數(shù)的就要根據(jù)現(xiàn)在的時間狀況來增加。反過來,如果這個項目的進(jìn)度非常好,甚至超前,而下一個檢查點(也就是交付的工作量)距離還很短, 我們就可以減少交付次數(shù)。 在傳統(tǒng)的軟件項目中,開發(fā)周期比較長,往往減少交付的次數(shù),更好地控制質(zhì)量;而現(xiàn)在,有一部分公司比較傾向于敏捷方法,喜歡減少每個交付中的工作量,交付周期只有幾周時間(最短的周期,可能是一周),擁抱變化,更好地、更及時地滿足用戶的需求。而對互聯(lián)網(wǎng)上的web應(yīng)用軟件開發(fā),“減少每個每個交付中的工作量”是一個比較好的策略,力求及時獲得用戶的反饋,將用戶的需求及時融入新的版本,及時發(fā)布出去,贏得競爭市場。例如,在我新書《軟件工程導(dǎo)論》中專門有一節(jié)討論“永遠(yuǎn)的Beta”的軟件工程思想。
4.你喜歡用哪種圖來跟蹤項目進(jìn)度? 還是要根據(jù)項目的特點來決定,具體項目具體對待,當(dāng)然,有時也不能由自己決定,而是取決于公司已有的工具和習(xí)慣。對于復(fù)雜、規(guī)模大的項目,可能要借助甘特圖和網(wǎng)絡(luò)圖來分析和跟蹤進(jìn)度。簡單、規(guī)模小的項目根據(jù)進(jìn)度報告百分比和表格跟蹤就可以了。
5.迭代和增量的區(qū)別在哪里? 軟件開發(fā)不是一躇而就,其過程猶如雕琢一件工藝品,由無形到有形、由粗到細(xì),很難一次就能開發(fā)出功能完善、強大的一個版本,而往往是分階段進(jìn)行,一個版本接一個版本的發(fā)布出去。軟件開發(fā)分階段可以通過兩種模型來描述,即增量模型和迭代模型。 增量模型描述軟件產(chǎn)品的不同階段是按產(chǎn)品所具有的功能進(jìn)行劃分,先開發(fā)主要功能或用戶最需要功能,然后,隨著時間推進(jìn),不斷增加新的輔助功能或次要功能,最終開發(fā)出一個強大的、功能完善的、高質(zhì)量的、穩(wěn)定的產(chǎn)品。 迭代模型描述軟件產(chǎn)品的不同階段是按產(chǎn)品深度或細(xì)化的程度來劃分,先將產(chǎn)品的整個框架都建立起來,在系統(tǒng)的初期,已經(jīng)具有用戶所需求的全部功能。然后,隨著時間推進(jìn),不斷細(xì)化已有的功能或完善已有功能,這個過程好像是一個迭代的過程。最終的目標(biāo)是一致的,也是為了實現(xiàn)一個強大的、功能完善的、高質(zhì)量的、穩(wěn)定的產(chǎn)品。 舉 一個例子:假設(shè)現(xiàn)在要開發(fā)A,B,C,D四個大的業(yè)務(wù)功能,每個功能都需要開發(fā)兩周的時間.則對于增量方法而言可以將四個功能分為兩次增量來完成,第一個 增量完成A,B功能,第二次增量完成C,D功能;而對于迭代開發(fā)來將則是分兩次迭代來開發(fā),第一次迭代完成A,B,C,D四個基本業(yè)務(wù)功能但不含復(fù)雜的業(yè) 務(wù)邏輯,而第二個功能再逐漸細(xì)化補充完整相關(guān)的業(yè)務(wù)邏輯.在第一個月過去后采用增量開始時候A,B全部開發(fā)完成而C,D還一點都沒有動;而采用迭代開發(fā)的 時候A,B,C,D四個的基礎(chǔ)功能都已經(jīng)完成.
6. 試著解釋一下風(fēng)險管理中用到的實踐。風(fēng)險該如何管理? 風(fēng) 險管理的實踐很多,包括頭腦風(fēng)暴、風(fēng)險列表(checklist)等。例如,人們常采用十大風(fēng)險清單:在項目進(jìn)行中,不時地更新和處理項目當(dāng)前風(fēng)險最高的 前十項風(fēng)險,以保證項目不脫離主軌道。因為項目中的風(fēng)險大大小小會很多。十大風(fēng)險清單就是抓住重要的風(fēng)險及時處理,而又關(guān)系的小風(fēng)險可能也就隨之消失。從 這里可以看出,風(fēng)險也是動態(tài)的,需要經(jīng)常地、及時地評估當(dāng)前的風(fēng)險,例如每周或每兩周進(jìn)行一次風(fēng)險評估。 風(fēng)險管理就是通過風(fēng)險的識別、預(yù)測、估算和衡量、選擇有效的方法和手段,對風(fēng)險進(jìn)行預(yù)防、避免、降低或者轉(zhuǎn)移的管理過程。
7. 你喜歡任務(wù)分解還是滾動式計劃? 根據(jù)項目特點來定,一般會選用任務(wù)分解的計劃,責(zé)任清楚,可控性更強。滾動式計劃的靈活性比較強,適應(yīng)性比較好,但容易引起大家對計劃不夠重視,計劃能力降低,或者可控性會差些。有時會將這兩種方法結(jié)合起來使用。
8. 你需要哪些東西幫助你判斷項目是否符合時間要求,在預(yù)算范圍內(nèi)運作?
那么就可以根據(jù)項目時間與計劃的內(nèi)容進(jìn)行對比來判斷項目符合時間要求,在預(yù)算范圍內(nèi)運作。常用的方法有基線對比法和掙值法。
9. DSDM、Prince2、Scrum,這三者之間有哪些區(qū)別?
方法的應(yīng)用,同樣由項目規(guī)模、業(yè)務(wù)特點(需求是否穩(wěn)定)等決定,而且還受企業(yè)文化、流程和領(lǐng)導(dǎo)意識等決定。如果需求穩(wěn)定、項目規(guī)模比較大或周期比較長,一般會選用PRINCE2,相反,可能會選擇DSDM或Scrum,后兩者沒有本質(zhì)區(qū)別,只是具有不同的最佳實踐。 正如有人評論,國內(nèi)對Scrum還比較熟悉,對DSDM、PRINCE2等不夠熟悉,應(yīng)用不多。而業(yè)界最熟悉的還是CMMI、RUP(IBM Rational Unify Process 統(tǒng)一過程)、XP(敏捷方法的極限編程 eXtreme Programming)和MSF(Microsoft Solution Framework,微軟公司軟件開發(fā)解決方案框架),可參考: 10.如果客戶想要的東西太多,你在范圍和時間上怎樣跟他達(dá)成一致呢? 首先要向客戶說明,如果在某個時間內(nèi)去做不可能完成的工作,其結(jié)果必然是質(zhì)量得不到保證,或者所化的成本過大。應(yīng)該沒有客戶想做賠本的生意,每個客戶都會重視質(zhì)量,而不愿意損害自己的利益。 然后,和客戶一起,按需求重要性、緊急性等對需求進(jìn)行分類,分為不同的等級,然后從優(yōu)先級高的需求開始,來估算不同優(yōu)先級類別的需求實現(xiàn)的工作量。設(shè)定幾個不同的開發(fā)周期或交付時間,從而由用戶作出選擇,例如: (1) 只做優(yōu)先級最高的那類需求,開發(fā)周期需要3個月; (2) 做優(yōu)先級最高和優(yōu)先級高的那兩類需求,開發(fā)周期需要7個月; (3) 做優(yōu)先級最高、高和中等的共3類需求,開發(fā)周期需要12個月; (4) 所有需求都實現(xiàn),開發(fā)周期需要18個月 用戶可能選(2), 先完成兩類需求,簽訂合同。等這合同履行很好之后,再繼續(xù)下一步的開發(fā)。 |
|
|