Siempre implica los procesos de diseño y programación de "software", pero, si se utiliza un enfoque evolutivo de desarrollo, también puede implicar un refinamiento de la especificación del "software".