БОРИС ПОЗИН: «Работа над стандартизацией в рамках SEMAT еще только начинается, но ее поддерживают ведущие специалисты в области программной инженерии по всему миру, а теперь к этой работе подключилась и Россия» |
Компания «ЕС-лизинг» провела конференцию, посвященную открытию российского отделения международной организации SEMAT (Software Engineering Method and Theory), нацеленной на формирование фундаментальной теории программной инженерии.
По мнению известного евангелиста в области программной инженерии Барри Боэма, не позднее 2025 года на человечество обрушится катастрофа, вызванная дефектами программ. Действительно, мировая экономика все больше зависит от ПО, однако, в отличие от других отраслей, таких как машиностроение, строительство, авиастроение, программные проекты не опираются на стройную теорию, для них нет метрик измеримости, способов предсказуемости.
Программная инженерия до сих пор не вышла из периода ранней юности, а между тем сложность некоторых программных разработок уже превосходит сложность многих градостроительных, машиностроительных и инфраструктурных проектов, последствия же ошибок могут быть катастрофическими. К тому же, в отличие от технических вузов, готовящих, например, инженеров-теплотехников, будущих программистов в учебных заведениях не учат бороться со сложностью.
В программной инженерии до сих пор нет теории, которая служила бы ориентиром для исследователей и как минимум предоставляла бы метрики для уже полученных результатов и позволяла предсказать характеристики для будущих систем. Безусловно, есть отдельные разработки авторитетов, подобных Барри Боэму, Эдсгеру Дейкстре или Бертрану Мейеру, но ни одна из них не является фундаментальной, а представляет лишь островки описания конкретных процессов по созданию ПО. Программистскому сообществу еще только предстоит объединить такие островки в архипелаг.
В сентябре 2009 года Ивар Якобсон, Бертран Мейер и Ричард Соули выступили с инициативой SEMAT, основы которой они изложили в своей книге The Essence of Software Engineering: Applying the SEMAT Kernel.
Идею тройки поддержали такие гуру программирования, как Барри Боэм, Эд Йордан, Скотт Амблер, Ларри Константин и Билл Куртис. В работу над SEMAT включились корпорации ABB, SAAB, IBM и Samsung, но пока речь идет лишь о начальном описании — ядре, включающем элементы, общие для всех программных проектов. Как отметил Якобсон, выступая в режиме телеконференции в ходе объявления об открытии российской региональной организации SEMAT, сегодня имеется колоссальный разрыв между исследователями и промышленным программированием — невозможно передать опыт разработки программ между различными отраслями, в каждой из которых имеются собственные стандарты и свои методики. Необходима консолидация лучшего опыта, общая теоретическая база и ядро, поддержанное всеми и позволяющее отделить главное от деталей, осуществлять масштабируемость от малого проекта к большому, от одного ко многим.
«SEMAT определяет, какой дорогой пойти при выполнении программного проекта, какой выбрать перекресток и каким переходом воспользоваться», — отметил Борис Позин, технический директор компании «ЕС-лизинг».
До недавнего времени программная инженерия в своем развитии была подвержена тем или иным модным веяниям: 25 лет назад увлекались объектно-ориентированным программированием, 15 лет назад появились UML и RUP, 12 лет назад — CMMI, затем в моду вошло экстремальное программирование, а сегодня — методики Scrum и Lean. Каждое такое модное течение хорошо в отдельности, но продолжает отсутствовать общая база, позволяющая сказать, что хорошо, а что плохо в проекте.
«Каждый разработчик знает, как создать его собственное ПО, но как сообщество мы не знаем общих правил», — отметил Якобсон, один из авторов RUP, унифицированного процесса разработки программ. Такое положение дел типично для искусства, но такого не должно быть в инженерной дисциплине. Если в индустрии разработки программ не произойдет кардинальных изменений, то мир неизбежно начнут сотрясать техногенные катастрофы, вызванные ошибками в коде или сбоями при управлении сложными программными системами.