简体   繁体   English

收集有关应用程序使用的数据的最佳方法是什么?

[英]What is the best method to gather data about the use of your application?

My company releases a small software product for which I've recently been taking over the development side. 我的公司发布了一个小软件产品,我最近一直在接管开发方面。 It is a C# Windows Forms application. 它是一个C#Windows窗体应用程序。

One of the things I've noticed is that much of the information about how the software is used is filtered through my superiors and I get the feeling that I'm missing important detail in some of the messages. 我注意到的一件事是关于软件如何使用的大部分信息都是通过我的上司过滤的,我觉得我在某些消息中缺少重要的细节。

I realise I'll have to work on the management issues with this situation, however in order to give another view on the problem I've been considering a technological solution. 我意识到我将不得不处理这种情况下的管理问题,但是为了对问题提出另一种看法,我一直在考虑采用技术解决方案。 Perhaps something similar to the "Microsoft Customer Experience Improvement Program". 也许类似于“微软客户体验改善计划”。

I was wondering if anyone out there had any experience or advice monitoring and reporting on user behaviour in their applications? 我想知道是否有人在他们的应用程序中有任何监测和报告用户行为的经验或建议?

I would suggest you get your application to write its "usage information" somewhere and then, with the users permission , transmit it electronically every so often. 我建议你让你的应用程序在某处写下“使用信息”,然后在用户许可的情况下 ,每隔一段时间以电子方式传输它。

Note the emphasis above. 请注意上面的重点。 Depending on your jurisdiction, you could get into serious trouble transmitting any sort of data from someone else's computer without permission. 根据您所在的司法管辖区,您可能会在未经许可的情况下从其他人的计算机传输任何类型的数据时遇到严重问题。

You're more likely to get permission if: 如果符合以下条件,您更有可能获得许可:

1/ You make it clear, on install or update, that your program will collect information and transmit it only with permission. 1 /您在安装或更新时明确表示您的程序将收集信息并仅在获得许可的情况下传输。

2/ You explain clearly what the information is and that it only holds "usage information", nothing that can be traced back to the user of the software (NO serial numbers, etc). 2 /您清楚地解释了信息是什么,它只保存“使用信息”,没有任何可以追溯到软件用户的信息(无序列号等)。

3/ You request permission to transmit infrequently. 3 /您请求不经常传输的权限。 If I had an obnoxious program that asked me daily, I'd soon stop using it altogether. 如果我有一个令人讨厌的节目,每天问我,我很快就会停止使用它。

I believe that you've already received a good answer to your question re the privacy aspect of the technological solution. 我相信您已经从技术解决方案的隐私方面获得了对您的问题的良好答案。

I would also like to mention that you should try to use HTTP or HTTPS over normal 80/443 ports - these are the least likely to cause problems with the firewalls and proxy. 我还想提一下,您应该尝试在正常的80/443端口上使用HTTP或HTTPS - 这些最不可能导致防火墙和代理问题。 Use MS IE proxy settings as they are usually set properly. 使用MS IE代理设置,因为它们通常设置正确。


From a totally different prospective I would like to say that the best way to learn about the usage of your software is to check if you have any 'friendly' users in your install base and interview them. 从完全不同的角度来看,我想说,了解软件使用情况的最佳方法是检查您的安装基础中是否有“友好”用户并对其进行采访。 It could be some partner company or people who are your 'pilot group' for the betas of new release. 它可能是一些合作伙伴公司或者是新版本测试版的“试点组”。 Talk to them. 跟他们说话。 Grap your manager and spend a day going to their site if possible and just seeing for yourself how and then they click the buttons. 抓住你的经理,花一天的时间去他们的网站,如果可能的话,亲自看看他们如何然后点击按钮。 Make notes. 做笔记。 Listen to the feedback. 听取反馈意见。 Establish personal relationship so next time they talk to you directly. 建立个人关系,以便下次他们直接与您交谈。

If your application is small and your company is no Microsoft its much better to be close to your userbase than to collect anonymous usage data which takes significant effort to collect and process and then even more effort to understand. 如果您的应用程序很小而且您的公司不是Microsoft,那么接近您的用户群要好于收集匿名使用数据,这需要花费大量精力来收集和处理,然后更加努力地理解。

One idea is to send anonymous statistics with your users' permission. 一个想法是在用户的许可下发送匿名统计信息。

Another idea is to provide a big report bug/ask question button in your app so they can tell you when something they think is wrong happens you'd send app state along the report. 另一个想法是在您的应用程序中提供一个大的报告错误/问题问题按钮,以便他们可以告诉您,当他们认为错误的时候您会在报告中发送应用程序状态。

Always be clear on what are you going to be sending and make users have an option to be non anonymous (always set anonymized data as default) and you might be surprised when you get a lot of non anonymous data by choice of users. 总是清楚你要发送什么,并让用户可以选择非匿名(总是将匿名数据设置为默认值),当你通过选择用户获得大量非匿名数据时,你可能会感到惊讶。

And be clear by using users' language, NEVER say things like "I'm going to send a Blowfish encrypted memory dump of the current state of the application's stack and heap. Yes/no?", but things like "I'm going to send a list of your activity in the program: the buttons you clicked and the type and amount of files you opened. This will help us to create a better program for you but you can choose what you want us to receive. " 并且通过使用用户的语言来清楚,不要说“我要发送应用程序堆栈和堆的当前状态的Blowfish加密内存转储。是/否?”,但是“我要去在程序中发送您的活动列表:您点击的按钮以及您打开的文件的类型和数量。这将帮助我们为您创建更好的计划,但您可以选择您希望我们接收的内容。“

Actually, I think you're trying to do simple Business Intelligence. 实际上,我认为你正在尝试做简单的商业智能。

Don't forget to set the "appropriate" dashbord in order to track your collected data, think deeply on the indicator you'll implement. 不要忘记设置“适当的”仪表板以跟踪收集的数据,深入思考您将实施的指标。

Disclaimer: I am a developer on this product, so I may be a bit biased on how great it is :) 免责声明:我是这个产品的开发人员,所以我可能有点偏向它是多么伟大:)

There is currently a product on the market that can provide you with this functionality for both .NET and Java applications that we call Runtime Intelligence. 目前市场上有一种产品可以为我们称之为Runtime Intelligence的.NET和Java应用程序提供此功能。 See: http://www.preemptive.com/runtime-intelligence-services.html for details. 有关详细信息,请参阅: http//www.preemptive.com/runtime-intelligence-services.html

This product is currently shipping for both .NET and Java and a free version offering a limited feature set will be included in Visual Studio 2010. 该产品目前适用于.NET和Java,Visual Studio 2010中将包含一个提供有限功能集的免费版本。

Usage of an application can be tracked ranging from high level statistics on number of times executed and on which Operating System/Framework versions down to the frequency of usage of individual features. 可以跟踪应用程序的使用范围,包括执行次数和操作系统/框架版本的高级统计信息,以及各个功能的使用频率。

We provide a way for you to give your users either an opt-in or opt-out choice in the transmission of the usage data and the data is sent either over SSL (the default) or standard HTTP. 我们提供了一种方法,您可以为用户提供使用数据传输中的选择加入或选择退出选择,并通过SSL(默认)或标准HTTP发送数据。 The performance impact on your application is minimal and we take great care to not impact the responsiveness of your code. 对您的应用程序的性能影响很小,我们非常注意不影响代码的响应能力。

This solution is great for evaluations or beta testing as you can track the usage of your application directly rather than relying on surveys or guessing at what the users are doing. 此解决方案非常适合评估或beta测试,因为您可以直接跟踪应用程序的使用情况,而不是依赖于调查或猜测用户正在做什么。

For released applications this provides the scaffolding of a customer experience improvement program and the visibility into the accumulated data is valuable to everyone from upper management down to the developer. 对于已发布的应用程序,这提供了客户体验改进计划的支架,并且对于从上层管理人员到开发人员的所有人来说,对累积数据的可见性是有价值的。

We have found that it takes less than an hour to set up an application for basic usage reporting with no code changes required since we can work directly on the assembly binaries. 我们发现,为基本使用情况报告设置应用程序只需不到一个小时而不需要更改代码,因为我们可以直接在程序集二进制文件上工作。

For pricing information or to obtain an evaluation please contact sales from our website as I'm just a developer :) 有关定价信息或获得评估,请联系我们网站上的销售人员,因为我只是一名开发人员:)

For detailed technical information or any other questions feel free to contact me. 如需详细的技术信息或任何其他问题,请随时与我联系。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 根据单元格选择从数据库中收集数据的最佳方法是什么 - What is the best way to gather data from database based on the cell selections 通过Web服务发送复杂数据的首选方法是什么? - What is your preferred method of sending complex data over a web service? 如果必须在应用程序的多个位置上进行最小的更改,最好的方法是什么? - What is the best approach if you have to implement a minimal change on several places of your application? 在数据库写入之前跨多个片段收集数据的最佳实践 - Best practice to gather data across multiple fragments before db write 在.net桌面应用程序中启用或禁用功能的最佳方法是什么? - What's the best method to enable or disable a feature in a .net desktop application 从桌面应用程序操作MySQL数据库的最佳方法是什么? - What is the best method of manipulate a MySQL database from a desktop application? 远程控制/调试.NET应用程序的最佳方法是什么? - What is the best method of remotely controlling/debugging a .NET application? 在.NET表单应用程序,DLL或EXE中最好使用什么? - What BEST to use in .NET Form Application , DLL OR EXE? 将数据从 Scrapy 推送到 .Net 应用程序的最佳方法 - Best Method to Push Data from Scrapy to .Net Application 在 .Net 中调用命名空间的最佳方式是什么 - What is best thing to call your namespace in .Net
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM