Software architecture documentation is important for program comprehension, developer communication and proper system maintenance. Unfortunately, this documentation is usually incorrect or incomplete, especially for legacy systems. Reverse engineering the documentation requires extensive effort as the software size and complexity increase.