Book cover

Buy e-book on Leanpub

To report errors or typos, use this form.

Home | Dark Mode | Cite

Software Engineering: A Modern Approach

Marco Tulio Valente

Preface

This book is an English translation of a work originally published in early 2020. Initially intended for Brazilian students, we chose to write it in Portuguese to maximize accessibility and make an impact on Software Engineering education throughout our country.

Fortunately, the book has been a considerable success, surpassing our expectations by a wide margin. It is now adopted by numerous Brazilian universities in different states across the country. Although estimating exact figures is difficult, we have indications that over 400 instructors have used or are currently using the book. We frequently receive messages with positive feedback from students, instructors, and industry professionals who are using the book to improve their skills in the field.

Thus, with the book firmly established in Brazil by late 2023, we decided to embark on an English translation project with the aim of reaching a global audience. This decision was also motivated by requests from Brazilian colleagues working abroad. Furthermore, the Portuguese edition remains relevant and doesn’t require significant updates.

For a deeper insight into the motivations behind writing the book, its organization, and features, we recommend that readers refer to the original preface, which we have reproduced in the following pages.

Website

The book has an open access version, available at https://softengbook.org. To report any errors, inconsistencies, or typos, please use the form at (link).

Marco Tulio Valente

Belo Horizonte, March 19, 2024

Preface to the Brazilian Edition

The uselessness of prefaces is a commonplace in the history of prefaces, so I will be brief. – Eduardo Giannetti

The idea of writing this book emerged in early 2019 when I was assigned to teach the Software Engineering course for the Bachelor’s degree in Computer Science at UFMG, Brazil. To prepare for the course, I began by analyzing well-known Software Engineering books. To my surprise, I found they had changed little since I had taken the course during my undergraduate studies more than 25 years earlier.

My goal was to choose a book that would allow me, at the beginning of a class, to inform the students: Today, we will study this topic, which corresponds to this chapter in the book. At the end of the class, I wanted to suggest to the students: To better comprehend the topics we just covered, I suggest you do these exercises. Unfortunately, I couldn’t find such a book. Instead, I had to conduct extensive research and read at least 15 books.

As a result, I created 600 slides with the core material for an undergraduate course in Software Engineering, specifically for programs that have only one course in the field. However, studying just from slides does not provide the learning experience obtained from reading a full and contextualized text.

Thus, I had the idea of transforming the slides into a book that could fulfill the role of the textbook of my dreams. It could also help other instructors who might face similar challenges when teaching an introductory Software Engineering course.

I would like to highlight the following points about the content, organization, and writing strategy of the book:

Audience

This book is intended for undergraduate students. It was created for use in curricula with a single 60-hour Software Engineering course. However, in conjunction with other books, it can be used in programs with two or more classes in the field.

It can also be used in technical and technological degree programs. Indeed, we tried to use clear language, close to colloquial speech, to reduce the barriers to the book’s adoption. Finally, we also wrote the book with industry professionals in mind, especially those who are seeking to improve their knowledge of modern Software Engineering topics.

Prerequisites

Readers should have knowledge of basic programming concepts, algorithms, and data structures. Additionally, we highly recommend knowledge of object-oriented concepts. Assuming a 4-year undergraduate degree, the book is best suited for students in the latter half of their studies.

Marco Tulio Valente

Belo Horizonte, February 10, 2020

Author

Marco Tulio Valente holds a Ph.D. in Computer Science from the Federal University of Minas Gerais, Brazil, where he is an Associate Professor in the Department of Computer Science since 2009. Previously, he was an adjunct professor at PUC Minas for 11 years and a senior systems analyst at a telecommunication company for 4 years. He is the author of over 150 scientific papers and has supervised more than 30 master’s theses and 15 doctoral dissertations.

Acknowledgments

I would like to thank the 30 students who have been part of the ASERG research group over the last decade. A substantial part of the book’s content has its origin in the work of our group. Special thanks to Professors Eduardo Figueiredo and André Hora, my colleagues at DCC/UFMG, who reviewed some chapters of the book. Also, to Prof. José Luis Braga, who gave valuable suggestions to improve the text. I’d like to thank the students of the postgraduate course we offered in the second semester of 2019 who helped us to calibrate and refine the book’s content—especially Ulisses Fernandes and Fábio Ferreira, for their careful review. Thanks also to Aline Brito, who helped convert the text into the final format, and to João Eduardo Montandon and Hudson Borges, for reviewing the appendix on Git. Lastly, thanks to Osvaldo and Cynthia Valente, for proofreading parts of the manuscript.