軟體:計算機執行所需要的各種程式和資料的總成,包括作業系統,組合語言,編譯,程式,資料庫,文字編輯和維護使用手冊等。
軟體的特性:(1)軟體產品的主要生產是腦力勞動,還沒有擺脫手工開發方式(2)軟體是一種邏輯產品,他與物質產品不同,他是腦力勞動的結果(3)軟體產品不會用壞(4)軟體產品的生產主要是研製(5)軟體費用不斷增加,軟體成本相當昂貴。
軟體的分類: 系統軟體,應用軟體
軟體的發展:程式設計時代(1946-1956),程式系統時代(1956-1968)軟體工程時代(迄今)
軟體危機的表現 (1)對於軟體開發的成本和進度的估計不太準確(2)開發的軟體產品不能完全滿足使用者的需求(3)開發的軟體的可靠性差(4)軟體通常沒有適當的文件(5)軟體的的可維護性差(6)軟體開發生產率提高的速度遠遠更不上計算機應用普及的趨勢
軟體危機的原因:(1)軟體的規模越來越龐大(2)軟體開發的管理困難(3)軟體本身的獨有特點確實給開發和維護造成一些客觀困哪(4)軟體開發和維護中許多錯誤認識和方法的形成可以歸結與計算機發展早期開發的個體化特點(5)軟體開發技術落後(6)成產方式落後(7)開發工具落後,生產率提高緩慢
軟體工程:用工程,科學和數學的原則與方法研製,維護計算機軟體的有關技術及管理法,因此,定義為:將系統的,規範的,可度量的工程化方法應用與軟體開發,執行和維護的全過程及上述方法的研究。
軟體工程是有方法,工具和過程三部分構成的。
軟體工程學和程式設計方法學的研究物件是軟體和程式,(1)提高軟體的質量和可靠性(2)提高軟體的可維護性(3)提高軟體生產率,降低軟體開發成本等
軟體工程的基本原理:(1)用分階段的生命週期計畫嚴格管理(2)堅持進行階段評審(3)實行嚴格的產品控制(4)採納現代程式設計技術(5)結果因能清楚的審查(6)開發小組的人員應該少而精(7)承認不斷改進軟體工程實踐的必要性
軟體工程的目標:(1)可修改性(2)有效性(3)可靠性(4)可理解性(5)可維護性(6)可重用性(7)可適應性(8)可移植性(9)可追蹤性(10)可互操作性
在軟體開發技術方面,主要研究開發方法,開發過程,開發工具和環境。在軟體開發管理方面,主要研究:軟體管理學,軟體經濟學,軟體心理學
軟體是一種邏輯產品
軟體工程和電腦科學性質不同,軟體工程著重與建造軟體系統
軟體生命週期:任何乙個軟體都是從它的提出開始到最終被淘汰為止,有乙個存在期,
軟體生命週期是指乙個軟體從提出開發要求開始到該軟體報廢的整個時期
軟體生命週期一種典型的階段劃分:問題定義,可行性研究,需求分析,概要設計,詳細設計,編碼,測試和維護。
活動時期:軟體分析時期:(1)可行性研究可專案開發計畫(2)需求分析 軟體設計時期:(1)概要設計(2)詳細設計 編碼與測試時期: 編碼 測試 執行和維護時期
軟體生命週期模型是指開發軟體專案的總體過程思路,軟體生命週期模型是描述軟體開發過程中各種活動如何執行的模型
瀑布模型:體現在它是一種理性的線性開發模式,缺乏靈活性,特別是無法解決軟體需求不明確或不準確的問題。
軟體工程過程包含了:開發過程,管理過程,**過程,獲取過程,操作過程,維護過程,支援過程。
噴泉模型是一種以使用者需求為動力,以物件作為驅動的模型,適用於物件導向的開發方法,他克服了瀑布模型不支援軟體重用和多項開發活動整合的侷限性,噴泉模型使開發過程具有迭代性和無間隙性
可行性研究:(1)技術可行性研究(2)經濟可行性研究(3)法律可行性研究(4)開發方案的選擇性研就
成本效益分析:(1)成本估計 源程式行數的成本 (2)貨幣的時間價值
社會可行性所研究的範圍包括合同,責任,侵權。
需求分析是指:開發人員要進行細緻的調差分析,準確理解使用者的要求,將使用者非形式的需求陳述轉換為完整的需求定義,再有需求定義轉換為相應形式功能規約的過程。
需求分析的任務:(1)問題明確定義 a.功能需求,效能需求,環境需求,使用者介面需求,系統的可靠性,安全性,可以執行和可維護性 (2)匯出軟體的邏輯模型(3)編寫文件
資料流圖:(1)資料流(2)加工(3)資料儲存(4)資料原點和終點
資料字典:(1)資料流條目(2)資料項條目(3)資料儲存條目(4) 加工條目
資料字典就是用來定義資料流圖中的各個成風的具體含義的,他和資料流圖共同構成了系統的邏輯模型,是需求說明書的主要組成部分。
進行需求分析可使用多種工具,但pad圖是不合適的。
在資料流圖中,有名字及方向的成分是資料流。
在結構化分析方法中,用以表達系統內部資料的運**況的工具有:資料流圖
軟體體系結構包含了兩個重要特性:(1)過程構件(模組)的層次結構(2)資料結構
深度表示控制的層數,寬度表示同一層次上面控制的最大數,扇出是對乙個模組直接控制其他模組樹木的度量,扇入則是對乙個給定模組被多少個模組直接控制的度量。
耦合:非直接耦合度,資料耦合,標記耦合,外部耦合,控制耦合公共環境耦合,內容耦合
內聚:功能內聚,資訊內聚,通訊內聚,過程內聚,邏輯內聚,時間內聚,偶然內聚。
模組化是指解決乙個複雜問題是自頂向下逐層把2軟體系統劃分成若干模組的過程,每個模組完成乙個特定的子功能,所有的模組按某種方法組裝起來,成為乙個整體,完成整個系統所要求的功能。
軟體結構的設計是以模組為基礎的,以需求分析的結果為依據,從實現的腳步進一步劃分為模組,並組成模組的層次的結構。
軟體設計是乙個把軟體需求轉換為軟體表示的過程,包括總體設計和詳細設計。
變換型dfd是有輸入,變換和輸出三部分組成。
軟體設計一般分為總體設計和詳細設計,他們之間的關係是:全域性和區域性
將幾個邏輯上相似的成分放在乙個模組中,該模組的內聚杜維邏輯性的。
在對資料結構的分析中,主要是找到變換中心,這是從資料流圖到處結構圖的關鍵。
過程設計語言的重複結構有for結構,while結構,until結構。
結構化程式設計方法的基本要點是也就是細節:(1)採用自頂向下,逐步求精的程式設計方法。(2)使用三種基本控制結構構造程式,(3)主程式組的組織形式。
程式流程圖又稱為程式框圖,應有三種基本控制結構順序組合和完成巢狀而成,不能有相互交叉的情況,這樣的流程圖是結構化的流程圖。
乙個程式如果把它作為乙個整體,他也是只有乙個入口,乙個出口的單個順序結構,這是組合的過程。
程式控制的三種基本結構中,迴圈結構可提供程式重複控制。
測試方法:靜態測試方法 人工測試,計算機輔助靜態分析 動態測試方法 黑盒測試, 白盒測試
黑盒測試:該方法把被測試物件看成乙個黑盒子,測試人員完全不考慮程式的內部結構和處理過程,志在軟體的介面上面進行測試,用來證實軟體功能的可操作性,檢查程式是否滿足功功能需求,是否能很好的接收資料,並產生正確的輸出。
單元測試:(1)測試的內容 模組介面,區域性資料結構,重要的執行資料,錯誤處理,邊界條件
測試的方法:由於被測試的模組處於整個軟體結構的某一層位置上面,一般是被其他模組呼叫其他模組,其本身不能進行單獨執行,因此在單元測試時,需要為被測模組設計驅動模組和狀模組。
整合測試的方法:自底向上測試, 自頂向下測試。
Git和GitHub 命令小結
git status 工作區,暫存區狀態 git add 新增檔案到暫存區 git rm cached 從暫存區刪除 git commit m 提交到本地庫 git log git log pretty oneline git log oneline git reflog git reset har...
DLL知識小結
目標 在dll中實現乙個函式,用乙個exe對函式進行顯式的呼叫,只需將dll放在vc同一工程下。動態鏈結庫的實現 include stdafx.h bool apientry dllmain handle hmodule,dword ul reason for call,lpvoid lpreser...
介面知識小結
使用介面可以讓程式更加容易維護和擴充套件,比如,在任務模板中,再增加實現介面的類時,不需要修改呼叫該介面的類的 abstract 類和介面都可以有 abstract 方法。介面中只有可以有常量,不能有變數 而 abstract 類中既可以有常量也可以有變數。abstract 類中也可以有非 abst...