日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

【软件构造】第二章 软件构建的过程和工具(2)

發布時間:2025/3/20 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【软件构造】第二章 软件构建的过程和工具(2) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

二.軟件構造的編程、系統、工具

【廣義軟件構造的過程】

?

1. 編程

(1)開發語言:JavaCC++Python

·IDE:集成開發環境

  - 方便編寫代碼和管理文件

  - 能夠編譯、構建

  - 結構清晰

  - GUI界面

  - 支持第三方擴展工具

·以Eclipse為例

  - 開始支持多種語言的開發

  - 允許第三方插件

  - 運行內核:啟動基礎功能、動態發現和運行插件

  - OSGiJava動態化模塊化系統的一系列規范

(2)建模語言:UML

·針對不同流程可使用不同語言

·結構由一組一致的規則定義

·目的是對系統的設計進行可視化,推理,驗證和交流

(3)配置語言:XMLYAMLJSON

·配置程序的參數和初始設置

  - 應用程序應提供工具來創建,修改和驗證其配置文件的語法

  - 某些計算機程序只能在啟動時讀取其配置文件

  - 其他人定期檢查配置文件的變化

·目的實例

  - 部署環境設置

  - 應用程序功能的變體

  - 組件之間連接的變量

2. 靜態代碼分析:在沒有實際執行程序的情況下執行的計算機軟件分析

(1)代碼評審

·正式代碼評審:一種結構化的檢查代碼與文檔缺陷的過程

·輕量代碼評審:電子郵件、結對編程、工具輔助代碼審查

(2)該過程提供了對代碼結構的理解,并有助于確保代碼符合行業標準。

3)自動化工具可以幫助程序員和開發人員進行靜態分析。

3. 動態代碼分析:通過執行程序執行的軟件分析

(1)目標程序必須執行足夠的測試輸入以產生行為。

(2)使用軟件測試措施觀察程序的一組可能行為。

(3)配置一種動態程序分析的形式用于度量程序的空間或時間復雜度,特定指令的使用情況或函數調用的頻率和持續時間。

4. 調試和測試

(1)測試

·狹義:程序能否正常運行、能否滿足所有需求

·廣義:聯想V字模型、測試需求文檔

(2)調試:定位問題、解決問題

5. 重構:不改變函數和接口的外在表現,優化內部結構

(1)投入短期時間/工作成本,對系統的整體質量進行長期投資

(2)保留語義使代碼更易維護和修改、進行單元測試以證明代碼正常工作

?

【狹義軟件構造過程】

1.?構建系統:典型的BUILD場景

1)編寫用傳統編譯語言編寫的軟件,如CC ++Java等。

·用解釋性語言編寫的軟件(如PerlPython)的打包和測試。

·基于Web的應用程序的編譯和打包。

  - 使用靜態HTML頁面

  - 使用JavaC# 編寫的源代碼

  - 使用JSPASPPHP語法編寫的混合文件以及多種類型的配置文件

·單元測試的執行與代碼的其余部分對軟件進行隔離驗證。

·執行靜態分析工具來識別程序源代碼中的錯誤。

·生成PDFHTML文檔。

2)編譯語言:CC ++JavaC#

·源文件被編譯成目標文件,然后鏈接到代碼庫或可執行程序中。

·生成的文件被收集到可安裝在目標機器上的發行包中。

·版本控制工具。

·源樹和對象樹:特定開發人員使用的源文件和編譯對象文件集。

·編譯工具:輸入文件并生成輸出文件的工具(例如,將源代碼文件轉換為目標代碼和可執行程序)。編譯工具的常見示例包括CJava編譯器,但它們還包括文檔和單元測試發電機。

·構建機器:執行編譯工具的計算設備。

·發布打包和目標機器:打包軟件,分發給最終用戶,然后安裝到目標機器上的方法。

3)解釋類型語言

·解釋的源代碼不會被編譯到目標代碼中,所以不需要對象樹。 源文件本身被收集到一個發行包中,可以安裝在目標機器上。

·編譯工具專注于轉換源文件并將它們存儲在發行包中。

·編譯成機器碼不會在構建時執行,即使它可能在運行時發生。

4)基于Web的應用程序:編譯代碼,解釋代碼和配置或數據文件的混合

·靜態HTML文件,只包含標記數據直接復制到發行包。

·包含代碼的JavaScript文件將由最終用戶瀏覽器解釋直接復制到發行包。

·JSPASPPHP頁面,包含HTML和程序代碼的混合Web應用程序服務器而不是構建系統編譯和執行復制到發布包,準備安裝到Web服務器上。

·構建系統在編譯打包Java類文件之前執行轉換。Java類在Web應用程序服務器上或瀏覽器內(小程序)執行。

2. 構建系統的組件

1源樹:程序的源代碼被存儲為多個磁盤文件將這些文件安排到不同的地方稱為源樹,其結構通常反映了軟件的體系結構。

2對象樹:一個單獨的樹層次結構,用于存儲由構建過程構建的任何對象文件或可執行程序。

3編譯工具:將可讀的源文件轉換為機器可讀的可執行程序文件的程序。

·編譯器:源文件?-> 對象文件

·鏈接器:多個相關的目標文件?-> 可執行的程序映像

·基于UML的代碼生成器:模型?-> 源代碼文件

·文件生成器:腳本?-> 文件

4)發布打包和目標機器:生成可以實際安裝在用戶機器上的東西。

·從源和目標樹中提取相關文件并將它們存儲在發行包中。

·發行包應該是單個磁盤文件,并且應該進行壓縮以減少下載所需的時間。

·任何不重要的調試信息都應該被刪除,以免它使軟件的安裝變得混亂。

5)包裝類型:

·檔案文件:zip和解壓縮

·軟件包管理工具:UNIX風格,例如.rpm.deb

·定制的GUI安裝工具:Windows風格

3. 構建過程和構建描述

(1)構建過程:端到端的事件序列,構建工具調用每個編譯工具來完成工作。

(2)構建描述:基于文本格式編寫,如使用Make時,將以規則的形式指定interfile依賴信息,存儲在Makefile中。

(3)如何構建系統

·開發人員構建:開發人員已檢出VCS的源代碼并正在專用工作區中構建軟件,結果發布包將用于開發人員的私人開發。

·發布版本:為測試組提供一個完整的軟件包供驗證,軟件的質量足夠高時為客戶提供相同的軟件包。用于發布版本的源代碼樹只編譯一次,永不修改。

·Sanity構建:與發布版本類似,但并非針對客戶,可以每天發生多次,并且趨向于完全自動化。

4. Java中的編譯工具

1Java開發工具包(JDK

2GNU Java編譯器

3Eclipse Java編譯器(ECJ

5. 子目標和構建變體

(1)三種不同的構建方法

·構建子目標:僅重建開發人員正在處理的樹的部分。

·構建不同版本的軟件:定制輸出以改變軟件的行為。

·構建不同的目標體系結構:為各種不同的CPU類型和操作系統編譯相同的源文件集,包括x86MIPSPowerPCCPU以及LinuxWindowsMac OS X等操作系統。

(2)構建子目標

·任何大型軟件都可以分成許多子組件,通常采用靜態或動態庫的形式。

·避免耗費時間,最好限制構建子組件的數量。

6.?構建工具:MakeAntMavenGradleEclipse

轉載于:https://www.cnblogs.com/zhangyushuqing/p/8627280.html

總結

以上是生活随笔為你收集整理的【软件构造】第二章 软件构建的过程和工具(2)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。