Dalam mendesain suatu perangkat lunak cara penyelesainya biasanya didasari dari pemahaman secara pribadi atau bersifat subjektif sehingga dibutuhkan gambaran secara formal dari suatu masalah dan berikut pemecahannya. Design patterns adalah unsur-unsur rancangan yang seringkali muncul pada berbagai sistem yang berbeda. Setiap kemunculan ini menguji pattern tersebut di berbagai situasi. Design pattern harus mempunyai nama yang sederhana dan deskriptif yang dapat langsung digunakan untuk mengacu pada pola tersebut. Sebuah design pattern harus mendokumentasikan permasalahan, pemecahan, serta akibat-akibat penggunaannya. Class diagram adalah salah satu bentuk dari interprestasi dari suatu pattern dengan memanfaatkan kemampuan UML yang sudah berorentasi pada perancangan yang berbasiskan objek (OOP)