Software archaeology or source code archeology is the study of poorly documented or undocumented legacy software implementations, as part of software maintenance.[1][2] Software archaeology, named by analogy with archaeology,[3] includes the reverse engineering of software modules, and the application of a variety of tools and processes for extracting and understanding program structure and recovering design information.[1][4] Software archaeology may reveal dysfunctional team processes which have produced poorly designed or even unused software modules, and in some cases deliberately obfuscatory code may be found.[5] The term has been in use for decades.[6]