Knowledge based automated software engineering. (2012)