Software Engineering is a multifaceted and expanding topic. It aims to provide theories, methods and tools to tackle the complexity of software systems, from development to maintenance. Its complexity is made even more severe today by rapidadvancesin technology, the pervasivenessofsoftwareinallareasofsociety, and the globalization of software development. The continuous expansion of the ?eld presents the problem of how to keep up for practitioners...