purpose the purpose of this assignment is to encourage you to reverse engineer design patterns. instructions refer to the system you chose for the assignment in module 5. you will use the same system for this assignment as well. to get started, look for two different design patterns in your reference system. these design patterns may be instances of established patterns or may be a design pattern of your own definition. to characterize something as a design pattern, it should (1) have a specific problem that it is intended to solve, (2) offer a solution to this problem that can be reused in multiple contexts, and (3) involve one or more constraints on how elements interact to achieve the solution. for each design pattern you have identified, you should: identify/ name the design pattern (either an established pattern or your own pattern). describe the problem: what, concretely in your reference system, is the problem that is being addressed? describe the solution: how, concretely, is the problem solved? describe the participants: what are the different elements (e.g., classes, files, data structures) involved and what is the responsibility of each? what constraints exist on these participants? what references and relationships between elements are either required or prohibited in order to achieve the goals of the design pattern? describe the consequences: what are the advantages and disadvantages that adopting this particular design pattern has on the system? due