Урок 28. Оценка стоимости процесса 64-битной миграции Си/Си++ приложений

Создать новую статью

13.04.2010 13:00


Приступая к планированию переноса проекта на 64-битную систему, необходимо уметь оценить объем работ и материальные затраты. Рассмотрим те элементы, из которых будет складываться цена создания 64-битного программного проекта.

В случае затруднений с оценками стоимости перехода на 64-битные системы, вы можете обратиться за консультацией к специалистам нашей компании "Системы программной верификации". Наша компания также может взять на себя часть работ или полностью выполнить адаптацию ваших проектов для 64-битных систем.

 

Приобретение 64-битного аппаратного и программного обеспечения

Сейчас уже сложно найти у разработчика компьютер, оснащенный 32-битным микропроцессором. Но все-таки следует помнить, что вы должны быть обеспечены 64-битными компьютерами для всех необходимых задач. Более реальной выглядит ситуация, когда на 64-битных аппаратных системах по-прежнему используются 32-битные операционные системы. Вы должны учесть расходы, связанные с приобретением и установкой 64-битных версий операционных систем. Учтите дополнительные расходы, связанные со сменой версии операционной системы, например переустановку различного программного обеспечения.

 

Приобретение компилятора для сборки 64-битных приложений

Заложите в цену покупку и освоение новых компиляторов, способных создавать 64-битынй код.

 

Приобретение 64-битных версий библиотек

Вам может потребоваться купить 64-битные версии библиотек и иных компонентов. Узнайте заранее, какова ценовая политика компаний, чьи компоненты используются в вашем проекте. Иногда 32-битные и 64-битные версии компонентов продаются отдельно. Если вы используете библиотеки с открытым кодом, для которых пока не существуют 64-битных конфигураций, то будьте готовы потратить существенное время на их самостоятельную доработку.

 

Обучение персонала и приобретение дополнительных инструментов

Учтите время, необходимое для того, чтобы сотрудники познакомились со всей необходимой информацией по разработке 64-битных систем. Также может потребоваться приобретение дополнительных инструментальных средств, таких как, например, PVS-Studio.

 

Модификация кода

Как вы уже знаете из предыдущих уроков, скомпилировать 64-битную конфигурацию - это только начало работы. В большинстве случаев, необходимо обнаружить и исправить большое количество дефектов, которые проявят себя в 64-битном коде. Это, пожалуй, самый трудоемкий, но при этом наиболее плохо поддающийся оценке элемент. Однако можно предложить следующую методологию оценки, основанную на использовании статического анализатора PVS-Studio.

Итак, у вас есть несколько (десятков, сотен) мегабайт исходного кода, готового к миграции. Конфигурации для сборки 64-битного кода пока нет. Ни одного компилирующегося в 64-битном режиме файла, соответственно, тоже нет.

В PVS-Studio имеется возможность обнаружения проблем 64-битного кода даже в 32-битных проектах. Именно эта возможность и позволит оценить сложность миграции ДО этапа создания 64-битной конфигурации проекта.

Хочется обратить внимание читателей на то, как работает проверка кода в 32-битном режиме. Вы должны понимать, что эта проверка, не может считаться полноценной, и исправление даже всех обнаруженных проблем не является гарантией работоспособности кода в 64-битном режиме. В коде любого серьезного приложения будут подобные фрагменты:

#ifdef WIN64
...
#endif

Естественно, при проверке в 32-битном режиме подобный код будет пропущен. Вернее будет сказать так: на момент, когда 64-битной конфигурации пока еще нет, такого кода в приложении может не быть.

Другой важный момент - в зависимости от конфигурации проекта типы данных естественно отличаются. Поэтому проверка в 32-битном и в 64-битном режиме практически всегда будет давать разные результаты.

Однако сильно ли будут различаться эти результаты? По результатам экспериментов, проведенных в нашей компании, мы получили следующие данные: списки диагностических сообщений от анализатора кода PVS-Studio при проверке проектов в 32-битном и в 64-битном режимах совпадают на 95-97%. Это означает, что отличаются не более 5% диагностических сообщений.

Эти результаты были получены следующим образом. Мы взяли код реальных проектов, проверили его в 32-битном режиме, сохранили список диагностических сообщений. Затем проверили код этих же проектов в 64-битном режиме и вновь сохранили список диагностических сообщений. После чего сравнили полученные списки и определили, сколько процентов диагностических сообщений совпало. Поскольку вся процедура делалась в автоматизированном режиме, то количество проанализированных проектов было достаточным (больше 20 проектов с объемом кода в несколько мегабайт каждый). Можно сделать вывод, что цифры (5% различий) внушают доверие.

Конечно же, спешить исправлять выявленные потенциальные ошибки в 32-битной конфигурации проекта не стоит - лучше подождать, пока станет доступна 64-битная конфигурация. А вот оценить, сколько потребуется времени для разбора сообщений от анализатора кода, вполне возможно.

Для получения оценки времени рекомендуем поступить следующим образом:

  1. Выполнить анализ 32-битной конфигурации проекта с помощью PVS-Studio.
  2. В течение одного дня программист, понимающий проблемы 64-битного кода, просматривает сообщения анализатора кода и принимает решение о том, актуальна ли данная ошибка для данного проекта или нет. Если актуальна, то он исправляет ее.
  3. Общее количество сообщений от анализатора кода делится на количество проанализированных и обработанных программистом сообщений за день.
  4. Полученное число - это количество человеко-дней, необходимое для миграции кода приложения на 64-битную платформу.

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

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

Вот несколько рекомендаций по выбору такого программиста:

  1. Он должен быть опытным программистом со стажем работы не менее трех лет и желательно со знанием конкретного проекта, который будет переноситься.
  2. Он должен быть знаком с проблемами 64-битного кода. Например, с этими уроками или статьей "20 ловушек переноса Си++ - кода на 64-битную платформу".
  3. Желательно, чтобы он понимал принципы работы со статическими анализаторами кода. Это необязательное требование, но понимание технологии статического анализа кода делает оценку процесса миграции более адекватной.
  4. Человек должен уметь удерживать себя в обыкновенном рабочем режиме в течение испытательного дня. Он не должен стараться поставить рекорд производительности, чтобы произвести впечатление на коллег. Все дни в таком режиме проработать не удастся, и сроки будут оценены не верно.

Соблюдение этих рекомендаций позволит получить адекватную оценку стоимости и времени процесса 64-битной миграции приложений.

 

Адаптация системы тестирования

Учтите стоимость адаптации вашей системы тестирования для полноценной проверки 64-битных модулей. Если ваши программы обрабатывают большие объемы данных, то должны появиться тесты, в которых используются объемы данных более 4 гигабайт. В свою очередь интеграция тяжелых тестов может повлечь за собой задачу распараллеливания тестов. В этом случае, возможно, вам придется приобрести дополнительные инструментальные средства.

 

Защита программных модулей

Если вы используете программные или программно-аппаратные системы защиты от копирования и от взлома программы, то вы должны учесть стоимость реализации защиты 64-битного кода. Возможно, вам придется освоить новые системы защиты, если используемые вами на данный момент не поддерживают работу с 64-битным кодом. Вы можете встретить иные неожиданные сложности и должны зарезервировать время для их разрешения.

 

Адаптация дистрибутива

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

 

Авторы курса: Андрей Карпов (karpov@viva64.com), Евгений Рыжков (evg@viva64.com).

Правообладателем курса "Уроки разработки 64-битных приложений на языке Си/Си++" является ООО "Системы программной верификации". Компания занимается разработкой программного обеспечения в области анализа исходного кода программ. Сайт компании: http://www.viva64.com.

Контактная информация: e-mail: support@viva64.com, 300027, г. Тула, а/я 1800.