Недавно был такой пост Правила разработки сложных систем.
История одного проекта , где автор описывает, как он успешно «покопался» в одном проекте, а потом всё выкинул и переписал с нуля.
Я попробую рассказать противоположную историю.
Здесь около месяца назад я безуспешно пытался представить демо-версию одной из своих разработок (см.
Часть №7. RNAInSpace - программа для полуавтоматического проектирования РНК в космосе ).
Оказалось, что в загрузчиках нет одного модуля, отвечающего за отображение графики.
Вкратце, проект RNAInSpace — это программное обеспечение для полуавтоматического проектирования РНК в космосе.
Обеспечивает 3D-визуализацию структуры РНК, позволяет изменять ее и за счет связи с модулем RNAWorld позволяет автоматизировать некоторые этапы сворачивания РНК.
Чтобы разобраться в теме, я написал здесь ряд статей: От белков к РНК , Мат. критерии , Как уменьшить количество витков цепи? , Как оценить ход сворачивания одноцепочечной РНК? , Ограничения на методы оптимизации в играх с соперником и без него , Одна фундаментальная проблема , Введение в сворачивание многоцепочечной РНК Но эту статью можно обсуждать и не зная предметной области; кстати, заодно проверим, можно ли судить о качестве ПО, не зная семантики предметной области (я утверждаю, что это возможно).
Так вот эта 3D визуализация (модуль RNAInSpaceDisplay) не работала на некоторых компьютерах.
Для реализации графики я использовал существующий проект ВМД 1.8.7 .
Ниже рассказ о том, как я адаптировал VMD 1.8.7 под свои нужды.
Для начала давайте проверим, подходит ли вам этот проект , Вы можете скачать это здесь .
Комментарии по использованию описаны в статье.
Часть №7. RNAInSpace - программа для полуавтоматического проектирования РНК в космосе .
Единственное, добавлен каталог RNAInSpaceDisplay, где находится .
exe. Если у вас не запускается графика, то запустите этот .
exe — мне важно знать, это связь между C# и C++, или это проблема с графикой.
Сразу предупреждение: RNAInSpaceDisplay.exe не имеет вывода (удаляем задачу через диспетчер задач).
Для интересующихся темой сразу обсудим развитие этого ПО и проекта в целом.
А ниже я расскажу немного только о графическом модуле.
Изначально VMD 1.8.7 написан на C++ и содержит около 85 000 строк чистого кода (без пустых строк, комментариев и т.п.
).
После моей адаптации код содержит 25 000 строк (около 100 файлов) — в общем, это тоже немало.
Адаптировался во многом механически - выкинул из ВМД весь пользовательский интерфейс (который довольно убогий), кроме графического окна, удалил ветки для операционных систем, отличных от Windows (другие поддерживать не собираюсь), и все, что прилипло.
.
Сразу скажу код там ужасный, с бородой, написан вообще на ООП, но все очень переплетено и завязано на пользовательский интерфейс от VMD (видимо разработчики не слышали о MVC).
В целом качество кода VMD, написанного в Университете Иллинойса, оставляет желать лучшего.
Но у него есть один большой плюс — он без проблем работает и компилируется под Windows. Конечно, при адаптации пришлось привести его в «божественный вид» — воткнуть в проект Microsoft Visual C++ 2010, написать класс-обертку для вызова всего необходимого и сделать .
dll, которую потом использую из C#.
Реинжиниринг в первой версии занял около недели, а недавно — еще неделю.
Более того, в 50% случаев я форматировал код (заменял пробелы на табуляции - это делал сам редактор полуавтоматически, но скобки расставлять приходилось, так как не могу переварить стиль, когда скобки не расположены) один ниже другого).
Собственно, я до сих пор не понимаю, почему на ряде машин это не работает. С тех пор я перешёл на Windows7 x64, с WindowsVista x32. Сейчас протестировал на этих двух операционных системах - у меня все работает. Но попутно я составил схему подключения классов UML. Предлагаю на обсуждение.
Здесь в высоком разрешении, чтобы вы могли рассмотреть детали.
Это лучшее, что получилось после реинжиниринга :) было гораздо хуже.
Но как видим, это уже достаточно ужасно.
Почему и как это исправить? Давайте обсудим эту тему.
Но главное (!) — это не повод выкидывать и переписывать с нуля.
Теги: #Работа с 3D-графикой #3d-графика #демо #теория игр #складывание белка #кибернетика #реинжиниринг #складывание РНК
-
Письмо В Редакцию: Люби Свою Родину
19 Oct, 24 -
Velcom Android Беларусь Год Спустя
19 Oct, 24