Старые программы на .NET и Windows

Сначала исправить. Заменять, только если это оправдано.

Если от старой программы для Windows по-прежнему зависит важная часть вашего бизнеса, вариантов больше, чем «не трогать» или «переписать всё с нуля». Я поддерживаю, исправляю и постепенно модернизирую программы на .NET, а компания всё это время продолжает ими пользоваться.

Что я делаю

Восстанавливаю сборку

Воспроизводимая сборка на чистом компьютере, код в системе контроля версий, зависимости найдены и зафиксированы.

Устраняю самые острые проблемы

Сбои, ошибки в данных, медленная работа и неработающие интеграции, в порядке важности для бизнеса.

Делаю изменения безопасными

Прежде чем что-либо менять, пишу тесты, которые фиксируют текущее поведение рискованных участков кода.

Дорабатываю

Новые функции, отчёты или интеграции, когда основа стабильна.

Модернизирую поэтапно

Например, по частям перевожу программу с .NET Framework на актуальный .NET, а компания всё это время продолжает ею пользоваться.

  • C#
  • .NET Framework
  • .NET
  • WinForms
  • WPF
  • SQL Server
  • VBA / VSTO
  • Настольные приложения Windows

Исправлять, дорабатывать или заменять? Как я принимаю решение

Что я вижуЧто я обычно предлагаю
Основная логика работает, и люди к ней привыклиИсправить ошибки и стабилизировать
Нужны новые функции, а основа стабильнаДоработать то, что есть
Программа зависит от технологий, которые уже нельзя безопасно запускать или защищатьПоэтапно перенести на современную платформу
Бизнес изменился так, что программа за ним не успеваетРассмотреть замену, но сначала описать, что на самом деле делает текущая программа

Иногда замена оправдана. Но начинать с неё стоит редко.

Как я работаю со старым кодом

  1. Сборка

    Воспроизводимая сборка и код, с которым можно безопасно работать.

  2. Анализ

    Карта зависимостей и описание ключевых сценариев.

  3. Тесты

    Тесты текущего поведения там, где планируются изменения.

  4. Исправление

    Сначала самые острые проблемы, согласованными этапами.

  5. Модернизация

    Постепенно и только там, где это окупается.

Вопросы по теме

Наша программа написана не на .NET. Вы сможете помочь?

Я специализируюсь на .NET, настольных приложениях для Windows и VBA. Если у вас другая технология, всё равно опишите ситуацию, и я честно скажу, смогу ли помочь.

У нас нет исходного кода. Можно что-то сделать?

Возможно. Всё зависит от ситуации и от ваших прав на программу. Укажите это в первом сообщении, так как от этого зависит подход к работе.

Вы перепишете всё на новом фреймворке?

Только если это действительно лучший вариант. Переход на актуальный .NET обычно проходит постепенно, а некоторые программы пока разумнее просто стабилизировать на текущей платформе.

Можно ли пользоваться программой, пока вы с ней работаете?

Да, обычно так и происходит. Я вношу и проверяю изменения отдельно, а внедряем мы их согласованными этапами.

Есть программа, которую никто не хочет трогать?

Расскажите, что она делает, на чём работает и что вас в ней беспокоит. Для начала этого достаточно.

Описать задачу