الدكتور بٌجٌب سؤال من كل محاضرة بناءا على االسئلة الً جت فً المٌد بتاعنا وبتاع رابعة ومٌد االعذار
فاانت لو ذاكرت التالت مٌدات تقول تقرٌبا ذاكرت اهم االسئلة فً اول خمس محاضرات
1. What is Software Engineering?
Software engineering is the systematic application of engineering principles to
design, deployment, software, development, and testing, maintenance of software
- Key Aspects of Software Engineering:
• Structured Process → Uses methodologies to manage complexity.
• Team Collaboration → Involves working in teams to develop software.
• Quality Assurance → focuses on producing high-quality software
• Scalability & Maintainability → ensures that software remains functional and adaptable over
time.
2. Importance of Software Engineering
•Reduces Complexity
• Ensures Reliability
• Minimizes Costs
• Improves Security
3. Software Development Life Cycle (SDLC)
1. Requirement Analysis→ Understanding what the software should do.
2. Planning → Estimating time, cost, and resources.
3. Design → creating architecture and UI/UX plans.
4. Implementation( التنفٌذCoding) → Writing and testing the software code.
5. Testing → Identifying and fixing bugs before release.
6. Deployment → إنتشارdelivering the software to users.
7. Maintenance → Updating and fixing software over time
Popular SDLC Models:
• Waterfall Model (Traditional & Sequential)
• Agile Model (Iterative & Flexible)
• DevOps Model (Development & Operations)
5. Ethics in Software Engineering
• Privacy and Security
• Software Reliability
• Intellectual Property
• User Safety
6. Real-World Applications of Software Engineering
• Web & Mobile Applications
• Embedded Systems
• Cloud Computing
• AI & Machine Learning
* Types of Software Development Methodologies
1. Waterfall Model (Traditional & Sequential)
2. Agile Model (Iterative & Flexible)
3. Scrum (Agile Framework)
4. Kanban (Agile Framework)
5. DevOps Model (Development & Operations)
1. Waterfall Model (Traditional & Sequential)
Overview:
The Waterfall model is a linear, step by-step process where each phase must be
completed before moving to the next.
Pros:
Simple and easy to follow.
Well-documented and structured.
Cons:
Rigid and inflexible to changes.
Not suitable for complex, evolving projects.
Use Cases: • Small, well-defined projects (e.g., government systems)
2. Agile Model (Iterative & Flexible)
Overview:
It focuses on iterative development, where software is built incrementally through
small, fast cycles.
Pros:
Faster feedback and adaptability.
Reduces risk by detecting problems early
Cons:
Requires frequent customer interaction.
Requires experienced developers
Use Cases:
• Startups and tech companies.
• Web and mobile app development.
3. Scrum (Agile Framework)
Overview:
Scrum is an Agile framework where development happens in short cycles called Sprints
(typically 2–4 weeks).
Pros:
Rapid iterations and continuous improvement.
Increased productivity transparency
Cons:
Requires frequent meetings.
Can be hard to scale for large teams
Use Cases:
• Software startups, SaaS applications.
• Game development
4. Kanban (Agile Framework)
Overview:
Kanban is a visual workflow management system that focuses on continuous delivery
without fixed iterations like Scrum.
Pros:
Helps teams manage workload efficiently.
Provides a clear, real-time visual of project progress.
Cons:
Less structured than Scrum.
Use Cases:
• Customer support software.
• DevOps and IT teams.
5. DevOps Operations) integrates
Overview:
DevOps integrates software development (Dev) and IT operations (Ops) to enable
continuous integration and continuous deployment (CI/CD).
Pros:
Faster and more reliable software releases.
High automation reduces manual errors
Cons:
Complex implementation
Needs a cultural shift and training.
Use Cases:
• Large-scale cloud applications.
• E-commerce and SaaS platforms.
LEC2:
What is Requirements Engineering?
is the process of identifying, documenting, analyzing, and managing software system
requirements.
1. Importance of Requirements Engineering Effective
• Reduces Miscommunication
• Prevents Costly Rework
• Improves Project Success
• Enables Better Planning
2. Key Activities in Requirements Engineering
1. Elicitation (Gathering Requirements)
2. Specification (Documenting Requirements)
3. Modeling & Analysis (Understanding Requirements)
4. Validation & Verification (Checking Requirements)
5. Requirements Management (Tracking & Changing Requirements)
3. Types of Software Requirements
A. Functional Requirements (FRs)
B. Non-Functional Requirements (NFRs)
C. Business Requirements
D. User Requirements
E. System Requirements
4. Requirements Engineering Process
Step 1: Requirements Elicitation (Gathering Needs)
Step 2: Requirements Analysis (Validating Needs)
Step 3: Requirements Specification (Documenting Needs)
Step 4: Requirements Validation (Ensuring Correctness)
Step 5: Requirements Management (Tracking Changes)
5. Characteristics of Good Requirement
A good requirement should be:
• Specific • Measurable • Achievable • Relevant • Time-bound • Complete •
Unambiguous • Verifiable
6. Challenges in Requirements Engineering
Changing Requirements
Ambiguous Requirements
Lack of User Involvement
7. Tools Used in Requirements Engineering
• Collaboration Tools • Modeling Tools • Documentation Tools • Prototyping Tools
Lec3 helmy made it.
Lecture 4
Software Implementation and Coding Standards
1. What is Software Implementation?
Software implementation is the process of writing, compiling, testing, deploying source code
based on the system design.
2. Software Implementation Process
Step 1: Code Development
Step 2: Code Compilation & Debugging
Step 3: Code Review & Refactoring
Step 4: Unit Testing
Step 5: Integration & Deployment
3. Common Coding Standards and Best Practices
A. Naming Conventions
B. Code Formatting & Indentation
C. Commenting and Documentation
D. Error Handling and Exception Management
E. Security Best Practices
F. Version Control and Code Collaboration
4. Code Review Process
A code review is a systematic examination of source code to improve quality
Best Practices/methods for Code Reviews:
Follow a checklist (code formatting, security, performance).
Keep code changes small and focused.
Provide constructive feedback (not just criticism).
Use automated tools like SonarQube for code analysis.
5. Tools for Code Implementation
Code Formatting & Linting
Static Code Analysis
Version Control & Collaboration
Security Testing
LEC5:
1. What is Software Testing?
Software Testing is the process of evaluating a software application to detect and fix
defects before deployment.
2. Objectives of Software Testing:
Identify and fix bugs.
Ensure software functionality aligns with requirements.
Verify performance, security, and usability.
Improve overall software quality.
3. Types of Software Testing
A. Manual Testing -> Performed manually without automation tools.
B. Automated Testing ->Uses scripts and tools to execute tests automatically.
4. Software Testing Types and Techniques
A. Functional Testing-> Tests what the software does based on requirements.
B. Non-Functional Testing-> Tests how the system performs under different conditions
5. Software Testing Life Cycle (STLC)
1. Test Planning → Define testing scope, strategy, and tools.
2. Test Case Development → Write test cases and scripts.
3 .Test Environment Setup → Prepare test environment
4. Test Execution → Run tests and log defects.
5 .Test Closure → Analyze results and prepare reports.
LEC6..
1. What is Software Maintenance?
Software maintenance is the process of updating and modifying software after its release to
ensure it continues functioning correctly and efficiently.
Objectives of Software Maintenance:
Correct errors and fix defects.
Improve performance and optimize code.
Adapt software to new environments (OS updates, hardware changes).
Enhance software with new features.
2. Types of Software Maintenance
A. Corrective Maintenance -> Fixes bugs and errors found after deployment
B. Adaptive Maintenance -> Modifies software to work in new environments.
C. Perfective Maintenance -> Improves performance, usability, and adds new features.
D. Preventive Maintenance -> Detects and fixes potential issues before they cause failures.
3. Software Evolution:
It refers to the continuous development of software to keep it relevant and efficient over
time.
It follows Lehman’s Software Laws of Evolution, which state:
1- Continuing Change → Software must evolve or become obsolete.
2- Increasing Complexity → more features lead to higher maintenance needs.
3- Self-Regulation → Maintenance stabilizes over time.
4- Conservation of Organizational Stability → Teams maintain a steady rate of change
6. Best Practices for Effective Software Maintenance
A. Follow a Version Control System (VCS)
B. Implement Automated Testing
C. Maintain Clear Documentation
D. Monitor System Performance & Security
LEC7…
1. What is Software Project Management?
Software project management involves applying methodologies, tools, and best practices to ensure the
successful execution of software projects.
Key Objectives:
Define clear project goals and requirements.
Plan and allocate resources and budget efficiently.
Manage risks, changes, and dependencies.
Ensure timely delivery of high-quality software.
Communicate with stakeholders and development teams
4. Key Roles in Software Project Management
A. Project Manager (PM)
B. Product Owner (PO) (Agile Projects)
C. Development Team
D. Scrum Master (Agile)
LEC8…
1. What is DevOps?
DevOps is a set of practices and tools that enhance collaboration, automation, and monitoring across
the software development lifecycle (SDLC)
Key Goals of DevOps:
Continuous Integration & Continuous
Deployment (CI/CD)
Faster Time-to-Market
Infrastructure as Code (IaC)
Automated Testing & Monitoring
2. DevOps Lifecycle
3. Continuous Integration (CI) & Continuous Deployment (CD)
Continuous Integration (CI):
• Developers merge code frequently into a shared repository
• Automated builds and tests ensure early bug detection.
• Tools: Jenkins, GitHub Actions.
Continuous Deployment (CD):
• Automates code deployment to production environments.
• Reduces manual effort and speeds up software delivery
• Tools: Kubernetes, ArgoCD.
4. Infrastructure as Code (IaC)
What is IaC?
• Infrastructure (servers, networks, databases) is managed as code.
• Automates provisioning, scaling, and configuration.
Benefits:
Eliminates manual configuration.
Ensures consistency across environments.
Enables faster deployments and disaster recovery
Popular IaC Tools:
• Terraform → Manages infrastructure using declarative configuration.
• Ansible → Automates server provisioning and software installation.
• CloudFormation → AWS-native IaC for managing cloud resources.
5. Containerization & Orchestration
What is Containerization?
• Packages applications and dependencies into lightweight, portable containers.
• Containers run consistently across different environments.
• Popular Tool: Docker
What is Orchestration?
• Manages multiple containers efficiently
• Ensures scalability, load balancing, and fault tolerance.
• Popular Tool: Kubernetes
6. Security in DevOps (DevSecOps)
Why Security in DevOps?
Prevent data breaches & cyberattacks.
Automate vulnerability scanning.
Shift security left (early in development)
Key Security Practices:
Static Code Analysis (SAST): Detects vulnerabilities in source code
Dynamic Scanning (DAST): attacks on running applications
Secrets Management: Secure API keys & credentials
LEC9… Emerging Trends in Software Engineering
السؤال لو جه فً المحاضرة دي هٌبقى فً الغالب هٌبقى زي الكوٌز وهٌكون عبارة عن انه هٌطلب منك اتنٌن ترٌندس وتتكلم
عنهم فبصملجك اتنٌن تالتة ترندس وحاو اوي على كده
1. Artificial Intelligence (AI) and Machine Learning (ML) in Software Engineering
AI and ML are being used to automate coding, testing, debugging, and project management.
* Key Applications:
AI-Powered Code Generation → Tools like GitHub Copilot and ChatGPT Code
Interpreter suggest or auto-generate code.
Automated Software Testing → AI based tools like Testim improve test coverage
Bug Detection & Fixing → AI powered static analysis (e.g., DeepCode) finds vulnerabilities faster.
Example:
AI-powered assistants help developers write faster, optimized code, reducing human errors and
debugging time
2. Low-Code and No-Code Development
Platforms that allow non-programmers to develop applications using a drag-and drop interface
with minimal coding.
* Popular Tools:
Low-Code: Microsoft PowerApps, OutSystems, Mendix.
No-Code: Bubble, Adalo, Webflow.
Example:
Startups & small businesses can develop web & mobile applications without hiring full-stack
developers.
3. DevOps Evolution
GitOps → Uses Git repositories as the single source of truth for managing infrastructure &
deployments, Popular Tools: FluxCD, ArgoCD
NoOps → Automates infrastructure management so developers focus only on coding
, Popular Tools: AWS Lambda, Azure Functions
AIOps → Uses AI-driven monitoring & incident response to manage IT operations automatically
, Popular Tools: Splunk, Datadog, New Relic AI
Example:
Netflix uses AIOps for real time issue detection and auto-healing of services
4. Cloud-Native computing & Serverless Architectures
Software is built to run in cloud environments, using containers, microservices, and serverless
computing.
* Key Technologies:
Containers & Kubernetes → Ensure application portability across cloud environments.
Serverless Computing (FaaS) → Services like AWS Lambda remove the need for managing
servers.
Example: E-commerce platforms use serverless computing to handle sudden traffic spikes
5. Quantum Computing in Software Engineering
Quantum computing enables super-fast processing using qubits instead of traditional bits.
* Example:
Google's Quantum AI and IBM Q are developing software that solves problems exponentially
faster than classical computers.
6. Blockchain & Decentralized Applications (DApps)
Blockchain enables secure, transparent, and decentralized software solutions.
* Example:
IBM Food Trust uses blockchain to track food supply chains securely.
7. Cybersecurity-Driven Development (DevSecOps)
Integrating security into every stage of software development rather than an afterthought
* Example:
Facebook & Google use AI driven security tools to detect fraud, phishing, and cyber threats.
8. Sustainable & Green Software Engineering
Developing software with energy efficiency & environmental impact in mind.
* Example:
Google AI optimizes data centers, reducing energy usage by 40%.
9. 5G & Edge Computing in Software Development
5G & Edge Computing allow ultra fast, low-latency processing close to users rather than in
distant cloud servers.
* Example:
Tesla’s self-driving cars use Edge Computing to process AI models locally for faster decisions.