軟件過程模型
1. 瀑布模型:
五個階段:需求分析、設計、編碼、測試、運行與維護。
為軟件的開發和維護提供了一種有效的管理模式,它是以文檔作為驅動、合適于軟件需求很明確的軟件項目模型。瀑布模型假設,一個待開發的系統需求是完整的、簡明的、一致的,而且可以先于設計和實現完成之前產生。
優點:容易理解、管理成本低;強調開發的階段性早期計劃及需求調查和產品測試。
缺點:
客戶必須能夠完整、正確和清晰地表達他們的需求;
在開始的兩個或三個階段中,很難評估真正的進度狀態;
當接近項目結束時,出現大量的集成和測試工作;
直到項目結束之前,都不能演示系統的能力
需求或設計中的錯誤往往只有到了項目后期才能夠被發現,對于項目風險的控制能力較弱
2. 增量模型:
優點:
具有瀑布模型的所有優點
第一個可交付版本所需要的成本和時間很少
開發由增量表示的小系統所承擔的風險不大
由于很快發布了第一個版本,因此可以減少用戶需求的變更
運行增量投資,即在項目開始時,可以僅對一個或兩個增量投資
缺點:
如果沒有對用戶的變更要求進行規劃,那么產生的初始化增量可能會造成后來增量的不穩定
如果需求不像早期思考的那樣穩定和完整,那么一些增量就可能需要重新開發,重新發布
管理發生的成本、進度和配置的復雜性可能會超出組織的能力
3. 演化模型:
迭代的過程模型,使得軟件開發人員能夠逐步開發出更完整的軟件版本。適用于對軟件需求缺乏準確認識的情況。
4. 原型模型:
適合于用戶需求不清、需求經常變化的情況。當系統規模不是很大也不太復雜時,采用該方法比較好
5. 螺旋模型:
是將瀑布模型和演化模型結合起來,加入了其他兩個模型忽略的風險分析
每個螺旋周期分為如下4個工作步驟:1.制定計劃、2.風險分析、3.實施工程、4.用戶評估
優點:
該模型強調風險分析,使得開發人員和用戶對每個演化層出現的風險有所了解,從而做出應有的反應。
** 該模型特別適用于龐大、復雜且具有高風險的系統。**
** 支持用戶需求的動態變化;**
** 為用戶采用軟件開發的所有關鍵決策提供了方便,有助于提高軟件的適應能力;**
** 降低了軟件開發的風險。**
缺點:
** 需要開發人員具有相當豐富的風險評估經驗和專門知識;**
** 過多的迭代次數會增加開發成本,延遲提交時間**
6. 噴泉模型:
** 是一種以用戶需求為動力,以對象作為驅動的模型,適合于面向對象的開發方法。**
** 具有迭代性和無間隙性**
** 迭代性:模型中的開發活動常常需要重復多次,在迭代過程中不斷地完善軟件系統**
** 無間隙性:是指在開發活動(如分析、設計、編碼)之間不存在明顯的邊界**;它不像瀑布模型那樣,在需求分析活動結束后才開始設計活動,在設計活動結束后才開始編碼活動,而是允許開發活動交叉、迭代地進行
優點:
可以提高軟件項目的開發效率,節省開發時間
缺點:
由于噴泉模型在各個開發階段是重疊的,在開發過程中需要大量的開發人員,不利于項目的管理;
要求嚴格管理文檔,使得審核的難度加大
7. 基于構件的開發模型:
是指利用預先包裝的構件來構造應用系統。構件可以是組織內部開發的,也可以是商品化成品軟件構件
8. 形式化方法模型:
建立在嚴格數學基礎上的一種軟件開發方法,其主要活動是生成計算機軟件形式化的數學規格說明。
9. 統一過程模型
統一過程模型是一種“用例和風險驅動,以架構為中心,迭代并且增量”的開發過程,由UML方法和工具支持。迭代的意思是將整個軟件開發項目**劃分為許多個小的“袖珍項目”,**每個“袖珍項目”都包含正常軟件項目的所有元素:計劃、分析和設計、構造、集成和測試,以及內部和外部發布。
統一過程定義了4個技術階段及其制品:
1.起始階段:生命周期目標
專注于項目的初創活動,產生的主要工作產品有構想文檔(Vision Document)、初始用例模型、初始項目術語表、初始業務用例、初始風險評估、項目計劃(階段及迭代)、業務模型以及一個或多個原型(需要時)。
2.精化階段:生命周期架構
在理解了最初的領域范圍之后進行需求分析和架構演進,產生的主要工作產品有用例模型、補充需求(包括非功能需求)、分析模型、軟件體系結構描述、可執行的軟件體系結構原型、初步的設計模型、修訂的風險列表、項目計劃(包括迭代計劃、調整的工作流、里程碑和技術工作產品)以及初始用戶手冊
3.構建階段:初始運作功能
關注系統的構建,產生實現模型,產生的主要工作產品有設計模型、軟件構件、集成的軟件增量、測試計劃及步驟、測試用例以及支持文檔(用戶手冊、安裝手冊和對于并發增量的描述)。
4.移交階段:產品發布
關注提交方面的工作,產生軟件增量,產生的主要工作產品有提交的軟件增量、β測試報告和綜合用戶反饋。
10. 敏捷方法
敏捷開發的總體目標是通過“盡可能早地、持續地對有價值的軟件的交付”使客戶端滿意。通過在軟件開發過程中加入靈活性,敏捷方法使用戶能夠在開發周期的后期增加或改變需求。
1.極限編程(XP)
XP是一種輕量級(敏捷)、高效、低風險、柔性、可預測的、科學的軟件開發方式。它由價值觀、原則、實踐和行為4個部分組成,彼此相互依賴、關聯,并通過行為貫穿于整個生存周期。
4大價值觀:溝通、簡單性、反饋和勇氣。
5個原則:快速反饋、簡單性假設、逐步修改、提倡更改和優質工作。
12個最佳實踐:計劃游戲、小型發布、隱喻、簡單設計、測試先行、重構、結對編程、集體代碼所有制、持續集成、每周工作40個小時、現場客戶和編碼標準
2.水晶法(Crystal)
認為每一個不同的項目都需要一套不同的策略、約定和方法論,認為人對軟件質量有著重要的影響,因此隨著項目質量和開發人員素質的提高,項目和過程的質量也隨之提高。通過更好地交流和經常性的交付,軟件生產力得到提高
3.并列爭球法(Scrum)
使用迭代的方法,其中,把每30天一次的迭代稱為一個“沖刺”,并按需求的優先級別來實現產品。多個自組織和自治的小組并行地遞增實現產品。協調是通過簡短的日常情況會議來進行,就像橄欖球中的“并列爭球”。
4.自適應軟件開發(ASD)
6個基本原則:有一個使命作為指導;特征被視為客戶價值的關鍵點;過程中的等待是很重要的,因此“重做”與“做”同樣關鍵;變化不被視為改正,而是被視為對軟件開發實際情況的調整;確定的交付時間迫使開發人員認真考慮每一個生產的版本的關鍵需求;風險也包含其中。
5.敏捷統一過程(AUP)
采用“大型上連續”以及在“在小型上迭代”的原理來構建軟件系統。
每個AUP迭代執行以下活動:建模;實現;測試;部署;配置及項目管理;環境管理
數據加密
1. 對稱加密
- DES(數據加密標準):主要采用替換和位移的方法加密。它用56位密鑰對64位二進制數據塊進行加密…
- 3DES(三重DES,或TDEA):在DES的基礎上采用三重DES,即用兩個56位的密鑰K1和K2,發送方用K1加密,K2解密,在使用K1加密。接收方則使用K1解密,K2加密,再使用K1解密,其效果相當于將密鑰長度加倍。
- RC-5(Rivest Cipher 5)
- IDEA(國際數據加密算法):密鑰為128位
- AES(高級加密標準):是一個迭代的、對稱密鑰分組的密碼,它可以使用128/192和256位密鑰,并且用128位(16字節)分組加密和解密數據。
2. 非對稱加密
- RSA:
- ECC:橢圓曲線加密算法
- DSA:數字簽名算法
數據庫技術
-
數據庫系統三層結構:物理層、邏輯層、視圖層(抽象層次逐步提高)【物理層最低、邏輯層中、視圖層最高】
-
關系規范化在數據庫設計的(邏輯設計)階段。
數據庫邏輯設計的主要任務是建立概念模型并將數據結構規范化,然后把概念模型轉為數據模型。
-
數據庫設計范式
1NF強調的是列的原子性,即列中的每個值都是不可分割的。2NF建立在1NF的基礎上,要求表中的每個非主屬性都必須完全依賴于主鍵,而不是主鍵的一部分。
3NF在2NF的基礎上進一步要求非主屬性不能傳遞依賴于主鍵。即,一個非主屬性不能通過另一個非主屬性間接依賴于主鍵。
BCNF: 進一步消除主鍵內的部分依賴和傳遞依賴
4NF是一種比3NF更高級的范式,它主要是為了解決多值依賴關系而提出的。在4NF中,如果關系中存在多個獨立的多值依賴關系,那么這些多值依賴關系應該被分解成單獨的關系模式,以消除數據冗余和數據更新異常。
-
數據庫系統中的視圖、存儲文件和基本表分別對應數據庫系統結構中的(外模式、內模式和模式)
視圖:外模式
存儲文件:內模式
基本表:模式
面向對象
一、面向對象設計
- 共同封閉原則: 包中的所有類對于同一種性質的變化應該是共同封閉的。一個變化若對一個封閉的包產生影響,則將對該包中的所有類產生影響,而對于其他包則不造成任何影響。面相對象設計的原則之一。
- 共同重用原則: 面向對象編程術語,指一個包中的所有類應該是共同重用的。如果重用了包中的一個類,那么也就相當于重用了包中的所有類。
- 開放-封閉原則: 對擴展開放,對修改封閉。
- 接口隔離原則: 使用多個專門的接口比使用單一的總接口更好。**客戶端不應該被迫依賴它不使用的接口。**換句話說,一個類不應該實現它不需要的方法,而應該將龐大的接口拆分成更小、更具體的接口。最終目標:降低耦合,提高代碼的 可維護性 和 可擴展性。
二、面向對象分析
- 面向對象分析包含5個活動:認定對象、組織對象、描述對象間的相互作用、確定對象的操作、定義對象的內部信息。
- 面相對象分析過程中,從給定需求描述中選擇(名詞短語)來識別對象。
名詞和名詞短語暗示著類或類的屬性,動詞和動詞短語暗示著職責或者類的操作。
計算機網絡
-
網絡基礎知識:A類網絡有三個字節的主機號部分,因此每個A類網絡中可以有2^24個IP地址。如果指定的子網掩碼為255.255.192.0,則該網絡被劃分為(1024)個子網。
將255.255.192.0轉為二進制可得:11111111 11111111 11000000 00000000
默認A類網絡有8位網絡位,24位主機位。
第一個8位:11111111(A類默認)
第二個8位:11111111(全部為1,表示這8位都是網絡部分)
第三個8位:11000000(前兩位是1,后六位是0)
所以,從主機部分借用的位數是:第二個8位:8位。第三個8位:2位。總共借用的位數:8 + 2 = 10位,所以子網數量 = 2 ^ 10 = 1024
-
各層常用的互連設備
物理層:中繼器(Repeater)和集線器(Hub)
數據鏈路層:網橋(Bridge)和交換機(Switch)
網絡層:路由器
應用層:網關 -
在瀏覽器地址欄輸入一個正確的網址后,本地主機將首先在(本地hosts文件)查詢該網址對應的IP地址。
-
組播地址用于在網絡中向一組特定的設備發送數據包。
-
用戶A通過SMTP/MINE協議在郵件客戶端中撰寫郵件正文,并添加一個Excel附件發送給用戶B,該郵件采用的是(正文、附件明文傳輸)
SMTP(簡單郵件傳輸協議)和MINE(多用途互聯網郵件擴展)協議本身并不對郵件正文和附件進行加密。 -
計算機病毒具有:隱蔽性、傳染性、潛伏性、觸發性和破壞性等特點。
-
127.0.0.1是回送地址,指本地機,一般用來測試使用。主要用于網絡軟件測試以及本地進程間通信。可用于檢測網絡是否可用
-
在瀏覽器地址欄輸入一個正確的網址后,本地主機將首先在(本地hosts文件)查詢該網址對應的IP地址。
-
MP3是目前最流行的數字音樂壓縮編碼格式之一,其命名中“MP”是指(MPEG-1 Audio)**,3是指(layer 3)
-
10.目前的MPEG格式有如下標準,分別是MPEG-1、MPEG-2、MPEG-4、MPEG-7與MPEG-21。其中MPEG-1、MPEG-2、MPEG-4主要針對音、視頻編碼技術,而MPEG-7是多媒體內容描述接口標準,MPEG-21是多媒體應用框架標準。VCD使用了MPEG-1標準作為其音、視頻信息壓縮編碼方案;DVD采用MPEG-2標準作為其音、視頻信息壓縮編碼方案。
-
VLAN tag在OSI參考模型的(數據鏈路層)實現。
IEEE 802.1Q協議規定在目的MAC地址和源MAC地址之后封裝4個字節的VLAN Tag,用以標識VLAN的相關信息。Mac地址屬于數據鏈路層。
UML圖
- 對一個復雜用例中的業務處理流程進行進一步建模的最佳工具是UML(活動圖)
- 狀態模式是行為型對象模式,它允許一個對象在其內部狀態改變時改變它的行為。
算法、時間/空間復雜度
-
背包問題時間復雜度:01背包O(nW);部分背包:O(nlgn)
-
在按列存儲方式下,a[i, j]之前的元素個數為**(j-1)*N+i-1**。因此該數組空間地址為base+((j-1) x N+i-1) x K
-
廣度優先采用的是分支限界法
-
優先隊列通常采用(堆)數據結構實現,向優先隊列中插入一個元素的時間復雜度為(O(log2n))
優先隊列插入和刪除元素的復雜度都是O(log2n) -
在求解某問題時,經過分析發現該問題具有最優子結構性質,求解過程中子問題被重復求解,則采用(動態規劃)算法設計策略;若定義問題的解空間,以深度優先的方式搜索解空間,則采用(回溯)算法設計策略。
-
下列排序算法中,占用輔助存儲空間最多的是(歸并排序)
-
歸并排序
-
快速排序
-
堆排序
-
冒泡排序
歸并排序需要n個空間,快速排序需要logn個空間,堆排序需要1個空間,冒泡排序需要1個空間。
-
知識產權
由于知識技術同時被多個人使用,所以知識專利具有獨占性
其他
-
CMM分為五個等級:
(1). 初始級:工作無序,項目進行過程中常放棄當初的計劃。
(2). 可重復級,管理進度化,建立了基本的管理制度和規程,管理工作有章可循。
(3). 已定義級,開發過程,包括技術工作和管理工作,均已實現標準化、文檔化。
(4). 已管理級,產品和過程已建立了定量的質量目標。
(5). 優化級,可通過采用新技術、新方法,集中精力改進過程。 -
在屏蔽軟件錯誤的容錯系統中,冗余附加技術的構成包括:
(1). 冗余備份程序的存儲及調用。
(2). 實現錯誤檢測和錯誤恢復的程序。
(3). 實現容錯軟件所需的固化程序。 -
當對系統、類或用例的動態方面建模時,通常是對反應型對象建模。
-
結構圖的基本成分:模塊、調用、數據(不包括控制)
-
在設計模塊M和模塊N時(M和N通過通信模塊傳送數據)是最佳的設計。
-
移進-歸約語法分析是自底向上(或自上而下)的一種形式。它使用一個棧來保存文發符號,并用一個輸入緩沖區來存放將要進行語法分析的其余符號。
-
矢量圖是常用的圖形圖像表示形式,圖元是描述矢量圖的基本組成單位。
-
在CPU的寄存器中,(指令寄存器)對用戶是完全透明的。
-
分治法的核心步驟:
排序并劃分點集
遞歸求解子問題
合并時檢查中線附近有限范圍內的點 -
詞法分析階段關鍵操作:
分割字符:忽略空格、注釋等無關內容
識別詞素:將連續的字符組合成有意義的單元(如變量名、數字、符號等)
分類標記:
工具:正則表達式、有限自動機 -
語法分析階段關鍵操作:
語法檢查:確保符合語法規則(如括號匹配、語句結構)
構件AST:序列轉化為樹形結構
工具:上下文無關文法、遞歸下降解析器 -
語義分析關鍵操作:
符號表管理:記錄變量、函數等標識符的類型和作用域
類型檢查:驗證操作是否類型兼容
語義規則驗證:如變量是否聲明、函數參數是否匹配、break是否在循環內等
填寫符號表;生成中間代碼