“…In theory, reuse can lower development cost, increase productivity, improve maintainability, boost quality, reduce risk, shorten life cycle time, lower training costs, and achieve better software interoperability [1,2]. However, in practice, studies have shown that reuse is not always the best choice: it may be hard to implement, and the benefits of reuse cannot be reliably quantified [1].…”