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

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

    Я попробую рассказать обратную историю. Тут около месяца назад я не удачно попытался представить демо версию одной своей разработки (см. Часть №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 диаграмму связей классов. Её то и предоставляю для обсуждения.



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

    Это то лучшие, что получилось после реинжиниринга :) было много хуже. Но как видим — и так достаточно ужасно. Почему и как это исправить? Давайте на эту тему и подискутируем. Но главное (!) все это не повод выкидывать и переписывать с нуля.
    Ads
    AdBlock has stolen the banner, but banners are not teeth — they will be back

    More

    Comments 7

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

      А что вы будете делать, если выйдет новая версия?

      «убирал ветки для операционок кроме Windows (другие поддерживать не собираюсь)»

      Жаль. А почему?
        0
        Ну, вообще-то вышли с тех пор уже. Но тот базис который был в версии 1.8.7 достаточен для меня, а незачем следить за новыми версиями (тем более существенно в этой части ничего не изменится).

        Что касается, других операционок — я лично ничего не пишут под другие и не собираюсь. Если будут желающие помочь и развить это дело — то просто нужно это будет написать заново. Поддержка других операционок в VMD делалось через директивы препроцессора — получается перепутанный код, поэтому если и делать то по другому. Кстати да — не используйте директивы препроцессора — ваш код становится не наглядным и запутанным.
          0
          90% кода который я видел по работе с ДНК/РНК был заточен под Unix. Да и сам работая более 10 лет под Linux не вижу смысла приложений под Windows. Это я написал для того, что бы было понятно — развивать такое ПО и не поддерживать Linux не слишком правильно.

          По поводу директив — вы правы.
            0
            Так то оно так, но я не вижу в этой массовости ответа на вопрос «почему для Unix?», по мне так это вчерашний век…
              0
              Почему для Unix? Тут всё просто когда глянете на Топ500 супер компьютеров.
              Кроме того если применительно к Linux то это и Free Software которое близко по духу к научной работе.

              ЗЫ ну и Ubuntu/Mac OS X трудно назвать вчерашним веком.
              ЗЫ2 если опять конкретизируем до ядра Linux то увидим что он эволюционирует крайне быстро, подстраиваясь под современные реалии и тенденции.
                0
                Под вчерашним веком я имею введу плохие среды разработки, даже не знаю что может там быть сравнимо с C# + VisualStudio… Java? — но это шаг назад…
                  0
                  Поверьте — это дело вкуса.
                  Я вот как правило разрабатываю на Python и использую просто расширенные редакторы типо Kate или Sublime Text, среды на дух не переношу (т.е. монструозные IDE).
                  Хотя есть тот же Eclipse, NetBeans, KDevelop и всё это всё же с С++ (который я гораздо больше люблю чем Java )

                  Тот же Линус как программировал так и программирует на MicroEmacs.

      Only users with full accounts can post comments. Log in, please.