CMM is a generalized model for judging or otherwise assessing the maturity of software processes. It is also a means for identifying and characterizing the key practices that are required to increase the maturity of these processes. Although software improvement was the original aim of CMM and CMMI, it has since been generalized and expanded to include other functions (such as systems engineering and product development). Moreover, CMM, CMMI and six sigma functions have been collectively implemented.