Вебинар: Использование статических анализаторов кода при разработке безопасного ПО - 19.12
Релиз 7.0 ознаменовал новую веху в истории анализатора PVS-Studio – теперь доступен анализ не только кода, написанного на C, C++, C#, но также и Java. Кроме этого глобального нововведения продолжают улучшаться и дорабатываться существующие механизмы анализа, добавляются диагностические правила. Было ещё одно глобальное изменение, которое вы навряд ли пропустили. Мы изменили иконку.
Примечание. В статье вы не найдёте хитрых приёмов или советов по разработке иконок. Цель статьи немного в ином – рассказать историю, и по возможности сделать это интересно.
С чего такое решение? Всё достаточно прозаично. Текущая иконка была уже старой и не менялась многие годы. Почему бы её и не обновить с глобальным обновлением версии? На том и порешили, что к релизу 7.0 нужно придумать что-то новое.
У вас наверняка возник вопрос – как от трёхмерных зелёных букв 'PVS' мы пришли к тому, к чему пришли? Для лучшего понимания следует проследить за историей изменений, которая будет изложена ниже.
К слову, читатели, внимательно следящие за нашими публикациями, а также те, кто общается с нами на конференциях, уже могли заметить некоторые изменения в сопутствующей атрибутике, например – единорогах. Теперь они чаще изображаются прямоходящими, преимущественно носят голубые футболки, да и вообще их ряды порядком разнообразились.
Вернёмся к вопросу о том, зачем вообще понадобилось экспериментировать с геометрическими фигурами, если и в статьях, и на стендах – везде фигурирует единорог? Почему бы не использовать его в качестве иконки?
Да, единорог действительно уже сильно ассоциируется с PVS-Studio, поэтому перед экспериментированием с новой иконкой мы проверили, как смотрелся бы единорог в качестве иконки.
Некоторые примеры вы можете увидеть ниже.
Окно установщика:
Часть контекстного меню, вызванного из Solution Explorer:
Выглядит не очень, правда? И чем меньше иконка, тем хуже обстояли дела. В каком-нибудь Process Hacker, например, единорог смотрелся совсем уж неприлично. Кстати, между собой мы прозвали эту иконку "бананом", так как в размере 16x16 от банана этого единорога отличить невозможно.
Поэтому мы решили не экспериментировать с рисованием новых единорогов специально для иконок, а попробовать изменить существующую (зелёные буквы 'PVS'). На самом деле мы уже экспериментировали с единорогом в качестве иконки несколько лет назад. Тогда была заказана разработка иконки у профессионала. Результат работы был просто выброшен.
Первоначально было решено сделать иконку более минималистичной (убрать трёхмерность) и изменить цвета. В качестве основного цвета решили использовать голубой: им окрашены некоторые элементы на сайте, в футболку такого цвета одеты единороги, используемые на сайте, в статьях, на раздаточных материалах и стендах конференций.
Были нарисованы 3 иконки, из которых и предстояло выбрать.
Второй макет из голосования выбыл сразу, а вот между первым и третьим голоса разделились. После непродолжительных споров отказались и от первой иконки – слишком уж она была простой.
Третья представленная иконка хоть и выглядела лучше на фоне двух остальных, но всё ещё не удовлетворяла всем желаниям. Были эксперименты с изменением расстояния между буквами, формой треугольника (с равнобедренного на равносторонний) и прочее. Одним из ключевых моментов стал, пожалуй, отказ от одноцветности и расширение цветовой палитры – выделение отдельного цвета для каждой буквы. Первая версия такой иконки выглядела следующим образом.
Расширение цветовой палитры внесло разнообразие, но иконка всё ещё выглядела слишком скучной и простой. Нам показалось, что основная причина – строгие горизонтальные/вертикальные линии, выступающие границами между буквами. С ними и было решено начать экспериментировать. Несколько промежуточных вариантов представлено ниже.
Ключевым решением, которое сильно повлияло на дальнейшие работы, а также нашло отражение и в финальном результате, стало расположение буквы 'V' следующим образом:
По поводу 'V' вопросов у нас больше не было – она идеально вписалась (хоть и была теперь больше похожа на галочку). Оставались вопросы по поводу границы между буквами 'P' и 'S', так как она не выглядела такой изящной, начиналась 'нигде' и уходила 'в никуда'. По сравнению с 'V', линии которой и начинались, и заканчивались в углах фигуры, это выглядело уныло.
Тут коллегой (Павел, привет) была высказана мысль, которая определила дальнейшее ключевое направление работ (цитата не дословная): "А зачем нам эта 'надстройка' над треугольником? Давай выкинем её, и тогда линия на границе синего и зелёного естественным образом расположится аналогично 'V'." И это было попаданием в яблочко!
Красиво, минималистично, границы расположены так, как нужно! Стали экспериментировать - смотрелось здорово. Довольные результатом, мы даже этот прототип решили назвать как-то по-особенному - 'UltimateTriangle'. Чтобы при сравнении с другими, рядом находящимися, сразу было понятно, кто здесь фаворит. Ну вы поняли, непредвзятое сравнение :)
Однако при более тщательном тестировании всплыл один нюанс (куда ж без них). При малом размере граница между зелёным и синим сливалась, хотелось её как-то подчеркнуть.
У коллег же была другая претензия. Если буквы 'P' и 'V' здесь ещё как-то можно увидеть, то 'S' явно перестала читаться. Может быть её и можно было 'достроить', но для этого нужно иметь совсем крутое воображение.
Так от треугольника мы двинулись дальше. Разрабатывая прототипы для решения обозначенной выше проблемы, Екатерина (ага, тебе тоже привет :) ) немного изменила геометрию фигуры, добавив еще один угол и превратив её из треугольника в... вытянутый и подрезанный треугольник? Неважно, как оно звучит, выглядеть это стало ещё более свежо!
Набросок новой фигуры:
А так он выглядел после переноса в цифровой формат:
Изменение геометрии явно пошло на пользу, но не хватало разделения элементов / выделения 'буквы' (кому чего). Для представления буквы 'S' было решено попробовать использовать тёмную линию. Результат представлен ниже.
Как видно, линия усугубила дело. Теперь основным элементом, выделяющимся на фоне остальных и акцентирующим внимание на себе, стала тёмная 'стрелка'.
А вот разделение фигуры на три явно отделённых компонента решило проблему. Почти финальный вариант выглядел так:
Я был доволен результатом. Коллеги тоже – теперь они более чётко видели здесь буквы 'PVS' (да как вы это делаете то?!).
Реакция Евгения, нашего генерального директора, (привет и тебе тоже :) ), сначала была примерно следующей: "Здорово, но где тут 'PVS'?" Удивительно, но через некоторое время и он стал видеть здесь буквы...
Дальнейшие доработки были связаны с небольшой корректировкой цветов и выверением расстояния между элементами – оно не должно было смотреться слишком большим, когда изображение отображается в крупном масштабе, но линия не должна выглядеть еле заметной полоской на маленьких изображениях – 16x16, например.
В итоге остановились на следующем варианте, который и стал финальным.
Если Вы использовали PVS-Studio 7.0, то уже наверняка и сами видели эту иконку, но на всякий случай приведу несколько примеров того, как она выглядит в разных местах.
Окно установщика:
Часть контекстного меню, вызванного из Solution Explorer:
Внешний вид окна прогресса анализа при переключении открытых окон:
Пример того, как новая иконка отображается при поиске:
Ниже представляю краткий путь от старой до новой иконки:
Вроде бы вышло неплохо, как считаете? Кстати, не могу не спросить, а видите ли вы в новой иконке буквы 'PVS'?
Надеюсь, мне удалось рассказать вам интересную историю, показав наш путь и объяснив, как мы пришли от старого изображения к новому. Получше рассмотреть его я рекомендую, конечно, не на картинках в статье, а во время анализа своих проектов. Заодно можете оценить новую страницу загрузки и запросить триальный ключ там же при необходимости.
Тем, кому интересны подобные истории, рекомендую также прочитать статью (если вдруг вы её пропустили) "Как 10 лет назад начинался проект PVS-Studio". Однако и с тех пор уже утекло много воды (как минимум, мы переехали в новый офис), так что нам определённо ещё есть, что рассказать...
0