Software Creation : A Systematic Extraction of Design Knowledge