從學習軟體以來,每個程式老師都會告訴我們要進行需求分析,而自己有時會簡簡單單需求分析一下,有時都不會管,然後每次寫程式都會删改到自己都不知道程式要有什麼功能,程式是用來做什麼的,越做越感覺定題與所實施得到的結果分開了很多,沒有了自己最初的設想。現在學習需求分析,感覺是自己的想法太簡單了。通過對以前程式編寫過程的反思,深刻的體會到了需求分析的重要性。“對需求分析工作事前千夫所指是有益的,而事後千夫所指是無畏的”。
一直以為程式才是軟體好壞的關鍵,總是忽略了對軟體的需求分析。許多資料表明,軟體需求分析是提高軟體品質的關鍵,也是決定一個軟體項目的關鍵。
通過對本書前兩篇的閱讀,對需求工程的原理以及基本知識都有了初步的了解。加之最近一段時間對需求工程的學習,以看到了需求工程對軟體開發的重要性。
在本書第一章中将軟體需求比作“阿喀琉斯之踵 ”————一個緻命的弱點。這或許也是中國軟體一直不好的關鍵所在吧。我們需要将“重業務、重系統”作為新一代軟體需求工程的重要概念。并且重新定位軟體需求并借助邏輯方法是軟體需求做到完整、準确、清晰、變化可控等等。軟體需求分為業務及資訊化規劃、使用者需求分析和系統需求分析。軟體需求既有内容上的特征又有形式上的特征,不同的特征是不同軟體需求工作的目标。
與傳統的軟體需求工程相比,新的軟體需求工程增加了需求規劃。需求規劃編制出有問題分析、目标分析、業務分析、系統分析構成的業務及資訊化規劃說明,用于指導需求開發工作和軟體工程個環節的工作。新軟體需求工程由業務研究、應用模組化、系統規劃、需求擷取、需求分析等10個業務活動結構。10個環節環環相扣,上一環節的輸出是下一環節的輸入。需求分析的好壞決定着項目的成敗,輕視業務分析、需求分析是目前軟體開發工作中普遍存在的弊病。要想做出好的軟體,就必須将業務分析、需求分析與系統和編碼放在同一等高的位置。
需求分析中的不同角色對于軟體的需求各有不同,這就形成了沖突。這就需要系統構架師能夠有客戶的思維吧,想客戶之所想。系統構架師應該就是客戶與軟體開發者的一個連結吧。需求工程不是一成不變的,它會随着新的理論、實踐過程中的總結、軟體開發技術的改進等等作出适應性的改變。在軟體開發過程中,需求風險是不可忽視和遺漏的,任何的錯誤(無論是了解還是程式設計)都可能帶來不可小觑的風險。
“需求工程是圓心,軟體工程是圓點”是需求工程和軟體工程間關系的真實寫照。我認為需求工程為軟體工程的基礎,需求工程為軟體工程做什麼、根據什麼做提供了一個依據、一個方向,而軟體工程是對需求工程的一種實作。
需求工程的三大理論之下又有着各子的知識體系,體系的不同,各有各的原則與方法。需求工程的基礎是普遍試用的,無論對于軟體工程還是其他工程領域。需求工程的專有知識涉及了軟體開發、體系構架和資訊資源等專屬軟體知識。需求規劃的特有知識包括了需求規劃、需求開發和需求管理。從以前的業務需求服從技術到現在的業務和技術開始互相關聯、互相制約再到未來的以業務為核心、技術與業務兩頭并重,需求分析的變化越來越大,這也展現了軟體開發對于需求工程的重視,這也可以看作是一種開發形式的轉變,一種開發思想的解放吧!
對于新加入的需求規劃,其關鍵在于問題、業務、系統三個類要素。提出問題、找到根源、找到症結是我們在解決問題時常說的定向、定位、定點。在我看來需求規劃的七個原則為我們對我們提出了需求分析七個需要注意的地方。雖然對需求工程的了解還不是很到位,但對于其基礎的概念了解還是可以的。需求工程雖然提到了很多的原則、模型等等,但都提出了以業務為主,技術為輔,可見需求工程的重要性。這些都為以後的開發,具體的學習打下了基礎。