Software Engineering Made Simple
A Beginner’s Guide to Building Scalable and Efficient Software
Marwa F. Mohamed
Department of Computer Science
Faculty of Computers & Informatics, Suez Canal University
Ismailia, Egypt.
First Edition, 2025
2
Preface
Software engineering is one of the most important disciplines of our time. From the mobile ap-
plications we use every day to the large-scale systems that support industries and governments,
software shapes nearly every aspect of modern life. However, creating reliable and efficient soft-
ware is not just about writing code. It requires well-structured processes, systematic methods,
and effective collaboration between people.
This book, Introduction to Software Engineering, aims to guide students and practitioners
through the core principles and practices of the field. It begins with the foundations—what
software is, the types of software products, and the qualities that make software valuable. It
then expands into broader aspects of software engineering, including professional roles, respon-
sibilities, and the ethical issues that come with the discipline.
A major focus of the book is software processes. Readers will explore essential development
activities such as specification, design, validation, and evolution. Different development ap-
proaches are compared, from traditional plan-driven models like the Waterfall to agile methods
such as Scrum, Kanban, and Extreme Programming. These are discussed not only in theory
but also as strategies applied in real-world projects.
Since modern development also relies on tools, the book introduces widely used platforms
such as Jira, Azure DevOps, and Trello, helping readers understand how to select and apply
them effectively. Additional sections cover requirements engineering and software testing, em-
phasizing the importance of clear requirements and thorough validation to ensure high-quality
outcomes.
Step by step, the book takes the reader through processes, methodologies, tools, and prac-
tices, creating a complete learning path. Each chapter is designed to build knowledge gradually,
making the content suitable for beginners while still providing insights for those with prior ex-
perience.
Ultimately, this book seeks not only to teach the technical foundations of software engi-
neering but also to encourage a professional mindset—one that values quality, teamwork, and
responsibility in building software that truly meets people’s needs.
Contents 3
Contents
I First part 7
1 Introduction to Software Engineering 9
1 What is Software? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
2 Types of Software Products . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
3 What is Software Engineering? . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
4 Essential Attributes of Good Software . . . . . . . . . . . . . . . . . . . . . . . . 14
5 Software Application Types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
6 Roles in a Software Engineering Project . . . . . . . . . . . . . . . . . . . . . . 19
7 Professional and Ethical Responsibility in Software Engineering . . . . . . . . . 20
2 Software Processes 24
1 Software Processes Activities . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
1.1 Software Specification . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
1.2 Software Design and Implementation . . . . . . . . . . . . . . . . . . . . 25
1.3 Software Validation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
1.4 Software Evolution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
2 Software processes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
2.1 Plan-Based Software Development . . . . . . . . . . . . . . . . . . . . . . 29
2.2 Agile Software Development . . . . . . . . . . . . . . . . . . . . . . . . . 29
3 Choosing Between Plan-Driven and Agile Development Approaches . . . . . . . 31
3 Software Process Models 39
1 A Generic Process Model . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
2 Prescriptive Process Models . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
2.1 The Waterfall Model . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
2.2 Incremental Process Models . . . . . . . . . . . . . . . . . . . . . . . . . 45
2.3 The Spiral Model . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
3 Specialized process . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
3.1 Reuse-Oriented Software Engineering . . . . . . . . . . . . . . . . . . . . 50
4 Choosing the Right Software Process Model . . . . . . . . . . . . . . . . . . . . 52
4 Agile Methodologies 57
1 Agile Development Implementations . . . . . . . . . . . . . . . . . . . . . . . . . 58
2 Extreme Programming (XP) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
3 Scrum . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
3.1 Scrum Roles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
3.2 Scrum Framework . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
4 Kanban . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
4.1 Kanban Framework . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
4.2 Kanban Board . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
5 Comparing XP, Scrum, and Kanban . . . . . . . . . . . . . . . . . . . . . . . . . 74
5 Agile Tools 78
1 Jira . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
2 Azure DevOps . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
3 Trello . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
4 Choosing Between Jira, Azure DevOps, and Trello . . . . . . . . . . . . . . . . . 85
6 Requirements Engineering Process 89
1 System and Useer Requirements . . . . . . . . . . . . . . . . . . . . . . . . . . . 90
2 Functional and Non-Functional Requirements . . . . . . . . . . . . . . . . . . . 90
4 Contents
2.1 Functional Requirements . . . . . . . . . . . . . . . . . . . . . . . . . . . 90
2.2 Non-Functional Requirements . . . . . . . . . . . . . . . . . . . . . . . . 92
3 Requirements Engineering Process . . . . . . . . . . . . . . . . . . . . . . . . . . 93
4 Requirements Elicitation and Analysis . . . . . . . . . . . . . . . . . . . . . . . 94
4.1 Conducting Effective Interviews . . . . . . . . . . . . . . . . . . . . . . . 95
4.2 Blue Sky Brainstorming Sessions . . . . . . . . . . . . . . . . . . . . . . 95
4.3 Gray Sky Elicitation Techniques . . . . . . . . . . . . . . . . . . . . . . . 96
5 Requirements Specification . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97
5.1 User Stories in Requirements Specification . . . . . . . . . . . . . . . . . 97
6 Requirements Validation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99
6.1 Key Validation Checks . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99
6.2 Requirements Validation Techniques . . . . . . . . . . . . . . . . . . . . 102
7 Requirements Change . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103
7.1 Requirements Management Planning . . . . . . . . . . . . . . . . . . . . 104
7 Software Testing 108
1 Introduction to Software Testing . . . . . . . . . . . . . . . . . . . . . . . . . . . 109
2 Verification and Validation (V&V) . . . . . . . . . . . . . . . . . . . . . . . . . 110
3 Functional Testing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112
3.1 Unit Testing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112
3.2 Integration Testing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115
3.3 System Testing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117
3.4 User Acceptance Testing (UAT) . . . . . . . . . . . . . . . . . . . . . . . 118
4 Nonfunctional Testing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119
5 Static Testing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122
6 Software testing process . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123
6.1 Test Case . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124
List of Figures 5
List of Figures
3.1 The Process Flow [5] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
3.2 The Waterfall Model [5] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
3.3 The V-Model [5] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
3.4 The Incremental Process Model [5] . . . . . . . . . . . . . . . . . . . . . . . . . 46
3.5 The Spiral Model [5] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
3.6 The Reuse-based Development Model [1] . . . . . . . . . . . . . . . . . . . . . . 51
4.1 Extreme Programming (XP) Process Cycle [1] . . . . . . . . . . . . . . . . . . . 59
4.2 Scrum Agile Methodology [1] . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
4.3 Scrum Life Cycle (a) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
4.4 Scrum Life Cycle (b) [7] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
4.5 Kanban Board [7] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
5.1 Jira Dashboard interface in Jira Work Management [9] . . . . . . . . . . . . . . 80
5.2 Azure DevOps - Current Sprint Summary Dashboard [10] . . . . . . . . . . . . . 83
5.3 Trello Kanban Board [11]. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84
6.1 User and System Requirements . . . . . . . . . . . . . . . . . . . . . . . . . . . 91
7.1 Testing Pyramid illustrating levels of functional testing . . . . . . . . . . . . . . 112
7.2 Integration Testing Strategies . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116
7.3 Mindmap of Nonfunctional Testing types . . . . . . . . . . . . . . . . . . . . . . 120
7.4 Static and Dynamic Testing in the Development Process . . . . . . . . . . . . . 122
6 List of Tables
List of Tables
2.1 Comparison Between Agile and Plan-Driven Approaches . . . . . . . . . . . . . 34
3.1 Comparison of Software Process Models . . . . . . . . . . . . . . . . . . . . . . 54
4.1 Simplified Comparison of XP, Scrum, and Kanban . . . . . . . . . . . . . . . . . 75
5.1 Agile Tool Comparison Overview . . . . . . . . . . . . . . . . . . . . . . . . . . 85
6.1 Quantitative measures for evaluating software quality attributes . . . . . . . . . 92
7.1 Example of a Test Case . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125