Объектно-ориентированные технологии:
мировое господство
от аналитики, до проектирования и реализации
информационных систем

 

Эту статью я написал в 1995 году, когда объекты были еще новым подходом. Я сохранил статью на сайте, т.к. многие оценки данные 7 лет назад оказались верными прогнозами. Если Вам не понятно зачем нужны объекты данная статья может быть вам полезна, особенно если вы менеджер вынужденный общаться с разработчиками.

Неправда ли грозно и претенциозно звучит "Мировое господство"?

Тем не менее, я начну именно с утверждения, что объектно-ориентированные технологии господствуют. Все ведущие мировые производители компьютерных систем из Fortuna 100 используют объектно-ориентированные технологии в качестве технологической и методологической базы. В прочем для этого не нужно читать статистические сводки, достаточно просто оглянуться.

Какие системы программирования нас окружают? Visual Basic, Delphi, Visual C++, Symantec Cofee, JBuilder, продолжать можно долго. Среди них только объектно-ориентированные системы. В мире баз данных это тоже так: клиенты баз всегда выполнены в объектно-ориентированной технологии. А в последние 2 года, даже крупнейшие серверы баз данных (Oracle, Sybase, Informix, InterBase и д.р.) стали непосредственно поддерживать объектную технологию. Microsoft SQL Server пока не поддерживает объектную технологию (Microsoft пока придерживается концепции реализации объектно-ориентированных моделей на клиенте или на промежуточном сервере COM-объектов) В крупную корпорацию типа Parametric, Sun, Microsoft устроится на работу системному аналитику, проектировщику и программисту, которые не владеют объектно-ориентированными методиками практически невозможно. Насчет проектировщиков и программистов это утверждение верно и для России, а когда окончательно произойдет смена поколения аналитиков, то мы полностью достигем мирового уровня.

Как говорит Б.Гейтс "периодически появляются технологии-убийцы, все кто не успевают сесть в их поезд, обречены на забвение". Объектно-ориентированные технологии стали убийцами многих подходов к моделированию и реализации. Они очень молоды, не более 20 лет, а интенсивного развития и господства, наверное, всего лет 7. Многие аналитики, программисты и менеджеры со скепсисом в свое время отнеслись к объектной волне воспринимая ее как моду и не видя за ней конкурентных преимуществ. За это и поплатились, новые фирмы правят рынком.

Поэтому, даже не разъясняя всю суть объектных технологий, посмотрим какие же огромные конкурентные преимущества они в себе несут

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

Много ученых мужей придумало много ученых теорий об сложных системах. Но все разбивалось об бесконечную элементарность сложности, реализация как была фантастически трудоемкой и дорогой, так и оставалась. Многие теории так и не дождались реализации. Нужна была не теория, а технология. Объектно-ориентированная технология - специальная технология реализации сложных систем в рабочие программные продукты. Технологию создают не бородатые профессоры, а практики. Так и объектная технология была рождена из опыта разработки реальных систем. Пожалуй это самое большое обощение опыта разработчиков за последние 20 лет.

Теперь посмотрим на победное шествие объектно-ориентированных технологий.

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

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

 

Архитектор и проектировщик тоже вдруг выяснили, что описать внутреннюю архитектуру на основе понятия объект просто и удобно. И что самое главное, программист может сразу же запрограммировать такое объектное проектирование, просто реализуя код для объектов созданных и описанных проектировщиком. Язык-то один - объектный! Чувствуете? Еще нет? Тогда дальше.

Аналитик. Личность часто отдаленная от непосредственного создания программ, его задача проанализировать абстрактные требования заказчика и разложить их на мельчайшие детали, которые представляют собой вместе рабочий продукт. Аналитик должен четко и однозначно описать внешние требования к элементам системы, до того как отдаст их проектировщику, который создаст для них живую модель. Вся хитрость в том, что если аналитик умеет говорить на языке объектно-ориентированных описаний и в них представит свои требования, то работа проектировщика сильно упрощается, качество их совместной работы дает скачок. Аналитики, которые могли говорить (описывать) на объектном языке стали носить ярлык объектно-ориентированного аналитика. Ярлычок не маленького качества.

Если подвести итог, то раньше аналитик, проектировщик и программист говорили на разных языках. Аналитик по-гречески вещал проектировщику, проектировщик по-немецки вещал программисту, задача которого была написать программу на чистом английском языке. Естественно можно было остановиться на любом, но общем языке. Почему объектный? Потому что он лучший. Мыслить для аналитика объектами реального мира вполне нормально в любой проблемной области (как и любому человеку), так же программисту и проектировщику. Но для последних ценно, то что объектный язык непосредственно можно ввести в компьютер в виде программы.

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

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

Рассмотрим как объектные технологии завоевали рынок.

После серии удач в крупных и сложных проектах идеологи задумались: "Нельзя ли завернуть этот успех в коробку, наштамповать его и сделать большие деньги?". И взоры их обратились на весьма сложные системы - системы разработки программного обеспечения. Довольно быстро в существующие языки и системы программирования вставляются объектные расширения. Далее под маркой новинки и успеха больших проектов делается мода. Умные быстро стали извлекать из новшества плюсы выше, но основная масса просто пока шла в русле моды. Особых преимуществ средний разработчик пока не имел, его системы на первый взгляд вроде не так сложны. Заметим так же важный момент, объектные технологии стали развиваться в виде эффективных гибридов со старыми алгоритмическими языками. Так, C++, Object Pascal и т.д. являются гибридными языками программирования совмещающие преимущества обоих подходов.

Но дальше - больше. Популяторы объектных технологий смекнули, что можно еще больше сделать денег, если доказать среднему разработчику и пользователю, что его система, совсем не простая, а даже очень сложная и требует специального инструмента для работы со сложной системой. Хитрость состоит в том, что сам по себе проект может быть не так сложен, но базируется он на обширной платформе ("библиотеки", API и т.д.). Быстренько ваяются мощные объектные платформы и случилось технологическое чудо. Разработчик теперь мог свою относительно простую систему сделать частью сложной. Объектные технологии позволяли поставить платформу под себя как угодно, хоть раком. Сложность интеграции с платформой в значительной степени разрешилась. Все платформы разработки стали объектными и стали лихо продаваться. Профессионалы видели в них преимущества гибкости и структурности, чайникам пришлось подтягиваться. Пользователь быстро почуствовал приятный вкус нового поколения продуктов, даже элементарная программа должна обеспечивать много встроенного сервиса. Подумайте, вы купите программу, которая не может редактировать строку для ввода текста, а только стерать ее последний символ (а так было раньше)? Думаю нет, а это все вкусные объекты сделавшие простую программу незаметно сложной и заметно приятной. Все на объекты! Технология-убийца не ждет тех, кто опаздывает в ее поезд.

Следующий шаг в покорении объектами мира сделал Гейтс. Была преложена новая концепция разработки воплощенная в Visual Basic. Объекты всегда были визуальны по сути, и тут среднему разработчику предложили конструктор ЛЕГО. Щелк-щелк мышью и программа готова! Новая волна: Visual Basic, Delphi... Визуальные средства просто сметают жалкие остатки консерваторов. Пользователь хочет для простых целей дешевые, быстро сделанные и качественные программы. А если учеть, что пользователь всегда хочет просто, но много, то технология-убица снова находила себе жертв.

Далее объектная технология быстро проникают как вирус в операционные системы. Нас уже совсем не удивляет, что внутри нашего документа WinWord вставлен объект Формула. Нас уже не удивляет, что если я хочу, что-то сделать с объектом, то я должен его выделить, правая кнопка мышки и меню свойств объекта. Объекты пришли к пользователю и стали его языком. Работать с системой, создатель которой (аналитик, архитектор) не мыслил объектами стало тяжело и неудобно.

Сейчас объектные технологии уже завоевали Web. Новые объектные технологии: Java, Java Beans, JavaScript…

Я бы сказал, примерно в 1992-1993гг объектные технологии завершили победный круг и стали доминировать везде (где есть деньги). Как и положено технологии-убийце, ее появление перераспределило миллиарды долларов в рынке программного обеспечения, а сам рынок подрос (программы стали качественнее и доступнее).

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

Пришло время новых аналитиков, проектировщиков и программистов.

 

Выводы

Основной вывод. Не тратьте деньги на технологии прошлого. Многие старые технологии не поддерживаются ведущими производителями и доживают свой век, пришло время новых объектных технологий. Не покупайте продукты и обученных специалистов без марки "сделано на объектных технологиях". Подробные выводы.

  1. Для создания сложных информационных систем была разработана специальная технология - объектно-ориентированная технология. Крупные серийные   системы для конкретных задач требуют всегда коррекции, но  наиболее легко модифицируются объектно-ориентированные системы.
  2. Объектная технология как средство создания сложных информационных систем самое эффективное, надежное и проверенное средство. Созданы десятки тысяч успешных программных продуктов на объектных технологиях.
  3. Объектная технология поддерживается как одно из ведущих направлений фактически всеми мировыми производителями информационных систем (Sun, Oracle, IBM, Microsoft и т.д.). Благодаря этому, средства объектной разработки по соотношению цена/качество абсолютно лидируют. Поэтому их приобретение наиболее выгодно практически для всех задач.
  4. Если вы создаете сложную информационную систему, однозначно приобретайте в качестве платформы только системы позволяющие применять объектно-ориентированное программирование. Проверьте что "объектно-ориентированность" не просто этикетка. В системе должны поддеживатся следующие понятия объектно-ориентированного программирования: объект, абстрактный тип данных, наследование, события и обработчики событий, виртуальные методы, инкапсуляция, поддержка объектов-контейнеров, объектно-ориентированная библиотека разработчика, визуальное программирование. С вашим специалистом проверьте наличие и удобство использования данных механизмов в приобретаемой платформе, иначе вы можете столкнуться с технологическими трудностями в разработке. Это особенно важно для самодельных языков программирования, которые встроены практически во все крупные и средние российские информационные системы (1С, Галактика, Ultima-S, Инфо-бухгалтер и т.д.)
  5. По мере возможности ориентируйтесь на стандартные объектно-ориентированные средства крупнейших мировых компаний (Oracle, Sun, Microsoft и т.д.), т.е. избегайте самодельных языков программирования, если только они не предоставляют много дополнительного сервиса. Например, Ultima-S имеет полноценную объектно-ориентированную систему разработки созданную на базе встроенного языка Transact-SQL в MS SQL Server. Возможность использования Transact-SQL как языка тут привлекательна, т.к. его разработал сам Microsoft, гарантируя качество своей торговой марки обширными вложениями в разработку и тестирование. . Однако Microsoft не предоставляет средств объектно-ориентированной разработки для самого сервера, поэтому разработчики компании Ниеншанц создали данные средства сами с учетом специфики российского бизнеса. Однако таких вложений как у Microsoft в разработку и тестирование даже крупнейшая компьютерная компания Питера не может себе позволить (как и любая другая российская компания). Поэтому, следует внимательно ознакомится с возможностями системы Ultima-S, как платформы разработки сложных информационных систем. И пока не станет ясно, что у Sun, Inprise, Microsoft ничего подобного нет, для создания корпоративных информационных систем с учетом российской специфики (причем именно той что вам нужна), то не стоит даже думать о покупке Ultima-S. Аналогично следует рассуждать при покупке 1С, Галактики и т.д.
  6. Объектные методы эффективны для создания сложных систем, для простых задач они могут быть не эффективны. Объектная технология может обернуться громоздкостью и трудоемкостью для потока простых задач. Данный недостаток объектных технологий сейчас разрешен применением визуального программирования, а также возможностью использовать гибридный характер объектного программирования (т.е. использовать традиционный простой алгоритм для простой задачи). Будьте внимательны! При покупке платформы обратите внимание на то может ли система поддерживать визуальное программирование. Например, можно ли рисовать формы документов и отчетов на экране и сразу прописывать короткие алгоритмы для описания действий в форме. Также проверьте как выглядит создание простого отчета, документа и т.д. в системе. Не слишком ли это громоздко? Проверьте, что для простых задач можно написать без затруднений алгоритм до 100 строк, особенно не отвлекаясь на объектное устройство системы.
  7. Не приглашайте программистов и проектировщиков не владеющих объектно-ориентированными технологиями.
  8. Если вы приглашаете для создания информационной системы аналитика, который не владеет объектно-ориентированным анализом, то вам придется так же обязательно пригласить проектировщика, который владеет объектно-ориентированным проектированием. Если аналитик владеет объектно-ориентированным анализом, то он может выполнить и роль проектировщика. Это даст выигрыш в качестве и деньгах.

 

Владимир Иванов.