Как стать автором
Обновить

История одного реинжиниринга или RNAInSpace v.1.3. Demo

Время на прочтение3 мин
Количество просмотров1.7K
Тут недавно был такой пост Правила разработки сложных систем. История одного проекта, где автор описывает как он удачно «копался» в одном проекте, а потом все выкинул и переписал с нуля.

Я попробую рассказать обратную историю. Тут около месяца назад я не удачно попытался представить демо версию одной своей разработки (см. Часть №7. RNAInSpace — программное обеспечение для полуавтоматического конструирования РНК в пространстве).

Оказалось, что у скачивающих не работает один модуль, ответственный за показ графики. В двух словах проект RNAInSpace — это программное обеспечение для полуавтоматического конструирования РНК в пространстве. Обеспечивает 3D визуализацию структуры РНК, позволяет её изменять и с помощью связи с модулем RNAWorld позволяет автоматизировать некоторые этапы сворачивания РНК.

Чтобы войти в тему — я тут написал некоторое множество статей:
От белков к РНК, Мат. критерии, Как уменьшить число поворотов цепи?, Как оценить ход сворачивания односпиральной РНК?, Ограничение оптимизирующих методов в играх с противником и без, Одна фундаментальная проблема, Введение в сворачивание многоспиральных РНК

Но эту статью можно обсуждать и не зная предметной области, кстати заодно проверим можно ли судить о качестве ПО не зная семантики предметной области (я утверждаю, что можно).

Так вот эта 3D визуализация (модуль RNAInSpaceDisplay) и не работала на некоторых компьютерах. Для реализации графики я использовал существующий проект VMD 1.8.7.

Ниже история о том как я адаптировал VMD 1.8.7 под свои нужды.



Вначале давайте проверим работает ли у вас этот проект, скачать его можно тут . Комментарии как его использовать описаны в статье Часть №7. RNAInSpace — программное обеспечение для полуавтоматического конструирования РНК в пространстве. Единственно, добавилась директория RNAInSpaceDisplay, где находится .exe. Если графика у вас не запустилась, то запустите этот .exe — мне важно знать или дело в связи C# с С++, или дело в графике. Только предупреждаю RNAInSpaceDisplay.exe не имеет выхода (снимаем задачу через диспетчер задач).

Для интересующихся темой — давайте тут же и подискутируем о развитии этого ПО и проекта в целом.

А ниже я расскажу немного только о модуле графики.

Изначально VMD 1.8.7 написан на С++ и содержит порядка 85000 строк чистого кода (без пустых строк, комментариев и прочего). После моей адаптации код содержит 25000 строк (порядка 100 файлов) — в общем тоже не мало.

Адаптировал я во многом машинально — выкидывал весь пользовательский интерфейс от VMD (который достаточно убогий), кроме окна графики, убирал ветки для операционок кроме Windows (другие поддерживать не собираюсь), ну и все что тянуло. Надо сказать код там ужасный, с бородой, написан в общем в ООП, но все сильно переплетено, и завязано на пользовательский интерфейс от VMD (видимо о MVC разработчики не слышали).

В общем качество кода VMD, а писали его в University of Illinois, плохое. Но у него один жирный плюс — работает и компилится под Windows без особых проблем.

Конечно надо было при адаптации привести в «божеский вид» — засунуть в проект Microsoft Visual C++ 2010, написать класс-оболочку для вызова всего нужного, и сделать .dll, которую потом использую из C#.

Реинжиниринг занял где-то неделю в первой версии, и еще неделю недавно. Причем 50% времени я форматировал код (пробелы заменял на табы — это полуавтоматически делал сам редактор, мне же приходилось расставлять скобочки, т.к. не перевариваю стиль, когда скобки не находятся одна под другой).

Вообще-то я так и не понял, почему на ряде машин не работает. Я с тех времен пересел на Windows7 x64, с WindowsVista x32. Теперь протестировал на этих двух операционках — у меня все работает.

Но походу дела я составил UML диаграмму связей классов. Её то и предоставляю для обсуждения.



Здесь в большом разрешении, чтобы можно разглядеть детали

Это то лучшие, что получилось после реинжиниринга :) было много хуже. Но как видим — и так достаточно ужасно. Почему и как это исправить? Давайте на эту тему и подискутируем. Но главное (!) все это не повод выкидывать и переписывать с нуля.
Теги:
Хабы:
+6
Комментарии7

Публикации

Изменить настройки темы

Истории

Ближайшие события

Weekend Offer в AliExpress
Дата20 – 21 апреля
Время10:00 – 20:00
Место
Онлайн
Конференция «Я.Железо»
Дата18 мая
Время14:00 – 23:59
Место
МоскваОнлайн