2015 г.
В простоте сила
Сергей Кузнецов
Обзор ноябрьского 2013 г. номера журнала Computer (IEEE Computer Society, V. 46, No 11, ноябрь, 2013)
Авторская редакция.
Также обзор опубликован в журнале «Открытые системы»
Темой ноябрьского номера является простота в информационной технологии (Simplicity in IT). Любому опытному разработчику программного обеспечения известно, что самым сложным шагом разработки является поиск эффективного и в то же время простого решения. Одно из основных правил состоит в том, что красивым (и действительно работающим) может быть только простое решение. В тематической подборке этого номера простота в ИТ понимается в более широком смысле: простота производственной инженерии программного обеспечения. Приглашенные редакторы номера – Тизиана Маргария и Майк Хинчи (Tiziana Margaria, Universität Potsdam, Germany, Mike Hinchey, Lero—the Irish Software Engineering Research Centre). Их вводная заметка называется «Простота в ИТ: сила отказа от лишнего» («Simplicity in IT: The Power of Less»).
Хотя программные системы не являются материальными объектами, многим аспектам правильно организованных систем свойственна красота простоты: эффективность замысла или концепции, правильность и ясность структуры, строгость организации кода, надежность, удобство использования и т.д. Однако красоту простоты легко испортить путем принятия неверных решений, включения в систему необоснованных функциональных возможностей, использования устаревших предположений о критериях эффективности.
Можно заметить, что модернизация и развитие часто связаны с отказом от ставших избыточными компонентов или элементов. Так появились, например, технологии безлошадных экипажей, пылесосов без пылесборника, беспроводных коммуникаций и т.д. Всем им присуща характеристика «без»: без чего-то, что присутствовало в технологии предыдущего поколения.
Во времена, когда большее число функциональных возможностей приносит большую прибыль, основывать стратегию на простоте и ограниченности набора функций системы рискованно и не популярно. Однако имеются разные формы упрощения. Одной из наиболее очевидных форм является простота использования программных продуктов конечными пользователями, поскольку это относится к наиболее заметному внешнему слою программных систем. Это направление внимательно изучается в сообществе человеко-машинных интерфейсов, и в статьях данного номера не обсуждается.
Упрощение более глубоких слоев программных продуктов индустрией пока в основном отвергается, хотя у этого подхода имеется огромный потенциал для консолидации, унификации и оптимизации систем, а также для упрощения их эксплуатации даже при наличии длинных цепочек проектирования, производства и сопровождения. Осведомленность о влиянии такого глубинного упрощения на суть и качественные характеристики систем ограничивается сообществом ИТ-специалистов и не доходит до конечных пользователей.
Чтобы некоторая теория или начальный прототип программной системы могли оказать влияние на индустрию, на рынок и, в конечном счете, на общество, требуется пройти длинный путь с возможностью применения многочисленных упрощений и инноваций. Однако упрощение недооценивается как отдельная цель исследований.
Одним из наиболее успешных направлений, в котором упрощение играет ключевую роль, является тестирование на основе моделей (model-based testing, MBT). Исходным недостатком MBT являлась потребность в наличии априорных тестовых моделей, редко доступных на практике из-за высокой стоимости их построения и сопровождения в жизненном цикле программных систем. Однако исследования показали, что достаточно качественные тестовые модели можно построить полностью автоматически с использованием методов обучения автоматов. По существу, это превращает MBT в область моделирования на основе тестирования. Этот шаг, который может значительно повлиять на современную технологию тестирования, далеко не очевиден. Спустя десять лет после получения соответствующих результатов для обоснования практической применимости этого подхода требуется значительная техническая работа. Например, нужно развить методы обучения автоматов для обеспечения их достаточной масштабируемости.
В этом примере потенциал упрощения, воздействующего на весь жизненный цикл программного обеспечения, реализуется за счет инвертирования представлений о моделях и тестировании. Превращение глубоко теоретического направления обучения автоматов в практическую дисциплину может способствовать применимости MBT как общепринятой технологии.
При использовании подхода глубинного упрощения являются необходимо ответить на два основных вопроса:
- Какие функциональные возможности являются обязательными?
- Как реализовать эти обязательные возможности при меньших инфраструктурных потребностях, с меньшими расходами, с меньшим риском?
Для такого упрощения требуются безболезненные приспосабливаемость и изменчивость. В связи с этим преградой остается архитектурное проектирование: изменение архитектуры системы настолько же болезненно, как изменение схемы базы данных. Даже если поиски упрощений происходят только во время тех изменений, которые сулят наибольшую выгоду, эти упрощения могут повлиять на гораздо большее число аспектов, что приводит к изменению приоритетов решений, возможно, вызывая потребность в изменении и архитектуры системы, которая сначала кажется незыблемой.
Тематическая подборка содержит шесть крупных статей и две небольшие заметки. Первые две статьи обеспечивают общее представление о применении методов упрощения в информационной технологии. В статье «ITSy: исследование подходов к упрощению в информационно-коммуникационной технологии» «Simplicity Research in Information and Communication Technology» Берри Флойд и Стив Боссельман (Barry Floyd, California Polytechnic State University, San Luis Obispo, Steve Bosselmann, Universität Potsdam, Germany) приводят обзор состояния дел и исследовательских проблем в области упрощения и ИТ. Обсуждаются публикации, посвященные этому подходу, общие принципы и рекомендации, выработанные в ходе выполнения проекта IT Simply Works European Support Action (ITSy).
Рис. 1. Распределение числа статей, посвященных упрощению, по разным категориям компьютерной науки
Ян Босх (Jan Bosch, Chalmers University of Technology, Sweden) в статье «Достижение простоты на основе трехуровневой модели продуктов» («Achieving Simplicity with the Three-Layer Product Model»)рассматривает проблему делегирования ответственности в ходе разработки и сопровождения ИТ-продуктов. Из опыта работы с крупными компаниями выводится несколько принципов и руководств относительно определения внутрифирменных центров компетенции и контроля развития циклов разработки продуктов, включающих внутренние и внешние части.
Рис. 2. Трехуровневая модель продукта
В следующих четырех статьях исследуется потенциал подхода упрощения для достижения успеха в жизненном цикле разработки программного обеспечения. Обсуждаются различные аспекты неоднородности и изменчивости. В статье «Компонентные модели рассуждений» «Component Models for Reasoning» Кристина Сецелиану и Ивица Крнкович (Cristina Seceleanu, Ivica Crnkovic, Mälardalen University, Sweden) приводят обзор абстрактных характеристик распространенных компонентных моделей. Сравнивается их пригодность для использования в целях формальных рассуждений с точки зрения возможностей композиции – основного преимущества, связанного с повторным использованием компонентов.
Анна-Лена Лампрехт, Стефан Науйокат и Ина Шейфер (Anna-Lena Lamprecht, Universität Potsdam, Germany, Stefan Naujokat, Technische Universität Dortmund, Germany, Ina Schaefer, Technische Universität Braunschweig, Germany) представляют в своей статье «Управление изменениями за рамками характеристических моделей» («Variability Management beyond Feature Models») подход к упрощению управления и реализации вариантов, возникающих при развитии продукта и процесса его разработки. Эта полностью автоматическая генерация вариантов процесса обеспечивает возможность упрощения определения процесса на основе знаний, в результате чего становится возможным прямой синтез исполняемых процессов.
Статья Йоханнеса Ньюбауера и Бердхарда Стеффена (Johannes Neubauer, Bernhard Steffen, Technische Universität Dortmund, Germany) «Оперативная интеграция высокоуровневых процессов» («Plug-and-Play Higher-Order Process Integration») посвящена подходу, позволяющему избежать непредвиденные трудности, возникающие при интеграции бизнес-процессов, управлении их изменениями и обеспечении интероперабельности. Привлечение эксперта прикладной области в процесс разработки программного обеспечения позволяет сократить число коммуникационных осложнений на всем жизненном цикле разработки.
Чандра Прасад и Вольфрам Шульте (Chandra Prasad, Wolfram Schulte, Microsoft) в статье «Расширение возможностей средств разработки» («Taking Control of Your Engineering Tools») описывают переход к этапу исполнения крупных, распределенных и неоднородных программных систем. В то время как традиционные средства разработки программного обеспечения не поддерживают его миграцию в облачную инфраструктуру, система сборки, созданная в Microsoft в прошлом году, эту возможность обеспечивает. На основе опыта, полученного при создании этой системы авторы статьи формулируют шесть принципов, упрощающих и облегчающих облачную разработку.
Две последние заметки тематической подборки посвящены состоянию дел в двух разных прикладных областях. В заметке «Инфраструктура интеграции инструментальных средств разработки надежных встраиваемых систем» («A Tool Integration Framework for Sustainable Embedded Systems Development» Тибериу Сецелеану и Гаетана Сапиенца (Tiberiu Seceleanu, Gaetana Sapienza, ABB Corporate Research Centre and Mälardalen University, Sweden) описывается, как воплощаются в практические подходы результаты ранее полученных исследований в индустрии встраиваемых систем.
Регина Херцлингер, Марго Зельцер и Марк Гаино (Regina Herzlinger, Harvard Business School, Margo Seltzer, Harvard University, Mark Gayno, Saint Louis University) в заметке «Применение KISS в информационной технологии здравоохранения» («Applying KISS to Healthcare Information Technology») характеризуется текущее состояние ИТ в области здравоохранения. Кратко описываются проблемы, в основном возникающие из-за неоднородности и плохой совместимости информационных систем. Предлагается набор упрощающих принципов (KISS – keep it simple, stupid, будь проще, дурачок), которые, будучи очевидными для разработчиков программного обеспечения, часто нарушаются в реальной жизни.
Вне тематической подборки опубликована статья Аршдипа Бахги и Виджая Мадизетти (Arshdeep Bahga, Vijay K. Madisetti, Georgia Tech) под названием «Быстрое прототипирование многозвенных облачных сервисов и систем» («Rapid Prototyping of Multitier Cloud-Based Services and Systems»). В статье описывается созданная авторами облачная компонентная модель (Cloud Component Model, CCM), позволяющая разработчикам многозвенных облачных приложений использовать преимущества облачной инфраструктуры независимо от применяемых языка или платформы. Также создано несколько методологий использования CCM, включая подход, помогающий разработчикам выбирать экономически эффективные реализации и выявлять возникающие узкие места.
Рис. 3. Разработка на основе CCM: (а) методология разработки, (b) архитектура компонента CCM