馮笑媚
摘要:在信息時代的推動下,很多傳統工業也陸陸續續地走上了信息自動化的步伐,如何讓傳統工業更好地走上信息自動化之路,這也是近幾年來我們一直在探討的問題,下面我將借此篇文章講術我們實現信息自動化系統的第一步——如何正確獲取需求。本文以《綠色車間檢測系統》項目為例講述了軟件系統需求獲取的技術的選擇,及其應用的過程。在本文中首先介紹了幾種常用的需求獲取的技術,然后討論了選用需求研討論會的主要理由與策略,然后通過一個簡例說明該技術使用的過程及效果,再通過部分功能的需求來討論使用其他技術獲取系統需求的必要性,最后簡要小結了選用多種技術獲取系統需求的意義及作用。
在項目開展期間,我擔任了系統分析、系統設計等大量工作。
綠色車間檢測系統是以車間為載體,融合自動控制技術、計算機技術、物聯網技術,將生產設備控制、環境監控、信息管理等功能有機結合,通過對生產環境設備的集中管理,提供更具綠色、安全、節能的工作環境。盡管我們做這類項目豐富的經驗,但是我們在開始開發項目之前也要先獲取到準確的系統需求。獲取系統需求是獲取哪些需求呢?一般情況下我們需要獲取業務需求、用戶需求、功能需求和信息需求等。
為了能準確的獲取需求,我們需要采用一些技術來幫助我們,目前常用的需求獲取技術有:
(1)需求研討論會,即可以建立一個由用戶、系統分析員和領域專家參加的聯合分析小組來共同完成需求的獲取。能夠減少交流上的問題。
(2)用戶訪談法,它是分析人員以個別訪談或小組會議的形式與用戶進行初步的溝通。
(3)模型驅動,是一類以定義明確的模型為理論基礎,依據模型指導和組織活動開展的需求獲取方法,建立用例模型是一種需求獲取的有效方法,其簡潔清晰的描述方式容易被軟件人員和用戶共同理解和接受。
(4)文檔考古,指對歷史存在的一些文檔進行研究,從帶有數據的文件、表單、報表等文檔中獲取所需信息的過程。
經過項目組的討論,我們決定在整個獲取系統需求的過程中,先采用了需求研討論會來獲取系統需求,因為該技術能夠在短暫而緊湊的時間段內使用用戶、技術人員及項目組人員可以在應用需求上達成共識、對操作過程盡快取得統一意見。
下面以一個簡單的例子來看,我們的系統需要對連接的生產設備的狀態進行實時監控,并顯示出來,我們不清楚各個生產設備的工作流程,因此很難把它的業務流程描述出來。如果只是按照我們自己的理解把業務流程做出來,很可能是不符合規定的。采用需求研討論會,可以從車間里各個崗位的負責人的工作經驗中提取出正確的業務流程,保證軟件功能的正確性和嚴謹性。
現在總結一下采用需求研討論會的實施過程。在召集會議之前,我們先把用戶交給我們的系統描述細致閱讀了,從中抽出了系統的需求,把功能清晰明亮的需求用用例模型描述出來,把不清晰的部分列舉出來,整理出會議討論主題;接著我們根據車間的生產流程,在每個崗位上都確定一個人員來參與會議,確定完人員名單后,我們把會議要討論的主題發給各位與會人員,讓各個與會人員提前看看討論的主題,如果是關系人可以確定的問題就可以提前把解決方案發給我們,這樣就可以減少專題討論會的工作量和時間;在開會的時候,我們讓經驗豐富的產品經理來當會議的主持人,負責引導與會人員圍繞我們不明確的需求來展開討論和進行頭腦風暴,直到需求確定下來為止;會議結束后,我們當天就把會議的紀要,以及需求說明書整理出來,發送給各位干系人查看并確認,確保用戶同意按需求說明書的要求開發系統。通過這個會議,我們成功地把綠色車間檢測系統不明確的需求都確定下來了。
需求研討論會雖然能幫我們快速地把需求確定下來,但該技術不夠靈活,因為很難找到所有關系人都有空的時間來集中開會,尤其是項目比較龐大的時候,組織會議就會有點吃力,因為涉及到的人員越多,集中開會的時間越難確定,開會的頻率也不能太高,很難不妨礙客戶的正常工作。
通過需求研討論會我們基本可以把系統的業務需求、用戶需求、功能需求確定下來,但是系統的業務流程及信息需求等其他的需求一時間也難以確定下來。我們一致認為可以借助其他的需求獲取技術來幫助,把功能業務需求、用戶需求、功能需求以外的其他需求確定下來,比如信息需求。我們一開始不清楚工作環境中的空氣質量進行實時監控的數據有哪些,為了準確把握好該模塊的信息需求,我們使用了用戶訪談來確定該模塊的需要處理的數據。以下是我們使用用戶訪談確定該模塊信息需求的過程。
首先,確定訪談的名單;鑒于該模塊是車間里空氣總質量的監控,我們找了負責管理車間的負責人來作為我們的訪談對象。然后我們把訪談的內容和問題確定下來,并提前發給我車間負責人。接著我們選擇了一名有豐富項目經驗的項目經理作為主持人,讓他根據訪談的內容和問題與訪談對象訪談。訪談結束后,我們快速地整理了訪談的紀要,并把該模塊需要處理的數據一一列舉出來,寫到需求說明書里,并讓用戶進行閱讀確定。經過與車間負責人的訪談,我們能夠及時、快速的得到了我們的信息需求。但是如果涉及到多部門的數據時,訪談的工作量就會增多。因此我們要根據需求的內容來考慮是否適合使用訪談。
由于我們打算采用面向對象的技術進行系統的開發,所以首先我們使用了基于用例的方法對需求專題討論會獲取到的需求進行提煉抽象建模,使用用例建模來描述項目的需求,可以幫助我們去理解用戶的業務和應用領域,后面我們可以運用面向對象分析和設計方法將用例轉化為對象模型來進行詳細設計。
為了更清楚系統的信息需求,我們通過文檔考古的方式查閱了各個崗位上工作者手頭上記錄設備的信息,設備操作指南,設備維護記錄等數據表及文件,在這些文檔中提取了設備信息維護系統中具體要保存處理的數據。
在實現對工作環境中的空氣質量進行實時監控的模塊功能時,我們對具體的流程不太清楚,因此我們通過了用戶訪談的方式與車間的負責人去了解具體的流程和操作。為了提高訪談的效率和效果,我們在與車間的負責人訪談前準備好了與該模塊相關的問題和相應的調查問卷,以便我們能得到更具體的業務流程及數據。
通過以上需求的獲取的技術,我們把整個系統的需求都確定下來,并編寫了需求說明書與用戶簽下了確認書,后續我們的開發也是按照該需求說明書作為依據完成的,效果也符合用戶的需求。從該項目可以看出系統需求獲取技術及應用,對我們軟件開發過程影響是很深遠的,需求獲取技術如何選擇應該根據需求的內容來決定,選用高效能的正確的方法,可以使我們軟件需求更準確,更有利于我們的軟件設計及實現,從而降低了軟件項目的風險。