Беседы о программировании
Вы привыкли думать, что если сделать что-то становится проще, то люди станут делать это “что-то” лучше. Но часто происходит противоположное. Так, на смену длинным, содержательным письмам пришли пустые телефонные разговоры; камерная музыка уступила место 40 лучшим радиохитам. Мне очень не хочется думать о том, что недорогие, широкополосные линии связи могут сделать с качеством коммерческого ПО.
В течение нескольких последних месяцев я наблюдал серьезное снижение важности новых главных версий ПО. Разработчики говорят удивительные вещи о своих собственных продуктах, например: “Ну, это не столь закончено, как нам бы того хотелось, но через месяц вы найдете первую модернизацию на нашей Web-странице”. Как будто бы первоначальная продажа делается лишь с целью увеличения капиталовложений: “Дайте нам деньги сейчас, и мы закончим работу”.
Создается впечатление, что люди прорабатывали свои продукты более серьезно, когда выход версии ПО - “.0” или модернизации - был дорогостоящим событием. Конечно же, мы цинично предупреждаем против покупки версии “.0” чего бы то ни было от Microsoft, но в целом, я думаю, мы ожидаем, что главная версия будет не просто пригодна к эксплуатации, но и неотразима.
В своем докладе на конференции Dynamic Objects в Бостоне Ховард Шроуб из лаборатории искусственного интеллекта Массачусетского технологического института убеждал, что теперь нужно по-новому посмотреть на вещи. Шроуб, в настоящее время “одолженный” из MIT в Information Technology Office фирмы ARPA, приехал на эту конференцию для обсуждения эволюционной модели разработки приложений.
По наблюдению Шроуба, наш подход в прошлом основывался на старой модели выпуска ПО как редкого и дорогостоящего события. Мы двигались от требований к приложению - к архитектуре, реализации, доставке. Требования были стабильны - точнее, рассматривались как стабильные - в течение достаточно длительных периодов времени, что придавало смысл обширной оптимизации нашего кода на нижнем уровне.
Новая теория эволюции
Будущие усилия, по наблюдению Шроуба, следует направить на выработку семейств развивающихся приложений, а не индивидуальных проектов с изредка появляющимися чрезвычайно важными модернизациями. Требования должны быть описательными и приспособляемыми, а не жестко заданными и закодированными в приложении. Не должно быть разницы между процессами разработки и поддержки. Напротив, само понятие “поддержка” сольется с нескончаемым процессом “эволюционной разработки”.
Это имеет важное значение для наших инструментов разработки. Сегодня, по мере продвижения к исполняемому продукту, наши инструменты отбрасывают информацию о разработке. Комментарии в исходном коде - типичный пример.
Инструменты следующего поколения следует строить на основе предположения, что работа над приложением никогда не прекращается. Информация о разработке должна быть всегда доступна как руководство по проблемам, которые могут возникнуть при расширении возможностей приложения, и как средство избежать повторения одних и тех же экспериментов.
Такие системы вовсе не есть нечто неизведанное. LISP-системы предоставляют непосредственный доступ к исходным текстам, документации и прочей информации по разработке. Java и Smalltalk предоставляют подобные возможности.
Давайте вернем эту разновидность поддержки в общее русло разработки приложений. Надо использовать такие инструменты, чтобы выпускать качественные продукты каждый раз вместо низкопробных версий “.0”, которые работают лишь “в целом”.
Питер Коффи