Question

Writing a good quality software should be the first step. For now that is kind of moving goal.( We have some thing along the lines of https://stackoverflow.com/questions/3716203/automatic-code-quality-and-architecture-quality-static-code-analysis. We also have regression test suite and test environment similar to some select customers. ) What ever we do, there are cases where only customer see and get crash/error. Sometime they just have performance problem. Some time is a crash, sometime an application object model error.

Generally , how can I reduce the pain? How can I get most (data) out of such situation? What kind of coding/architecture steps that could help in getting more information when problem occurs first time and second time?

Here are the starting points:

Good logging: log4j is starting point. User should able to change the file easily. Providing a small gui to edit such file will be even better. (our logging configuration was sitting in c:/Program Files/ area in windows 7; editing that is not easy for normal users - requires the magical "run as administrator" option.).

Heap Dump : Dumping heap when out-of memory happens.

Automatic submission of error reports: Firefox, intellij etc are good examples. Not sure if there is a ready made library for this.

JMX: For server applications this seems to very useful. I never used it.

A tool to detect system requirements: I am yet to do it.

Ability to automatically upgrade:

Ours is mainly java desktop application that interact with server. I guess there are more steps we could adopt till we get desired quality :)

Was it helpful?

Solution

For server applications consider a tool like Dynatrace (non-free but good) to get a semi-realtime look into your code.

Not exactly in par with your question, but in general try to find errors before they get to GA via tools like FindBugs and Sonar.

I don't know of a auto-error-submission library but a quick RESTfull web service would be easy to build an very valuable.

Sorry, this isn't an overly complete answer but a few bits I've picked up over the years.

OTHER TIPS

A couple of suggestions:

  1. Good QA before rolling out products to customers including performance and load testing.
  2. Sufficient / appropriate client and server side logging in order to help diagnose problems when they occur.
  3. Training (beta) customers on bug writing guidelines. This might include capturing release information from a Help | About, including precise steps for reproducing an issue, screenshots and log information. It's much harder to diagnose a problem when the reports are incomplete.
  4. A lot of problems are data specific and require copies of customer data to reproduce. If possible, maintain test environments which include customer data / configuration.
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top