1. 程式人生 > >軟體工程概論常用問答

軟體工程概論常用問答

說實話,這是為了考試準備的。明天是是軟體設計與體系結構的考試。。

雖然搞ACM,但是自己的專業本行還是不能丟掉啊。。況且自己的ACM實在是渣。

這個六月份把所有的考試都努力刷個高分,GPA刷上去,為未來做準備。。

事實上,我知道這些理論性的東西,比ACM,軟體專案開發什麼的更加重要,但是實在是太枯燥了。

知道自己太過於急功近利了。已經大二了,剩下的時間不多,這種心態還是要好好克服一下。

開始準備考試吧!

問:

1、什麼是軟體工程?軟體工程的三要素是什麼?

軟體工程就是將系統的、規範的、可度量的方法應用於軟體的開發、執行和維護過程,以及對上述方法的研究。軟體工程是用工程,科學和數學的原則與方法,研究和維護計算機軟體的有關技術以及管理方法。

一般認為軟體工程由方法,工具和過程組成。

軟體工程方法為軟體開發提供了“如何做”的技術。它包括了多方面的任務,比如專案計劃於估算、軟體系統需求分析、資料結構、系統總體結構的設計、演算法過程的設計、編碼、測試以及維護等。

軟體工具為軟體工程方法提供了自動或者半自動的軟體支撐環境。目前,已經退出了許多軟體工具。將這些軟體工具整合起來,建立起稱之為計算機輔助軟體工程的軟體開發支撐系統。換句話說,也就是將各種軟體工具,開發激起和一個存放開發過程資訊的工程資料庫組合起來形成一個軟體工程環境。

軟體工程的過程將軟體工程的方法和工具綜合起來,以達到合理、及時地進行計算機軟體開發的目的。過程定義了使用的開發模型,保證了開發的質量。

2、軟體設計應該包含哪些要素?

軟體設計最終要提供一種解決方案,用於描述如何實現一個滿足需要的軟體。作為一個完整的軟體設計方案,它應該包含以下一些組成要素。

(1)、目標描述。設計方案需要清楚地描述它要解決的問題和將要達到的目標。

(2)、設計約數。設計目標的獲得通常要在某些約束的限制範圍內,這些約束定義了要解決問題的解空間。

(3)、產品描述。設計活動的結果必須以一種對被設計的產品進行描述的方式呈現出來。

(4)、設計原理。工程化的設計活動必須以一定的科學原理和技術手段為基礎、它們將表明問題可以通過該設計得到合理地解決。

(5)、開發規劃。工程化的設計活動不僅需要讓人知道該設計能解決問題,還需要讓人們瞭解該設計在實際開發中是可行的,以及如何實現該設計。

(6)、使用描述。產品經常在某些特定條件下才能被可靠、高效地使用,並達到最初的設計目標。因此,描述產品如何使用非常重要。

3、軟體體系結構與軟體設計有何關係?軟體體系結構的出現有何必然性和重要意義?

軟體體系結構設計作為軟體設計過程中的必要步驟之一,能夠在抽象級別上描述整個軟體系統的架構,成為大規模複雜軟體系統設計中的必不可少的步驟。

軟體體系結構將構件與構件之間的連結作為軟體體系結構的基本組成部分,使軟體從程式碼複用發展到設計複用,過程複用,為基於體系結構的軟體開發提供了強有力的支援。

4、在軟體設計過程中,人們需要重點考慮軟體體系結構的哪些方面?

一、軟體體系結構的描述:需要考慮的一個問題就是如何對體系結構進行描述和建模。軟體體系結構描述可以從以下三個層次進行考慮:

(1)、軟體體系結構中包含的基本概念,即軟體體系結構模型由哪些元素組成,這些組成元素之間按照何種原則進行組織。

(2)、軟體體系結構描述語言(ADL),在軟體體系結構基本概念的基礎上,適當地以形式化的方法對一個特定的體系結構進行描述和建模。

(3)、軟體體系結構的多視圖表示,即從不同的視角描述特定系統的體系結構,從而得到多個檢視,並且將這些檢視組織起來以描述軟體體系結構的整體。

二、軟體體系結構的設計方法

軟體體系結構的設計方法是指通過一系列的設計活動,獲得滿足系統功能性需求和非功能性需求的軟體體系結構模型。軟體體系結構描述只是提供一種表達軟體體系結構的方式,但如何獲得對體系結構的表示則是軟體體系結構設計方法需要考慮的。軟體體系結構設計過程的本質在於將系統分解成相應的組成元素,並且將這些元素組裝成一個系統。

三、軟體體系結構的分析方法

軟體體系結構的分析方法可以通過分析體系結構設計所產生的模型,預測系統的質量屬性並界定存在的潛在風險。軟體體系結構分析是設計過程中必不可少的,因為涉及得到的體系結構模型的質量將會直接影響後續設計和實現結果的質量,只有通過分析和評審並認為體系結構模型達到要求後,才能繼續進行後續設計活動。

四、軟體體系結構的複用

總結和記錄軟體經驗是軟體工程的重要目標之一,軟體體系結構設計也強調對設計經驗的總結和複用。隨著軟體規模和複雜度的提高,軟體複用的力度越來越大,從程式碼進行復用發展到設計複用,模式複用,過程複用,如果軟體體系結構能夠得到複用,將極大地提高軟體開發的效率和最終軟體的質量。軟體體系結構的複用既包括對解決共性問題的軟體體系結構進行復用,也包括對特定領域中的軟體體系結構進複用。