The application of engineering principles to software development, including software design, testing, and documentation.