5.5 案例五:設計的質量
閱讀以下關于信息系統項目管理過程中項目質量管理方面問題的敘述,回答問題1至問題3。
5.5.1案例場景
中培信息技術有限公司(Z公司 )曾經為K公司開發過一套信息系統,該系統涉及了K公司的所有主要業務。該系統中關于組織機構的業務規則如下:
(1)組織機構樹通過部門編碼體現層級和隸屬關系。即部門0001的下屬部門包括00010001、00010002,依次類推,根據代碼中包含的層級關系確定某 個部門在組織機構樹中的確切位置,該編碼由公司統一制定。
(2)任意一條業務數據隸屬于某個特定的部門。
(3)部門之間存在友好和互斥的關系。關系為友好的部門可以共享業務數據,關系為互斥的部門互相不能訪問對方的業務數據。
后來,K公司需要調整部門的組織結構,因此對系統提出了升級的要求:
(1)系統中的部門編碼需要更新為最新的企業標準。
(2)組織機構根據最新的企業標準重新生成。
(3)組織結構調整是不能丟失業務數據。、
(4)系統中可以保留組織機構調整的痕跡,業務數據可以追蹤除原屬于哪個部門,機構調整后屬于哪個部門。
(5)部門間友好和互斥的關系可能會被重新定義。
(6)升級后的系統需要能夠適應再次的組織機構調整而不需要再次升級。
項目經理老王接受了這個項目,經過細致的調研和分析,發現原系統存在如下缺陷:
(1)原系統中將企業對部門的標準編碼設計為部門主鍵,修改起來難度很大,容易發生數據不一致的問題。
(2)新的企業標準沒有考慮到原有企業標準,同是一個部門老王在原標準中為00010001,在新標準中為00010005,部門的層次也可能發生變化。
(3)業務數據中保存了隸屬部門編碼,系統已經使用近兩年,保存了大量的歷史業務數據。
(4)原系統在設計時將部門間的友好與互斥關系硬編碼在系統代碼中,且涉及面很廣,原系統中80%以上的程序存在這樣的硬編碼。
(5)不少業務邏輯和工作流程是根據特定的部門編碼進行判斷的,部門編碼的變化會造成業務混亂。
(6)原系統在設計時沒有考慮到組織機構調整的可能,也沒有對保留部門變革歷史的功能進行設計。
老王認為,需求已經非常明確,對于這個項目的關鍵是設計的質量,其中包括解決方案的設計和業務系統的改造兩部分。一旦設計出現偏差,返工的工作量會非常巨大,反之,整個項目還是容易控制的。但老王在如何提高設計質量方面卻犯了愁。
【問題1】(8分)
試以300字內回答,老王可以采取哪些措施提高設計的質量?
【問題2】(9分)
試以300字內回答,除設計外,老王還需要特別注意哪些工程活動。
【問題3】 (8分)
試以300字內回答,如何提高這些工程活動的質量。
5.5.2案例分析
這是一個開放式的案例分析題,案例中僅粗略地描述了項目背景的目標,針對如何提高項目質量進行發問,難度相對較大,需要仔細的分析。
前面一部分對項目背景和目標的描述無非是為了說明這么幾個問題:
(1)這是一個系統改造的項目。
(2)原系統中存在設計缺陷,沒有考慮過組織機構改革的可能性。
(3)需要大量更改原系統的程序,消除硬編碼。
(4)需要更改已有的業務數據,同時增加部門變革歷史的功能。
基于這些問題,案例的后半部分給出了老王的觀點:設計質量是項目的關鍵,需要提高設計的質量。結合案例后的問題,我們不難發現,案例的前半部分是引子,后半部分才是關鍵,也是該案例的題眼:如何提高項目的質量,顯然需要用項目質量管理的知識作答。
質量管理是項目管理中的一個知識域,但在PMBOK中并沒有給出具體的質量管理的方法,需要結合軟件開發和項目的特點給出特定的質量管理策略和方法。這也正是這個案例的用意所在,考察考生在面對實際的項目問題時需要采取哪些措施解決項目的質量問題。
我們首先從軟件工程的角度考慮一下軟件質量的問題。軟件的質量一直是軟件界近幾十年致力解決的問題,針對使用軟件提高軟件質量提出了很多的方法和理論。首先是軟件工程的理論,需要使用工程活動的方法進行軟件開發,從系統定義與分析開始,經過設計、實現,最終到驗證。在軟件工程中,人們提出了多種軟件開發模式和工程活動方法。在開發模式中,有瀑布模型、螺旋模型、迭代模型、噴泉模型等;在工程活動方法中,有自頂向下、結構化分析、面向對象分析、架構風格,等等。除此之外,還有一系列的軟件驗證方法,如軟件復審與軟件測試。縱觀這些林林總總的模式與方法,人們無非是想解決兩個問題:一是通過恰當的工程活動提高工作產品的質量;二是在工作產品完成后通過恰當的工程活動來保證該產品的質量。因為在軟件開發過程中,還有一個很明顯的特點,就是在分析、設計、實現和測試這些過程中,每一步都可能引入缺陷,且難以發現,而這些缺陷暴露得越晚,造成的后果就越嚴重,修改的代價就越高昂。開發活動需要盡量提前發現潛在的缺陷,驗證手段必不可少。
題目中問的是如何提高設計的質量,設計是承接分析、指導開發的一個關鍵環節,在這個環節中很容易引入難以發現的缺陷,而這些缺陷往往又會造成嚴重的后果。因此提高設計的質量是每個軟件項目都會遇到的問題,也是每個項目經理都會思考的問題。提高設計質量包括兩個層面的工作:在設計過程中提高設計的質量;在設計完成后對設計結果的質量檢查。在答題中需要分別給出相應的策略。
設計工作在分析工作之后,因此,充分的分析是保證設計質量的前提。對于這種改造型項目,原系統的功能、設計和實現的情況直接影響了設計的結果,原系統的情況就是要解決的問題域,’如果對原系統了解不足必然導致設計上的偏差。因此要想提高設計的質量,首先要充分了解原系統。
在設計時還應該選擇恰當的設計方法,如有可能可以考慮復用已有的解決案例,如分析模式與設計模式等。不過在這方面,案例中給出的信息甚少,顯然不是答題的重點。
根據項目背景的描述,這個設計工作并不簡單,需要論證的過程,設計方案的討論也是必需的。因此老王需要制定出相應的溝通計劃,組織必要的會議進行方案討論,若有必要還需要客戶和原系統的開發者參加。
在設計完成后還需要對設計結果進行質量檢查,對應這類活動,我們通常采用評審和走查的方式。評審和走查可以比測試更早地找出工作產品中的缺陷,用來檢查設計質量非常合適,可以避免缺陷在系統測試階段才被發現,降低修正缺陷的成本。
除了評審和走查外,對設計過程進行迭代也可以提前暴露設計的缺陷,并將這些缺陷反饋到后續的設計過程中,從總體上減少缺陷數,提高設計的質量。例如在可以將整個項目根據系統模塊進行劃分,首先升級一個模塊,然后把這個過程中發現的問題反饋到后續的迭代過程中。
如果能夠做好上述工作,設計就不會產生重大的偏差,保證設計的質量。
對于第二個問題,除設計外,老王還需要特別注意哪些工程活動。
在分析第一個問題是我們已經找到了一部分答案—分析。分析是設計活動的基礎,在錯誤的分析上不可能產生正確的設計。因此充分、細致地分析原系統是保證設計質量的前提。
除此之外,對于系統改造的項目,測試的工作顯得非常重要。同原系統開發相比,系統改造的總工作量相對較少,但測試的工作量卻應該超過原系統開始時的測試工作量。根據案例中的描述,超過80%的程序都存在硬編碼的問題,都需要修改。這些程序在修改后首先需要滿足同原系統功能一致,可以通過原系統測試用例的測試;其次還要保證與系統升級的目標一致,能夠滿足設計的 要求,這就需要開發新的測試用例進行測試。因此,如何規劃、組織、展開測試工作,也是老王需要特別注意的方面。
除了分析和測試外,其余的工程活動也是不可或缺的,不過相比之下,分析和測試工作更具特殊性,是老王必須特別注意的。
第三個問題與第二個問題是關聯的。有了第二個問題的答案,第三個問題就比較容易了。
如何提高分析活動的質量呢?對于案例中的項目來說,系統要解決的是原系統中的缺陷,原系統本身就是問題域,提高分析活動的質量也就是充分地分析原系統。對原系統的分析可以包括對原有業務功能、原設計方案和原程序的分析。對原系統中業務功能的分析需要同客戶一起進行,通過同客戶的溝通來把握原系統所實現的業務功能。對原設計方案的分析出了參考設計文檔外,最好能夠同原系統的開發者進行溝通,這樣的溝通往往能獲取到文檔之外的寶貴信息。例如,通過設計文檔僅能了解設計的結果,但與原系統開發者的溝通則可以了解到設計的思路。除了這些方法外,對分析的結果進行評審也是保證分析質量的一種有效的方法。
對于測試工作,上面已經講了很多,既需要保證修改后的代碼仍然與原系統功能一致,又要保證同系統升級的目標一致。
5.5.3參考答案
【問題1】(8分)
老王可以采取以下措施提高設計的質量:
(1)充分分析問題域是保證設計質量前提。(2分)
(2)組織必要的討論來確定概要設計的方案。(2分)
(3)采用迭代的方法驗證設計的正確性,提高設計的質量。(2分)
(4)對設計進行評審或走查。(2分)
【問題2】(9分)
除設計外,老王還需要特別注意以下工程活動:
(1)需要細致分析原有系統。(4分)
(2)對于這樣的改造項目,測試的難度和工作量很大,需要把握測試的工作。(5分)
【問題3】(8分)
如何提高這些工程活動的質量:
(1)在分析方面(4分)
①同客戶充分溝通,了解原系統的業務需求;
②閱讀原系統中的文檔和程序,掌握設計和實現的情況;
③如果可能,與原系統的開發者聯系,在原開發者的幫助下把握原系統;
④對分析的結果進行評審。
(2)在測試方面(4分)
①使用原系統開發過程中的測試用例進行回歸測試;
②針對改造后的系統開發新的測試用例進行測試。