Software Structure
  As the scale of projects become massive, software engineers face three problems:
    
      - Structure. Software often becomes bloated, preventing new features from easily being implemented. 
 
      - Complexity. Making one minor change to a piece of code can impact another system.
 
      - Reusability. Differing clientele requires specific functions tailored to their needs.
 
    
    These issues have a direct impact on the cost of development, pushing software engineers to adopt a modularized approach to coding.