“…In spite of numerous studies demonstrating the utility of comments for understanding and analyzing software [97-99, 101, 105], few software projects adequately document the code to reduce future maintenance costs [44,90]. Lack of comments may be fine when programmers use descriptive identifier names [27]; however, precise identifiers that accurately describe an entity lead to very long identifier names [9,53], which can actually reduce code readability, Another way is to encourage the developer to write comments (1) by automatically prompting the developer to enter them [21,79], or, (2) by using a top-down design paradigm and generating comments directly from the specification [84], or, (3) by using a documentation-first approach to development [45]. Although these solutions can be used to comment newly created systems, they are not suitable for existing legacy systems.…”