Abstract :
Software systems become increasingly complex, embedded into critical technical or business environments, evolving, and long-living. Other engineering disciplines design for modifiability, testability, and many other –ilities a-priori. In software engineering we teach the corresponding principles and laws in software engineering curricula, but we have failed to introduce them into wide-spread practice. There are 2 major reasons for this dissatisfactory situation. First, basic engineering principles for software engineering such as “information hiding” are being taught as scientific concepts, but scaling engineering style application guidelines are missing. Second, software is too a large portion built by people who have never been taught the basics of software engineering. In this presentation critical engineering principles and laws are being presented. They are part of the existing body of knowledge in our field, and they should be considered mandatory in order to avoid violation of due diligence charges. In addition, it will be demonstrated how they can be applied and checked in real projects. Finally, the software product line engineering approach will be presented as incorporating many of these principles and laws. Its potential will be illustrated using real-world examples. The main purpose of this presentation is to demonstrate that we have a large body of knowledge in our field to improve current practice. But improper mindset, technology transfer, and education are prohibiting faster progress.