1. A method comprising: generating an object-oriented specification of a system design; generating a nested-list data structure based on said object-oriented specification, wherein said nested-list data structure has the same structure as source code for a functional programming language; inputting said nested-list data structure as a source code program to an evolutionary programming engine that processes said source code using said functional programming language; and generating a decomposition of said system design based on an output source code program generated by said evolutionary programming engine, wherein said decomposition is an improvement in at least one of (i) a measure of cohesion, and (ii) a measure of coupling, as compared to another decomposition of said system that is not based on an output from said evolutionary programming engine.