
Sponsored By: Shahid Hussain
Team Members
Akash Patel | Jonathan Garelick | Benjamin Karabin | Remi Toutin |
Project Poster
Click on any image to enlarge.
Project Summary
Overview
Software design patterns are general solutions that software developers can use for different scenarios that share similarities. However, it can be hard for developers to figure which design patterns are best to use for a particular piece of software. The Penn State Behrend School of Engineering asked our team to build a web application that uses machine learning to help developers find the right design patterns for them.
Objectives
Our team’s objective was to build a web application that allows developers to describe their software design problem and submit to read a list of recommended design patterns that may be suitable for their problem. The application uses an automated web crawler to collect design patterns from online resources into a database and unsupervised machine learning techniques to automatically categorize these patterns and determine which patterns are best to solve a submitted problem.
Approach
- Met with the sponsor (Dr. Shahid Hussain) weekly to gather client’s needs and elicit requirements
- Engineered user requirements into system requirements
- Generated a system design, including UML diagrams and UI mockups
- Experimented with clustering and NLP in Python and web scraping with Scrapy
- Performed testing with different inputs for design problems
- Improved clustering accuracy
- Set up a Django web app and an SQLite database
- Connected the ML module to the web app
- Set up a login system and automated crawler for the web app
- Performed testing on the web app, then deployed it
Outcomes
- There is a new way for developers and students to find design patterns based on the problem domain rather than the solution domain
- It’s a new place where students can learn more about design patterns
- Students and developers may save time in generating software design
- Behrend faculty and senior developers may save time that they would have spent helping students and junior developers find suitable design patterns
- Administrators will be able to contribute to the knowledge of design patterns by editing the database
Recent Comments