Тезисы
-
Большая часть современных компьютерных систем - это системы настолько крупные и сложные, что один человек не в состоянии осмыслить, представить и реализовать всю систему целиком. Для создания настолько сложных систем нужна команда разработки.
-
Управление сложностью - одна из основных задач, стоящих перед командой разработки. Для этого команда разработки создает различные описания функциональных компонентов системы на разных уровнях детализации (абстракции).
-
Грамотная работа с уровнями абстракции - одно из необходимых условий для успешного управления сложностью. Нарушение уровней абстракции приводит к “грязным”, запутанным, непонятным и перегруженным описаниям.
-
Мы не можем составить корректное описание на более низком уровне без более высокоуровневых описаний.
-
Исходный код - это самое технически специфичное, максимально конкретное описание системы, создаваемое и читаемое людьми. Тем не менее, это всего лишь еще одно описание. Но даже и в этом низкоуровневом описании существуют разные уровни абстракции.
-
Существует множество рекомендаций по управлению сложностью на уровне исходного кода и архитектуры ПО. Команда разработки может воспользоваться ими для составления описаний на любых других уровнях.
тут, конечно же, вопрос, почему это возможно? Только потому, что у нас везде описания? -
Один из важнейших руководящих принципов разработки, направленный именно на работу с абстракциями, это Single Responsibility Principle и его более абстрактная версия - Common Closure Principle. Он предполагает логическое и по возможности физическое разделение описаний системы на части в соответствии с причинами и скоростью изменений.