Software Engineering

Software Engineering

Table of contents

Software Engineering

Software Engineering Overview

  • Author: Péter Jeszenszky, Faculty of Informatics, University of Debrecen
  • Editor: Mojtaba Maleki
  • Last Modified: February 15, 2024

References

SWEBOOK

  • Website: IEEE Computer Society
  • Project of the IEEE Computer Society.
  • Serves as a guide to the generally accepted body of knowledge in Software Engineering.
  • Identifies 15 knowledge areas covered by separate chapters.
  • Ratified as an ISO standard (ISO/IEC TR 19759:2015).

What is Software?

  • Refers to computer programs and associated documentation.
  • Software can be developed for a specific customer or a general market.

Software Products

  • Generic Products:
    • Stand-alone systems sold openly to any customer.
    • Examples: word processors, drawing packages, project management tools.
  • Customized Products:
    • Systems developed specifically for a particular customer.
    • Examples: control systems for electronic devices, business process support systems.

Essential Attributes of Good Software

  • Maintainability: Software should evolve to meet changing customer needs.
  • Dependability and Security: Software should be reliable and secure.
  • Efficiency: Software should use system resources efficiently.
  • Acceptability: Software must be understandable, usable, and compatible with user systems.

What is Software Engineering?

  • Systematic application of scientific and technological knowledge to software design, implementation, testing, and documentation.
  • Concerned with all aspects of software production from system specification to maintenance.

History of Software Engineering

  • Concept introduced in 1968 due to the limitations of individual program development.

Why is Software Engineering Important?

  • Reliable and trustworthy software systems are crucial as reliance on them increases.
  • Software engineering methods are more cost-effective in the long run.

Diversity

  • Many types of software require different engineering methods.

Software Process

  • Sequence of activities leading to software product production.
  • Includes specification, development, validation, and evolution.

Software Process Models

  • Simplified representations of software processes.
  • Include general models like the waterfall model and incremental development.

Software Reuse

  • Increasingly used approach since 2000, allowing for faster and more cost-effective development.

Application Programming Interface (API)

  • Set of signatures exported by a library or framework for application development.

Libraries

  • Controlled collections of software resources aiding development, use, or maintenance.

Frameworks

  • Partially completed software systems extendable by specific extensions (plug-ins).

Platforms

  • Hardware or software environment where programs run.

Software Development Kits (SDKs)

  • Collections of tools needed for application development for specific platforms.

Integrated Development Environments (IDEs)

  • Sets of software tools supporting various aspects of software development.

Further Recommended Reading

Did you find this article valuable?

Support Mojtaba Maleki by becoming a sponsor. Any amount is appreciated!