Tested and Modifiable
The specifications and requirements of software tend to change during the course of a project. And the practical use of an application is usually different than what was envisioned, and often provides new insights to improve and refine the application.
Software is actually never finished, but always a version. Also, there is no such thing as an error-free software, but it can be well-tested. Another negative aspect of software is that it often creates long-term dependencies for the customer, which in many cases could be avoided.
For those and other reasons, we better emphasize certain techniques which help limit common undesirable effects of traditional software development. Primarily through an incremental approach which invites, and actually may depend upon, all involved to actively participate in the step by step realization of complex projects (agile software development). But also through programming techniques which allow continuous modifications and quality control (frequent refactoring, test-driven development, automated test suites, continuous delivery).
Standards Compliance