Heuristics plays an important role in software development and are widely used to provide a link between design principles and software measurement. They offer insightful
information based upon experience that is known to work in practice. Heuristics are not meant to be exact; in fact, they derive their benefits from this imprecision by providing an informal guide
to good and bad practices. They provide a means by which knowledge and experience can be delivered from the expert to the novice. The paper is set out to bring techniques for building maintainable
object oriented software closer to the developer in the form of design heuristics. Heuristics document common design problems that developers encounter during software development. Some heuristics
in software engineering can be expressed in high-level abstract terms while others are more specific. The heuristic catalogue provides a comprehensive reference point for both novice and expert developers to apply well-documented techniques for building maintainable software.