Гради Буч - о средствах разработки и их будущем

Гради Буч (Grady Booch), главный исследователь корпорации Rational Software, признан всем международным сообществом разработчиков программного обеспечения благодаря его основополагающим работам в области объектно-ориентированных методов и приложений, а также благодаря созданию языка UML. Гради - постоянный автор в таких журналах, как "Object Magazine" и "C++ Report" и автор многих бестселлеров, посвященных объектно-ориентированному проектированию и разработке программ. Гради Буч участвует в написании серии "Разработка объектно-ориентированного программного обеспечения" ("Object-oriented Software Engineering Series"), издаваемой Addison-Wesley Longman.

Для того, чтобы писать свои собственные программы, недостаточно знаний лишь языка программирования. Например, вы можете зазубрить "Язык программирования С++" Бьярна Строуструпа, "понабивать" тестовые примеры и почувствовать на вкус средства языка. Однако, когда дело дойдет до программы, требующей заранее продумать свою структуру, иерархию объектов и возможности их взаимодействия между собой - вы окажетесь бессильны.

В 70-80 гг. прошлого столетия отрасль разработки программного обеспечения испытывала большой кризис. Многие проекты не укладывались в финансовую смету и выделенные временные рамки. Программирование перешло из разряда "искусство для избранных" в ремесло. Руководители проектов, менеджеры и руководство-заказчик испытывали большие сложности. Ответом на немой вопрос "Как же все-таки поставить процесс разработки под контроль?" стала книга Гради Буча "Объектно-ориентированное проектирование. С примерами приложений на С++". Пожалуй, именно этот бестселлер обратил взгляд всего мирового сообщества на Гради Буча.

Но сам автор не остановился на достигнутом. Он ни на минуту не прекращал поиски новых методик проектирования и разработки ПО. Детищем Гради Буча стал также язык UML (подробнее о нем читайте ниже). Вполне возможно, что и сейчас этот неутомимый исследователь готовит что-нибудь новое, революционное, для всей отрасли.


Гради Буч читает лекцию...

TanaT: Гради, расскажите, немного о себе.

Гради Буч: Я родился в 1955 в городе Амарилло, (США, штат Техас). Этот довольно скромный городишка в то время насчитывал около 100 тыс. жителей. Мой отец был офицером ВВС США (в начале он был просто военным, потом его пригласили в Воздушный Корпус Армии США, который затем превратился в ВВС). Его направили в Амарилло на развертывания военно-воздушной базы. После отставки отец работал в службе правопорядка и в конечном счете стал шерифом Амарилло. Моя мать встретила его в Берлине во время Второй Мировой Войны, сразу после которой они и поженились. Она работала директором офиса Американского Красного Креста в Амарилло. У меня есть сестра, которая на шесть лет старше меня. Мой отец умер в 1979 году, а моя мать живет сейчас с семьей моей сестры в Алабаме. Я окончил среднюю школу, затем в 1977 - Академию ВВС США. Мое первое назначение было на Базу ВВС в Ванденберге (Vandenberg), где я руководил разработкой целого ряда проектов, управляющих полетом ракет. Находясь на Базе, я получил степень магистра Университета Калифорнии в Санта-Барбаре. После того, как срок моей службы истек, я присоединился к Майку Девлину и Полу Леви (Mike Devlin и Paul Levy), своим товарищам по Академии. Вместе мы основали Rational.


"Задача разработчиков программной системы - создать иллюзию простоты"

TanaT: Вас можно считать основателем Rational? Чем сейчас занимается эта компания?

Гради Буч: Не совсем основателем... Понимаете, я был в Rational с момента ее основания, но дом свой ради нее не закладывал. Rational выросла благодаря всем нам трем - сейчас это 3500 человек, занимающихся средами разработки ПО. Сегодня мы являемся подразделением IBM Software Group, а я в нем руководитель исследовательских работ.

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

"Объектно-ориентированный анализ и проектирование
с примерами приложений на С++". Гради Буч.


TanaT: Почему ваша жизнь связана с компьютерами?

Гради Буч: Я всегда испытывал к ним слабость. Я сделал свой первый компьютер в 12 лет (в 1967) и в то же лето начал программировать на Фортране - большое спасибо за это техническому представительству компании IBM в Амарилло, которое направляло мое развитие. Мое первое вдохновение пришло из работ Марвина Мински (Marvin Minsky), который работал в то время в Лаборатории Искусственного Интеллекта Массачусетского Технологического Университета, и Джорджа Вальтера (George Walter), компьютерного ученого из Великобритании. Я выбрал Академию ВВС США из-за отличного курса вычислительной техники, который читали в аспирантуре. Мое назначение в Ванденберг позволило получить уникальный опыт проектирования очень сложных программных систем. Примерно в это время меня пригласили работать в Ada Joint Program Office. Лари Друффель (Larry Druffel), один из моих инструкторов из Академии ВВС, а в дальнейшем и основатель Института Техники Программного Обеспечения, попросил меня поработать над улучшением техники разработки современного ПО применительно к языку программирования Ada. Примерно так и родился метод Буча, который затем быстро разросся на языки С++, Smalltalk, затем Java и в финале эволюционировал в UML, который я разработал с Джимом Рамбахом и Иваром Якобсоном (Jim Rumbaugh и Ivar Jacobson).


"Абстракция фокусируется на существенных с точки зрения наблюдателя характеристиках объекта"


TanaT: Над чем конкретно вы сейчас работаете?

Гради Буч: После слияния IBM и Rational я по-прежнему остался руководителем исследований в Rational. Моим шефом является Майк Девлин (Mike Devlin), который управляет подразделением Rational в IBM Software Group. Я тесно связан с IBM Research. Это подразделение разрабатывает проекты, которые мы затем должны внедрять в свои продукты. Мы также занимаемся исследованием технологий будущего: то есть тех технологий, связанных со средствами разработки и программированием, которые появятся еще очень не скоро. В целом я должен заботиться о технологиях, которые появятся в ближайшие 3-5 лет, помогать изобрести новое поколение компьютерной инженерии, а также сотрудничать со всеми, кто может оказаться полезным для этих технологий, вне зависимости работают ли они в Rational или еще где-то. В данный момент я занимаюсь архитектурой, то есть обобщаю и исследую огромное число архитектурных решений в промышленности.


"Инкапсуляция скрывает детали реализации объекта"


TanaT: Сложно изобретать технологии будущего? Для этого надо чувствовать это будущее?

Гради Буч: Технологии следующего поколения произрастают из маленьких зерен, которые разбросаны повсюду уже сейчас. Именно поэтому я общаюсь со многими исследовательскими группами - пытаюсь отыскать эти зерна. Будь это промышленные исследования или академические - всегда нужно держать руку на пульсе разрабатываемых технологий.

"Составление диаграмм - это еще не анализ и не проектирование. Диаграммы позволяют описать поведение системы (для анализа) или показать детали архитектуры (для проектирования). Если вы понаблюдаете за работой инженера (программиста, технолога, химика, архитектора), вы быстро убедитесь, что будущая система формируется в сознании разработчика и только в нем. Когда, спустя некоторое время, система будет понятна в общих чертах, она, скорее всего, будет представлена на таких высокотехнологичных носителях, как тетрадные листы, салфетки или старые конверты".

"Объектно-ориентированный анализ и проектирование
с примерами приложений на С++". Гради Буч.


TanaT: А кем вы себя ощущаете: программистом или архитектором?

Гради Буч: Думаю, я больше архитектор, но в обязанности архитектора, на мой взгляд, входит и написание кода. Я также провожу примерно 30% своего времени, работая с клиентами, помогая им разработать архитектуру своих собственных систем.


Гради Буч и Билл Гейтс


TanaT: На ваш взгляд, проектирование программ это искусство или ремесло?

Гради Буч: Проектирование программного обеспечения - это инженерная деятельность, требующая гармоничного сочетания огромного числа аспектов. Я бы сказал, что это и искусство, и ремесло, и наука одновременно: существует много уже отработанных техник и методик, но в то же время каждый может придумать что-нибудь свое, новое и красивое, которое безусловно скажется на окончательном результате.


TanaT: В каких языках программирования вас можно считать экспертом? Какой язык, на ваш взгляд, лучше всего подходит для написания объектно-ориентированного кода?

Гради Буч: Я знаю много языков. Последнее время я работаю в основном с Java, немного затрагивая скриптовые языки: AppleScript, JavaScript, Perl, VB. Привык же я работать с C++, а до этого с Ada... Но самым любимым языком остается Smalltalk. Что же до C#, то ничего значительного я на нем делал. Недавно я начал изучать AspectJ, потому что интересуюсь аспектно-ориентированным программированием. Что же до идеала, то все современные объектно-ориентированные языки очень близки друг к другу по выразительности, так то все определяется общей средой и инструментами: Java побеждает в номинации "среда", а Smalltalk в номинации "инструменты". Хотя Eclipse заставляет меня все больше и больше переосмысливать свой выбор Java. Он мне нравится больше, чем Java.

"Разработка программного обеспечения всегда будет кропотливой работой... Хотя наши машины могут выполнять рутинную работу и помогать нам держать нить рассуждений, разработка концепций останется прерогативой человека... Что всегда будет в цене - это искусство построения концептуальной структуры, а заботы об ее описании уйдут в прошлое".

Из доклада министерству обороны США
о проектировании военного ПО.
Вашингтон, 1987 год.


TanaT: Если бы вам дали возможность создать свой собственный новый язык программирования, каким бы он был?

Гради Буч: Я думаю, он был бы очень похож на UML с элементами Java в промежутках.


TanaT: Расскажите немного об UML?

Гради Буч: О, это довольно долгая история сама по себе. Я написал свою первую работу по объектно-ориентированному проектированию в 1982 году. Отсюда и пошел метод Буча. Затем мы с Джимом Рамбахом и Иваром Якобсоном решили унифицировать нашу работу и тем самым расширить рынок: так появился UML, который сейчас принадлежит открытому стандарту OMG (Object Management Group - рабочая группа по развитию стандартов объектного программирования).

От автора. UML (унифицированный язык моделирования) - это язык визуального моделирования для решения задач общего характера, который используется при определении, визуализации, конструировании и документировании элементов программной системы. UML подходит для любых областей и этапов разработки программного продукта.
UML состоит из четырех частей, описывающих различные аспекты системы: статические, динамические, организационные и относящиеся к окружению. UML позволяет отображать статическую структуру и динамическое поведение системы. Система моделируется как группа дискретных объектов, которые взаимодействуют друг с другом таким образом, чтобы удовлетворить требования пользователя.
UML - дискретный язык моделирования. Он не предназначен для разработки непрерывных систем, встречающихся в физике и механике. UML создавался как язык моделирования общего назначения для применения в таких дискретных системах, как программное обеспечение, аппаратные средства или цифровая логика.


TanaT: Ваша книга "Объектно-ориентированный анализ и проектирование с примерами приложений на C++" стала бестселлером. Как вы думаете, она по-прежнему актуальна сегодня?

Гради Буч: Думаю, нет. Книга основывалась на методе Буча, который устарел с появлением UML и RUP. Сейчас я работаю над новой редакции книги, чтобы она отвечала современным требованиям.


TanaT: А почему вы выбрали С++ для примеров в книге?

Гради Буч: Первое издание книги использовало несколько языков, но во время работы над вторым изданием именно С++ был самым популярным языком (Java тогда еще не набрала обороты). У меня хорошие связи с Бьярном Строуструпом - мы читали серию лекций вместе. Этот опыт, а также спрос со стороны отрасли позволили мне использовать только С++ в своих примерах. В третьем издании все примеры будут на Java.


"Модульность позволяет хранить абстракции раздельно"


TanaT: Как вы считаете, почему "Объектно-ориентированный анализ и проектирование с примерами приложений на C++" стала бестселлером? Может ваша нотация (нотация Буча или метод Буча) были гениальны?

Гради Буч: Я просто оказался в нужном месте и в нужное время: моя книга (а вернее мысли, изложенные в ней) оказалась очень полезной и для крупных компаний и для индивидуумов - в общем для всех, кто разрабатывал объектно-ориентированные системы. Две мои сильные стороны в том, что я, во-первых, внимательно присматривался к проектам, а, во-вторых, применял полученные знания на практике. В результате я написал книгу о собственном опыте и тех уроках, что я получил при решении собственных задач. Книга вызвала намного более глубокий резонанс в обществе, чем я рассчитывал.


TanaT: А красивые и выразительные картинки в книге - ваша идея (картинки из книги вы можете видеть по ходу статьи)?

Гради Буч: Я - ненасытный читатель. Моя жена и я специально сделали наш дом больше, чтобы хватило места всем нашим книгам. Я не хотел написать еще один технический справочник. Добавив мультиплицированные картинки, я отошел от технической скукоты. Я нашел художника-мультипликатора где-то в Англии, мне понравились его картинки в одной из книг по психологии.


TanaT: Гради, вы считаете себя практиком или теоретиком? Может кем-то средним?

Гради Буч: Я - человек, который искусно применяет теорию на практике.


"Абстракции образуют иерархию"


TanaT: Можете рассказать немного о CASE-системах?

Гради Буч: В последнее время я все чаще и чаще обращаюсь к моделированию расширенных сред разработки. Первая эра средств разработки была просто командной строкой. Cedar от Xerox и затем Turbo Pascal от Borland (можно также упомянуть Smalltalk от Xerox) были первыми, действительно интересными, средами разработки. Мир CASE позволяет автоматизировать визуальное представление проекта, окунуться в мир, параллельный миру IDE. Сейчас это уже не так: уже в течение нескольких лет Rational производит среды разработки, сочетающие визуальное проектирование в контексте IDE. Это оказалось намного более полезным, чем просто "чистое" CASE-средство. Дело в том, что сейчас моделирование и традиционное программирование - это различные взгляды на одну и ту же проблему. Они базируются на одной и той же семантике (это и есть сущность моделирования). Следующее поколение инструментов я бы назвал обобщенной средой разработки.


TanaT: То есть код будет сочетаться с визуальным моделированием схемам?

Гради Буч: Это будет обобщенная многомерная среда: обобщенная в смысле использования Сети, как виртуального, разделенного в пространстве и времени места встречи заинтересованных сторон, и многомерная в плане использования нескольких внутренних видов (графического и текстового) в зависимости от желания разработчика. Для реализации этого требуется глубокая семантическая модель, лежащая в основе такой среды.


"Строгая типизация предотвращает смешивание абстракций"


TanaT: Как вы находите современные платформы с полностью объектно-ориентированными языками (например, C# или Java)?

Гради Буч: Я очень высоко оцениваю.NET и J2 в плане повышения уровня абстракции. Но, как я уже отмечал выше, я в основном работаю с Java в последнее время.


"Параллелизм позволяет различным объектам действовать одновременно"


TanaT: А почему не C#?

Гради Буч: Просто C# не так уж часто встречается в моих задачах и заказах.


"Сохраняемость поддерживает состояние и класс объекта в пространстве и во времени"


TanaT: Можете сделать прогноз об эволюции языков программирования?

Гради Буч: Java, конечно, не последний язык программирования, разве что последний язык Скотта МакНили. Современная тенденция направлена на объединение графических и текстовых языков.


"Объект имеет состояние, обладает некоторым хорошо определенным поведением и уникальной идентичностью"


TanaT: А что насчет С++?

Гради Буч: C++ будет по-прежнему широко распространен, слишком много уже написано на этом языке, да и программисты на языке С при переходе на объектно-ориентированный язык выбирают С++. Java, правда, забрала часть пользователей С++, но ничего не указывает на скорую гибель С++.


"Класс представляет набор объектов, которые обладают общей структурой и одинаковым поведением"


TanaT: Хотите что-нибудь сказать нашим читателям?

Гради Буч: Это очень большая честь и одновременно ответственность быть разработчиком. Честь, потому что мы, как и промышленность, меняем цивилизацию. Наша коллективная работа влияет на отдельных людей, компании и страны - мы даем людям общаться друг с другом так, как они хотят, и продолжать свое дело. Как результат, это и большая ответственность - слишком многое зависит от наших продуктов и деяний.


TanaT: Гради, большое вам спасибо. Мы от всего сердца желаем вам успехов в исследованиях и с нетерпением ждем новых творческих идей!