This question is purely for learning and to step-up my technical understanding. I know there is no perfect solution and this question has possible never ending solution list but I think it's very important for every architect to understand the difference between demo and a live project.
I created many demo solutions in .Net in the past. I now have been assigned to architect and implement a production level web solution so I wanted to ask - on a very high level, what is required to convert a demo into a production level solution. From my understanding, this will require (other than functionally implementing clients' requirements):
- Unit testing every method
- Ensuring ~100% code coverage is achieved
- Logging all exceptions and possible pointcuts - possible with AOP
- Using interface design pattern, dependency injection, possibly by using a framework e.g. spring.net
- Using performance counters and profilers for instrumentation
- Applying appropriate security - i.e. windows authentication (if that's whats required by client).
- Transaction management on every single method
- Back up of the web application files before new deployment of solution
What else?
My question is more related to technical side instead of functional/documentation because otherwise we will go into another path :-)
Thank you.