Software is more than just a program code. A program is an executable code, which serves some computational purpose. Software is considered to be collection of executable programming code, associated libraries and documentations. Software, when made for a specific requirement is called software product.
Engineering on the other hand, is all about developing products, using well-defined, scientific principles and methods.
Software engineering is an engineering branch associated with development of software product using well-defined scientific principles, methods and procedures. The outcome of software engineering is an efficient and reliable software product.
IEEE defines software engineering as:
(1) The application of a systematic, disciplined, quantifiable approach to the development, operation and maintenance of software; that is, the application of engineering to software.
(2) Software engineering is the establishment and use of sound engineering principles in order to obtain economically software that is reliable and work efficiently on real machines By Fritz Bauer, a German computer scientist, defines software engineering.
Relationship between Software Engineering and Computer Science-
- Computer science is concerned with theory and fundamentals; software engineering is concerned with the practicalities of developing and delivering useful software.
- Computer science theories are currently insufficient to act as a complete underpinning for software engineering.
- A set of activities whose goal is the development or evolution of software.
- Generic activities in all software processes are:
- Specification – what the system should do and its development constraints
- Development – production of the software system
- Validation – checking that the software is what the customer wants
- Evolution – changing the software in response to changing demands
Software engineering a Layered technology-
- Software engineering is a fully layered technology.
- To develop software, we need to go from one layer to another.
- All these layers are related to each other and each layer demands the fulfillment of the previous layer.
The layered technology consists of:
- Quality focus-
- The correctness of the functions required to be performed by the software.
- Maintainability of the software
- Integrity i.e. providing security so that the unauthorized user cannot access information or data.
- Usability i.e. the efforts required to use or operate the software.
- It is the base layer or foundation layer for the software engineering.
- The software process is the key to keep all levels together.
- It defines a framework that includes different activities and tasks.
- In short, it covers all activities, actions and tasks required to be carried out for software development.
- The method provides the answers of all ‘how-to’ that are asked during the process.
- It provides the technical way to implement the software.
- It includes collection of tasks starting from communication, requirement analysis, analysis and design modelling, program construction, testing and support.
- The software engineering tool is an automated support for the software development.
- The tools are integrated i.e. the information created by one tool can be used by the other tool.
- For example:The Microsoft publisher can be used as a web designing tool.
Blog by- Er. Vivek Sharma
Asst. Prof., Department of IT