Thursday, January 15, 2015

Minimal Software Design

A minimal software design effort should include the following:
  • What problem are you trying to solve? Is the problem specified clearly?
  • Comprehensibility: What will you do to help others (or yourself one year later) understand your code/design. Hint: Wiki, coding conventions, KISS.
  • Modularity/dependency: What approach will you take to make your modules independent? Hint: Encapsulation, MVC pattern.
  • Testability: How will you make sure that your implentation will be as unit testable as possible? Hint: Keep methods short. Whenever you can, make objects/methods static.
  • Error handling and logging: What error cases do you foresee and what mechanisms will you have in place to log and recover from errors? Hint: Exceptions.

No comments: