Definition

Software Engineering (SE)

Software engineering is an engineering discipline that is concerned with all aspects of software production from initial conception to operation and maintenance.

Engineering Discipline

  • Select the most appropriate theories, methods, and tools.
  • Work within organizational and financial constraints.
  • Look for solutions within these constraints.

All Aspects of Software Production

  • Technical processes of software development.
  • Activities such as software project management and development of tools, methods and theories to support software development.

Software Process (SP)

The systematic approach that is used in software engineering is sometimes called a software process. A software process is a sequence of activities that leads to the production of a software product.

Software Process Model

  • A simplified and abstracted representation of a software process is called a software process model.
  • A software process model is often called a Software Development Life Cycle (SDLC) model
  • Depending on the type of software application to be developed, different software process models may be used
  • E.g., V-model, Spiral model, RAD (Rapid Application Development) model, Agile model, Waterfall model, Increment model, etc.

Software Paradigms

  1. The Waterfall Model
  2. Integration & Development
  3. Incremental Development

Each of them can be extended and adapted to create more specific software engineering processes. They can also be seen as process frameworks.

Fundamental Activities during SP

  1. Software Specification
    1. Requirements
    2. Constraints
  2. Software Development
    1. Design
    2. Development
  3. Software Validation
    1. Unit Test
    2. Integration Test
    3. System Test
    4. Acceptance Test
  4. Software Evolution

    1. Modification
    2. Coping with Changes

      Quality of Software Product

      image.png
  5. Acceptability

  6. Dependability & Security
  7. Efficiency
  8. Maintainability

Types of Software

  1. Stand-alone applications
    1. PC-App mobile-APP
    2. e.g. PS, Calculator
  2. Interactive transaction-based applications
    1. Runs on the remote computer
    2. e.g. cloud-based services
  3. Embedded control systems
    1. Control the hardware devices
  4. Batch processing systems
    1. process data in large batches
    2. e.g. Bank transaction processing systems
  5. Entertainment systems
    1. e.g. Switch
  6. System for modeling and simulation
    1. Application systems developed for scientists and engineers to model and simulate physical processes, chemical reactions, protein folding, visualization, etc.
  7. Data collection and analysis systems
  8. Systems of systems
    1. Linux

Concept Map

image.png