Software Engineering
Lecture1
DR. Nashwa Nageh
INTRODUCTION TO SOFTWARE ENGINEERING
Course Name : Software Engineering
Instructor Name : Nashwa Nageh
Instructor’s email :
[email protected] Date: Semester 2, 2025
COURSE OVERVIEW
This course introduces software engineering principles,
methodologies, and best practices for developing high-quality
software.
Recommended Course Textbooks
1) Ian sommerville, "software
engineering (10th edition)",
addison wesley, ISBN: 978-
0137035151, 2010.
2) B. B. Agarwal, s. P. Tayal, m. Gupta,
software engineering & testing.
COURSE TOPICS OVERVIEW
Fundamentals of Software Engineering
Software Processes & Agile Development
Requirements Engineering
System Modeling & Design
Software Architecture & Patterns
Software Testing & Quality Assurance
Security & Risk Management
Software Maintenance & Evolution
Why .. Software Engineering?
The economies of ALL developed nations are dependent on
software.
More and more systems are software controlled.
Software engineering is concerned with theories, methods and tools
for professional software development.
Expenditureon software represents a significant fraction of
GNP (Gross National Product) in all developed countries.
Why .. Software Engineering?
The Standish Group (research organization, which analyzes the success and failure
rates of IT projects) has been publishing reports on the success of software
projects. In its latest report it identified that:
Only 39% of all projects were being delivered on time, on budget, with the required
features and functions.
.. 43% were late, or over budget, or not delivering all the required features.
.. 18% were either cancelled before delivery or delivered but never used.
In those reports, the major problems have been identified. Among these
problems were the following:
Poor, or lack of, user involvement.
Lack of clear business objectives.
Under and over building – building features that are never used and not building all the
required features.
WHAT IS SOFTWARE ENGINEERING?
Definition:
Software Engineering is the systematic approach to design,
development, testing, deployment, and maintenance of software.
- Combines engineering principles with software development.
- Focuses on scalability, reliability, and maintainability.
IMPORTANCE OF SOFTWARE ENGINEERING
Why do we need Software Engineering?
Manages complexity in large-scale systems.
Reduces software failures and bugs.
Improves efficiency, maintainability, and security.
Enhances team collaboration with structured development
approaches.
SOFTWARE ENGINEERING PROCESS
Software Development Lifecycle (SDLC):
1. Requirement Analysis
2. System Design
3. Implementation (Coding)
4. Testing
5. Deployment
6. Maintenance & Evolution
SOFTWARE DEVELOPMENT MODELS
Waterfall Model – Sequential & structured.
Agile Methodology – Iterative & flexible.
DevOps – Continuous development & integration.
Spiral Model – Risk-driven iterative approach.
REQUIREMENTS ENGINEERING
What are Software Requirements?
- Functional (What the system does).
- Non-functional (Performance, security, usability).
- User & System Requirements.
Steps in Requirements Engineering:
1. Elicitation
2. Documentation
3. Validation
SYSTEM MODELING
What is System Modeling?
- Visual representation of software architecture.
- UML (Unified Modeling Language) Diagrams.
- Helps in requirement clarification.
SOFTWARE DESIGN & ARCHITECTURE
Design Principles:
Modularity → Break into smaller parts.
Separation of Concerns → Each part has a single responsibility.
Encapsulation → Hide unnecessary details for security & clarity.
Scalability → Ensure the system can grow without performance issues.
SOFTWARE DEVELOPMENT & IMPLEMENTATION
Software design and implementation is a crucial stage in the software
engineering process where a functional, executable system is
developed.
It involves:
Designing the system architecture (how different components
interact).
Writing the actual code based on the requirements.
Testing and debugging to ensure quality and reliability.
SOFTWARE TESTING & QUALITY ASSURANCE
Types of Testing:
Unit Testing
Integration Testing
System Testing
User Acceptance Testing (UAT)
Quality Assurance Techniques:
- Code Reviews
- Debugging
- Automated Testing
SOFTWARE MAINTENANCE & EVOLUTION
Why is Maintenance Important?
Fixing bugs & security vulnerabilities.
Adapting to new requirements.
improving performance.
SECURITY IN SOFTWARE ENGINEERING
Key Security Concepts:
Authentication & Authorization
Secure Coding Practices
Data Encryption & Privacy
CAREER PATHS IN SOFTWARE ENGINEERING
Roles & Career Opportunities:
💼 Software Developer
💼 DevOps Engineer
💼 Cybersecurity Engineer
💼 AI/ML Engineer
💼 Cloud Architect
SUMMARY & COURSE EXPECTATIONS
Software Engineering is about solving real-world problems systematically.
This course covers engineering principles, methodologies, and tools.
Be ready for hands-on projects, case studies, and real-world applications.
Next Steps:
📚 Read Chapter 1 from Sommerville’s book
🔍 Research real-world software engineering case studies
🚀 Install Git & a programming IDE (VS Code, IntelliJ, PyCharm)