any required final revisions, as accepted by my examiners. I understand that my thesis may be made electronically available to the public. ii Many software development projects start with an existing code base that has to be tightly inte-grated into a new system. In order to make a robust system that will achieve the desired business goals, developers must be able to understand the architecture of the old code base and its ratio-nale. This thesis presents a lightweight approach for the recovery of software architecture. The main goal of the approach is to provide an efficient way for architecture recovery that works on small to mid-sized software systems, and gives a useful starting point on large ones. The emphasis of the process is on the use of well established development techniques and tools, in order to minimize adoption costs and maximize the return on investment. iii For my mom, dad, and siste