1. 程式人生 > 其它 >第五章 公安資訊化與大資料應用 軟體技術基礎

第五章 公安資訊化與大資料應用 軟體技術基礎

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)高階語言(面向使用者)

  高階語言是向用戶的,基本上獨立於計算機種類和結構的語言。

  其最大的優點是:形式上接近於算術語言和自然語言,概念上接近於人們通常使用的概念。高階語言的一個命令可以代替幾條,幾十條甚至幾百條組合語言的指令。因此,高階語言易學易用,通用性強,應用廣泛。