Производство варева
 
21.02.2003
Сергей Козлов


 
стр 1.
стр. 2 >>
«Суть» очерчивается тогда, когда при сравнении двух каких-либо качественных характеристик нам вдруг открывается что-то новое про каждую из них.
Колин Уилсон

«Ну вот, опять про кулинарию», — скажет внимательный читатель, вспомнив недавний номер «Компьютерры» (#472, «Шарим? Варим!»). И будет прав. Только сегодняшняя тема не о тонкостях «кустарного» изготовления «варева», а о подходах и техниках его производства сплоченными программистскими командами. К сожалению, не все интересные вопросы удалось затронуть в теме номера — задача была иная: сделать введение в теорию и практику разработки софтверных проектов.

Вадим Иванченко

В те далекие уже времена, когда диски были большими и каждому хватало 640 килобайт памяти, мне пришлось заниматься измерением параметров случайного сигнала от некоей установки. Казалось бы, существуют развитые статистические методы, были даже готовые библиотеки… Загвоздка оказалась в том, что сигнал дрейфовал и, соответственно, применение описанных во всех учебниках методик давало в результате полнейшую чушь, — рассчитаны-то они на стационарные процессы. То столкновение с реальностью дало хороший урок — методики и инструменты бесполезны без понимания предмета, с которым имеешь дело.

1Поэтому, прежде чем говорить об организации разработки ПО, чудодейственных методологиях и прописанных до мелочей процессах, зададимся такими вопросами «Почему методологий много? Чем они отличаются? Из каких предпосылок, из какой модели предметной области они исходят? Каковы их области применимости?».

Три составные части
Возникает новое представление о неразрывном единстве, отрицающее классические понятия о том, что мир можно разложить на самостоятельные, не зависящие друг от друга части…
Дэвид Бом

Почему вообще появляются программы? Прежде всего потому, что во Вселенной есть люди, желающие решить свои проблемы применением, например, не автомата Калашникова, а некоего «компьютера». Если они сами не могут, то привлекают группу людей, способных решить их за конечное время и конечное количество безусловных тугриков. Если проблемы решаются написанием кода для компьютера, эту группу людей называют программистами.
Вот у нас и появились действующие лица и исполнители. Пользователи-люди, действующие в своей предметной области и решающие свои проблемы. Инструменты-компьютеры, работающие под управлением написанных программистами программ, взаимодействующие тем или иным способом с пользователями и их предметной областью и исполняющие их желания. Программисты-люди, изучающие предметную область и желания пользователей и создающие программы, которые запускаются на компьютерах пользователей и исполняют их желания. Предметная область, или реальность, в которой все это происходит, которая изменяется под воздействием людей и систем и которая оказывает воздействие на людей и системы, вызывая у пользователей новые проблемы. Ну и так далее.
Мы вытащили из клубка некие сущности. Попытаемся их охарактеризовать.

Пламень теорий
и ледяная вода практики

Прогресс состоит не в замене неверной теории на верную, а в замене одной неверной теории на другую неверную, но уточненную.
Стивен Хокинг

Реальность динамична, нестационарна, нелинейна. Но она познаваема. Люди находят в ней закономерности и строят ее модели. Создавая теории реальности, люди достигают некоторого уровня понимания ее семантики и, вооружившись этим пониманием, узнают, как исполнить  свои желания, а затем превращают это знание в программы.
Не каждая модель пригодна для реализации в виде программы. Если посмотреть в корень, то компьютер есть материальная реализация математики, а программа представляет собой записанную на языке программирования формальную теорию. Это накладывает большие ограничения. Латвийский математик Карлис Подниекс пишет по этому поводу, что для математического подхода к решению какой-либо проблемы «характерно прежде всего стремление как можно скорее «покончить с реальностью», перейти к исследованию определенной (фиксированной) математической модели. <…> Застывшая система основных принципов — отличительная особенность всякой математической теории. <…> Всякая формальная теория с методологической точки зрения является моделью некоторой застывшей системы мышления. С учетом этого основной вывод из теорем о неполноте можно переформулировать так: всякая достаточно всеобъемлющая (фундаментальная?), но застывшая система мышления неизбежно оказывается несовершенной — в ней содержатся либо противоречия, либо проблемы, для решения которых данной (застывшей!) системы недостаточно».
Два важных следствия теоремы Гёделя о неполноте. Единственная возможность вырваться за пределы математической теории — воспользоваться способностью человека исследовать и мыслить. Не сопровождаемая, не развиваемая программа — мертвая программа.

2Дилемма Вуглускра
Дедуктивная логика тавтологична; с ее помощью нельзя постичь новую истину, она манипулирует ложными утверждениями с той же готовностью, как и верными. Если ты забудешь об этом, она может сыграть с тобой шутку, причем идеально логичную. Конструкторы самых первых компьютеров называли это GIGO — «мусор на входе, мусор на выходе». Индуктивная логика куда более трудна, но она позволяет постичь новую истину…
Роберт Хайнлайн

Когда мы пытаемся получить описание или представление чего-либо, то используем объекты (существительные, данные) и действия (глаголы, алгоритмы). И оттого, что считаем «главнее», получаем два подхода.
Первый, так называемый процедурный (действие-ориентированный) подход, сводится к тому, что у нас есть данные — начальное состояние системы, — над которыми мы совершаем некоторую последовательность действий и в результате достигаем нового состояния этих данных. Если мы знаем начальное состояние, желаемое конечное состояние и находим последовательность действий, переводящую из одного в другое, то задача решена.
Второй, объектно-ориентированный, состоит в том, что мы выделяем некоторые сущности, объекты, и наделяем их переменными состояния и методами, которые эти переменные изменяют. Затем мы описываем систему как совокупность взаимодействующих объектов.
Однако в любом случае мы остаемся в рамках формальной теории. Мы не получим нового знания, преобразуя представление дедуктивным методом (математическая индукция — частный случай дедукции). Оно привносится извне — изменением формальной теории. Тут работает (неполная) индукция — человек догадывается, открывает нечто, основываясь на неполных данных. Это творчество. И тут есть тонкий момент — индукция не поддается формализации, и мы не можем создать математическую теорию творчества, она всегда нематематическая.
У индукции много недостатков, но, по-видимому, это единственный доступный человеку способ создать что-то новое. Мы можем не угадать, выдумать несуществующее, воспользоваться ложной аналогией. Поэтому очень важно убедиться, что мы угадали правильно и находка действительно свойственна изучаемой предметной области, а не артефакт воображения. Проверить это можно лишь экспериментально — необходима обратная связь с реальностью. Попытки сначала спроектировать, а потом реализовать по строгому плану нередко обречены на провал — мы проектируем, еще не зная, с чем имеем дело. Поэтому разработка — не прямой, как стрела, легко прогнозируемый процесс, она, как поросячий хвостик, — итеративная: мы выдвигаем гипотезы, проверяем их, отбрасываем негодные, строим новые. Изменяя мир, мы изменяемся сами — мы учимся.

 


 
стр 1.
стр. 2 >>


 Все работы хороши? [ "13-я КОМНАТА" ]
 Новости [ "НОВОСТИ" ]
 Дорога домой [ "НОВОСТИ" ]
 Микрофишки [ "НОВОСТИ" ]
 Слесаря вызывали? [ "НОВОСТИ" ]
 Умная пыль на сапогах [ "НОВОСТИ" ]
 Лишь бы работало [ "НОВОСТИ" ]
 Производство варева [ "ТЕМА НОМЕРА" ]
 «ERP»для программистских проектов [ "ТЕМА НОМЕРА" ]
 Управление качеством в процессах разработки программного обеспечения [ "ТЕМА НОМЕРА" ]
 От хвоста до головы Практика разработки средних и крупных программных проектов [ "ТЕМА НОМЕРА" ]
 Символическая новизна [ "SOFTТЕРРА LITE" ]
 Зимний прорыв [ "SOFTТЕРРА LITE" ]
 События [ "SOFTТЕРРА LITE" ]
 Синергия [ "КОМПЬЮFЕРРА LITE" ]
 Перст указующий [ "КОМПЬЮFЕРРА LITE" ]
 Дважды два [ "КОМПЬЮFЕРРА LITE" ]
 Баскетбол для зомби [ "ОПЫТЫ" ]
 Размер имеет значение [ "АНАЛИЗЫ" ]
 Миф в окошке [ "АНАЛИЗЫ" ]
 Где прячется квантовое сознание? [ "КАФЕДРА ВАННАХА" ]
 Масяня и Директора [ "КАРАУЛ" ]
 Что путного сможет сделать тысяча собранных под одной крышей программистов? [ "ВОПРОС НЕДЕЛИ" ]
 Женщины тоже способны мыслить [ "ПИСЬМОНОСЕЦ" ]


Все материалы номера