Introduction to Software Engineering

4 min read Updated Fri Apr 24 2026 03:46:02 GMT+0000 (Coordinated Universal Time)

Software means computer programs and associated documentation.

Software engineering is an engineering discipline concerned with theories, practical methods, and tools for professional software development.

Software engineering is important because society relies on large, complex software systems that need to be dependable and trustworthy.

Good Software

Should provide required functionality to the user. Should be maintainable (easy to modify and evolve), usable, reliable, efficient (on resources) and secure.

Software Costs

Software costs usually exceed hardware costs over a system’s lifetime.

  • Software often costs more than the hardware it runs on.
  • Maintenance cost > development cost for long-life systems.
  • Maintenance may be several times initial development cost.

Software engineering focuses on cost-effective development and maintenance.

Software Products

Specifications define what the software should do.

Generic Products

Stand-alone systems sold to the general market.

Examples:

  • Graphics software
  • Project management tools
  • CAD software
  • Appointment systems

Specifications are owned by the developer. Developer decides on changes.

Customized Products

Software built for a specific customer’s needs.

Examples:

  • Embedded control systems
  • Air traffic control systems
  • Traffic monitoring systems

Specifications are owned by the customer. Customer decides on changes

Software Process Activities

  • Software specification
    Defining what the system should do
  • Software development
    Designing and programming the system
  • Software validation
    Checking that the system meets the requirements
  • Software evolution
    Modifying the system to meet changing needs

General Issues in Software Engineering

Heterogeneity

Systems run across:

  • Networks
  • Different hardware
  • Mobile and distributed devices

Business and Social Change

  • Rapid market and technology changes
  • Software must evolve quickly

Security and Trust

  • Software affects all aspects of life
  • Trustworthiness is essential

Software Engineering Diversity

Influencing factors:

  • Application type
  • Customer requirements
  • Team skills and experience

Application Types

  • Stand-alone applications
    Not dependent on other systems. Usually runs on a single computer.
  • Interactive transaction-based systems
  • Embedded control systems
  • Batch processing systems
  • Entertainment systems
    Intended for individual users.
  • Modeling and simulation systems
  • Data collection systems
  • Systems of systems

Software Engineering Fundamentals

Universal principles

  • Use a managed development process
  • Dependability and performance matter
  • Requirements must be well understood
  • Software reuse is encouraged

Software Engineering Ethics

Software engineers have responsibilities beyond technical skills.

Ethical behaviour

  • Honesty
  • Professional responsibility
  • Moral principles beyond law

Professional Responsibility Issues

  • Confidentiality
    Respect employer and client information
  • Competence
    Do not accept work beyond skill level
  • Intellectual Property
    Respect copyrights and patents
  • Computer Misuse
    Do not misuse systems or skills

ACM/IEEE Code of Ethics

Defines professional ethical standards.

Applies to:

  • Engineers
  • Managers
  • Educators
  • Students

Contains 8 principles:

  1. Public interest
  2. Client and employer
  3. Product quality
  4. Professional judgment
  5. Ethical management
  6. Profession integrity
  7. Colleagues
  8. Lifelong learning

Ethical Dilemmas

  • Disagreement with management policies
  • Releasing untested safety-critical software
  • Working on military or nuclear systems

Case Studies

Insulin Pump Control System

  • Type: Safety-critical embedded system
  • Functions:
    • Read blood sugar
    • Compute insulin dose
    • Control pump delivery
  • Risks:
    • Low sugar -> coma/death
    • High sugar -> long-term damage

Mental Health Care Patient Management System (MHC-PMS)

  • Purpose: Maintain patient and treatment records.
  • Key features:
    • Central database
    • Offline local access
    • Management reporting
  • Major concerns:
    • Privacy
    • Safety
    • Availability

Wilderness Weather Station

  • Type: Data collection system
  • Key functions:
    • Collect weather data
    • Transmit to central system
    • Monitor hardware health
  • Additional features
    • Fault reporting
    • Power management
    • Dynamic reconfiguration