This question may not even fit into Java - General category.
Please throw your ideas if you wish.
I am actually into the development of uninstalling a software product.
I am giving a fresh look into this requirement from the following perspectives:
- From end user perspective
- use of use, no ambiguities, not much interview questions, and data protection (the data created out the software should be kept intact, only the s/w bits need to be removed).
- From developers perspective
- uninstaller software should be extended
- Loose coupling and high cohesive
- Proper design and design patterns - Choosing the efficient technologies