1. A method of automatically generating software from one or more predefined functions in accordance with an input statement entered in natural language, the method comprising the steps of: (i) analysing the input statement for its semantic content, so as to extract first semantically meaningful elements from the input statement; (ii) analysing the one or more predefined functions for their semantic content, so as to extract one or more sets of second semantically meaningful elements from the one or more predefined functions; (iii) identifying at least one of a condition, an action and/or a statement in the input statement; (iv) comparing the first semantically meaningful elements with the second semantically meaningful elements so as to identify one or more predefined functions that correspond to one or more action and/or statement of the input statement; (v) combining at least some of the first semantic elements in accordance with any conditions identified at step (iii) so as to generate corresponding condition variables; (vi) combining functions and condition variables identified at steps (iv) and (v) according to a set of predetermined rules in order to generate the software.