What is Software Engineering
What is Software Engineering
Software Engineering (known as Génie Logiciel in French) is a discipline that involves the application of
engineering principles to the design, development, testing, deployment, and maintenance of software
systems. It is a systematic, disciplined, and quantifiable approach to software development, ensuring that
software is reliable, efficient, and meets user requirements.
Why is Software Engineering Important?
Key Principles of Software Engineering
Software engineering relies on key principles. These principles ensure software is robust and meets user needs.
Modularity 🧩 1
Break software into smaller, independent components. This
makes development, debugging, and updates much easier. 2 Don't Repeat Yourself (DRY)
Avoid duplicate code by using functions, classes, and reusable
components. This improves code maintainability and efficiency.
Software engineering powers some of the most important technologies we use today. Here are some key
applications across different fields:
The Software Development Life Cycle (SDLC) is a structured framework that defines the stages involved in
developing software, from initial planning to deployment and maintenance. It ensures systematic, efficient,
and high-quality software delivery while managing risks, costs, and timelines.
Below is a breakdown of the SDLC phases, common methodologies, and their importance:
1. Planning & Requirements Analysis
Software Development Life Cycle (SDLC) models provide a structured approach to software creation,
ensuring high quality and efficiency. Various models exist, each catering to different project needs,
complexity levels, and team structures.
The Waterfall Model is one of the oldest and most straightforward SDLC models. It follows
a linear, sequential approach, where each phase (e.g., requirements, design, development,
testing, deployment) must be completed before moving to the next.
1. Waterfall Model
2. Agile Model
The Agile Model is a highly flexible and iterative approach that focuses on delivering
software in small, functional increments called sprints. It emphasizes collaboration,
customer feedback, and continuous improvement.
2. Agile Model