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
- 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
Subscribe to my newsletter
Read articles from Mojtaba Maleki directly inside your inbox. Subscribe to the newsletter, and don't miss out.
Written by
Mojtaba Maleki
Mojtaba Maleki
Hi everyone! My name is Mojtaba Maleki and I was born on the 11th of February 2002. I'm currently a Computer Science student at the University of Debrecen. I'm a jack-of-all-trades when it comes to programming, so if you have a problem, I'm your man! My expertise lies in Machine Learning, Web and Application Development and I have published four books about Computer Science on Amazon. I'm proud to have multiple valuable certificates from top companies, so if you're looking for someone with qualifications, you've come to the right place. If you're not convinced yet, I'm also a great cook, so if you're ever hungry, just let me know!