Software engineering is understood as a broad term linking science, traditional en- neering, art and management and is additionally conditioned by social and external factors (conditioned to the point that brilliant engineering solutions based on strong science, showing artistic creativity and skillfully managed can still fail for reasons beyond the control of the development team). Modern software engineering needs a paradigm shift commensurate with a change of the computing paradigm from: 1. Algorithms to interactions (and from procedural to object-oriented programming) 2. Systems development to systems integration 3.Products to services Traditional software engineering struggles to address this paradigm shift to inter- tions, integration, and services. It offers only incomplete and disconnected methods for building information systems with fragmentary ability to dynamically accom- date change and to grow gracefully. The principal objective of contemporary software engineering should therefore be to try to redefine the entire discipline and offer a complete set of methods, tools and techniques to address challenges ahead that will shape the information systems of the future.