- Published on
CH1. Introduction to Software Engineering
- Authors

- Name
- seren-wib
Contents
- 1. Fundamentals of Software Engineering
- 1.1 What Is Software?
- Program VS Software
- 1.2 Classification of Software
- System Software
- Utility Software (Service Programs)
- Application Software
- 1.3 The Code-and-Fix Model and the Need for Software Engineering
- 1.4 What Is Software Engineering?
- 1.5 Key Factors Affecting Software Development Productivity
- PPT (People, Process, Technology) Framework
- 1.6 Software Development Life Cycle
- 1.6.1 What Is the Software Development Life Cycle?
- 1.6.2 Benefits of Applying the Software Development Life Cycle (Project Manager and Developer Perspectives)
- Manager Perspective
- Developer Perspective
1. Fundamentals of Software Engineering
1.1 What Is Software?
- System = hardware + software
- Software = collectively, the instructions for use, data, programs and related documentation needed to carry out a specific purpose.
- Characteristics of software: intangibility, invisibility, complexity, lack of fixed form
Program VS Software
- Program: a set of instructions
- Software: a set of procedures, data and instructions, including the programs
1.2 Classification of Software
Hardware ← System SW (utilities are a part of this) ← Application SW ← End user
System Software
- Software that mediates the interaction between the user and the hardware
- Things like the OS, firmware, loaders, linkers
Utility Software (Service Programs)
- Provides system optimization, maintenance and analysis services
- Part of system software; works in the background while the computer keeps running
- Things like antivirus software, optimization programs
Application Software
- Software that runs on top of system software
- Programs that help with the end goal
- Word processors, DBMSs, browsers, etc.
1.3 The Code-and-Fix Model and the Need for Software Engineering
- Code-and-Fix: writing code first without a plan and writing documentation afterwards to match the code
- Writing code this way leads to problems such as development delays, cost overruns, poor quality, low reliability, difficult handovers and difficult maintenance
- 4 characteristics of the software crisis: quantity, quality, cost, missed deadlines
1.4 What Is Software Engineering?
- IEEE definition: a methodology for efficient, systematic management of every process in the software life cycle: planning, development, deployment, maintenance and retirement
- SESC (Software Engineering Standards Committee)
1.5 Key Factors Affecting Software Development Productivity
PPT (People, Process, Technology) Framework
- People
- Technology
- Process
1.6 Software Development Life Cycle
1.6.1 What Is the Software Development Life Cycle?
SDLC: planning → requirements analysis → design → development (implementation) → testing → deployment and maintenance
1.6.2 Benefits of Applying the Software Development Life Cycle (Project Manager and Developer Perspectives)
Manager Perspective
- Projects are easier to manage, and overlapping responsibilities can be avoided
- Easier resource management, cost efficiency
- Problems are clearly identified
- Sufficient testing can be carried out.
- Little is lost even if a developer leaves midway.
Developer Perspective
- A clear work schedule.
- When a failure occurs, the same procedure can be followed until the problem is resolved.