共用方式為


應用程式分析:開發人員都必須知道的事

Sebastian Holst 負責 PreEmptive Solutions 的產品和市場策略,並且著重於應用程式分析和安全性這部分。 Sebastian 的工作除了建置軟體以外,同時也是業界標準組織的一員 (W3C 諮詢委員會、MMA 的隱私權和分析委員會的委員) 以及 Compliance Consortium 的共同創辦人,在運算領域中相當活躍。 此外,Sebastian 也會在自己的部落格 Applications are people too 中記錄人類、程式和文化的相似之處及缺點。 在閒暇之餘,他不但自己開發行動應用程式,還協助高中生開發程式。

2012 年 7 月

Sebastian Holst 討論應用程式分析的目標和優點。

套用至

Application Lifecycle Management、Visual Studio 2013、Team Foundation Server

Objectives

Requirements

Restrictions

Visual Studio 2012 and Application Analytics

試想,如果開發人員不必猜測哪些是已使用的功能,而哪些又是可以完全被取代的功能,在開發程式時可以提升多少效率? 如果在使用者有機會抱怨之前,開發人員就能取得包含使用狀況內容的例外狀況資料,那麼對使用者滿意度將造成多少影響? 如果測試計劃符合生產環境中的實際使用模式和使用者偏好設定,軟體品質能可以獲得多少程度的提升? 應用程式分析是基於特定目的而使用的分析方式,為了滿足擁有「私人意願」的應用程式專案關係人 (即 開發、測試、產品擁有者、作業等等) 而讓上述假設成為事實。

應用程式分析循環圖表

**圖 1:**應用程式分析可針對應用程式採用狀況以及已建立之開發和作業平台內的使用者行為提供深入見解,提升開發和作業效率。

應用程式分析整合了應用程式使用方式資料、以應用程式為主的分析軟體,以及已整合在開發和作業中的啟發學習法。

現今各種分析解決方案的差異性在於以客戶為導向 (就是應該如此)。 例如,Web 分析的主要客戶為行銷和銷售,因此著重於頁面檢視、點擊和轉換次數。 Web 分析解決方案都有下列共通點:

  • **目標:**利用 Web 特性獲得收益

  • **需求:**分析訪客、印象、點擊和轉換次數

  • **限制:**符合隱私權和效能規範。

在敏捷式用語中,應用程式分析包含其中主要客戶是共用一般目標、需求和限制之一個或多個應用程式開發「人物代表」的分析解決方案。

目標

以意見為導向的開發

敏捷宣言指出:「透過及早且連續提供寶貴的軟體來滿足客戶需求,這是開發的最優先要務」。從這段內容可知,只有在應用程式符合使用者對於工作 (或娛樂) 的需求時,開發才真正算是成功。 如果已適當地在開發流程中整合應用程式分析,即可提供應用程式使用狀況和使用者行為的經驗法則證明,並且能夠:

  • 提供使用者需求見解

  • 確認開發優先順序

  • 提供測試計劃精確度和完整性的客觀指標

範例包括:

  • Microsoft 客戶經驗改進計畫 (CEIP) 創立的目的,是「要讓所有 Microsoft 客戶都能為 Microsoft 產品的設計和開發提供貢獻」。CEIP 會收集 Microsoft 程式「在各種情況下」的使用狀況資訊。

DevOps 品質

此外,敏捷宣言也指出「可行軟體是進度的主要指標」。作業的目的是充分利用現今的應用程式,因為未來的應用程式反覆項目無法解決目前的穩定性、效能、使用者經驗或安全性考量。 如果在作業中適當整合應用程式分析邏輯,就能夠:

  1. 在特定作業架構內,提供應用程式的採用和使用狀況度量

  2. 透過應用程式例外狀況,提供生產環境事件警示

  3. 提供組織採用狀況和產能分析,以了解應用程式投資與企業 ROI 之間的關聯。

範例包括:

  • PreEmptive Analytics Community Edition 可讓使用 Microsoft Visual Studio 2012 Professional 的開發人員允許開發和作業識別和快速回應生產環境中的應用程式例外狀況,藉以建立專屬 CEIP。

需求

具備上述目標之後,應用程式分析的價值就很明顯,但是細節方面卻往往導致應用程式分析難以執行。 為了收集和分析應用程式執行階段資料並做好因應措施,在要收集的資料類型和成功測量所需的度量資訊方面,都將面臨前所未有的挑戰。

應用程式分析實作必須能夠因應現今應用程式的多樣性,並且運用雲端、行動和分散式運算平台的優勢才有效率。 在下列應用程式分析需求中,將清楚說明狹隘的分析技術無法完全滿足開發目標的原因。

執行階段遙測

與來自網頁或入口網站的典型資料流相比,來自應用程式的執行階段資料流通常較為複雜,其性質也有所差異。

資料類型

執行階段遙測:應用程式執行階段資料的類型、語意和位置

功能

應用程式功能並非點擊。 一項功能可以跨一個或多個方法、合併多個元件、跨執行階段介面執行,甚至可利用不同的語言 (例如 Windows Presentation Foundation (WPF)、Microsoft Silverlight 和 HTML5) 實作多次。 必須針對任意定義的範圍測量使用狀況和效能,才能跨裝置和平台進行監視。

應用程式資料

現今許多應用程式都是以資料為導向,其中實際行為本身都已編碼在資料中。 了解所要處理的範本、工作流程和其他「現代化」內容,比起了解處理該資料的工作流程或轉譯引擎更有價值。

工作階段

工作階段資訊可透過不同方式,在應用程式伺服器、行動工作階段、瀏覽器中定義,或是透過跨雲端架構服務所提供的前述項目來散發。

事件

未處理的例外狀況、攔截到和擲回的例外狀況、未預期的效能或可疑的使用者行為都可以歸類為「生產環境事件」。

應用程式

應用程式通常是由多個元件所組成,其中有些是內部部署元件,有些則是服務架構元件。 這些應用程式 (及其元件) 是以無法預期的步調進行版本控制。 因此,應用程式分析需求就是跨各分散的應用程式計算工作流程,接著在一段時間後跨各版本協調此活動。

堆疊

雖然許多應用程式都是在「沙箱」(即 行動裝置、Windows 執行階段、Microsoft Azure) 中執行,但是其他眾多應用程式都擁有完整的基礎 OS 和運算核心存取權限。 一般而言,追蹤螢幕解析度、晶片製造商和硬體可用性對於了解使用者經驗和應用程式行為非常重要。

識別

您可以根據裝置識別碼、IP 位址、使用者認證和軟體授權等項目來定義和追蹤使用者識別。 應用程式分析解決方案必須能夠在用戶端和彙總層級強制落實隱私權和安全性原則。 能夠有效掌控資料,才能有效分析產生的執行階段資料。

執行階段架構和技術

現今的生產環境平台具有複雜性、多樣性和分散性,因此模擬生產環境不再是可能的事。 除非能夠完整支援現今的運算平台,否則應用程式分析就不可能填補這道鴻溝。

分類

執行階段架構和技術:現有和逐一浮現的語言和平台

架構和介面

應用程式不僅僅是簡單的展示層,而是一組使用者動作序列。 測試設備必須跨用戶端與伺服器、雲端服務 (公用和私用)、Web Servlet 以及行動平台、結構和介面。

語言和執行階段

現今的應用程式都整合了 Managed、原生和指令碼式元件,其中包括 Microsoft .NET Framework、C++、Java 和 JavaScript。

IDE 和 ALM 整合

正確內容中的正確資訊必須在正確的時間傳送至正確的角色,應用程式分析才具有影響力。 這包括在開發和建置流程中整合測試設備工作,以及在開發、測試、部署和管理階段面對應用程式分析。

依順序顯示五個階段的流程圖

**圖 2:**應用程式分析實作的五個功能性階段。

DevOps 階段

IDE 與 Application Lifecycle Management (ALM) 整合:角色和使用案例導向情節

1. 測試設備

測試設備是應用程式內用來建立要進行分析之執行階段資料的邏輯。 測試設備可以透過 API (原生和指令碼式應用程式需要) 以撰寫程式碼的方式完成,或是在編譯後插入 Managed 組件中。

2. 建置和部署

您可以手動建置應用程式做為連續性建置流程的一部分,並加以自動化來支援雲端平台。 必須能夠支援各種製造流程和承載格式,才能確保開發工作有效率且可視需要調整規模。

3. 執行階段資料管理

若要有效管理執行階段資料,就必須控制好規模、掌控程度和安全性。 應用程式執行階段資料管理需求跨產業、使用案例和管線轄界限有了大幅變化。

4. 執行階段資料發行

不同的專案關係人有不同的展示和分析需求。開發人員、架構設計人員、產品擁有者和企業營運管理可針對基礎執行階段資料,提供不同的觀點和優先順序。 當使用案例涵蓋衝刺規劃、客戶支援和企業效能監視等範疇時,通常就需要報表、儀表板、匯出和以程式設計方式存取資料等功能。

5. 整合

應用程式分析與開發平台整合 (即 Visual Studio 和 TFS)、作業 (即 Operations Manager) 和客戶關係管理 (即 Microsoft Dynamics) 透過報表和事件排程,可提供「最關鍵的部分」讓應用程式分析發揮最大的效果。

限制

*治療本身不能比疾病更糟糕。*對於應用程式分析來說,這表示在開發和作業中整合應用程式分析所產生的產能、效能、安全性或使用者經驗風險,不能大於它所要降低的這些風險。 對於現今應用程式可以採用的許多表單和角色而言,沒有任何項目是小工作。

風險管理

限制:效能、穩定性、隱私權和複雜性

效能和穩定性

即使分析解決方案的其中一個或多個層面失敗,仍必須跨裝置有效收集、加以快取和傳輸執行階段資料而不影響效能 (正常運作時),同時也不影響應用程式穩定性或使用者經驗。 當考量到特殊相依性 (例如電池使用壽命,資料計劃,網路特性等等) 時,這就特別具有挑戰性。

安全性和隱私權

消費者、企業對企業 (B2B) 和企業營運應用程式本身都有專屬安全性及隱私權義務。 這些定義務會進一步根據產業和管轄區來劃分。 應用程式分析測試設備、傳輸和內容管理都必須可擴充,而且要能根據不同的應用程式來強制落實上述需求。

複雜性

複雜性會帶來浪費和風險,最終將為大眾所棄用。 因此,若要有效實作應用程式分析,就必須整合至現有平台、流程和方法。

Visual Studio 2012 及應用程式分析

使用 Visual Studio 2012 PreEmptive Analytics CE 進行例外狀況分析

Visual Studio 2012 包含 PreEmptive Analytics for TFS Community Edition (PA for TFS CE) 這套應用程式分析解決方案,它可以根據使用者定義的臨界值,監視例外狀況並建立或更新 Team Foundation Server (TFS) 內的工作項目。

PA for TFS CE 是用來針對在 .NET Framework 和 Java 執行階段上執行的應用程式追蹤未處理的例外狀況。 應用程式分析的五階段支援如下:

DevOps 階段

PreEmptive Analytics for TFS Community Edition

1. 測試設備

使用 Dotfuscator Community Edition 完成測試設備。 .NET Framework、Silverlight、Microsoft Windows Phone 和 XNA 應用程式都支援具備選擇性加入和使用者意見機制的未處理例外狀況監視功能。 此外,適用於 Java 應用程式且包含 Android 支援的 API 也可供免費下載。 PreEmptive Solutions 會提供機器碼、JavaScript 和 Java 支援。

2. 建置和部署

Dotfuscator Community Edition 是互動式。 PreEmptive Solutions 提供的 Dotfuscator Professional 可支援命令列介面和 MSBuild。

3. 執行階段資料管理

伺服器端資料收集器會與 Visual Studio Team Foundation Server 2012 一併安裝。 收集器端點是透過 URL 加以參考,而該 URL 是內嵌於做為上述測試設備階段一部分而監視的應用程式中。 收集器的位置可以在 TFS 伺服器旁邊、位於完全不同的伺服器上,甚至可以在 Microsoft Azure 內。

4. 執行階段資料發行

彙總工具服務也會與 Visual Studio 2012 的 TFS 一併安裝,以輪詢收集器端點。 達到使用者定義的臨界值時,彙總工具隨即在 Visual Studio 2012 的 TFS 中建立 (或更新) 生產環境事件工作項目。

5. 整合

Visual Studio 2012 會將 PA for TFS CE 建立的 TFS 工作項目視為與其他最優先的工作項目類型一樣,並以此為基礎來追蹤、指派、設定優先權及建立報表。

[工具] 功能表上位置的螢幕擷取畫面

**圖 3:**PreEmptive Analytics 位於 Visual Studio 2012 的 [工具] 功能表中

顯示 Dotfuscator CE 的螢幕擷取畫面

**圖 4:**測試設備。 在 Dotfuscator CE 中,新增設定屬性可以識別執行階段資料的收集器端點。 此端點可位於 TFS 伺服器旁邊的內部部署或裝載於遠端的 Microsoft Azure。

顯示整合的 Visual Studio 螢幕擷取畫面

**圖 5:**Visual Studio 2012 整合。 達到數量臨界值時,生產環境事件工作項目便會自動顯示在 Visual Studio 中。 在這個 [所有項目] 查詢中,您可以看到例外狀況類型、偵測到這類型的例外狀況數量,以及受影響的電腦數目。 您可以在下方查看更多關於此工作項目的詳細資料,其中包含堆疊追蹤及工作項目的指派狀況、優先順序和分類。

摘要圖表範例的螢幕擷取畫面

**圖 6:**報表。 這是 PA for TFS CE 隨附的其中一個摘要圖表範例,其中顯示所有已開啟事件的狀態。

PreEmptive Analytics Professional Edition

除了增強的 TFS 整合和測試設備選項以外,PreEmptive Analytics Professional Edition 還包含功能、工作階段和使用者分析,可用來測量生產環境應用程式存留期中的趨勢、使用模式和使用者偏好設定。

PreEmptive Analytics Community Edition 和 Professional 的主要使用案例

使用案例

Community Edition

Professional

追蹤 .NET Framework 和 Java 應用程式的未處理例外狀況

在 Visual Studio 2012 中自動建立和更新 TFS 工作項目

在執行階段提供加入和使用者意見選項

支援 Visual Studio 2010

追蹤已攔截和擲回的例外狀況

支援自訂資料和可擴充的規則以及工作項目定義

支援 JavaScript 和原生應用程式監視功能

測量功能和工作階段使用狀況

  • 開發具有獨特的需求,不可比照 Web、BI 或其他以非開發為中心的分析解決方案。

  • 應用程式分析可提供特定功能,因應開發和作業的需要。

  • Visual Studio 2012 提供立即可用的整合式應用程式分析,還可以透過整合和合作夥伴選項擴充這些功能。

如需進一步了解,請瀏覽下列網站:

  1. http://www.preemptive.com/pa

  2. https://www.microsoft.com/visualstudio/11/en-us/products/alm

  3. https://blogs.msdn.com/b/bharry/archive/2012/04/11/preemptive-analytics-in-visual-studio-and-tfs-11.aspx