Investigating challenges to software maintenance in small organizations: a grounded theoretical approach