# 2017-2018 Design Principles # Project 2 ### Project Definition Solve a software development problem using one (or possibly more) of the design patterns that we cover in class. **Your problem should be different from your previous project.** ### To-Do - **Statement of Work**: Write your problem definition in detail using 100-200 words. - **Design Pattern(s)**: Select design pattern(s) that are useful in solving the problem you defined. Explain why and how you employ such design pattern(s) in your Project. - **UML**: Draw a detailed class diagram of your proposed solution using some UML Diagram Drawing Tool. - **Implementation**: Implement your proposed solution based on the UML Class Diagram using the base Maven Project that you are supplied. The Maven Project produces a executable **.jar** file typing following command: `mvn clean package`. To learn more about Maven Project, you can read maven in 5 minutes. (https://maven.apache.org/guides/getting-started/maven-in-five-minutes.html) Your project should not expect any input from user, and it should produce decent outputs when compiled by the following command: `java -jar target\project1.jar` You are allowed to change pom.xml to add or remove any dependency or plugin. - You need to upload the **.pdf** file and necessary parts of your code. (Do not upload target folder and IDE-specific files) ### To-Submit Submit (1) Statement of Work, (2) Explanation on Utilized Design Patterns, and (3) UML Class Diagram as a **single _.pdf_** file and (4) Implementation codes (without the target folder and IDE-specific files) to your github classroom repository ### Notes Please read this document very carefully. Submissions not complying with the **To-Do** list will be disqualified.