При разработке программного продукта можно выделить следующие стадии:
При разработке сложных программных продуктов обычно используют одну из двух технологий: структурное программирование и объектно-ориентированное программирование.
Первая технология рекомендует разбивать (декомпозировать) сложную программу на подпрограммы (процедуры, функции), решающие отдельные подзадачи, т.е. базируется на процедурной декомпозиции.
Вторая технология использует подход, при котором в предметной области задачи выделяются отдельно функционирующие элементы. Поведение этих объектов программно моделируется с использованием специальных средств, а затем, из готовых объектов собирается сложная программа. Таким образом, в основе второй технологии лежит объектная декомпозиция.