JUW/Spring Semester 2025
SE Notes
___
Chapter 1
What is Software Engineering?
Software engineering is a systematic way to build reliable and correct software. It uses
engineering principles to create high -quality, cost -effective software that meets user needs.
Software is everywhere—phones, banks, hospitals—so building it well is cr ucial.
Professional Software Development Process
Building software professionally involves these steps (not always in order, sometimes repeating
steps):
1. Requirements Gathering:
- Talk to users to understand what they need.
- Methods: Intervi ews, surveys, prototypes (early versions for feedback).
2. Feasibility Study:
- Check if the project is doable (technically, financially, etc.).
3. System Analysis:
- Plan how the software will work (high -level design).
4. Software Design:
- Detailed design (how buttons look, how data is stored).
5. Coding:
- Write the actual code following best practices.
6. Testing:
, - Find and fix bugs (unit tests, system tests).
7. Integration:
- Combine different parts of the software to work together.
8. Implementation:
- Release the software to users.
9. Maintenance
- Fix issues and improve the software over time.
Software Process Models
Different ways to organize software development:
1. Waterfall Model:
- Linear steps (finish one step before moving to the next).
- Good for projects with clear, unchanging requirements.
- Disadvantage: Hard to make changes once a step is done.
2. Agile Model:
- Flexible, iterative (work in small cycles called sprints).
- Good for projects where needs change often.
- Disadvantage: Needs skilled teams and good communication.
3. Spiral Model:
- Combines waterfall and iterative approaches. Focuseson reducing risks.
4. Iterative Model:
- Build software in cycles, adding features step by step.
,Software Engineering Best Practices
- Requirements Engineering:
- Identify stakeholders (users, clients).
- Document needs clearly (use cases
, user stories).
- Design:
- Choose an architecture (e.g., microservices).
- Use UML diagrams (like blueprints for software).
- Apply design patterns (reusable solutions to common problems).
- Implementation:
- Write clean code with consistent standards.
- Use tools like GitHub for teamwork.
- Testing:
- Test-Driven Development (write tests before code).
- Auto mated testing (saves time).
- Deployment:
- Use containers (Docker) for easy deployment.
- Monitor software after release (catch issues early).
- Maintenance:
- Refactor code (improve without breaking it).
- Manage technical debt (fix shortcuts taken earlier).
Ethics in Software Engineering
Software engineers must consider:
- Privacy: Protect user data.
, - Security: Build safe software.
- Fairness: Avoid biased algorithms.
- Environmental Impact: Write efficient code to save energy.
Example Dilemma: Balancing data collection for features vs. user privacy.
Case Studies
1. Linux OS: A huge open-source project built by global collaboration.
2. Apache Web Server: Another successful open
- source tool.
3. Microsoft Windows: A commercial OS with many versions.
Specific Cases:
- A mobile app to teach kids money management (user-friendly design).
- Custom software for an insurance company to process data faster.
AI in Software Engineering
AI is changing software engineering by:
- Automating tasks (writing code, finding bugs).
- Freeing engineers to focus on creative problem-solving.
- Creating new roles focused on AI tools.
Standards in Software Engineering
Rules to ensure quality:
- ISO 90003: Quality management for software.
- ISO 12207: Steps for software development.
- ISO 29119: Testing standards.
- ISO 15939: Measuring software performance.
Chapter 2: Software Processes
SE Notes
___
Chapter 1
What is Software Engineering?
Software engineering is a systematic way to build reliable and correct software. It uses
engineering principles to create high -quality, cost -effective software that meets user needs.
Software is everywhere—phones, banks, hospitals—so building it well is cr ucial.
Professional Software Development Process
Building software professionally involves these steps (not always in order, sometimes repeating
steps):
1. Requirements Gathering:
- Talk to users to understand what they need.
- Methods: Intervi ews, surveys, prototypes (early versions for feedback).
2. Feasibility Study:
- Check if the project is doable (technically, financially, etc.).
3. System Analysis:
- Plan how the software will work (high -level design).
4. Software Design:
- Detailed design (how buttons look, how data is stored).
5. Coding:
- Write the actual code following best practices.
6. Testing:
, - Find and fix bugs (unit tests, system tests).
7. Integration:
- Combine different parts of the software to work together.
8. Implementation:
- Release the software to users.
9. Maintenance
- Fix issues and improve the software over time.
Software Process Models
Different ways to organize software development:
1. Waterfall Model:
- Linear steps (finish one step before moving to the next).
- Good for projects with clear, unchanging requirements.
- Disadvantage: Hard to make changes once a step is done.
2. Agile Model:
- Flexible, iterative (work in small cycles called sprints).
- Good for projects where needs change often.
- Disadvantage: Needs skilled teams and good communication.
3. Spiral Model:
- Combines waterfall and iterative approaches. Focuseson reducing risks.
4. Iterative Model:
- Build software in cycles, adding features step by step.
,Software Engineering Best Practices
- Requirements Engineering:
- Identify stakeholders (users, clients).
- Document needs clearly (use cases
, user stories).
- Design:
- Choose an architecture (e.g., microservices).
- Use UML diagrams (like blueprints for software).
- Apply design patterns (reusable solutions to common problems).
- Implementation:
- Write clean code with consistent standards.
- Use tools like GitHub for teamwork.
- Testing:
- Test-Driven Development (write tests before code).
- Auto mated testing (saves time).
- Deployment:
- Use containers (Docker) for easy deployment.
- Monitor software after release (catch issues early).
- Maintenance:
- Refactor code (improve without breaking it).
- Manage technical debt (fix shortcuts taken earlier).
Ethics in Software Engineering
Software engineers must consider:
- Privacy: Protect user data.
, - Security: Build safe software.
- Fairness: Avoid biased algorithms.
- Environmental Impact: Write efficient code to save energy.
Example Dilemma: Balancing data collection for features vs. user privacy.
Case Studies
1. Linux OS: A huge open-source project built by global collaboration.
2. Apache Web Server: Another successful open
- source tool.
3. Microsoft Windows: A commercial OS with many versions.
Specific Cases:
- A mobile app to teach kids money management (user-friendly design).
- Custom software for an insurance company to process data faster.
AI in Software Engineering
AI is changing software engineering by:
- Automating tasks (writing code, finding bugs).
- Freeing engineers to focus on creative problem-solving.
- Creating new roles focused on AI tools.
Standards in Software Engineering
Rules to ensure quality:
- ISO 90003: Quality management for software.
- ISO 12207: Steps for software development.
- ISO 29119: Testing standards.
- ISO 15939: Measuring software performance.
Chapter 2: Software Processes