|
|
|||
![]() PVS-Studio, статический анализатор кода для 64-битного и параллельного программирования на Си/Си++
|
|||
![]() ![]() ![]() ![]() ![]()
28.06.2010
Почему в PVS-Studio в окне Error List иногда не показывается номер строки, в которой обнаружена проблема? Иногда анализатор кода PVS-Studio якобы обнаруживает проблему в коде, выдает сообщение, указывает имя файла, но не показывает номер проблемной строки как показано на рисунке.»
07.06.2010
Общение разработчиков с пользователями программ При разработке программных продуктов разработчикам очень важно иметь обратную связь с пользователями их программ.» ![]()
22.07.2010
Использование PVS-Studio вместе с системами continuous integration В статье показаны приемы организации работы анализатора кода PVS-Studio вместе с системами непрерывной интеграции (continuous integration).»
06.07.2010
Сравнение возможностей PVS-Studio и Visual Studio 2010 по выявлению дефектов в 64-битных программах В статье сравниваются три механизма анализа кода с точки зрения выявления 64-битных ошибок: компилятор Visual C++2010, компонент Code Analysis for C/C++ входящий в состав Visual Studio 2010 Premium/Ultimate и анализатор Viva64 входящий в состав PVS-Studio 3.60. »
29.06.2010
Коллекция примеров 64-битных ошибок в реальных программах
Статья представляет собой наиболее полную коллекцию примеров 64-битных ошибок на языках Си и Си++. » ![]() |
64-битные уроки![]() Урок 28. Оценка стоимости процесса 64-битной миграции Си/Си++ приложений
Приступая к планированию переноса проекта на 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-битная конфигурация. А вот оценить, сколько потребуется времени для разбора сообщений от анализатора кода, вполне возможно. Для получения оценки времени рекомендуем поступить следующим образом:
Найденные ошибки человек должен обязательно исправлять. Недостаточно просто обнаружить ошибку и представить, что она исправлена. Обнаружить и исправить - это разные по времени действия. Исправление некоторых ошибок может потребовать модификации кода программы во многих файлах проекта. Чтобы оценка времени не оказалась заниженной, необходимо обязательно внести в код все необходимые правки. Разумеется, в данном алгоритме оценки процесса миграции есть слабое место - профессионализм разработчика, который будет в течение одного дня разбирать сообщения от анализатора и модифицировать код. Поэтому мы рекомендуем очень серьезно подойти к назначению программиста, ответственного за оценку. Вот несколько рекомендаций по выбору такого программиста:
Соблюдение этих рекомендаций позволит получить адекватную оценку стоимости и времени процесса 64-битной миграции приложений. Адаптация системы тестированияУчтите стоимость адаптации вашей системы тестирования для полноценной проверки 64-битных модулей. Если ваши программы обрабатывают большие объемы данных, то должны появиться тесты, в которых используются объемы данных более 4 гигабайт. В свою очередь интеграция тяжелых тестов может повлечь за собой задачу распараллеливания тестов. В этом случае, возможно, вам придется приобрести дополнительные инструментальные средства. Защита программных модулейЕсли вы используете программные или программно-аппаратные системы защиты от копирования и от взлома программы, то вы должны учесть стоимость реализации защиты 64-битного кода. Возможно, вам придется освоить новые системы защиты, если используемые вами на данный момент не поддерживают работу с 64-битным кодом. Вы можете встретить иные неожиданные сложности и должны зарезервировать время для их разрешения. Адаптация дистрибутиваВам потребуется создать новый дистрибутив, что было подробно рассмотрено в предыдущем уроке. Авторы курса: Андрей Карпов (karpov@viva64.com), Евгений Рыжков (evg@viva64.com). Правообладателем курса "Уроки разработки 64-битных приложений на языке Си/Си++" является ООО "Системы программной верификации". Компания занимается разработкой программного обеспечения в области анализа исходного кода программ. Сайт компании: http://www.viva64.com. Контактная информация: e-mail: support@viva64.com, 300027, г. Тула, а/я 1800. | ||