Традиционный подход к разработке ПО основанный на применении алгоритмических языков программирования состоит из следующих основных этапов:

  1. Спецификация требований (т.н. тех. задание или ТЗ)
  2. Разработка архитектуры
  3. Кодирование алгоритмов
  4. Тестирование

Эти этапы не обязательно должны следовать один за другим во времени, но могут выполняться в общем случае итеративно. Основная проблема, которая при этом возникает и которую можно в общем виде сформулировать следующим образом:

Разрушение смыслов (семантики) при преобразовании спецификаций в код.