avl (avl) wrote,
avl
avl

Categories:

31. Программирование - это процесс проектирования.

(В оригинале - Programming is an act of design)

Kristen Nygaard, отец объектно-ориентированного программирования и языка программирования Simula, говорил: «Программирование – это обучение». Принятие того факта, что программирование, или более точно разработка ПО, это процесс открытий и обучения, а не процесс конструирования, сильно продвинуло техники разработки ПО. Применение концепций традиционной инженерии к разработке ПО не работает. Проблемы документировались и комментировались лидерами программистской мысли уже более 30 лет. Например, в 1987 году Fredric Brooks отметил в «Отчете научно-ислледовательской группы министерства обороны по военному програмному обеспечению», что принцип «сначала определи, потом делай» лежит в основе очень многих проблем.

Итак, куда же должна ориентироваться индустрия программного обеспечения для улучшения своих практик? Что, если посмотреть на практики производств сложных и технологичных продуктов массового рынка, таких как машины, лекарства или полупроводники?

Давайте посмотрим на индустрию автомобилестроения. Когда планируется новая модель, первая вешь, которая делается – это концепт. В основном речь идет о позиционировании. BMW X6 – пример нового концепта, объединяющего свойства «практичного спортивного автомобиля» (SUV) и купе в то, что BMW назвала “Sport Activity Coupe”. Главное здесь то, что до того момента, когда можно будет купить новый Х6, BMW инвестировало тысячи часов и миллионы долларов как в сам автомобиль, так и в линию его производства. Когда BMW получит индивидуальный заказ на машину, одна из их линий соберет именно такой индивидуальный экземпляр Х6.

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

В статье «Что такое проектирование ПО» Jack Reeves предположил, что единственная вещь в разработке ПО, подходящая под определение документа дизайна (в том смысле как этот документ понимается и используется в классической инженерии) – это исходный код. А сборка программного обеспечения автоматизирована и выполняется компилятором, скриптом сборки и тестирования.

Приняв то, что исходный код относится к проектированию, а не к сборке, мы можем адаптировать гарантированно работающие практики, используемые для управления сложными и непредсказуемыми работами, такими как разработка нового автомобиля, нового лекарства или новой компьютерной игры. Мы говорим о практиках agile управления, как например, SCRUM. Эти практики фокусируются на максимизации возврата вложений в терминах ценности заказчика.

Для использования опыта остальной индустрии в разработке ПО мы должны помнить: Программирование является проектированием, а не сборкой.

Автор оригинала - Einar Landre

Перевод мой. Если вы решите использовать его полностью или частично, не забудьте указать ссылку на мой живой журнал!
Tags: 97_things_architect_should_know
Subscribe

  • 97 вещей, которые должен знать архитектор ПО

    Давно начатый проект перевода серии из 97 заметок наконец-то закончен! Теперь ищу новую идею, чего бы еще интересного и непереведенного, перевести…

  • 97 вещей для архитектора ПО

    Поскольку надо закончить начатое - продолжу переводить первую серию, поскольку мир не без добрых людей, и оригиналы, удаленные с neartime, нашлись…

  • Переводы задерживаются

    Сайт, хостящий "97 things", чего-то задумал, и тексты оригиналов стали недоступны. Так что пока новых переводов не будет...

  • Post a new comment

    Error

    Anonymous comments are disabled in this journal

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

  • 0 comments