Source: https://ocw.mit.edu/courses/16-355j-software-engineering-concepts-fall-2005/4b3577da7baf3801621e092a5fa32b92_intro_softarch.pdf