軟體工程開發
第一章 軟體工程基本觀念
1.1 軟體工程的目標與常用模型
軟體工程的目標是提高軟體的質量與生產率,最終實現軟體的工業化生產。對開發人員而言,如果非得在質量與生產率之間分個主次不可,那麼應該是質量第一,生產率第二。
軟體工程的主要環節如圖1所示,軟體開發過程一般包括可行性與需求分析、系統設計、程式設計、測試和維護。
圖1 軟體工程環節
常見的軟體工程模型有:線性模型,漸增式模型,螺旋模型,快速原型模型,形式化描述模型等等。雖然線性模型比較簡單,太理想化,但是每乙個非線性的模型都能轉化為一系列簡單的線性模式,因此在其他模式中需要靈活運用線性模式。
1.2 軟體開發的基本策略
1.2.1 復用
在乙個新系統中,大部分的內容是成熟的,只有小部分內容是創新的。應該把大部分的時間用在小比例的創新工作上,而把小部分的時間用在大比例的成熟工作中。我們將具有一定整合度並可以重複使用的軟體組成單元稱為軟構件。軟體復用可以表述為:直接使用已有的軟構件,即可組裝(或加以合理修改)成新的系統。這樣可以提高生產率和質量。
圖2應用軟構件產生應用軟體
1.2.2 分而治之
我們可以把複雜的問題分解成n個簡單的問題,再逐個尋求解決方法。但是最終的目的是要保證單個的簡單問題可以通過程式實現,組裝後能夠使原本複雜的問題得到合理解決。
1.2.3 優化——折衷
優化是用以優化軟體的各個質量因素,但不能面面俱到,應折衷,其目標就是協調各個質量因素,實現整體質量最優。而不能盲目得拆東牆,補西牆。
第二章 軟體開發過程各個環節介紹
2.1 可行性分析與需求分析
2.1.1 可行性分析要求
可行性分析是從經濟、技術、市場與政策及人員方面分析這個專案做還是不做。
2.1.2 需求分析要求
當確定做之後,我們就要與客戶交流,進行需求分析,但由於客戶表達不清、需求自身經常變動或分析人員理解有誤,都會導致需求分析困難。因此,有必要通過請教行家或者分析同型別產品,來做進一步的分析。
2.2 系統設計
2.2.1 體系結構設計
體系結構就如同人體中的骨架,是軟體系統中最本質的東西。其中層次結構和客戶機/伺服器結構是兩種非常通用的軟體體系結構。每個系統均有乙個體繫結構,我們在沒有必要地情況下不可以修改。
2.2.2 模組設計
模組設計過程不僅要考慮本身提供什麼樣的功能,還要考慮該模組與其他模組如何交流。常用以下三個特徵進行模組優劣的評價:「資訊隱藏」、「內聚與耦合」和「封閉—開放性」。
模組的資訊隱藏可以通過介面設計來實現,執行模組的功能或與模組交流資訊必須且只須通過呼叫公有介面來實現。
內聚是模組內部各成分之間的關聯度,而耦合是模組間的依賴程度,在模組設計時應做到強內聚,弱耦合。
2.2.3 資料結構與演算法設計
在演算法設計時我們主要要從時間和空間的角度考慮軟體的效率。時間與空間的優化也應該採取折中的方式。
2.2.4 使用者介面設計
人機介面設計應從合適性、風格和廣義美上著手。做到吸引眼球和諧,才能吸引客戶。
2.3 程式設計
本節主要講述了程式設計的一些小注意事項,需養成良好的程式設計規範。
1、命名約定
(1)巨集定義用大寫字母加下劃線表示,如max_length;
(2)函式用大寫字母開頭的單詞組合而成,如setname, getname ;
(3)指標變數加字首p,如 *pnode ;
(4)bool 變數加字首b,如 bflag ;
(5)int 變數加字首i,如 iwidth ;
(6)float 變數加字首f,如 fwidth ;
(7)double變數加字首d,如 dwidth ;
(8)字串變數加字首str,如 strname ;
(9)列舉變數加字首e,如 edrawmode ;
(10)類的成員變數加字首m_,如 m_strname, m_iwidth ;
2、使用斷言:使用assert函式可以追蹤斷點,檢查程式是否有出錯。
3、new、delete與指標:在c中是malloc與free,在申請記憶體後,要記得釋放。要防止指標指向已釋放的記憶體。
4、使用const :const可定義有型別的常量,可確保此常量不被改變。
5、不要將bool值true和false對應於1和0進行程式設計。
2.4 測試與改錯
2.4.1 測試
測試的目的在於發現盡可能多的錯誤,而不是為了說明程式中沒有錯誤。
測試可分為α測試和β測試。α測試是公司內部人員進行的測試,其中開發人員要做白盒測試,就是已知各模組的結構進行單步除錯,而測試小組要做黑盒測試,主要是看模組介面是否正確,輸出結果是否正確。β測試是請使用者過來試用,發現在試用中出現的一些問題,提交測試報告。
2.4.2 改錯
在發現錯誤之後需要及時大膽得修改,但是修改之後還要重新測試,以免引入新的錯誤。
2.5 維護與再生
2.5.1 維護
軟體維護劃分為主要的三類:糾錯性維護、適應性維護和完善性維護。
(1)糾錯性維護。由於前期的測試不可能找出所有潛在的錯誤,使用者在使用軟體時仍將會遇到錯誤,診斷和改正這些錯誤的過程稱為糾錯性維護。
(2)適應性維護。由於新的硬體裝置不斷推出,作業系統和編譯系統也不斷地公升級,為了使軟體能適應新的環境而引起的程式修改和擴充活動稱為適應性維護。
(3)完善性維護。在軟體的正常使用過程中,使用者還會不斷提出新的需求。為了滿足使用者新的需求而增加軟體功能的活動稱為完善性維護。
2.5.2 再生
再生工程主要出於如下願望:(1)在商業上要提高產品的競爭力;(2)在技術上要提高產品的質量。再生工程與維護的共同之處是沒有拋棄原有的軟體。再生工程主要有三種型別:重構、逆向工程和前向工程。 重構是再原程式上修改,不改變體系結構。而逆向工程是從其他同類產品中提取有用資訊,再加以修改。前向工程也稱預防性維護,則會根據需求對軟體進行預防功能的完善,減少未知錯誤發生。
第三章 小結
看完《軟體工程思想》之後的一些感受。
1、 在軟體程式設計的時候不要過分依賴一些開發書籍,要在尊重原程式的基礎上,新增自己的想法,而不是生搬硬套。
2、 需求分析很重要,要先明確需求,然後要在設計的時候一邊程式設計一邊根據需求的改變而改變,越早修改,代價越小。
3、 程式設計的時候越簡潔越好,這樣便於後人閱讀理解修改,不要過多得使用程式設計中鮮為人知的技巧,適當新增解釋性的注釋。
4、 在程式設計中,錯誤無大小,要正視自己的不足,吸取經驗教訓,及時改正。
5、 做專案的是團隊而非個人,在整個團隊中,每個人都必須將自己的工作認真完成好,引用乙個公式:成功=意願*方法*行動,如果每個人每一步只及格的話,最後就只完成了21.6%,而團隊裡面每個人相乘,所做的工作就更少了,因此每個人都必須付出100%的激情與努力。
6、將自己經常犯的程式設計錯誤記錄下來,製成**貼在計算機旁邊。
軟體工程 開發模型軟體工程 開發模型
瀑布模式 螺旋模型 快速原型模式 增量模式 噴泉模型 演化模型 特點 推遲實現的觀點 質量保證 缺點 限制條件 優點 缺點 很難讓使用者確信這種演化方法的結果是可以控制的.建設週期長,而軟體技術發展比較快,所以經常出現軟體開發完畢後,和當前的技術水平有了較大的差距,無法滿足當前使用者需求.核心 在於...
軟體工程開發模式
1 瀑布模型是由w.w.royce在1970年最初提出的軟體開發模型,瀑布式開發是一種老舊的計算機軟體開發方法。瀑布模型式是最典型的預見性的方法,嚴格遵循預先計畫的需求分析 設計 編碼 整合 測試 維護的步驟順序進行。步驟成果作為衡量進度的方法,例如需求規格,設計文件,測試計畫和 審閱等等。瀑布式的...
軟體工程 開發模型
為了指導軟體開發,可以用不同的方式將軟體生命週期中的所有開發活動組織組織起來從而形成不同的開發模型。瀑布模型嚴格遵守軟體生命週期各階段的固定順序 計畫 分析 設計 程式設計 測試和維護,上一階段完成才能進入到下一階段,整個模型像乙個飛流直下的瀑布一下,如圖所示 特點 缺點 限制條件 優點 缺點 核心...