軟件工程——快速掌握結構化開發方法

一個案例

小王在一家IT公司擔任項目經理,主要負責IT項目的開發。公司老闆找到小王,要求小王開發一個名片自動識別APP產品,人們用手機掃描一下名片,名片上的信息就能自動識別並存儲起來,當然需要使用者登錄APP纔可以。老闆要求小王帶領團隊儘快完成名片自動識別APP產品的系統分析、設計和編碼,讓產品早日上線。小王決定使用他熟悉的結構化開發方法來開發該產品。在後面的敘述中,名片自動識別APP產品也稱爲系統或項目。

 

結構化開發方法的階段

一般來說開發方法都會將開發過程分爲幾個階段,結構化開發方法將開發過程分爲系統規劃階段、系統分析階段、系統設計階段、系統實施階段和系統維護階段,這五個階段也是軟件項目的開發生命週期,面向對象開發方法也遵循這五個階段。在結構化開發方法中,系統分析階段也稱爲結構化分析,系統設計階段稱爲結構化設計,系統實施階段稱爲結構化編程。

系統規劃階段主要是從技術、資金、市場前景等方面確定軟件是否可做,該怎麼做的問題?例如,課程案例產品涉及到圖像識別技術,項目團隊是否有足夠的技術力量完成圖像識別的研發,如果沒有圖像識別的技術力量,該如何做,是否可以考慮對接百度的AI接口。

在結構化分析階段主要是確定軟件要解決哪些問題?用什麼方式來解決這些問題? 軟件最終提供哪些功能。 例如,在課程案例中,老闆只是提到了用手機掃描名片,至於具體怎麼掃描、用戶操作流程、識別名片哪些信息、對識別的名片有無質量要求,這些問題都需要小王調研和細化需求,並最終確定軟件的功能。

在結構化設計階段主要是確定軟件的技術架構、功能模塊、用戶界面、數據構成等內容,軟件採用何種技術架構?功能模塊是如何劃分的?用戶看到的軟件是什麼樣子?數據庫有哪些表?這些都是要在結構化設計階段完成的。

在結構化編程階段主要確定軟件開發平臺的選型、軟件產品的測試計劃、軟件部署等內容。例如,在課程案例中,APP開發肯定要選擇Java平臺,如果要支持iPhone手機的話,還要選擇IOS平臺;在編碼過程中,爲保障編碼質量,還需要確定測試計劃,對產品進行單元測試和集成測試;部署軟件時是選擇阿里雲,還是騰訊雲。

系統維護階段主要完成系統維護,雖然經過嚴格測試,系統在運行過程中,依然會出現各種各樣的問題需要維護,同時新的需求也要求系統不斷地升級版本。

公司老闆讓小王儘快帶領團隊對項目進行系統分析、設計和編碼。因此小王只需注重結構化開發方法的結構化分析、結構化設計和結構化編程三個階段就可以了。

 

結構化分析階段

系統分析階段也稱爲結構化分析,該階段定義系統需要做什麼(功能需求),系統需要存儲和使用哪些數據(數據需求),需要什麼樣的輸入和輸出,以及如何把這些功能結合在一起來完成任務。在系統分析階段使用的主要圖形模型是數據流圖(DFD),它顯示了系統的輸入、處理、存儲和輸出以及它們如何在一起協調工作。

小王首先要做的工作是做詳細的系統需求調查,蒐集系統數據流動和業務處理過程的資料和數據,以便深入瞭解系統中數據的流動、業務處理過程和方法,爲建立系統分析階段的模型提供充分的依據。在課程案例中,小王需要調查用戶對自動識別名片這個產品的看法和需求,用戶對產品的期望,有哪些類型的名片,名片上具體有哪些信息,用戶希望怎麼管理名片等內容。

在系統需求調查中,小王通過識別引起系統以某種方式做出響應的所有事件,來識別系統功能需求,關於事件在需求分析課程會詳細講述。下表是名片自動識別APP產品功能需求的主要事件。

 

該項目的主要事件是命名識別事件,觸發器是用戶使用系統APP掃描名片,事件的來源是由用戶發起,事件的目的是將識別的名片信息存儲到數據庫,事件的響應是系統識別名片並獲取名片的信息,該事件的前置條件是使用者要登錄系統,技術要求是,一是調用手機攝像頭拍攝名片,二是調用百度AI接口識別名片信息,三是隻能識別印刷體的名片,事件的性能要求是在通用情況下,請求響應事件小於2秒。

小王將識別的事件(功能需求)使用數據流圖建立系統功能需求模型。數據流圖的建模一般是自上而下,最頂層的是系統的概括模型,然後逐步分解爲第一層數據流圖、第二層數據流圖、……、第N層數據流圖。

 

圖 1 名片自動識別APP數據流圖頂層圖

 

圖 2 名片自動識別APP數據流圖一層圖

上圖是數據流圖的一層圖,一層圖是對頂層圖的任務分解,從一層圖可以看出,任務被分解爲使用者註冊、使用者登錄、掃描名片、識別名片四個模塊,外部實體有使用者、名片、百度AI接口,存儲的信息有使用者信息、名片信息。

數據模型根據系統需要存儲信息的事物類型來創建(實體)。例如,在表格1所示的事件中,系統需要知道使用者、名片的細節信息。這種模型被稱爲實體—聯繫圖(ER圖),實體—聯繫圖中實體對應於數據流圖中的需要存儲信息的事務。

 

圖 3 紙質名片識別入庫ER圖

 

結構化設計階段

該階段主要完成系統的技術架構、各模塊的功能設計、數據項以及UI界面設計等內容。技術架構主要描述系統的結構組成,包括系統的各個模塊、模塊間的關係、系統的對外接口等內容。在結構化分析方法中,技術架構可以由分層的數據流圖轉換而來,技術架構的主要模型是結構圖。

 

圖 4 名片自動識別APP結構

上圖是項目的技術架構圖,項目分爲四個模塊,分別是使用者註冊、使用者登錄、掃描名片、識別名片,圖中用虛線表示的模塊爲第三方公司提供的模塊,百度AI接口由百度公司提供。識別名片模塊調用百度AI接口完成名片圖像的信息識別。

在結構化設計階段,模塊的功能設計主要模型是每個模塊詳盡的數據流圖(包括數據字典)、業務流程圖、界面圖。下面給出使用者註冊模塊的數據流圖和數據字典。

 

使用者註冊模塊數據流圖

 

圖 5 使用者註冊數據流圖

使用者在註冊頁面填寫註冊信息,使用者提交註冊信息後,註冊模塊將註冊信息存儲到數據庫。

數據字典

 

數據字典是對數據流圖的數據進行詳細的說明,這是註冊模塊數據流圖中使用者信息的數據字典,通過數據字典可以看出使用者信息主要有用戶名和用戶登錄密碼兩個數據項,數據類型都是字符串,用戶名的有效範圍爲3至50個字符,用戶登錄密碼的有效範圍爲20個字符以內。

結構化編程階段

結構化編程主要完成系統編碼、系統測試、項目部署等相關工作。系統編碼主要採用結構化編程技術,在結構化設計階段劃分的每個模塊都可以作爲一個子程序,子程序內部採用順序、選擇、重複三種基本控制結構。系統測試和項目部署工作同其它開發方法都基本相同,這裏就不再詳細說明。

 

總結回顧

1、結構化開發方法是使用結構化分析、結構化設計、結構化編程技術的系統開發方法。結構化分析幫助開發人員定義系統需要做什麼(功能需求),系統需要存儲和使用哪些數據(數據需求),需要什麼樣的輸入和輸出,以及如何把這些功能結合在一起來完成任務;結構化設計採用自頂向下的程序設計,把複雜的程序分解爲多個程序模塊;結構化編程將複雜的程序分解爲多個子程序,每個子程序只有一個入口和一個出口,在子程序內部採用順序、選擇、重複三種基本控制結構。

2、在結構化開發方法中。首先要調查並識別系統需求,使用事件描述系統功能需求是常用的方法;然後使用數據流圖建立功能需求模型,建模一般是自上而下,最頂層的是系統的概括模型,然後逐步分解爲第一層數據流圖、第二層數據流圖、……、第N層數據流圖;數據流圖中的實體或需要存儲信息的事務可以使用ER圖建立數據模型。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章