1. 程式人生 > >軟體工程專業2

軟體工程專業2

軟體工程=最佳實踐

軟體系統的複雜性、動態性使得:

– 高深的軟體理論在軟體開發中變得無用武之地;

– 即使應用理論方法來解決,得到的結果也往往難以與現實保持一致;

因此,軟體工程被看作一種實踐的藝術:

– 做過越多的軟體專案,犯的錯誤就越少,積累的經驗越多,隨後作專案的成功率就越高;

– 對新手來說,要通過多實踐、多犯錯來積累經驗,也要多吸收他人的失敗與教訓與成功的經驗。

——當你把所有的錯誤都犯過之後,你就是正確的了。

 

在軟體工程師試圖解決“軟體危機”的過程中,總結出一系列日常使用的概念、原則、方法和開發工具;

這些實踐經驗經過長期的驗證,已經被證明是更具組織性、更高效、更容易獲得成功;

大部分的這些實踐都沒有理論基礎。

 “最佳實踐” :溝通階段應做的事情:

– 識別出你需要與客戶方的哪些人溝通;

– 找出溝通的最佳方式;

– 確定共同的目標、定義範圍;

– 評審範圍說明,並應客戶要求作出修改;

– 確定若干典型場景,討論系統應具備的功能/非功能;

– 簡要記錄場景、輸入/輸出、功能/非功能、風險等;

– 與客戶反覆討論、交換意見,對上述內容進行細化;

– 與客戶討論,為最終確定的場景、功能、行為分配優先順序;

– 評審最終結果;

– 雙方簽字;

 

軟體工程的核心概念

 

複用(Reuse)

在一個新系統中,大部分的內容是成熟的,只有小部分內容是全新的。

構造新的軟體系統可以不必每次從零做起;

直接使用已有的軟構件,即可組裝成新的系統;

複用已有的功能模組,既可以提高開發效率,也可以改善新開發過程中帶來的質量問題;

 

分而治之(Divide and Conquer)

將複雜問題分解為若干可獨立解決的簡單子問題,並分別獨立求解,以降低複雜性;

然後再將各子問題的解綜合起來,形成最初複雜問題的解。

 

折中(Trade-off)

不同的需求之間往往存在矛盾與衝突,需要通過折中來作出的合理的取捨,找到使雙方均滿意的點。

例如:

– 在演算法設計時要考慮空間和時間的折中;

– 低成本和高可靠性的折中;

– 安全性和速度的折中;

核心問題:如何調和矛盾( 需求之間、人與人之間、供需雙方之間,等等)

 

演化(Evolution)

軟體系統在其生命週期中面臨各種變化;

核心問題:在設計軟體的初期,就要充分考慮到未來可能的變化,並採用恰當的設計決策,使軟體具有適應變化的能力。

即:可修改性、可維護性、可擴充套件性;

 

 

 

NFP :Non-Functional Property  非功能特性、效能特性

– 例如:完備性、正確性、健壯性、可靠性、效率、可用性、可維護性、可移植性、清晰性、安全性、相容性、經濟性、商業質量等。