Программная инженерия как официальная дисциплина родилась в 1968 г. на конференции НАТО в немецком Гармише, когда военные признали необходимость серьезных инвестиций в исследования по созданию крупных программных проектов. Уже в то время реализовывались проекты, по масштабам не так и сильно отличавшиеся от нынешних: например, еще в 1957 г. компьютер IBM SAGE AN/FSQ-7 управлял в реальном времени стратегической системой противоракетной обороны США, обрабатывая данные от десятков радарных установок. Объем кода этой системы составлял, согласно Фредерику Бруксу (“Мифический человеко-месяц”), 75 тыс. операторов — всего лишь на порядок меньше нынешних систем аналогичного профиля.
40 лет блуждания в темноте
Официально признанное направление, однако, практически так и не породило ожидаемых сильных идей, которые удалось бы успешно воплотить на практике. Разрозненные конференции и единичные семинары затерялись в вале неудачных ИТ-проектов. Каждое десятилетие дополнительные накладные расходы на разработку и внедрение ПО вырастают на треть, да и по сей день эта тенденция не меняется. К 1980-м годам, в разгар холодной войны на фоне повсеместной корпоративной автоматизации и связываемых с нею радужных перспектив, ситуация стала особо критичной — затягивание сроков, перерасходы бюджетов и количество ошибок в программах превышали все мыслимые границы. Поэтому в 1986 г. МО США создало официальную структуру — институт программной инженерии SEI при Университете Карнеги — Меллона, который и сегодня большую часть бюджета получает от военных. С тех пор едва ли не самая активная научно-практическая деятельность по этому профилю ведется в SEI, а результатом ее стала, в частности, модель зрелости программных процессов Capability Maturity Model (CMM). Разработал ее Уотс Хамфри, пришедший в SEI из IBM, где занимал должность вице-президента. CMM оказалась, пожалуй, наиболее успешным на сегодня достижением программной инженерии. Так, большинство федеральных структур США, реализующих крупные ИТ-проекты, должны иметь сертификат CMM.
Однако “серебряной пули” из CMM не получилось. Эта модель сложна в реализации, рассчитана на крупные организации, а опыт ее использования плохо переносится даже между подразделениями одной компании. В результате Хамфри разработал интеграционный вариант Capability Maturity Model Integration, который, впрочем, тоже не удалось успешно подстроить под достижения набравшего популярность движения agile-разработки. Однако никаких других альтернатив CMM в первом десятилетии XXI века не появилось.
Духовные наследники CMM
В декабре 2009-го заработала организация Software Engineering Method and Theory (SEMAT), созданная тремя известными специалистами по программной инженерии: Айваром Якобсоном, одним из основных разработчиков языка моделирования UML, методологии RUP и технологии аспектно-ориентированного программирования; Бертраном Мейером, создателем языка программирования Eiffel и концепции контрактной разработки; Ричардом Соли, CEO консорциума OMG по развитию объектно-ориентированных стандартов и технологий. В марте 2010-го в Цюрихе состоялся первый массовый семинар SEMAT. На нем Уотс Хамфри, который скончался через полгода после этого знаменательного события, сравнил данный семинар в плане его исторической значимости для программной инженерии с мероприятием НАТО 1968 г.! Что же так впечатлило автора CMM в очередном творении коллег по программному цеху?
Разобраться в этом помогла состоявшаяся 20 декабря конференция, посвященная открытию Российского отделения SEMAT. Вел ее хорошо известный отечественным специалистам по программной инженерии д-р техн. наук Борис Позин, технический директор компании “ЕС-лизинг”, организовавшей это мероприятие. С рассказом о перспективах SEMAT в режиме телеприсутствия выступил Айвар Якобсон.
20 лет назад программная инженерия развивалась “под эгидой” объектно-ориентированного программирования; 15 лет назад популярными стали RUP и UML; 12 лет назад получила массовое признание во всем мире модель CMM; сегодня пользуются спросом agile-практики наподобие Scrum и Kanban. Однако единой успешной и универсальной концепции разработки ПО в срок, в рамках бюджета и с надлежащим качеством так и не появилось. RUP, MDA, CMMI, Six Sigma, UML — все эти подходы по-своему уникальны и несравнимы, нельзя точно выбрать из них заведомо лучший под очередной проект. Мы так и не знаем, что с методологической точки зрения нам понадобится и как успешно переносить накопленные знания от проекта к проекту.
Хотя с известной даты прошло более 40 лет, отрасль программной инженерии все еще молода, и незрелые практики по-прежнему присутствуют в массовом порядке даже в самых крупных компаниях. Профессионалы не умеют быстро переносить свои навыки в другие проекты. Улучшение процессов производства ПО в крупных организациях трудоемко, а сами процессы несовместимы друг с другом — от “канбана” к “скраму” не перебежишь. Что касается обучения, то, говоря программистским языком, люди учатся конкретным “экземплярам” методов (Scrum, RUP) вместо освоения универсальной методологической базы. Сохраняется разрыв между академическими и прикладными наработками.
Сегодняшняя индустрия ПО характеризуется избыточным количеством подходов и инструментов, часто выполняется пустая работа по созданию “новых” технологий разработки, а методологи конкурируют друг с другом, вместо того чтобы сотрудничать. Всем нынешним подходам не хватает прежде всего глубокого фундамента, и именно эту проблему решает SEMAT — входящие в это сообщество гуру пытаются сделать все процессы производства софта точно измеряемыми и выполненными на хорошем математическом базисе. Предлагаемый SEMAT продукт должен будет работать независимо от конкретных методологий, технологий и инструментов. Его ядро (так называемый мета-метод) включает средства анализа прогресса проекта, состояния и функциональности создаваемой системы. Якобсон отметил, что фактически SEMAT подсказывает, куда из текущего проектного состояния идти не надо, дабы не оказаться в проигрышной ситуации (“умрет ли проект?”). В продукт входят четыре “версии”: для уже производящих программный продукт и для планирующих, для сопровождения ПО и для исследований и обучения.
Ближайшие 40 лет — под эгидой SEMAT
Такой тезис прозвучал на мероприятии, и на это имеются определенные основания. К SEMAT уже присоединилось 1784 участника, включая Барри Боэма, автора COCOMO (модель оценки стоимости разработки ПО), Эриха Гамму, Эда Йордона, Джонса Каперса (модель функциональных точек). По понятным причинам SEMAT активно поддерживается консорциумом OMG. В деятельности SEMAT участвуют Ericsson, Fujitsu, IBM, Microsoft, Samsung, институты программной инженерии Швеции, Южной Кореи, Китая. Интересно, что уже семь из первой десятки китайских вузов официально поддержали SEMAT-инициативу.
На сайте semat.org доступно немало методических материалов, имеется книга “The Essence of Software Engineering: Applying the SEMAT Kernel”. Приятно, что в работе SEMAT принимают участие и отечественные специалисты: помимо Бориса Позина, пока выступающего координатором Российского отделения SEMAT, виртуально присутствовавший на мероприятии Андрей Байда из Санкт-Петербурга входит в рабочую группу по разработке теории SEMAT. Участвует в инициативе SEMAT и профессор Андрей Терехов, директор НИИ информационных технологий СПбГУ.
В первой половине 2013 г. Российское отделение SEMAT, будем надеяться, сформируется в активно действующую структуру со своим интернет-представительством, в работе которого смогут участвовать все желающие. PC Week/RE будет информировать читателей об этом перспективном проекте.