Write tests for every behavior the system currently exhibits.<p>Then systematically comment out everything -- one function&#x2F;block&#x2F;class&#x2F;whatever at a time -- making note of which tests break.<p>That should give you a better idea of how everything hangs together -- and uncover the parts that aren&#x27;t even used anymore.<p>Almost any software that you inherit, that has been around for a while, will be a complete mess.<p>If you have time for a book, Michael Feathers&#x27; Working Effectively with Legacy Code will likely help a lot.