Delivered System Documentation u One of the most important things that can be done to make a system maintainable is to create the best, most complete, set of documents that describes the system's design, development and testing.
Delivered System Documentation u In a well-done system, the documentation effort may equal the programming effort. u Documentation standards differ from one software organization to another.
Delivered System Documentation Wherever you go you will be expected to learn the local standards!
Technical Manual a) includes a re-examination of the software specifications and design, complete with any changes that have been made. b) The specifications and design should not be rewritten to reflect the final implementation.
Technical Manual c) Include explanations for changes that were made. d) Do everything you can to keep future software engineers from "reinventing the wheel" for this system.
Technical Manual u Table of Contents and Index u No matter how good your document and program is, it needs to be organized so that things can be found. u Report Testing Efforts u The major reason test documentation is needed during maintenance is so that regression testing can be conducted.
Technical Manual u Avoid re-inventing the wheel! u Include implementation failures so they need not be repeated.
User Support Some major reasons for maintenance are: u Unreasonable user expectations u Poor user training
User Support Maximize the chance that users will figure out what they need to know. Make manuals u clearly written, u well organized, u well indexed u SIMPLE.
Restructuring Software u Over time the quality of software deteriorates! WHY?
Restructuring Software Problem: what happens -- u If code is patched with unstructured methods – And/Or u With code that is NOT easily understood --
Restructuring Software u The code will become less and less understandable over time u The probability of change resulting in a defect increases and the cost of adequate testing increases. u Ultimately the software should be scrapped if the cost of upgrading it approaches the cost of starting over.
Restructuring Software Thoughts: What can we do? 1) If changes require increasing the size of the module, consider reorganizing the code and splitting out functionally cohesive subsections. 2) Remember to update the relevant sections of all associated documentation.
The Current Status of Maintenance Maintenance is somewhat of an art -- as is programming itself
The Current Status of Maintenance u Maintenance today includes work being done on programs that were written ten or twenty years ago. u These programs, including such things as payroll systems and compilers, are large enough and used widely enough to be worth maintaining.
The Current Status of Maintenance But, maintaining “old” code requires an understanding of the methodologies, languages and style in use at the time the software was written.
The Current Status of Maintenance Maintaining code is VERY hard work!
The Current Status of Maintenance u Sometimes, the only thing available for a system that needs maintenance is the object code u Sometimes, the only information you may have about how a program works and what it does is to consult with users who will give often conflicting responses.