Наши партнеры

UnixForum





Библиотека сайта rus-linux.net

Система VTK

Глава 24 из 1 тома книги "Архитектура приложений с открытым исходным кодом".

Оригинал: VTK, глава из книги "The Architecture of Open Source Applications" том 1.
Автор: Berk Geveci и Will Schroeder
Перевод: Н.Ромоданов

24.3.2. Технологические дополнения

Кроме самого процесса разработки программного обеспечения, есть множество технологических инноваций, находящихся на стадии разработки

  • Совместная обработка является такой возможностью визуализации, когда движок визуализации интегрируется в код, осуществляющий моделирование, и периодически создает отдельные поднаборы данных, используемых для визуализации. Эта технология значительно снижает необходимость вывода большого количества данных, представляющих собой полное решение.
  • По-прежнему слишком сложным в системе VTK остается конвейер обработки данных VTK. Есть методы, направленные на упрощение и рефакторинг этой подсистемы.
  • Среди пользователей становится все более популярной возможность напрямую взаимодействовать с данными. Хотя в системе VTK есть большой набор виджетов, появляется много других методов взаимодействия, в том числе методы, основанные на использовании сенсорных экранов, а также методы трехмерного взаимодейсьвия. Механизмы взаимодействия продолжат свое достаточно быстрое развитие.
  • Для разработчиков материалов и инженеров материаловедения все более значимой становится вычислительная химия. В систему VTK добавляется возможность осуществлять визуализацию и взаимодействовать с химическими данными.
  • Система рендеринга, имеющаяся в VTK, была подвергнута критике за то, что она слишком сложна и из-за этого трудно создавать производные классы или поддерживать новые технологии рендеринга. Кроме того, в системе VTK прямо не поддерживается понятие сценического графа, которое опять же является тем, что просят многие пользователи.
  • Наконец, постоянно появляются новые формы представления данных. Например, в области медицины - иерархические наборы волюмометрических данных с различным разрешением (например, в конфокальной микроскопии с локальным увеличением).

24.3.3. Наука с открытыми возможностями

Наконец, Kitware и в целом все сообщество VTK являются приверженцами науки с открытыми возможностями. С прагматической точки зрения это способ сказать, что мы будем обнародовать открытые данные, открытые публикации и открытый исходный код — то, что нужно для создания репродуцируемых научных системы. Хотя система VTK уже давно распространяется с открытым исходным кодом и является открытой системой обработки данных, в ней не хватало документации. Хотя есть достойные книги [Kit10, SML06], также должны быть различные специальные способы сбора технических публикаций, в том числе и новых добавлений исходного кода. Мы улучшаем ситуацию путем разработки новых механизмов публикации, например, создав журнал VTK Journal [3], в котором представлены статьи, содержащие документацию, исходный код, данные и актуальные тестовые изображения. Журнал также позволяет получать автоматизированные оценки кода (с использованием процесса тестирования качества программ, имеющегося в системе VTK), а также публиковать обзоры подписок, создаваемые людьми.

24.3.4. Усвоенные уроки

Хотя система VTK является успешной, есть много того, что мы делали неправильно:

  • Модульность проекта: Мы проделали хорошую работу для обеспечения модульности наших классов. Например, мы не делали чего-нибудь настолько глупого, как построение объекта размером в один пиксель, а создали более высокоуровневый класс vtkImageClass, под капотом которого обрабатываются массивы пиксельных данных. Однако в некоторых случаях мы сделали наши классы слишком высокоуровневыми и слишком сложными, поэтому во многих случаях нам приходится разделять их на мелкие части, и мы продолжаем этот процесс. Ярким примером является конвейер обработки данных. Вначале конвейер был реализован неявно как взаимодействие объектов данных и объектов алгоритма. В конце концов мы поняли, что нам нужно было создать явный объект, осуществляющий выполнение работы конвейера, который будет координировать взаимодействие между данными и алгоритмами и реализовывать различные стратегии обработки данных.
  • Пропущенные ключевые концепции: Одним из наших самых больших упущений явилось то, что мы не стали широко использовать итераторы языка C++. Во многих случаях обход данных в системе VTK похож на обработку научных данных на языке программирования Fortran. Дополнительная гибкость, предоставляемая итераторами, позволила бы в системе добиться дополнительных преимуществ. Например, они очень удобны при обработке локальной области данных или только данных, удовлетворяющих некоторому критерию итерации.
  • Вопросы проектирования: Конечно, есть длинный список проектных решений, которые не являются оптимальными. Мы боролись с конвейером выполнения данных, пережив несколько его поколений и каждый раз делая проект лучше. Также система рендеринга является слишком сложной для того, чтобы ее можно было развивать. Еще одна проблема возникла из первоначальной концепции системы VTK: мы видели ее лишь как систему визуализации, позволяющую только читать просматриваемые данные. Тем не менее, клиенты, пользующиеся ей в настоящий момент, часто хотят, чтобы была возможность редактирования данных, для чего необходимы совершенно другие структуры данных.

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

Примечания

  1. http://en.wikipedia.org/wiki/Opaque_pointer.
  2. Смотрите анализ последнего варианта кода системы VTK по ссылке http://www.ohloh.net/p/vtk/analyses/latest.
  3. http://www.midasjournal.org/?journal=35


Вернуться к началу статьи