1. 程式人生 > >軟體框架和軟體架構的區別?

軟體框架和軟體架構的區別?

  初學java,遇到jdk,sdk概念:(外語首字母縮寫:SDK、外語全稱:Software Development Kit)一般都是一些軟體工程師為特定的軟體包軟體框架、硬體平臺、作業系統等建立應用軟體時的開發工具的集合。

軟體包:(SoftWare Package)是指具有特定的功能,用來完成特定任務的一個程式或一組程式。

開發工具:包含編輯、編譯、解釋執行(C中是連結執行)等功能。

一、軟體框架

​軟體框架是面向領域(如ERP、計算領域等)的、可複用的“半成品”軟體,它實現了該領域的共性部分,並提供了一些定義良好的可變點以保證靈活性和可擴充套件性。也就是說軟體框架是領域分析結果的軟體化,是領域內最終應用的模板

    隨著軟體規模的擴大、應用廣泛和軟體複用技術的發展,以子程式和類為單位的軟體複用出現了很多的不足之處:

1)子程式的庫越來越龐大以至於其使用人員難以掌握

2)大多數類的粒度很小,其自身不能完成所有有用的功能

正是因為這些原因,使得人們在複用中將一組類(模組)作為一個整體來考慮,由此出現了軟體框架。而軟體框架中至少包含以下組成部分:

(1)一系列完成計算的模組,成為構件

(2)構件之間的關係及互動機制

(3)一系列可變點(熱點、或者稱為調整點)

(4)可變點的行為調整機制

開發人員通過軟體框架行為調整機制,將領域中具體應用中所特有的軟體模組繫結到該軟體框架的可變點上,從而得到了最終的應用系統,這個過程稱為軟體軟體框架的例化,軟體框架的存在使得開發人員將主要的精力放在系統所特有的模組的開發上,從而提高軟體的生產率和質量。

軟體框架的行為調整機制是指如何針對具體的應用調整該框架的可變部分、如何在可變點加入特定應用模組所採用的方法和規則。

二、軟體架構​

軟體架構是一個系統的草圖。軟體架構描述的物件是直接構成系統的抽象元件。各個元件之間的連線則明確和相對細緻地描述元件之間的通訊。

  •   軟體架構在定義上分為‘組成派’和‘決策派’兩大陣營,分別描述如下:
  1.     ’組成派‘認為軟體架構是將系統描述成計算元件及元件之間的互動。它有兩個非常明顯的特點: 
    • 關注架構實踐的客體——軟體,以軟體本身作為描述物件。
    • 分析了軟體的組成,說明軟體不是一個‘原子’意義上的整體,而是有不同的部分經過特定的介面進行連線組成的一個整體,這對軟體開發來說很重要。
  2.     ‘決策派’認為軟體架構包含了一系列的決策,主要包括:
    • 軟體系統的組織
    • 選擇組成系統的結構元素和它們之間的介面,以及當這些元素相互協作時所體現的行為
    • 如何組合這些元素,使它們逐漸合成為更大的子系統
    • 用於指導這個系統組織的架構風格:這些元素以及它們的介面、協作和組合

    軟體架構並不僅僅關注軟體本身的結構和行為,還注重其他特性:使用、功能性、效能、彈性、重用、可理解、經濟以及技術的限制和權衡等。

個人理解:當軟體工程具一定規模時,軟體開發不完全是以資料結構+演算法的形式存在,而是基於技術選擇和使用者需求等眾多因素將軟體“分而治之”,架構師的主要任務是將軟體分割成不同的模組,並定義模組之間的介面。

相關推薦

軟體框架軟體架構區別

  初學java,遇到jdk,sdk概念:(外語首字母縮寫:SDK、外語全稱:Software Development Kit)一般都是一些軟體工程師為特定的軟體包、軟體框架、硬體平臺、作業系統等建立應用軟體時的開發工具的集合。 軟體包:(SoftWare Package)是指具有特定的功能,用來完成特定

軟體測試開發的區別在哪裡?

究竟什麼是軟體測試工作的相對穩定的內在特質呢?和開發有什麼區別? 首先,我覺得還得從專職軟體測試的產生說起。首先,軟體行業最初是沒有專職的測試人員和測試團隊的,這個分工是後來形成的。其次,現在很多網際網路創業公司,最初也沒有專職測試人員和測試團隊。 那麼在軟體測試的專業分工

軟體測試軟體除錯的區別

最近替客戶寫論文,整理提綱的時候發現他們把軟體的測試和除錯的部分分開寫,雖然知道兩者有區別但是當時根本搞不清楚應該怎麼寫,網上找了些資料看了以後才有些概念,現在貼出來,以後可那能用的到. 1,軟體測試是找出軟體已經存在的錯誤,而除錯是定位錯誤,修改程式以修正錯誤.2,軟體測試

Rhapsody軟體框架UML的實時系統開發

    (4)狀態機     Rhapsody支援UML狀態機(State Machines),包括層次狀態分解、帶參事件、定時事件、偽狀態、完成轉移、入口和出口動作等功能。Rhapsody也包含了UML中定義的非同步事件處理模型:帶有狀態圖的類都是響應類,因此都與一個事件管理器(活動類)關聯。事件管理器使

軟體分類軟體測試工作流程

軟體的分類  其中,系統軟體指的是和計算機硬體緊密配合在一起的,使得計算機系統的各個部件、相關的軟體和資料協調、高效工作的軟體。例如,作業系統,資料庫管理系統等。 支撐軟體指的是協助使用者開發軟體產品的工具。 應用軟體是在特定領域開發,為特定目的服務的一類軟體。

框架平臺的區別以及兩者的重要性(出自“至簡李雲” 部落格)

      框架(Framework)和平臺(Platform)是軟體行業中經常看到的術語,應當說也是這個行業發展的方向。在討論其重要性之前,我們先看看兩者在概念上的區別。         框架是針

軟體設計軟體開發的主旨

軟體為什麼要開發出來? 最簡單的來說,我們做md5加密解密的時候,會直接去網上找一些小工具,或者我們自己寫小程序。 當我們去做這些事情的時候,是為了避免手工去做這些運算,這些運算具有重複性而且繁瑣,我們可以交給電腦去 做。 這,就是所謂的資

NUMASMP 架構區別以及對SWAP的影響

必須得承認,即使看完了MySQL如何避免使用swap和MySQL如何避免使用swap(二),swap仍然可能頑固地在主機上覆現。不過幸運的是,最近一年來眾多swap問題的受害者們通過不懈的努力找到了終極原因——NUMA。下面站在巨人的肩膀上,為大家簡單講解一下NUMA的原理和優化方法。一、NUMA和SMPNU

JavaEE軟體三層架構MVC的區別

JavaEE軟體三層機構是由sun公司提供JavaEE開發規範的: Web層(表現層)、業務邏輯層、資料持久層。【其中WEB層會使用前端控制器模式】 MVC是一種思想,是一種模式: 將軟體分

mysql-client mysqlclient的區別?? apt-get install libmysql-dev 無法定位軟體

  安裝MySQL資料庫,執行完了; 但是 但是 但是::: 安裝mysqlclient報錯; apt-get install libmysql-dev無法定位軟體包; apt-get install libmysqlclient-dev能下載下來; apt-

1、藍芽核心技術瞭解(藍芽協議、架構、硬體軟體筆記)

原文地址:http://www.cnblogs.com/zjutlitao/p/4742428.html 宣告:這篇文章是樓主beautifulzzzz學習網上關於藍芽的相關知識的筆記,其中比較多的受益於xubin341719的藍芽系列文章,同時還有其他網上作者的資料。由於有些文章只做參

Linux電源管理(2)_Generic PM之基本概念軟體架構

1. 前言 這裡的Generic PM,是蝸蝸自己起的名字,指Linux系統中那些常規的電源管理手段,包括關機(Power off)、待機(Standby or Hibernate)、重啟(Reboot)等。這些手段是在嵌入式Linux普及之前的PC或者伺服器時代使用的。在那個電腦科學的蠻荒時

軟體測試計劃測試方案區別

測試方案軟體過程:測試計劃評審通過—>設計測試方案—>測試方案評審通過—>依據測試方案設計測試用例—>測試用例評審通過—>依據測試方案搭建測試環境。   五、文件內容   測試計劃和測試方案的本質區別是內容不同。   測試計劃的核心內容

HI3518E方案整體架構介紹(硬體軟體支援)

以下內容源於朱有鵬嵌入式課程的學習,如有侵權,請告知刪除。1、硬體(1)HI3518E單晶片提供:CPU + DSP + 內建64MB DDR + ETHERNET MAC。(2)外接16MB的SPI介面的Flash用來存放程式(uboot、kernel、rootfs、app

2018最新精選的Go框架,庫軟體的精選列表 四

2018最新精選的Go框架,庫和軟體的精選列表 四 Web框架 完整的堆疊web框架。 aah - Go的可擴充套件,高效能,快速開發的Web框架。 Air - Go的理想RESTful Web框架。 Banjo - 非常簡單快速的Go框架

2018最新精選的Go框架,庫軟體的精選列表 三

測試 用於測試程式碼庫和生成測試資料的庫。 測試框架 斷言 - 基本斷言庫與側面本機測試一起使用,帶有用於自定義斷言的構建塊。 badio - Go的testing/iotest包擴充套件。 baloo - 簡單而通用的端到端HTTP API測試

2018最新精選的Go框架,庫軟體的精選列表 一

2018最新精選的Go框架,庫和軟體的精選列表 一 音訊和音樂 用於操縱音訊的庫。 flac - Native Go FLAC解碼器。 flac - Native Go FLAC解碼器。 gaad - Native Go AAC位元流解析器

2018最新精選的Go框架,庫軟體的精選列表 二

2018最新精選的Go框架,庫和軟體的精選列表 二 地理 地理工具和伺服器 geocache - 適用於基於地理定位的應用程式的記憶體快取。 pbf - OpenStreetMap PBF golang編碼器/解碼器。 S2幾何 - Go中

軟體與硬體設計的區別聯絡

軟體設計指的是程式設計,硬體設計也是程式設計,但兩者是有區別的。 軟體編寫的程式最終轉化為機器語言,並在硬體上執行。 硬體編寫的程式最終轉化為電路,以實體的形式被製造出來。 也就是說,軟體設計的是0/1的二進位制碼,硬體設計的是實際的電路。 但既然硬體設計也是通過程式設計實

CUDA GPU架構-硬體軟體

       掌握部分硬體知識,有助於程式設計師編寫更好的CUDA程式,提升CUDA程式效能,本文目的是理清sp,sm,thread,block,grid,warp之間的關係。由於作者能力有限,難免有疏漏,懇請讀者批評指正。    首先我們要明確:SP(streaming