Стратегический дизайн против тактического
От: Курилка Россия http://kirya.narod.ru/
Дата: 23.11.07 07:31
Оценка: 21 (6)
Наткнулся тут на довольно интересную (на мой взгляд) работу Strategic Versus Tactical Design Амнона Эдэна. В ней он рассматривает разницу между решениями программистов (т.е. между дизайнами) разного уровня и выделяет стратегический и тактический дизайн, точнее приёмы в них входящие. Оперирование ведётся в терминах, не привязанных к конкретному языку или парадигме.Основой разделения является критерий локальности:

Утверждение У является локальным, если и только если оно остаётся справедливым при расширении системы.

Стратегический дизайн содержит систему нелокальных утверждений, тогда как тактические дизайны разных частей программной системы содержат ряд утверждений локального характера. Примером нелокального утверждения может служить Универсальный Базовый Класс (скажем в C# или Java). Также показано, что рефакторинг (по одноимённой книге Фаулера) носит локальный характер, причём даже сложные его случаи. Паттерны Банды Четырёх также являются частью тактического дизайна, за исключением пресловутого паттерна Singleton, который содержит утверждение уровня всей системы. Рассматривается и КОП (в соответвии с книгой Шиперского). Рассматривается архитектурный Mismatch, который мешает так ожидаемому построению ПО "из кубиков".
Ну и основной момент наиболее правильной и живучей архитектуры формулируется в том, что необходимо делать нелокальные утверждения явными, минимизировать их число, и при изменении системы (введения нового нелокального правила) необходимо удостовериться, что правила не противоречат друг другу.
P.S. Сайт Амнона содержит ещё интересные вещи (и по архитектуре ПО в частности), но пока их посмотреть не успел.
P.P.S. Может быть это топик скорей в "Архитектуру", но на мой взгляд это более общий "философский" взгляд на само построение ПО, чем конкретные приёмы, которые там обсуждаются.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.