Thursday, April 2, 2009

17. Off topic: Checklist of a good enterprise software Part 2

A few weeks back, I wrote a post on good quality software. As expected, the list was not exhaustive. There are more than 60 parameters which a product manager should mention before the software is ready for production use in enterprise market.

In nutshell, based on the FURPS design, non-functional requirements fall into following category
  1. Usability
  2. Reliability
  3. Performance
  4. Security
The following questions will help product managers in generating a check list of non-functional requirements.

PS: I found a good post emphasizing the need for checklists. Here it is.

Usability:
  1. Is the UI consistent with different locales? eg. can it verify addresses and zip codes according to regions? Does database schema support multiple locales?
  2. How simple is server installation process?
  3. How simple is client installation process?
  4. Can I automate deployment of client application on large number of machines?
  5. Is the uninstallation clean and removing all entries from file system and registry?
  6. How accessible is documentation?
  7. Is it easy to use according to user's profile?
  8. What if multiple users are using the application concurrently?
  9. Is it data locked effectively to avoid corruption, but is not over locked to hinder usability?
  10. Can I update the server first without impacting the users?
  11. Can I make sure the user's machine will be updated before they can access the server?
  12. Can I import my data from application I am currently using?
  13. Can I export the data to other applications I will be using? Are the security policies also migrated with the data?
Reliability
  1. What is level of application availability required?
  2. For a typical server, is application logic separate from data?
  3. What if the database server crashed?
  4. Is there a redundant data server available?
  5. Is data available through attached through SAN or LAN?
  6. Is there any need to rollback to some point in history if there is a virus attack or application bug?
  7. What is our data snapshot policy?
  8. What is the cost (time, resource) to restore a snapshot?
  9. What happens to the new data that was entered while we restored the older snapshot?
  10. Or, was the application down at that time? Or, will be lose the new data?
  11. What if the entire data center power tripped?
  12. Is another data center required to resume operations?
  13. How much time will it take to resume operations?
  14. Do we need to make application distributed so that users won't notice any power tripping?
  15. What about application servers?
  16. Does the server run on virtual servers?
  17. Can it use virtual storage?
Performance

  1. What is the maximum load this application can handle?
  2. Can I add more servers if load increases?
  3. What network bandwidth is required?
  4. What configuration for user machine is good?
  5. What can we do to reduce network traffic?
  6. What can we do to make sure client runs on a leaner machine?
  7. The load on my server is high, can I partition the data for each business unit and have multiple servers?
  8. I migrated from one server to another, how can I make sure I do not need to update all users?
  9. I have some old data I won't be regularly using; can I archive that data and remove from main database?
Security
  1. Do we need additional front end machine to secure data at backend?
  2. What security policies do I need to change?
  3. How do I define user access polices for every department and make sure they are not able to sneak into each other's data without permission?
  4. I had a breach, can I analyze the impact from audit logs?
  5. Oops, a user accidentally deleted a data, how soon can the user or admin recover from the situation?
I will be editing this post as I come up with more questions. In the meantime, if you believe I have missed something obvious, please let me know.

No comments: