1.範圍、時間,成本,這三項中哪些是可以由客戶控制的?
範圍、時間、成本,是專案管理中常說的三角關係。任何一方改變都可能牽扯到其他兩方的變動。專案管理的本質,就是在保證質量的前提下,尋求這三者之間的最佳平衡。因為客戶是需求方和投資方,客戶有權對這三者進行控制,當然客戶主要控制範圍,即提出他們的需求——專案要實現的功能特性,其次,客戶也非常關心能交付的時間和所付出的成本。在滿足客戶的需求情況下,可以在時間、成本上和客戶進行交流、談判。從專案管理的角度看,最好固定其中一項,其他兩項可以根據實際狀況來調節保證專案質量。
2.誰該對專案中所要付出的一切做出估算?誰有權設定最後期限?
專案成功是團隊協作的結果。在對專案進行估算的時候,需要由參與專案各個環節的人進行符合實際的估算,最後彙總起來進行綜合分析計算,獲得專案總的估算結果。
專案的最後期限設定除了客戶定死最後交付時間,其他的情況都是根據專案的進度估算結果而進行符合實際的計畫得出的。
3. 減少交付的次數,或是減少每個每個交付中的工作量,你喜歡哪種做法?
根據專案的型別和專案進行中的實際情況來決定,如果專案是規模比較大,時間長的,那麼就應增加交付次數或者減少每個每個交付中的工作量,以便及時考察專案進展,保證專案進度。例如,乙個專案按計畫進行到第乙個里程碑發現專案進度明顯落後,而下乙個檢查點(也就是交付的工作量)距離還很長管理層需要及時了解其進展,那麼交付的次數的就要根據現在的時間狀況來增加。反過來,如果這個專案的進度非常好,甚至超前,而下乙個檢查點(也就是交付的工作量)距離還很短,我們就可以減少交付次數。
在傳統的軟體專案中,開發周期比較長,往往減少交付的次數,更好地控制質量;而現在,有一部分公司比較傾向於敏捷方法,喜歡減少每個交付中的工作量,交付週期只有幾周時間(最短的週期,可能是一周),擁抱變化,更好地、更及時地滿足使用者的需求。而對網際網路上的web應用軟體開發,「減少每個每個交付中的工作量」是乙個比較好的策略,力求及時獲得使用者的反饋,將使用者的需求及時融入新的版本,及時發布出去,贏得競爭市場。例如,在我新書《軟體工程導論》中專門有一節討論「永遠的beta」的軟體工程思想。
4.你喜歡用哪種圖來跟蹤專案進度?
還是要根據專案的特點來決定,具體專案具體對待,當然,有時也不能由自己決定,而是取決於公司已有的工具和習慣。對於複雜、規模大的專案,可能要借助甘特圖和網路圖來分析和跟蹤進度。簡單、規模小的專案根據進度報告百分比和**跟蹤就可以了。
5.迭代和增量的區別在**?
軟體開發不是一躇而就,其過程猶如雕琢一件工藝品,由無形到有形、由粗到細,很難一次就能開發出功能完善、強大的乙個版本,而往往是分階段進行,乙個版本接乙個版本的發布出去。軟體開發分階段可以通過兩種模型來描述,即增量模型和迭代模型。
增量模型描述軟體產品的不同階段是按產品所具有的功能進行劃分,先開發主要功能或使用者最需要功能,然後,隨著時間推進,不斷增加新的輔助功能或次要功能,最終開發出乙個強大的、功能完善的、高質量的、穩定的產品。
迭代模型描述軟體產品的不同階段是按產品深度或細化的程度來劃分,先將產品的整個框架都建立起來,在系統的初期,已經具有使用者所需求的全部功能。然後,隨著時間推進,不斷細化已有的功能或完善已有功能,這個過程好像是乙個迭代的過程。最終的目標是一致的,也是為了實現乙個強大的、功能完善的、高質量的、穩定的產品。
舉乙個例子:假設現在要開發a,b,c,d四個大的業務功能,每個功能都需要開發兩周的時間.則對於增量方法而言可以將四個功能分為兩次增量來完成,第乙個增量完成a,b功能,第二次增量完成c,d功能;而對於迭代開發來將則是分兩次迭代來開發,第一次迭代完成a,b,c,d四個基本業務功能但不含複雜的業務邏輯,而第二個功能再逐漸細化補充完整相關的業務邏輯.在第乙個月過去後採用增量開始時候a,b全部開發完成而c,d還一點都沒有動;而採用迭代開發的時候a,b,c,d四個的基礎功能都已經完成.
6. 試著解釋一下風險管理中用到的實踐。風險該如何管理?
風險管理的實踐很多,包括頭腦風暴、風險列表(checklist)等。例如,人們常採用十大風險清單:在專案進行中,不時地更新和處理專案當前風險最高的前十項風險,以保證專案不脫離主軌道。因為專案中的風險大大小小會很多。十大風險清單就是抓住重要的風險及時處理,而又關係的小風險可能也就隨之消失。從這裡可以看出,風險也是動態的,需要經常地、及時地評估當前的風險,例如每週或每兩周進行一次風險評估。
風險管理就是通過風險的識別、**、估算和衡量、選擇有效的方法和手段,對風險進行預防、避免、降低或者轉移的管理過程。
7. 你喜歡任務分解還是滾動式計畫?
根據專案特點來定,一般會選用任務分解的計畫,責任清楚,可控性更強。滾動式計畫的靈活性比較強,適應性比較好,但容易引起大家對計畫不夠重視,計畫能力降低,或者可控性會差些。有時會將這兩種方法結合起來使用。
8. 你需要哪些東西幫助你判斷專案是否符合時間要求,在預算範圍內運作?
前提是這個專案的進度計畫和成本計畫是符合專案實際情況並不斷隨著專案的時間發展而滾動更新的。
確保收集的進度和花費的成本就真實可靠的。
在此時專案的範圍沒有影響到時間和成本的規劃。
那麼就可以根據專案時間與計畫的內容進行對比來判斷專案符合時間要求,在預算範圍內運作。常用的方法有基線對比法和掙值法。
9. dsdm、prince2、scrum,這三者之間有哪些區別?
動態系統開發方法(dynamic system development method,dsdm)是眾多敏捷開發方法中的一種,它倡導以業務為核心,快速而有效地進行系統開發。該方法的詳細內容,可以參考:dsdm業務中心框架開發方法(第二版)。這種方法主要是在英國應用比較廣泛。一般來說,敏捷方法適合於規模比較小、變化比較快(需求不夠穩定)的專案,而對大規模軟體,特別是在關鍵性、可靠性、安全性方面有很高要求的開發專案,則不適合。當然,可以在某些專案小組內實施;也是可以的。敏捷開發的方法很多,包括下面所說的scrum、自適應軟體開發(adaptive software development,asd)、crystal方法和特性驅動開發(feature-driven development,fdd),可以參考《敏捷軟體開發生態系統》。
prince2(projects in controlled environments 2)為專案管理提供了一種結構化的方法,這種方法最早是在2023年由英國**計算機和電信中心(ccta)開發的,作為英國**it專案管理的標準。prince2如今日益流行,是英國專案管理的標準,它為管理專案提供清晰界定工作框架,介紹如何協調專案中的人和活動、如何設計和監督專案以及在專案發生變更的情況下如何調整的流程。每乙個流程都詳細標出關鍵的輸入、輸出和具體目標及要執行的活動,這為計畫偏差提供了自發的控制。這種方法把專案劃分為多個管理階段,保證讓所有資源得到有效的控制。依靠嚴格的監控,專案在控制和組織的方式下得到執行。
scrum是一種迭代式增量軟體開發過程,通常用於敏捷軟體開發。scrum在英語的意思是橄欖球裡的爭球。scrum是乙個包括了一系列實踐和預定義角色的過程骨架,其主要角色包括同專案經理類似的scrum主管角色——負責維護過程和任務,產品負責人代表利益所有者,開發團隊包括了所有開發人員。在每一次衝刺(一般為15到30天週期 ),開發團隊建立可用的、可隨時推出的軟體乙個增量(小版本)。每乙個衝刺所要實現的特性來自產品訂單(product backlog), 產品訂單是按照優先順序排列的工作需求。在衝刺的過程中,沒有人能夠變更衝刺訂單(sprint backlog),這意味著在乙個衝刺中需求是被凍結的。
管理scrum過程有很多實施方法,從白板上的即時貼到軟體包。scrum最大的好處是它非常容易學習,而且應用scrum不需要太多的投入。詳見:http://zh.wikipedia.org/w/index.php?title=scrum&variant=zh-cn 方法的應用,同樣由專案規模、業務特點(需求是否穩定)等決定,而且還受企業文化、流程和領導意識等決定。如果需求穩定、專案規模比較大或週期比較長,一般會選用prince2,相反,可能會選擇dsdm或scrum,後兩者沒有本質區別,只是具有不同的最佳實踐。
10.如果客戶想要的東西太多,你在範圍和時間上怎樣跟他達成一致呢?
首先要向客戶說明,如果在某個時間內去做不可能完成的工作,其結果必然是質量得不到保證,或者所化的成本過大。應該沒有客戶想做賠本的生意,每個客戶都會重視質量,而不願意損害自己的利益。
然後,和客戶一起,按需求重要性、緊急性等對需求進行分類,分為不同的等級,然後從優先順序高的需求開始,來估算不同優先順序類別的需求實現的工作量。設定幾個不同的開發周期或交付時間,從而由使用者作出選擇,例如:
(1) 只做優先順序最高的那類需求,開發周期需要3個月;
(2) 做優先順序最高和優先順序高的那兩類需求,開發周期需要7個月;
(3) 做優先順序最高、高和中等的共3類需求,開發周期需要12個月;
(4) 所有需求都實現,開發周期需要18個月
使用者可能選(2), 先完成兩類需求,簽訂合同。等這合同履行很好之後,再繼續下一步的開發。
軟體包管理面試題
軟體包管理面試題 1 使 rpm命令安裝 解除安裝 更新ntp 0.7.12x86 64.rpm軟體包?rpm ivh ntp 0.7.12x86 64.rpm.rpm rpm e ntp 0.7.12x86 64.rpm rpm u ntp 0.7.12x86 64.rpm 2 光碟有 個http...
東華軟體面試題
東華軟體面試題1.include int main int argc,const char argv intx 23 dowhile x return0 結果 23 2.include int main int argc,constchar argv i 0,j 0 while i 7 if p i...
軟體測試面試題
01.為什麼要在乙個團隊中開展軟體測試工作?答 因為沒有經過測試的軟體很難在發布之前知道該軟體的質量,就好比iso 質量認證一樣,測試同樣也需要質量的保證,這個時候就需要在團隊中開展軟體測試的工作。在測試的過程發現軟體中存在的問題,及時讓開發人員得知並修改問題,在即將發布時,從測試報告中得出軟體的質...