A computer-implemented method for developing software, the method comprising: providing a source component repository storing source code of plural software components , wherein the source code of each software component is individually editable, wherein each software component is for performing a single and complete function and wherein each software component is independent of any runtime environment; providing a binary component repository storing binary code of the plural software components , wherein the binary code of each software component is individually downloadable; editing (S1) the source code of a component of the plural software components ; downloading (S2) the binary code of at least one other component of the plural software components ; and generating (S3) from a combination of the edited component and the at least one downloaded component a target application that is dependent on a particular runtime environment; wherein the generating step (S3) comprises: forming a packaged component describing the component combination; and performing dependency injection comprising providing (S3.2) information identifying a set of fixed implementation classes and information regarding the particular runtime environment to the packaged component to implement an interface between the packaged component and the particular runtime environment; wherein the generating step (S3) is completed before runtime of the target application . providing a source component repository storing source code of plural software components , wherein the source code of each software component is individually editable, wherein each software component is for performing a single and complete function and wherein each software component is independent of any runtime environment; providing a binary component repository storing binary code of the plural software components , wherein the binary code of each software component is individually downloadable; editing (S1) the source code of a component of the plural software components ; downloading (S2) the binary code of at least one other component of the plural software components ; and generating (S3) from a combination of the edited component and the at least one downloaded component a target application that is dependent on a particular runtime environment; wherein the generating step (S3) comprises: forming a packaged component describing the component combination; and performing dependency injection comprising providing (S3.2) information identifying a set of fixed implementation classes and information regarding the particular runtime environment to the packaged component to implement an interface between the packaged component and the particular runtime environment; wherein the generating step (S3) is completed before runtime of the target application . forming a packaged component describing the component combination; and performing dependency injection comprising providing (S3.2) information identifying a set of fixed implementation classes and information regarding the particular runtime environment to the packaged component to implement an interface between the packaged component and the particular runtime environment; wherein the generating step (S3) is completed before runtime of the target application . <EOS>