Investigating the causes of software technical debt at the architectural level