1. A method for developing a software project comprising the steps of: identifying business cases and goals for the software project; defining a common interface architecture through which components of said software project are to be integrated; identifying software project components to be integrated over said common interface; defining high level requirements of said project components; elaborating the component interfaces and defining detailed component requirements; implementing said project components; testing said project components individually; defining integration tests for testing integrated components; and executing said integration tests on a set of integrated components.