1. A system comprising: at least one processor; and a memory coupled to the at least one processor having instructions stored thereon which, when executed by the at least one processor, causes the at least one processor to perform operations comprising: accessing a design of a software application; accessing design quality rules associated with at least one design quality attribute, the accessed design quality rules being defined to evaluate quality of designs of software applications in terms of the at least one design quality attribute; applying the accessed design quality rules to the accessed design of the software application to detect violations of the accessed design quality rules; accumulating, for the at least one design quality attribute, violations detected by applying the accessed design quality rules to the accessed design of the software application; computing a design quality index for the accessed design of the software application based on the accumulated violations; and providing output related to design quality of the software application based on the computed design quality index.