Сила в простотеЛюбому опытному разработчику программного обеспечения известно, что самый сложный шаг разработки — это поиск эффективного и в то же время простого решения. Одно из основных правил состоит в том, что красивым и действительно работающим может быть только простое решение. В тематической подборке этого номера простота в ИТ (Simplicity in IT) понимается в более широком смысле: простота производственной инженерии программного обеспечения.

Вводную заметку приглашенные редакторы номера Тизиана Маргария (Tiziana Margaria) и Майк Хинчи (Mike Hinchey) озаглавили «Простота в ИТ: сила отказа от лишнего» («Simplicity in IT: The Power of Less»). Программные системы не являются материальными объектами, однако многим аспектам правильно организованных систем свойственна красота простоты: эффективность замысла или концепции, правильность и ясность структуры, строгость организации кода, надежность, удобство использования и т. д. Однако красоту простоты легко испортить путем принятия неверных решений, включения в систему необоснованных функциональных возможностей, использования устаревших предположений о критериях эффективности и т. п. Можно заметить, что модернизация и развитие часто связаны с отказом от ставших избыточными компонентов. Так появились, например, технологии безлошадных экипажей, беспроводных коммуникаций и т. д. Всем им присуща характеристика «без» — без чего-то, что присутствовало в технологии предыдущего поколения.

Во времена, когда большее число функциональных возможностей приносит большую прибыль, строить стратегию на простоте рискованно, однако имеются разные формы упрощения — и одной из наиболее очевидных является простота использования программных продуктов конечными пользователями. Упрощение более глубоких слоев ПО индустрией пока отвергается, хотя у этого подхода имеется огромный потенциал для консолидации, унификации и оптимизации, а также для упрощения эксплуатации систем даже при наличии длинных цепочек проектирования, производства и сопровождения. Однако упрощение как отдельная цель исследований сегодня недооценивается, и одним из наиболее успешных направлений, в котором упрощение играет ключевую роль, является тестирование на основе моделей (Model-Based Testing, MBT). Исходным недостатком MBT являлась потребность в наличии априорных тестовых моделей, редко доступных на практике из-за высокой стоимости их построения и сопровождения. Однако исследования показали, что качественные тестовые модели можно построить полностью автоматически с использованием методов обучения автоматов, что превращает MBT в область моделирования на основе тестирования. Этот шаг может повлиять на современную технологию тестирования, но он далеко не очевиден — например, нужно развить методы обучения автоматов для обеспечения их достаточной масштабируемости. Потенциал упрощения, воздействующего на весь жизненный цикл программного обеспечения, реализуется в этом примере за счет инвертирования представлений о моделях и тестировании. Превращение глубоко теоретического направления обучения автоматов в практическую дисциплину может способствовать применимости MBT как общепринятой технологии, но прежде необходимо ответить на два основных вопроса: какие функциональные возможности являются обязательными и как реализовать эти обязательные возможности при меньших инфраструктурных потребностях, с меньшими расходами и риском?

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

Первые две тематические статьи дают общее представление о применении методов упрощения в ИТ. В статье «Исследование подходов к упрощению в информационно-коммуникационной технологии» («Simplicity Research in Information and Communication Technology») Берри Флойд (Barry Floyd) и Стив Боссельман (Steve Bosselmann) приводят обзор состояния дел и исследовательских проблем в области упрощения и ИТ. Обсуждаются публикации, посвященные этому подходу (рис. 1), общие принципы и рекомендации, выработанные в ходе выполнения проекта IT Simply Works European Support Action (ITSy).

Сила в простоте
Рис. 1. Распределение статей, посвященных упрощению, по разным категориям ИТ

 

Ян Босх (Jan Bosch) в статье «Достижение простоты на основе трехуровневой модели продуктов» («Achieving Simplicity with the Three-Layer Product Model») рассматривает проблему делегирования ответственности в ходе разработки и сопровождения ИТ-продуктов. Из опыта работы с крупными компаниями выводится несколько принципов и рекомендаций определения внутрифирменных центров компетенции и контроля развития циклов разработки продуктов (рис. 2).

Сила в простоте
Рис. 2. Трехуровневая модель продукта

 

В следующих четырех статьях номера исследуется потенциал подхода упрощения для достижения успеха на всех этапах жизненного цикла разработки ПО. Обсуждаются различные аспекты неоднородности и изменчивости. В статье «Компонентные модели рассуждений» («Component Models for Reasoning») Кристина Сецелиану (Cristina Seceleanu) и Ивица Крнкович (Ivica Crnkovic) приводят обзор абстрактных характеристик распространенных компонентных моделей. Сравнивается их пригодность для использования в целях формальных рассуждений с точки зрения возможностей композиции — основного преимущества, связанного с повторным использованием компонентов.

Анна-Лена Лампрехт (Anna-Lena Lamprecht), Стефан Науйокат (Stefan Naujokat) и Ина Шейфер (Ina Schaefer) в своей статье «Управление изменениями за рамками характеристических моделей» («Variability Management beyond Feature Models») представляют подход к упрощению управления и реализации вариантов, возникающих при развитии продукта и в процессе его разработки. Эта полностью автоматическая генерация вариантов процесса обеспечивает возможность упрощения определения процесса на основе знаний, в результате чего становится возможным прямой синтез исполняемых процессов.

Статью «Оперативная интеграция высокоуровневых процессов» («Plug-and-Play Higher-Order Process Integration») Йоханнес Ньюбауер (Johannes Neubauer) и Бернхард Стеффен (Bernhard Steffen) посвятили подходу, позволяющему избежать непредвиденных трудностей, возникающих при интеграции бизнес-процессов, управлении их изменениями и обеспечении интероперабельности. Привлечение эксперта прикладной области в процесс разработки программного обеспечения позволяет сократить число коммуникационных осложнений на протяжении всего жизненного цикла разработки.

Чандра Прасад (Chandra Prasad) и Вольфрам Шульте (Wolfram Schulte) в статье «Расширение возможностей средств разработки» («Taking Control of Your Engineering Tools») описывают переход к этапу исполнения крупных, распределенных и неоднородных программных систем. В то время как традиционные средства разработки программного обеспечения не поддерживают его миграцию в облачную инфраструктуру, система сборки, созданная в Microsoft в 2012 году, эту возможность обеспечивает. На основе опыта, полученного при создании этой системы авторы формулируют шесть принципов, упрощающих облачную разработку.

Две последние заметки тематической подборки посвящены состоянию дел в двух разных прикладных областях. В заметке «Инфраструктура интеграции инструментальных средств разработки надежных встраиваемых систем» («A Tool Integration Framework for Sustainable Embedded Systems Development» Тибериу Сецелеану (Tiberiu Seceleanu) и Гаетана Сапиенца (Gaetana Sapienza) описывают, как воплощаются в практические подходы результаты исследований, ранее полученных в индустрии встраиваемых систем.

Регина Херцлингер (Regina Herzlinger), Марго Зельцер (Margo Seltzer) и Марк Гаино (Mark Gayno) в заметке «Применение KISS в информационной технологии здравоохранения» («Applying KISS to Healthcare Information Technology») характеризуют текущее состояние ИТ в области здравоохранения. Кратко описываются проблемы, возникающие из-за неоднородности и плохой совместимости информационных систем. Предлагается набор упрощающих принципов, которые, будучи очевидными для разработчиков программного обеспечения, часто в реальной жизни нарушаются.

Вне тематической подборки опубликована статья «Быстрое прототипирование многозвенных облачных сервисов и систем» («Rapid Prototyping of Multitier Cloud-Based Services and Systems»), в которой Аршдип Бахга (Arshdeep Bahga) и Виджай Мадизетти (Vijay Madisetti) описывают созданную ими облачную компонентную модель (Cloud Component Model, CCM), позволяющую разработчикам многозвенных облачных приложений использовать преимущества облачной инфраструктуры независимо от применяемых языка или платформы. Также создано несколько методологий использования CCM, включая подход, помогающий разработчикам выбирать экономически эффективные реализации и выявлять возникающие узкие места.

Всего вам доброго, Сергей Кузнецов (kuzloc@ispras.ru) — профессор, МГУ (Москва).