Every Software Engineering book gives a definition of software engineering. A few examples follow:
- Software engineering is an engineering discipline that is concerned with all aspects of software production.
- The purpose of software engineering is to develop software-based systems that let customers achieve business goals.
- Software Engineering is the branch of computer science that creates practical, cost-effective solutions to computing and information processing problems, preferably, by applying scientific knowledge, and developing software systems in the service of mankind.
- Software Engineering is about methods, tools and techniques used for developing software.
Eric J. Braude and Michael E. Bernstein’s definition:
- The goal of software engineering (…) is the creation of software systems that meet the needs of customers and are reliable, efficient, and maintainable. In addition, the system should be produced in an economical fashion, meeting project schedules and budgets.
- The application of a systematic, disciplined, quantifiable approach to the development, operation, and maintenance of software; that is, the application of engineering to software.
In the above definitions it is stressed the construction of a software artefact which has a value and a cost. Therefore, the goal of this construction it to maximize de value, e.g., “achieve business goals“, and minimize the cost, e.g., “is maintainable“. To achieve this goal we should follow a set of principles and good practices, e.g. “the systematic, disciplined, quantified approach“.
Note that, these definitions would apply to any other engineering discipline. However, if we want to identify what is specific to software engineering, we have to understand what is software and what is the software development process: Software Development as a Formalisation Process.