| software engineering | has definition The process of solving customers problems by the systematic development and evolution of large, high-quality software systems within cost, time and other constraints. The application of engineering to software systems of any kind |  |
| has challenge accurately forecasting how much time it will take either to develop a system, or to make a specific set of changes |  |
| has definition from the Canadian Standards Association The systematic activities involved in the design, implementation and testing of software to optimize its production and support |  |
| has definition from the IEEE (1) The application of a systematic, disciplined, quantifiable approach to the development, operation, maintenance of software; that is, the application of engineering to software. (2) The study of approaches as in (1) |  |
| has goal solving customers' problems |  |
| has part ensuring that maintenance and evolution of software is done in a systematic way |  |
| has part evolution |  |
| has part maintenance |  |
| has part managing software projects |  |
| has part programming |  |
| has part programming |  |
| has part project management |  |
| involves applying well-understood techniques in an organized and disciplined way |  |
| involves the translation of higher-level designs into particular programming languages |  |
| is / labour-intensive |  |
| is highly iterative |  |
| is undergoing development in its technology and techniques |  |
| is a subtopic of 1.2 - What is Software Engineering? |  |
| is normally organized into software projects |  |
| is a kind of process |  |
| sometimes consists of developing completely new software |  |
| uses resources such as the time and money of the stakeholders, and the CPU-time and memory of computers |  |
| usually consists of modifying software that has been already written - this is because software is normally continually changed over a period of years until it becomes obsolete |  |
| process | see also process^2 |  |