Let me define what is Software Engineer first:
The application of a systematic, disciplined, quantifiable approach to the development, operation and maintenance of software; that is, the application of engineering to software.
The study of approaches as in the above statement.
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.
High-quality software is characterized by:
- High dependability (including safety, security and reliability)
A software product is said to have a life-cycle, or undergo a software process, which in software engineering terms consists essentially of two parts: development and evolution. Both involve traditional engineering phases, software development consisting primarily of concept creation, requirements specification, design, implementation, integration, testing, and deployment. On the other hand, software evolution involves operation and maintenance as well as some limited development activities aimed at improving the software.