本節書摘來自華章出版社《實踐者的研究方法》一書中的第1章,第1.2節,作者[美] 羅傑 s. 普萊斯曼(roger s. pressman),更多章節内容可以通路雲栖社群“華章計算機”公衆号檢視。
<b></b>
<b>1.2 軟體的變更本質</b>
<b>四大類軟體不斷演化,在行業中占有主導地位。這四類軟體在十幾年前還處于初級階段。</b>
1.2.1 webapp
網際網路(www)的早期(大約從1990年到1995年),web站點僅包含連結在一起的一些超文本檔案,這些檔案使用文本和有限的圖形來表示資訊。随着時間的推移,一些開發工具(例如xml、java)擴充了html(超級文本标記語言)的能力,使得web工程師在向客戶提供資訊的同時也能提供計算能力。基于web的系統和應用軟體(我們将這些總稱為webapp)誕生了。
今天,webapp已經發展成為成熟的計算工具,這些工具不僅可以為最終使用者提供獨立的功能,而且已經同公司資料庫和業務應用系統內建在一起了。
十年前,webapp“演化為一種混合體,介于印刷出版和軟體開發之間、市場和計算之間内部通信和外部關系之間以及藝術和技術之間。”[pow98],但是,如1.1.2節所述,目前webapp在很多應用類型中提供了豐富的計算能力。
在過去的十多年中,語義web技術(通常指web 3.0)已經演化為成熟的企業和消費者應用軟體,包括“提供新功能的語義資料庫,這些新功能需要web連結、靈活的資料表示以及外部通路api(應用程式設計接口)。”[hen10]成熟的關系型資料結構導緻了全新的webapp,允許以多種方式通路不同的資訊,這在以前是不可能做到的。
1.2.2 移動app
術語app已經演化為在移動平台(例如ios、android或windows mobile)上專門設計的軟體。在大多數情況下,移動app包括使用者接口,使用者接口利用移動平台所提供的獨特的互動機制,基于web資源的互操作性提供與app相關的大量資訊的通路,并具有本地處理能力,以最适合移動平台的方式收集、分析和格式化資訊。此外,移動app提供了在平台中的持久存儲能力。
認識到移動webapp與移動app之間的微妙差異是非常重要的。移動webapp允許移動裝置通過針對移動平台的優點和弱點專門設計的浏覽器擷取基于web内容的通路。移動app可以直接通路裝置的硬體特性(例如加速器或者gps定位),然後提供前面所述的本地處理和存儲能力。随着時間的推移,移動浏覽器會變得更加成熟,并可擷取對裝置級硬體和資訊的通路,這将使得移動webapp和移動app之間的差別變得模糊。
1.2.3 雲計算
雲計算包括基礎設施或“生态系統”,它能使得任何使用者在任何地點都可以使用計算裝置來共享廣泛的計算資源。雲計算的總體邏輯結構如圖1-3所示。

如圖所示,計算裝置位于雲的外部,可以通路雲内的各種資源。這些資源包括應用軟體、平台和基礎設施。最簡單的形式是,外部計算裝置通過web浏覽器或類似的軟體通路雲。雲提供對存儲在資料庫或其他資料結構中的資料的通路。此外,裝置可通路可執行的應用軟體,可以用這種應用程式代替計算裝置上的app。
雲計算的實作需要開發包含前端和後端服務的體系結構。前端包括客戶(使用者)裝置和應用軟體(如浏覽器),用于通路後端。後端包括伺服器和相關的計算資源、資料存儲系統(如資料庫)、伺服器駐留應用程式和管理伺服器。通過建立對雲及其駐留資源的一系列通路協定,管理伺服器使用中間件對流量進行協調和監控。[str08]
可以對雲體系結構進行分段,以提供不同級别的通路,從公共通路到隻對授權使用者提供通路的私有雲體系結構。
1.2.4 産品線軟體
美國卡内基·梅隆大學軟體工程研究所(sei)将軟體産品線定義為“一系列軟體密集型系統,可以共享一組公共的可管理的特性,這些特性可以滿足特定市場或任務的特定需求,并以預定的方法從一組公共的核心資源開發出來。”[sei13]以某種方式使軟體産品互相關聯,可見,軟體産品線的概念并不是新概念。但是,軟體産品線的思想提供了重要的工程影響力,軟體産品線都使用相同的底層應用軟體和資料體系結構來開發,并使用可在整個産品線中進行複用的一組軟體構件來實作。
軟體産品線共享一組資源,包括需求(第8章)、體系結構(第13章)、設計模式(第16章)、可重用構件(第14章)、測試用例(第22、23章)及其他的軟體工程工作産品。本質上,軟體産品線是對很多産品進行開發的結果,在對這些産品進行工程設計時,利用了産品線中所有産品的公共性。