1. 什麼是軟件工程?目前有哪幾種主要的軟件工程方法?<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />
概括地說,軟件工程是指導計算機軟件開發和維護的一門工程學科.採用工程的概念、原理、技術、和方法來開發與維護軟件,把經過時間考驗而證明正確的管理技術和當前能夠得到的最好的技術方法結合起來,以經濟地開發出高質量的軟件並有效地維護它,這就是軟件工程。
但軟件工程一直以來都缺乏一個統一的定義,很多學者、組織機構都分別給出了自己的定義。
主要有傳統方法也稱爲經典軟件工程方法或生命週期方法或結構化範型和麪向對象方法。
2、流程圖與數據流圖有什麼主要區別?
(1)數據流圖(date flow diagram , DFD),是SA方法中用於表示系統邏輯模型的一種工具,它以圖形的方式描繪數據在系統中流動和處理的過程,由於它只反映系統必須完成的邏輯功能,所以它是一種功能模型,是從數據的角度來描述一個系統的;而流程圖則是從對數據加工的角度來描述系統的;
(2)數據流圖中的箭頭是數據流,而流程圖中的箭頭則是控制流,它表達的是程序執行的次序;
(3)數據流圖適合於宏觀地分析一個組織業務概況,而程序流程圖只適合於描述系統中某個加工的執行細節。
(4)數據流程圖應該重點描述了數據加工的過程,主要是模塊內部,數據流圖則是描述模塊之間的關係。
3.軟件需求分析的任務是什麼?有哪些主要步驟?
需求分析的基本任務是深入描述軟件的功能和性能、確定軟件設計的約束和軟件同其它系統元素的接口細節、定義軟件的其它有效性需求,總之,需求分析的任務就是藉助於當前系統的邏輯模型導出目標系統的邏輯模型,解決目標系統的 “做什麼” 的問題。
主要步驟:
1.問題識別
(1) 功能需求:明確所開發的軟件必須具備什麼樣的功能。
(2) 性能需求:明確待開發的軟件的技術性能指標。
(3) 環境需求:明確軟件運行時所需要的軟、硬件的要求。
(4) 用戶界面需求:明確人機交互方式、輸入輸出數據格式。
2. 分析與綜合,導出軟件的邏輯模型
分析人員對獲取的需求,進行一致性的分析檢查,在分析、綜合中逐步細化軟件功能,劃分成各個子功能。用圖文結合的形式,建立起新系統的邏輯模型。
3. 編寫文檔
(1) 編寫“需求規格說明書”,把雙方共同的理解與分析結果用規範的方式描述出來,作爲今後各項工作的基礎。
(2) 編寫初步用戶使用手冊,着重反映被開發軟件的用戶功能界面和用戶使用的具體要求,用戶手冊能強制分析人員從用戶使用的觀點考慮軟件。
(3) 編寫確認測試計劃,作爲今後確認和驗收的依據。
(4) 修改完善軟件開發計劃。在需求分析階段對待開發的系統有了更進一步的瞭解,所以能更準確地估計開發成本、進度及資源要求,因此對原計劃要進行適當修正。
4.簡述結構化分析、設計的要點:
結構化分析方法適合於數據處理類型軟件的需求分析。
其要點是"自頂向下" 地開發系統,由整體到各組成部分,由表及裏,由抽象到具體,逐步求精.
(1) 模塊化
(2)由頂向下,逐步求精.
(3)上層模塊分解爲下層模塊,有三種不同的結構形式,即順序結構,選擇結構和循環結構.
5.數據字典包含哪些主要內容?
數據字典通常包括數據項、數據結構、數據流、數據存儲和處理過程五個部分.
據字典內容包括:
數據庫中所有模式對象的信息,如表、視圖、簇、及索引等。
分配多少空間,當前使用了多少空間等。
列的缺省值。
約束信息的完整性。
用戶的名字。
用戶及角色被授予的權限。
用戶訪問或使用的審計信息。
其它產生的數據庫信息。
6.軟件測試的目標是什麼,有哪幾種主要有測試方法?
軟件測試的目標:
(1)測試是爲了發現程序中的錯誤而執行程序的過程;
(2)好的測試方案是極可能發現迄今爲止尚未發現的錯誤的測試方案;
(3)成功的測試是發現了至今爲止尚未發現的錯誤的測試。
軟件測試的方法有動態測試、靜態測試和正確性證明3種。
7.白盒測試主要有哪些覆蓋?
語句覆蓋、判定覆蓋、 條件覆蓋、判定/條件覆蓋、條件組合覆蓋、 點覆蓋、 邊覆蓋、路徑覆蓋
8、選擇一種程序設計語言的主要有哪些依據?
爲了使程序容易測試和維護以減少生命週期的總成本,選用的高級語言應該有理想的模塊化機制,以及可讀性好的控制結構和數據結構;爲了便於調試和提高軟件可靠性,語言特點應該使編譯程序能夠儘可能多地發現程序中的錯誤;爲了降低軟件開發和維護的成本,選用的語言應該有良好的獨立編譯機制。上述這些要求是選擇語言的理想標準,但是在實際選用語言時不能僅僅考慮理論上的標準,還必須同時考慮實用方面的各種限制。
(1)系統用戶的要求
(2)可以使用的編譯程序
(3)可以得到的軟件工具
(4)系統規模
(5)程序員的知識
(6)軟件可移植性要求
(7)軟件的應用領域
9.軟件的維護的目標是什麼,有哪幾種維護類型?
糾正在使用過程中暴露出來的錯誤而進行的改進性維護,適應外部環境的變化而進行的適應性維護,改進原有的軟件而進行的完善性維護,以及改進將來的可維護性和可靠性而進行的預防性維護。
軟件維護的分類:
軟件維護主要劃分爲糾錯性維護、適應性維護和完善性維護。
(1)糾錯性維護。由於前期的測試不可能揭露軟件系統中所有潛在的錯誤,用戶在使用軟件時仍將會遇到錯誤,診斷和改正這些錯誤的過程稱爲糾錯性維護。
(2)適應性維護。由於新的硬件設備不斷推出,操作系統和編譯系統也不斷地升級,爲了使軟件能適應新的環境而引起的程序修改和擴充活動稱爲適應性維護。
(3)完善性維護。在軟件的正常使用過程中,用戶還會不斷地提出新的需求。爲了滿足用戶新的需求而增加軟件功能的活動稱爲完善性維護。
10.簡述提高軟件質量的主要措施。
複審:是在軟件生命週期每個階段結束之前,都採用一定的標準對該段產生的軟件配置成分進行嚴格的正式或非正式的檢測。
複查:是檢查已有的材料,以斷定在軟件生命週期某個階段的工作是否能夠開始或繼續。
管理複審:是向開發組織或使用部門的管理人員提供有關項目的總體狀況、成本和進度等方面的情況,以便他們從管理角度對開發工作進行審查。
測試:包括測試計劃、測試過程和測試結果3個階段。
11.面向對象如何實現模塊獨立性,其偶合和內聚的含義是什麼?
因爲對象是由數據及可以對這些數據施加的操作所組成的統一體,而且對象是以數據爲中心的,操作圍繞對其數據所需做的處理來設置,沒有無關的操作。因此,對象內部各種元素彼此結合得很緊密。內聚性相當強,由於完成對象所需要的元素(數據和方法)基本上都被封裝在對象內部,它與外界的聯繫自然就比較少。因此,對象之間的耦合通常比較鬆。總之,面向對象使用對象、類、繼承和消息的方法,既使用類和繼承等機制,而且對象之間僅能通過傳遞消息實現彼此通信來實現模塊的獨立性。
12.面向對象和麪向過程軟件工程有哪些區別?
(1)面向過程就是分析出解決問題所需要的步驟,然後用函數把這些步驟一步一步實現,使用的時候一個一個依次調用就可以了。面向對象是把構成問題事務分解成各個對象,建立對象的目的不是爲了完成一個步驟,而是爲了描敘某個事物在整個解決問題的步驟中的行爲。
(2)面向過程是把一件事一項工程分解成爲一個個小的功能,用一個個函數來實現.
面向對象是把事情看成是一個個小的對象組成的,或者說一個個小部分組成的,這些對象之間的相互關係,構成了整個項目. 在面向對象的思想中,萬物皆對象。而"類",就是對象的抽象或者說是概括。
13.簡述對象、類、消息、方法的基本概念。
(1)對象是人們要進行研究的任何事物,從最簡單的整數到複雜的飛機等均可看作對象,它不僅能表示具體的事物,還能表示抽象的規則、計劃或事件。
(2)類是具有相同或相似性質的對象的抽象。對象的抽象是類,類的具體化就是對象,也可以說類的實例是對象。類具有屬性,它是對象的狀態的抽象,用數據結構來描述類的屬性。 類具有操作,它是對象的行爲的抽象,用操作名和實現該操作的方法來描述。
(3)對象之間進行通信的結構叫做消息。在對象的操作中,當一個消息發送給某個對象時,消息包含接收對象去執行某種操作的信息。發送一條消息至少要包括說明接受消息的對象名、發送給該對象的消息名(即對象名、方法名)。一般還要對參數加以說明,參數可以是認識該消息的對象所知道的變量名,或者是所有對象都知道的全局變量名。
(4)類中操作的實現過程叫做方法,一個方法有方法名、參數、方法體。
14.簡述面向對象分析設計的三個模型。
答:三個模型:對象模型、動態模型、功能模型
(1)對象模型描述系統的靜態結構,包括類和對象,它們的屬性和操作,以及它們之間的關係。構造對象模型的目的在於找出與應用程序密切相關的概念。對象模型用包含對象及對象的關係圖表示。
(2)動態模型着重於系統的控制邏輯,考察在任何時候對象及其關係的改變,描述這些涉及時序和改變的狀態。動態模型包括狀態圖和事件跟蹤圖。狀態圖是一個狀態和事件的網絡,側重於描述每一類對象的動態行爲。事件跟蹤圖則側重於說明系統執行過程中的一個特點“場景”,也叫做腳本(scenarios),是完成系統某個功能的一個事件序列。腳本通常起始於一個系統外部的輸入事件,結束於一個系統外部的輸出事件。
(3)功能模型着重於系統內部數據的傳送和處理。功能模型表明,通過計算,從輸出數據能得到什麼樣的輸出數據,但不考慮參加計算的數據按什麼時序執行。功能模型由多個數據流圖組成,它們指明從外部輸出,通過操作和內部存儲,直到外部輸出的整個數據流情況。功能模型還包括了對象模型內部數據間的限制。功能模型中的數據流圖往往形成一個層次結構,一個數據流圖的過程可以由下一層的數據流圖作進一步的說明。
注:(lockepeak製作)