Code documentation is a manual-cum-guide that helps in understanding and correctly utilizing the software code. The coding standards and naming conventions written in a commonly spoken language in code documentation provide enhanced clarity for the designer. Moreover, they act as a guide for the software maintenance team (this team focuses on maintaining software by improving and enhancing the software after it has been delivered to the end user) while the software maintenance process is carried out. In this way, code documentation facilitates code reusability.
While writing a software code, the developer needs proper documentation for reference purposes. Programming is an ongoing process and requires modifications from time to time. When a number of software developers are writing the code for the same software, complexity increases. With the help of documentation, software developers can reduce the complexity by referencing the code documentation. Some of the documenting techniques are comments, visual appearances of codes, and programming tools. Comments are used to make the reader understand the logic of a particular code segment. The visual appearance of a code is the way in which the program should be formatted to increase readability. The programming tools in code documentation are algorithms, flowcharts, and pseudo-codes.
Code documentation contains source code, which is useful for the software developers in writing the software code. The code documents can be created with the help of various coding tools that are used to auto-generate the code documents. In other words, these documents extract comments from the source code and create a reference manual in the form of text or HTML file. The auto-generated code helps the software developers to extract the source code from the comments. This documentation also contains application programming interfaces, data structures, and algorithms. There are two kinds of code documentation, namely, internal documentation and external documentation.
Documentation which focuses on the information that is used to determine the software code is known as internal documentation. It describes the data structures, algorithms, and control flow in the programs. There are various guidelines for making the documentation easily understandable to the reader. Some of the general conventions to be used at the time of internal documentation are header comment blocks, program comments, and formatting. Header comment blocks are useful in identifying the purpose of the code along with details such as how the c0ge functions and how each segment of code is used in the program.
Since software code is updated and revised several times, it is important to keep a record of the code information so that internal documentation reflects the changes made to the software code. Internal documentation should explain how each code section relates to user requirements in the software. Generally, internal documentation comprises the following information.
- Name, type, and purpose of each variable and data structure used in the code
- Brief description of algorithms, logic, and error-handling techniques
- Information about the required input and expected output of the program
- Assistance on how to test the software
- Information on the upgradations and enhancements in the program.
Documentation which focuses on general description of the software code and is not concerned with its detail is known as external documentation. It includes information such as function of code, name of the software developer who has written the code, algorithms used in the software code, dependency of code on programs and libraries, and format of the output produced by the software code. Generally, external documentation includes structure charts for providing an outline of the program and describing the design of the program.
External documentation is useful for software developers as it consists of information such as description of the problem along with the program written to solve it. In addition, it describes the approach used to solve the problem, operational requirements of the program, and user interface components. For the purpose of readability and proper understanding, the detailed description is accompanied by figures and illustrations that show how one component is related to another. External documentation explains why a particular solution is chosen and implemented in the software. It also includes formulas, conditions, and references from where the algorithms or documentation are derived. External documentation makes the user aware of the errors that occur while running the software code. For example, if an array of five numbers is used, it should be mentioned in the external documentation that the limit of the array is five.
Code Documentation Tools
While writing software code documentation, it is important to consider the code documentation tools required for writing the software code. The software documentation tools conform to standards by generating the required elements automatically with configurable format and style. These tools combine the selected comment sections with the software code to generate a usable documentation with the essential level of details in it. Some of the code documentation tools are listed in Table.
Table Code Documentation Tools
Documentation Tools | Language Supported | Description |
Cocoon | C++ | Used to process C++ library files and generates web pages that are useful to document the libraries, classes, and global functions. |
CcDoc | C++ | Used for implementing the document standards in Java and C++. |
CxRef | C | Used to generate documents in HTML, RTF, and so on. It also includes cross-references from source code of C programs. |
DOC++ | C, C++, Java | Used for providing output for the documentations produced in C, C++, and Java. |
JavaDoc | Java | Used as a standard for documentation in Java. |
Perceps | C++ | Used to break C and C++ header files into separate header files. It generates documentation in various formats according to class definitions, declarations, and comments included in those files. |
RoboDoc | Assembler, C, Perl, LISP, Fortran, Shell scripts, COBOL | Used to convert formatted documentation into cross-referenced set of HTML pages, which describe the software code. |
DocJet | Java, C, C++, Visual Basic | Used to generate documentation from comments in the source code. |
ObjectManual | C++ | Used to generate documentation in the form of HTML, XML, and RTF pages. |
Together | Java, C++ | Used to generate documentation from UML and its source code. |
Doc-o-matic | C++, C#, ASP.NET, VB.NET, Java, JavaScript, JSP | Used to create documentations such as source code documentation, online help, and user manuals. It is integrated with easy to use interface for managing the documentation projects. |
Code documentation tools should be simple to use because easy-to-use documentation tools provide rapid feedback. However, the basic features of software code documentation tools are listed below.
- Target media: Views software code easily in a web browser. The target media is useful in displaying the structure and layout of the page with sufficient precision. It is required for code documentation, so that the software code can be easily used in the web browser. An example of target media is HTML.
- Documentation structure: Includes the index to pages and chapters. The chapters in the documentation should include information such as title, introduction, table of contents, and sections.
- Comment extraction capabilities: Extracts the software code comments regardless of the style used in the software code.
- Languages supported: Makes the code documentation consistent while writing the software code. The code documentation tools support multiple programming languages and are preferred for concentrating on a particular language.
- Formatting and style elements: Make the format of the software code proper. Special elements such as tags or mark-ups are required to determine the layout, structure, and style of the code documentation.
- Code readability: Makes the software code consistent and easily readable. This is because code documentation is itself not sufficient and requires the comments in the software code to make the code documentation readable and understandable.
In addition to the above mentioned features, the amount of detail provided is also an important feature. Too much detail makes the code documentation inefficient and proves unnecessary. The level of details should be according to the software developer and not according to the coding tools used in the software code.