Тезисы

  • Большая часть современных компьютерных систем - это системы настолько крупные и сложные, что один человек не в состоянии осмыслить, представить и реализовать всю систему целиком. Для создания настолько сложных систем нужна команда разработки.

  • Управление сложностью - одна из основных задач, стоящих перед командой разработки. Для этого команда разработки создает различные описания функциональных компонентов системы на разных уровнях детализации (абстракции).

  • Грамотная работа с уровнями абстракции - одно из необходимых условий для успешного управления сложностью. Нарушение уровней абстракции приводит к “грязным”, запутанным, непонятным и перегруженным описаниям.

  • Мы не можем составить корректное описание на более низком уровне без более высокоуровневых описаний.

  • Исходный код - это самое технически специфичное, максимально конкретное описание системы, создаваемое и читаемое людьми. Тем не менее, это всего лишь еще одно описание. Но даже и в этом низкоуровневом описании существуют разные уровни абстракции.

  • Существует множество рекомендаций по управлению сложностью на уровне исходного кода и архитектуры ПО. Команда разработки может воспользоваться ими для составления описаний на любых других уровнях.

    тут, конечно же, вопрос, почему это возможно? Только потому, что у нас везде описания?
  • Один из важнейших руководящих принципов разработки, направленный именно на работу с абстракциями, это Single Responsibility Principle и его более абстрактная версия - Common Closure Principle. Он предполагает логическое и по возможности физическое разделение описаний системы на части в соответствии с причинами и скоростью изменений.