Открыть сервис

Pure Software

Pure Software — это американская компания, занимавшаяся разработкой программного обеспечения для обеспечения качества (QA) и тестирования, основанная в 1991 году. Наибольшую известность получила благодаря своему флагманскому продукту — инструменту Purify, предназначенному для обнаружения ошибок работы с памятью в программах на языках C и C++. Компания сыграла ключевую роль в становлении индустрии автоматизированного тестирования и коммерциализации инструментов статического и динамического анализа кода. В 1997 году Pure Software была приобретена корпорацией Rational Software, которая, в свою очередь, в 2003 году вошла в состав IBM.

История

Основание и ранние годы

Компания Pure Software была основана в 1991 году в городе Саннивейл, Калифорния (США), группой инженеров, включая Адама Коллера (Adam Kolawa) и Рида Хастингса (Reed Hastings), который впоследствии стал сооснователем Netflix. Основной целью компании было создание инструментов, позволяющих разработчикам автоматически выявлять дефекты в программном коде, особенно те, которые трудно обнаружить вручную, такие как утечки памяти, переполнения буфера и использование неинициализированных данных.

Первым и самым успешным продуктом стал Purify, выпущенный в 1992 году для операционных систем Unix (SunOS, Solaris, HP-UX, AIX). Purify работал путём инструментирования объектного кода на этапе сборки или выполнения, вставляя проверки для каждой операции с памятью. Это позволяло находить ошибки, которые часто приводили к нестабильной работе программ и трудно воспроизводимым сбоям.

Рост и расширение

В середине 1990-х годов Pure Software активно расширяла линейку продуктов. В 1994 году был выпущен PureCoverage — инструмент для измерения покрытия кода тестами, а затем PureLink — для обнаружения ошибок в процессе компоновки программ. В 1995 году компания выпустила Purify для Windows NT, что значительно расширило её рынок. К 1996 году Pure Software стала публичной компанией (NASDAQ: PSFT) и одним из лидеров в сегменте инструментов для разработки ПО.

Приобретение и интеграция

В 1997 году Pure Software была приобретена компанией Rational Software Corporation за сумму около 750 миллионов долларов США. Сделка была оформлена как обмен акциями. После приобретения продукты Pure Software были интегрированы в линейку инструментов Rational, а сама компания стала подразделением Rational. В 2003 году корпорация IBM приобрела Rational Software, и инструменты, изначально созданные Pure Software, вошли в состав IBM Rational Suite. Purify, PureCoverage и другие продукты продолжали развиваться под брендом IBM, но со временем были частично вытеснены более современными решениями, такими как IBM Rational PurifyPlus.

Продукты

Purify

Purify — флагманский продукт компании, инструмент динамического анализа памяти (dynamic memory analysis). Он позволяет выявлять следующие типы ошибок:

  • Утечки памяти (memory leaks) — блоки памяти, которые были выделены, но не освобождены.
  • Неверное использование памяти (memory corruption) — запись за границы выделенного буфера, чтение из освобождённой области.
  • Использование неинициализированной памяти (uninitialized memory read) — чтение данных, которым не было присвоено значение.
  • Ошибки работы с указателями (dangling pointers) — обращение к памяти после её освобождения.

Purify работал путём инструментирования кода на этапе компиляции или линковки, добавляя проверки для каждого обращения к памяти. Это позволяло обнаруживать ошибки в процессе выполнения программы, не требуя изменения исходного кода.

PureCoverage

PureCoverage — инструмент для измерения покрытия кода тестами (code coverage). Он анализирует, какие строки, функции или ветви кода были выполнены во время тестового прогона. PureCoverage поддерживал несколько метрик покрытия, включая покрытие операторов (statement coverage), покрытие ветвей (branch coverage) и покрытие функций (function coverage). Это позволяло разработчикам и тестировщикам оценивать полноту тестирования и выявлять не протестированные участки кода.

PureLink — инструмент для обнаружения ошибок на этапе компоновки (linking). Он проверял корректность связей между модулями программы, выявляя такие проблемы, как дублирование символов, неопределённые ссылки и несоответствие типов данных. PureLink помогал предотвращать ошибки, которые могли проявиться только во время выполнения.

PureTest

PureTest — более поздний продукт, предназначенный для автоматизации функционального и регрессионного тестирования. Он позволял записывать и воспроизводить тестовые сценарии, а также интегрировался с другими инструментами Pure Software для обеспечения комплексного подхода к качеству.

Технология

Основной технологией, лежавшей в основе Purify, было динамическое инструментирование кода (dynamic instrumentation). В отличие от статического анализа, который проверяет исходный код без его выполнения, Purify модифицировал объектный код программы на этапе сборки или загрузки, вставляя в него проверочные инструкции. Это позволяло отслеживать каждое обращение к памяти в реальном времени. Технология была запатентована и долгое время оставалась уникальной.

Влияние и наследие

Pure Software внесла значительный вклад в развитие индустрии разработки программного обеспечения. Её продукты стали стандартом де-факто для многих компаний, занимающихся разработкой критически важного ПО, особенно в областях телекоммуникаций, авионики, финансов и встраиваемых систем. Purify и PureCoverage стали первыми коммерчески успешными инструментами, которые сделали автоматизированное тестирование памяти и покрытия кода доступным для широкого круга разработчиков.

Идеи, заложенные в Purify, повлияли на создание многих последующих инструментов, включая Valgrind (для Linux), Dr. Memory (для Windows) и AddressSanitizer (встроенный в компиляторы GCC и Clang). Методология, предложенная Pure Software, — интеграция инструментов качества в процесс разработки, а не только на этапе тестирования, — стала основой современных практик DevOps и непрерывной интеграции (CI/CD).

Критика

Несмотря на успех, продукты Pure Software подвергались критике за:

  • Высокую стоимость — лицензии на Purify и другие инструменты были дорогими, что делало их недоступными для небольших компаний и индивидуальных разработчиков.
  • Производительность — динамическое инструментирование значительно замедляло выполнение программы (в 2–10 раз), что делало его непригодным для использования в production-среде.
  • Зависимость от платформы — инструменты были тесно привязаны к конкретным операционным системам и компиляторам, что ограничивало их переносимость.

Источники

  • «The Purify Story: How a Small Startup Changed Software Quality» — статья в журнале Dr. Dobb's Journal, 1998.
  • «Rational Software: The Company That Changed Software Development» — книга Марка Уэста (Mark West), 2005.
  • Документация IBM Rational PurifyPlus (2004–2010).
  • Патент США № 5,581,696 «Method and apparatus for detecting memory leaks in a computer system» (1996).

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →