应用程序分析:每个开发人员应知道的事

在专注于应用程序分析和安全性的 PreEmptive Solutions,Sebastian Holst 负责产品和市场营销策略方面的工作。 除了构建软件之外,作为 W3C 顾问委员会的成员、有关隐私和分析的 MMA 委员会的成员以及 Compliance Consortium 的共同创始人,Sebastian 一直活跃于计算和行业标准机构。 Sebastian 还主持一个博客网站,他在应用程序也具有人性化特点中介绍了人员、程序和区域性的相似之处和缺点。 他在业余时间开发移动应用程序,并指导高中生进行这类开发工作。

2012 年 7 月

Sebastian Holst 讨论了应用程序分析的目标和优点。

应用于

应用程序生命周期管理、Visual Studio 2013 和 Team Foundation Server

目标

要求

限制

Visual Studio 2012 和应用程序分析

设想一下,如果你的开发人员无需猜测将使用的功能以及可安全弃用的功能,那么他们的工作效率会有多高? 如果交付用法上下文中的异常数据而不让用户有抱怨的机会,将对用户满意度产生什么影响? 如果你的测试计划与生产中的实际使用模式和用户首选项保持一致,那么你的软件质量的提升程度会如何? 应用程序分析是为达到分析目的而专门打造的分支,旨在实现这些方案;满足“自我利益”应用程序利益相关者的需求,如 开发、测试、产品所有者、操作等。

应用程序分析周期关系图

**图 1:**应用程序分析提供了有关建立的开发和操作平台中的应用程序采用和用户行为的深入见解,从而增强了开发和操作。

应用程序分析融合了应用程序用法数据、以应用程序为中心的分析软件和已集成到开发和操作中的启发式方法。

当前,分析解决方案具有的多样性是由客户推动的(也应该是这样)。 例如,Web 分析的主要客户是市场营销和销售部门,因而分析的重点在于页面查看次数、点击量和转换次数。 Web 分析解决方案有共同的:

  • **目标:**Web 属性的货币化。

  • **要求:**分析访客数、印象数、点击量和转换次数,以及

  • **限制:**满足隐私和性能义务。

用 Agile 用语来说,应用程序分析包含分析解决方案,其中主要客户是一个或多个应用程序开发“人员”,这些人员有共同的目标、要求和限制。

目标

反馈推动的开发

《Agile 宣言》指出:开发的“最重要目标是通过持续不断地及早交付有价值的软件使客户满意”。在上面的语境中,只能在用户与其应用程序交互的方面(也就是“工作点”或娱乐方面)准确地衡量开发是否成功。 应用程序分析提供了应用程序使用情况和最终用户行为的实验证据,将该实验证据融入开发流程可:

  • 了解用户要求,

  • 验证开发优先级和

  • 对测试计划准确性和完整性进行客观度量

示例包括:

  • 制定 Microsoft 客户体验改善计划 (CEIP) 是“为了使所有 Microsoft 客户都能够参与 Microsoft 产品的设计和开发”。CEIP 收集有关如何“在自然环境中”使用 Microsoft 程序的信息。

DevOps 质量

《Agile 宣言》还指出“可工作的软件是进度的首要度量标准”。操作的使命是充分利用当前的应用程序 – 将来的应用程序迭代无法解决即时稳定性、性能、用户体验或安全问题。 如果将应用程序分析正确集成到操作和支持中,则可提供:

  1. 特定操作框架中的应用程序采用和使用情况指标,

  2. 应用程序异常中的生产事件警报,以及

  3. 将应用程序投资与企业 ROI 联系起来的组织采用和工作效率分析。

示例包括:

  • PreEmptive Analytics Community Edition,它允许开发和操作标识并快速响应生产中发生的应用程序异常,让使用 Microsoft Visual Studio 2012 Professional 的开发人员能够创建他们自己的 CEIP。

要求

鉴于这些目标,应用程序分析的值看起来很明显,但要了解详情会有点难。 收集、分析和操作应用程序运行时数据会带来与需要收集的数据种类和衡量成功的指标相关的独特难题。

有效的应用程序分析实现必须适应当今应用程序的多样性以及云、移动和分布式计算平台的出现。 以下应用程序分析要求明确说明了绝不应期望范围较小的分析方法能够完全满足开发目标的原因。

运行时遥测

通常,从应用程序流式传输的运行时数据的复杂性和异构性会高于从网页或门户流式传输的数据。

数据类型

运行时遥测:应用程序运行时数据的多样性、语义和位置

功能

应用程序功能不是一次单击就能实现的。 一个功能可以跨一个或多个方法、合并多个组件、跨运行时界面运行,甚至采用不同的语言(如 Windows Presentation Foundation (WPF)、Microsoft Silverlight 和 HTML5)实现多次。 跨设备和平台进行监视需要测量任意定义的范围的使用情况和性能。

应用程序数据

如今的很多应用程序都是数据驱动的,其中的实际行为本身已在数据中进行编码。 了解将处理的模板、工作流和其他“现代”内容要比了解哪些工作流或呈现引擎处理了该数据更有用。

会话

可在应用程序服务器、移动会话、浏览器中以不同方式定义会话信息,也可以跨由基于云的服务提供支持所有上述项目分发会话信息。

Event

未经处理的异常、捕获的异常和引发的异常、意外性能或可疑的用户行为共同构成了“生产事件”。

应用程序

应用程序通常包含多个组件 – 其中一些为本地组件,另一些为基于服务的组件。 这些应用程序(及其组件)将以不可预知的节奏进行版本控制。 计算跨分布式应用程序的工作流,然后在一段时间内和跨版本协调此活动是一项应用程序分析要求。

堆栈

很多应用程序在“沙盒”内运行(例如, 移动应用程序、Windows 运行时和 Microsoft Azure),其他许多应用程序拥有对基础操作系统和计算金属的完全访问权。 跟踪屏幕分辨率、芯片制造商和硬件可用性通常对于了解用户体验和应用程序行为是至关重要的。

标识

可以按设备 ID、IP 地址、用户凭据、软件许可证等项定义和跟踪用户的身份。 应用程序分析解决方案必须能够在客户端和总体级别强制执行隐私策略和安全性策略。 确保有效的数据监管是有效地分析产生的运行时数据的前提。

运行时体系结构和技术

鉴于当前的生产平台的复杂性、多样性和分布,不再能模拟生产。 仅在提供对当前计算平台的全面支持时,应用程序分析才能填补这一空白。

类别

运行时体系结构和技术:现有的和新兴的语言和平台

体系结构和图面

应用程序远不只是一个简单的表示层和一个用户操作序列。 检测必须跨客户端服务器、云服务(公共和私有)、Web servlet、移动平台、体系结构和图面。

语言和运行时

如今,应用程序将集托管组件、本机组件和脚本化组件(包括 Microsoft .NET Framework、C++、Java 和 JavaScript)于一身。

IDE 和 ALM 集成

为了让应用程序分析产生影响,必须在正确的时间并在正确的语境中将正确的信息交付给适当的角色。 这包括在开发和生成过程中集成检测任务,以及在开发、测试、部署和管理阶段公开应用程序分析。

按顺序显示 5 个阶段的流程图

**图 2:**应用程序分析实现的五个功能阶段。

DevOps 阶段

IDE 和应用程序生命周期管理 (ALM) 集成:角色和用例驱动型方案

1. 检测

检测是创建要分析的运行时数据的应用程序中的逻辑。 可通过 API(本机应用程序和脚本化应用程序所需的)对检测进行编码,或将编译后的检测插入托管程序集中。

2. 生成和部署

可以将应用程序作为持续生成过程的一部分手动生成并实现其自动化以支持云平台。 需要支持各种生成过程和负载格式以确保可缩放的有效部署。

3. 运行时数据管理

管理运行时数据需要缩放、监管和安全性控制。 应用程序运行时数据管理要求将跨行业、用例和管辖边界发生重大改变。

4. 运行时数据发布

不同的利益干系人需要不同的表示和分析;开发人员、架构师、产品所有者和业务线管理会将不同角度和优先级引入同一基础运行时数据。 当用例跨冲刺 (sprint) 计划、客户支持和业务性能监视时,通常需要报表、面板、导出和编程访问。

5. 集成

通过报告和事件计划将应用程序分析集成到开发平台(如 Visual Studio 和 TFS)、操作(如 Operations Manager)和客户关系管理(如 Microsoft Dynamics),可交付应用程序分析工作效率的“最后阶段”。

限制

治疗不会比有病不治更糟糕。 对于应用程序分析而言,这意味着,将在开发和操作中包括应用程序分析所导致的工作效率、性能、安全性或用户体验方面的风险不会比要减少的那些风险更大。 鉴于当前的应用程序可采用的多种形式和角色,这是一个不小的任务。

风险管理

限制:性能、稳定性、隐私和复杂性

性能和稳定性

在分析解决方案的一个或多个方面失败时,可以有效地跨设备收集、缓存和传输运行时数据而不损失性能(在正常工作时),同时不影响应用程序的稳定性或用户体验。 在考虑特殊依赖项(如电池寿命、数据计划、网络特性)时,这可能特别具有挑战性。

安全性和隐私

每个使用方、企业对企业和业务行应用程序都附带了其自己的安全性和隐私义务。 这些义务将按行业和管辖区进行进一步的划分。 应用程序分析检测、传输和内容管理必须是可扩展的,并且必须能够按应用程序强制实施这些要求。

复杂性

复杂性引入了浪费和风险 - 并且最终会阻碍采用。 集成到现有平台、过程和方法中是有效的应用程序分析实现所必需的。

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 应用程序的 API 也可作为包含对 Android 的支持的免费下载提供。 PreEmptive Solutions 提供对本机代码、JavaScript 和 Java 的支持。

2. 生成和部署

Dotfuscator Community Edition 是交互式的。 PreEmptive Solutions 将命令行接口和 MSBuild 支持连同 Dotfuscator Professional 一起提供。

3. 运行时数据管理

服务器端数据收集器随 Visual Studio Team Foundation Server 2012 一起提供。 通过要嵌入到应用程序(作为上面的检测阶段的一部分进行监视)中的 URL 引用收集器终结点。 收集器可位于以下位置:TFS 服务器的旁边、完全不同的服务器上甚至 Microsoft Azure 中。

4. 运行时数据发布

此外,Visual Studio 2012 中的 TFS 附带了聚合器服务,该服务将轮询收集器终结点。 在达到用户定义的阈值时,聚合器将在 Visual Studio 2012 中的 TFS 中创建(或更新)生产事件工作项。

5. 集成

在 Visual Studio 2012 中,将跟踪和分配由 PA for TFS CE 创建的 TFS 工作项、设置其优先级并将其作为任何其他一流工作项类型进行报告。

“工具”菜单的位置屏幕快照

**图 3:**在 Visual Studio 2012 中从工具菜单中查找 PreEmptive Analytics

显示 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