Which of the following is true about design patterns?
a. Represent the best practices used by experienced object-oriented software developers
b. Solutions to general problems that developers commonly face during software development
c. Obtained by trial and error of numerous software developers over a substantial period of time
d. All of the above
e. None of the above