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
- Based on:
- Ian Sommerville. Software Engineering. 10th ed.
- Pierre Bourque (ed.), Richard E. (Dick) Fairley (ed.). Guide to the Software Engineering Body of Knowledge, Version 3.0
- Software and Systems Engineering Vocabulary (SEVOCAB)
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