В последнее время наблюдается тенденция визуального моделирования при проектировании сложных систем. Эти методы связаны с объектно-ориентированным анализом (ООА). В этих методах проектирования наглядные модели часто связывают с такими методами моделирования как точка зрения или взгляд, направленные на сложную систему с различных точек зрения. Этот подход заимствован из классического САПР технических систем и перенесен на решение задач программирования
При написании программного продукта ставится проблема, которую надо решить с помощью создаваемого программного обеспечения. Классический подход написания программных продуктов включает решение обратной и прямой задач.
Обратная задача включает разбиение проекта или проблемы на подзадачи. Такой подход называют методом функциональной декомпозиции, поскольку разработчик подвергает декомпозиции проблему на несколько функциональных частей, обеспечивающих ее решение известными средствами или имеющимися ресурсами. Он основан на сведении сложной новой задачи к более мелким, но известным, решения для которых также известны и технически осуществимы.
После разбиения на составляющие подзадачи, для которых известно начинают осуществлять композицию решений. Общее решение проблемы получают методов прямой задачи на основе формирования совокупности частных решений как общего решения.
Такой подход является реализацией метода встречных потоков. Поток «сверху вниз» осуществляется при декомпозиции проекта или проблемы. Поток «снизу вверх» реализуется при композиции частных решений в общее решение.
Возможно противоречие основной задачи при объединении частных решений. в этом случае проводят новую декомпозицию и заново осуществляют поток «снизу вверх».
Кроме того, такой подход позволяет учесть изменения требований к программному продукту и подготовить программу к последующим изменениям, появляющимся по мере ее постепенной эволюции.
Реализация метода встречных потоков происходит на трех уровнях: концептуальном, спецификаций и операционном. На концептуальном уровне выявляются основные концепции изучаемой проблемы, что определяет набор теоретических и методических подходов к ее решению. Затем на основе анализа и учета имеющихся ресурсов выбирают один из многих подходов. Он и служит основанием для перехода на следующий уровень - уровень спецификаций.
На уровне спецификаций происходит информационное наполнение и определение компонент, которые используются при решении. Этот уровень можно охарактеризовать как теоретически-технологический или даталогический. По мере реализации этого уровня осуществляют переход к операционному уровню
На операционном уровне создается собственно программный продукт ( в более общем случае информационный продукт).
После проведения тестирования выявляются соответствия или «несоответствия» в рамках решаемой проблемы. Несоответствия переносят на элементы операционного уровня, откуда на основе формальных связей их переносят на уровень спецификаций. Если на этом уровне «несоответствия» не удается устранить, возвращаются к концептуальному уровню и проводят дополнительный анализ решения проблемы с учетом выявленных «несоответствий», полученных в ходе первой итерации решения.
Таким образом, итеративная процедура последовательного анализа «сверху вниз» и «снизу вверх» позволяет эволюционным образом получить искомое решение проблемы. При этом в качестве объекта итерации рассматривают информационные потоки и модели.
Особенностью метода является использование визуального подхода на концептуальном уровне. На этом уровне набор из нескольких визуальных моделей создает в сознании специалистов интегральный образ программного средства или сложной компьютерной системы, которую они совместно проектируют.
Методы встречных потоков помогает упростить процесс разработки сложных программных средств, особенно тогда, когда существует определенная нечеткость в исходной постановке, но хорошо известно, что должно быть получено в результате решения проблемы.