What every engineer should know about software engineering This book offers a practical approach to understanding designing and building sound software based on solid principles. Using a unique Q&A format it addresses the issues that engineers need to understand in order to successfully work with software engineers develop specifications for quality software and learn the basics of the most common programming languages development approaches and paradigms. The new edition is thoroughly updated to improve pedagogical flow and emphasize new software engineering processes practices and tools that have emerged in every software engineering area. It is aimed at a wide range of engineers across disciplines who work with software