Закон Голла. Парнас и Александер

Закон Голла, названный в честь американского программиста Томаса Голла, является фундаментальным принципом разработки программного обеспечения (ПО). Он гласит, что сложные рабочие системы неизменно возникают из простых рабочих систем, а сложные системы, разработанные с нуля, никогда не работают.

При создании ПО применяется техника под названием “ходячий скелет”. Это означает, что необходимо начинать с простой рабочей системы, которая проталкивает систему вперед, и только затем добавлять новый функционал. Это позволяет создать базу, на которой можно далее строить новые элементы функционала. Такой подход позволяет избежать создания сложной системы, которая не будет работать.

Дэвид Парнас, канадский информатик и один из создателей концепции модульности в ПО, отмечал, что системы ПО не работают хорошо, пока они не были использованы, и не раз, в “боевых” условиях. Это подчеркивает необходимость проверки работоспособности системы в реальных условиях.

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

Связь закона Голла с законом Конвея также очевидна. Закон Конвея утверждает, что построение “ходячего скелета” базируется на костяке команды. То есть для создания большого и сложного формирования используется равноценный скелет-костяк.

Закон Голла имеет применение не только в сфере разработки ПО, но и в других областях, связанных с проектной деятельностью. Например, он может быть использован для построения больших и сложных команд в других отраслях, таких как инженерное проектирование, строительство, финансы и т.д.

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

Таким образом, закон Голла в контексте разработки программного обеспечения обычно интерпретируется как рекомендация начинать разработку с простой, рабочей системы и затем постепенно добавлять функциональность и улучшать ее, в процессе разработки и использования. Это позволяет избежать создания нерабочей системы и уменьшить риски, связанные с разработкой сложных систем “с нуля”.

Конечно, существуют случаи, когда разработка сложных систем “с нуля” может быть необходима, и в таких случаях, рекомендуется использовать опытных специалистов и сильные команды, которые способны эффективно работать в таких условиях. Однако в общем случае, начало с простой рабочей системы и последующее ее усовершенствование, как рекомендовано законом Голла, может существенно повысить вероятность успеха проекта и снизить риски разработки.

Поделиться:



Top