Guidelines/ideas to make supporting application easier
-
26-10-2019 - |
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 :)
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:
- Good QA before rolling out products to customers including performance and load testing.
- Sufficient / appropriate client and server side logging in order to help diagnose problems when they occur.
- 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.
- 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.