1. A method of generating an extended version of software written in an object-oriented programming language which provides for object classes via a plurality of extensions to the software, the method comprising: receiving invocations of a plurality of software development scenario class extension sets comprising extensions for respective software development scenarios to be implemented by the extended version of the software; and extending one or more classes of the software as indicated by the extensions.