Фред Брукс определил компоненты привнесенной и присущей сложности ПО. Привнесенная сложность создается несоответствием наших инструментов решаемой задаче и ее можно устранить, улучшая инструменты и методики. Присущая сложность так просто не разрешается. Компоненты присущей сложности:

  • Сложность (complexity) - ПО является наиболее сложной из всех созданных человеком систем из-за огромного количества непохожих частей, взаимодействующих всеми мыслимыми способами.
  • Сообразность, похожесть (conformity) - ПО должно соответствовать реальному миру, а не наоборот.
  • Изменяемость - ПО должно изменяться тогда, когда меняется реальный мир, а это происходит очень часто.
  • Невидимость - ПО практически невозможно визуализировать, особенно во время выполнения.

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