logo
Published on

CH1. Introduction to Software Engineering

Authors
  • avatar
    Name
    seren-wib
    Twitter
Contents

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

  1. People
  2. Technology
  3. 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

  1. Projects are easier to manage, and overlapping responsibilities can be avoided
  2. Easier resource management, cost efficiency
  3. Problems are clearly identified
  4. Sufficient testing can be carried out.
  5. Little is lost even if a developer leaves midway.

Developer Perspective

  1. A clear work schedule.
  2. When a failure occurs, the same procedure can be followed until the problem is resolved.