The objective of this project is to provide the correct software design pattern from a user entered design problem.

Team Members

Philopateer Azer | Jason Cross | Tyler Cullen | Yatniel Jose Ramos Rivera |

Project Poster

Click on any image to enlarge.


Watch the Project Video

Video Player Icon


Project Summary

Overview

The sponsor requested a system that would use machine learning to take a design problem from a user and choose the correct software design pattern that should be used. The biggest challenge of this project was that none of the team had any real experience with machine learning. This also ended up being the area of the project that was the most rewarding, both academically and practically.

Objectives

The latter half of development was focused on polish and testing. The system was functional, but it still
needed fine tuning, and we spent most of the time getting the machine learning subsystem more
reliable.

Approach

● Received requirements from client and discussed with advisor
● Researched machine learning concepts
● Created a working machine learning model using preprocessing, vectorizing and clustering
● Gathered data on design patterns from website sources using web crawlers
● Tested created model using design problems
● Added additional preprocessing to help improve output
● Tested multiple machine learning models to see results
● Created a test file with a variety of design problems from multiple sources
● Added data and problems from book sources to improve results
● All data is organized and maintained in a database
● All subsystems are accessed through a single web-based user interface

Outcomes

Benefits to the sponsor
an industry:
● Academic enhancement for learning design patterns
● Can reduce development time
● Helps to ensure more maintainable software
● Reduces a barrier to entry for new developers
● Can help reduce excess development costs due to improper design pattern choices