приложений. В обоих случаях требуется как творческий подход, так и
большой объем рутинной работы; применяются как формальные, так и
неформальные методы; очень многое зависит от опыта и квалификации
разработчика; конечный результат оценивается степенью
удовлетворенности заказчика. Таким образом, аналогия имеет место.
Но есть одно различие, которое сразу бросается в глаза. В архитектуре
и строительстве очень широко используются чертежи. Чертежи разные
— рисунки архитектора с общим видом будущего здания, детальные
строительные чертежи, по которым ведется строительство, различные
вспомогательные схемы инженерных коммуникаций и др. Конечно,
садовый домик
5
можно построить без всяких чертежей, "на глазок", но с
чертежами обычно получается все-таки лучше. Наверное, можно
попробовать построить и трехэтажный дом, не пользуясь чертежами,
хотя результат вряд ли будет надежным и красивым. Но высотный дом
нельзя построить без тщательного предварительного проектирования,
учета строительных норм и правил (СНИП) и составления
огромного
количества разнообразных чертежей.
Между тем, при разработке приложений слишком часто приходиться
наблюдать, как неопытные разработчики проскакивают фазу
проектирования и получив техническое задание, сразу приступают к
реализации, т.е. начинают "класть кирпичи". Если при этом спросить их:
"А где же чертеж будущего приложения?", то они даже не понимают
вопроса. Если
речь идет о приложении типа "садовый домик", то такой
подход может сработать — помогут опыт и чутье. Но если нужно
построить высотный дом? Без чертежей не обойтись! В солидном
приложении деталей (функций, процедур, модулей, форм, элементов
управления, операторов) не меньше, а больше, чем в высотном доме
отдельных строительных деталей. Отсюда и наблюдаемое
соотношение результативности: случай обрушения дома из-за ошибок
проектирования — это ЧП, которое случается очень редко. Что же
касается разработки приложений, то по данным некоторых авторов,
свыше половины проектов по разработке оканчиваются неудачей: не
доводятся до конца, прекращаются из-за перерасхода времени и
средств, имеют неудовлетворительный результат и т.д. Анализ
показывает, что в подавляющем большинстве случаев причина неудач
кроется в плохом проектировании.
Одним из объективных факторов, объясняющих такое положение дел,
является сравнительная молодость программирования, как инженерной
дисциплины. Архитекторы и строители накапливали опыт
тысячелетиями, а чертежами пользуются уже столетия. У них было
время придумать понятную, удобную и надежную систему обозначений.
История разработки
приложений насчитывает всего полвека. Сейчас
только-только появляются системы обозначений, сравнимые по
выразительности и удобству со строительными чертежами (и наиболее
перспективным нам представляется UML).
5
Авторы UML повторяют эту аналогию из книги в книгу, обсасывая её на разные лады. Правда, в
качестве альтернативы небоскребу они рассматривают собачью конуру, но у нас пусть будет
садовый домик — мы хотим пощадить чувства тех, кто еще не использует UML.