We went through a lot of projects to support rugged development and noticed there was a lack of tools for those who support rugged development indirectly so we decided to create this tool to help those and educate ourselves on what are common trends in rugged development. Rugged development stresses that code will be used in ways it was never intended and ways that can't be anticipated so we attacked this issue by designing an AI system that can keep up with the latest changes of software architecture so you don't have to!
One key component of rugged development is the security story. We feel our app can best help after identifying lifelines and coming up with a strategy for defending them.
What it does
Our application analyzes architectural diagrams and determines whether or not it has enough software security involved in the planning so you don't have to worry about it! We've trained our model to pick up on current software terminology specific to internet protocols.
How we built it
We used OCR to grab the text from pictures and fed that into machine learning classifiers to train a model to analyze the text of the architectural diagrams. We put the model into a REST service and then connected it to a web page that allows a user to upload a architecture diagram and get feedback from the model.
Challenges we ran into
The main issue was getting enough data to train on. We had to go online and look for both good cases of architectural diagrams with elements of security and architectural diagrams that didn't. Another challenge was determining what was secure because we did not know much about security before this hackathon and had to do research on all the terminology and thus limited the scope to internet protocols.
Accomplishments that we're proud of
We built a model that was able to determine bad and good architectural diagrams with 79% accuracy. We believe this could be even higher with the help of a domain expert.
What we learned
- rugged development
- security terminology
- machine learning
- REST API
- Cloud deployment
What's next for Software Architecture Diagram Analyzer
- Give more feedback on what terms caused the architecture diagram to fail or pass.
- Use more data to apply model to other types of architecture diagrams and not just internet protocols.
- Include domain expert’s input to increase accuracy.
- Generate a stop word list specific for architecture terms.