第五章 公安資訊化與大資料應用 軟體技術基礎
1,軟體工程概述
軟體是軟體工程的研究物件,也是軟體工程的產品形態與客觀存在。
工程是將理論和知識應用於實踐的科學,其目的是經濟有效地解決實際問題
軟體工程是為了解決開發成本效益和軟體質量的問題而產生的,倡導以工程的原理,原則和方法進行軟體的開發,用系統的,可控的,有效的方式構建高質量的軟體產品
1.1軟體的定義
軟體=程式+資料+文件
程式:計算機可以接受的一系列指令,執行時可以提供所要求的功能和效能
資料:使得程式能夠適當地操作資訊的資料結構
文件:描述程式的研製過程,方法和使用的圖文資料。
1.2軟體的本質特性
軟體具有複雜性,一致性,可變性和不可見性等固有的內在特性,這是造成軟體開發困難的根本原因。
複雜性
一致性
可變性
人們總是認為軟體是容易修改的,但忽視了修改帶來的副作用
不斷的修改最終導致軟體的退化,總而結束其生命週期
不可見性
1.3軟體工程的產生和發展
軟體工程誕生
1969年,北大西洋公約組織(NATO)召開國際會議,提出’軟體工程‘概念和術語
1.4
#工程的含義
工程是將理論和知識應用於實踐的科學,以便經濟有效地解決問題
*大規模地設計與建造
*複雜問題與目標分解
*團隊協作與過程控制
#軟體工程的基本概念
軟體工程是將系統性的,規範化的,可定量的方法應用於軟體的開發,執行和維護,即工程化應用到軟體上,並對其中所屬的方法進行研究。
軟甲工程的目標——創造’足夠好‘的軟體
*較低的開發成本
*按時完成開發任務並及時交付
*實現客戶要求的功能
*具有良好效能,可靠性,可擴充套件性,可移植性等
*軟體維護費用低
#軟體工程的基本元素
過程:支援軟體開發各個環節的控制和管理
方法:完成軟體開發任務的技術手段
工具:為軟體開發方法提供自動的或半自動的軟體支撐環境
目標
2.編寫高質量程式碼
2.1程式設計過程與規範
軟體編碼規範是與特定語言相關的描寫如何編寫程式碼的規則結合。
目的
-提高編碼質量,避免不必要的程式錯誤
-增強程式程式碼的可讀性,可重用性和可移植性
現實
-軟體全生命週期的70%成本是維護
-軟體在其生命週期中很少由原編寫人員進行維護
Python程式設計規範:程式模板
學會只編寫夠用的註釋,過猶不及,重視質量而不是數量
-好的註釋解釋為什麼,而不是怎麼樣
-不要在註釋中重複描述程式碼
-當自己在編寫密密麻麻的註釋來解釋程式碼,需要停下來看是否存在更大的問題
-想一想在註釋中寫什麼,不要不懂腦筋就輸入
-寫完註釋之後要在程式碼的上下文回顧一下,它們是否包含正確的資訊?
-當修改程式碼時,維護程式碼周圍的所有註釋
Python程式設計規範:命名
好的名字一目瞭然,不需要讀者去猜,甚至不需要註釋
-Python庫的命名約定有點混亂,因此很難使之變得完全一致,不過還是有公認的命名規範。
-新的模組和包(包括第三方的框架)必須符合這些標準,但對已有的庫存在不同風格的,保持內部的一致性是首選的。
不需要編寫需要外部文件支援的程式碼,這樣的程式碼是脆弱的,要確保你的程式碼本身讀起來就很清晰。
編寫自文件化的程式碼
-唯一能完整並正確地描述程式碼地文件是程式碼本身
-編寫可以閱讀的程式碼,其本身簡單易懂
3.1單元測試概述
單元測試是對軟體中的最小可測試單元進行檢查和驗證。
單元測試原則
快速的-單元測試應能快速執行,如果執行緩慢,就不會願意頻繁執行它
黑盒測試(Black Box Testing)
白盒測試(White Box Testing)
4.軟體開發過程
瀑布模型-將基本的開發活動看成是一系列界限分明的獨立階段,這是一種計劃驅動的軟體過程,有利於規範軟體開發活動
原型化模型-原型是一個部分開發的產品,用於加強對系統的理解,有助於明確需求和選擇可行的設計策略
迭代式開發-將描述,開發和驗證等不同活動交織在一起,在開發過程中建立一系列版本,將系統一部分一部分地逐步交付
可轉換模型-利用自動化的手段,通過一系列轉換將需求規格說明轉化為一個可交付使用的系統
5.程式設計語言
1.程式設計語言的分類
(1)機器語言(面向機器)
機器語言是一種用二進位制‘0’和‘1’表示計算機各種操作的程式設計語言。一條機器指令能夠控制計算機執行一種操作
計算機能夠直接理解和執行使用機器語言編寫的程式,執行速度快,佔用記憶體少;但難於記憶,程式設計困難,可讀性差,容易出錯,可移植性差
(2)組合語言(面向機器)
為了克服機器語言的缺點,人們採用與程式碼指令實際含義相近的英文縮寫詞,字母和數字等符號來取代指令程式碼,於是產生了組合語言。
組合語言是一種用助記符來表示各個基本操作的程式設計語言。如用ADD表示加法操作,SUB表示減法操作等。
組合語言的出現,大大減少了程式編寫,閱讀,修改,維護等方面的工作量,但組合語言也是一種面向機器的語言,計算機不能直接執行,通用性和可移植性差,必須經過彙編程式翻譯成機器語言後才能在計算機上執行,需要程式元對計算機內部非常瞭解。
(3)高階語言(面向使用者)
高階語言是向用戶的,基本上獨立於計算機種類和結構的語言。
其最大的優點是:形式上接近於算術語言和自然語言,概念上接近於人們通常使用的概念。高階語言的一個命令可以代替幾條,幾十條甚至幾百條組合語言的指令。因此,高階語言易學易用,通用性強,應用廣泛。