Techniques and Tools for Software Analysis