While working on a large number of waterfall projects in the past and many complex and flexible projects recently, there are a number of constructive artifacts that I like, although I cannot say that it really depends on the details of the project (methodology / team structure / time frame / tools etc.).
For a general server-side "enterprise application", I would like the minimum minimum to be as follows:
- Detailed functional design document (aka spec). In general, something similar to Joel s. An example of the WhatsTimeIsIt example , although probably with some UML usage diagrams.
- Program technical document. Not necessarily detailed for 100% system coverage, but detailed in all key areas and containing all design decisions. Being a little UML freak, it would be nice to see a lot of photos on the diagrams of package diagrams, diagrams of components, class diagrams of the main functions and, possibly, some sequence diagrams that were chosen for a good assessment.
- Infrastructure Design Document. Perhaps with a UML deployment diagram for conceptual uninstallation, and perhaps a network diagram for something more physical.
When I say a document, any of the above can be split into several documents or possibly saved in a wiki / some other tool.
As for their usefulness, my philosophy has always been that the development team should always be able to transfer the application to the support service without having to transfer their phone numbers. If design artifacts do not clean the bone, indicate what the application does, how it does it, and where it does it, then you know that the support team is going to give the application the same care and attention that they will be rabid dogs.
I must mention that I do not justify the practice of transferring software from the development team to the support team after its completion, which causes all kinds of interesting problems. I am simply saying that this should be possible if leadership is so desired.
source share