Введение

Процесс улучшения качества программирования

Персональный процесс разработки программного обеспечения (PSP) — это структурированный процесс разработки программного обеспечения, предназначенный для того, чтобы помочь инженерам-программистам лучше понимать и повышать свою эффективность, внедряя дисциплину в процесс разработки и отслеживая прогнозируемые и фактические результаты кодирования. Он наглядно демонстрирует разработчикам, как управлять качеством своих продуктов, составлять обоснованные планы и брать на себя обязательства. PSP также предоставляет данные для подтверждения этих планов. Разработчики могут оценивать свою работу и определять направления для улучшения, анализируя и рассматривая время разработки, количество дефектов и объём кода. PSP был разработан Уоттсом Хамфри для применения базовых принципов модели зрелости возможностей (CMM) Института программной инженерии (SEI) к практике разработки программного обеспечения отдельным разработчиком. Он позволяет инженерам-программистам приобрести навыки, необходимые для работы в команде, использующей командный процесс разработки программного обеспечения (TSP). "Personal Software Process" и "PSP" являются зарегистрированными товарными знаками Университета Карнеги — Меллона.

Цели

PSP направлена на предоставление инженерам-программистам структурированных методов для совершенствования их личных процессов разработки программного обеспечения. PSP помогает инженерам-программистам:

Совершенствовать навыки оценки и планирования. Выполнять взятые на себя обязательства. Управлять качеством своих проектов. Снижать количество дефектов в своей работе.

Планирование и отслеживание

Регистрация данных о времени, дефектах и объеме является важной частью планирования и отслеживания проектов PSP, так как исторические данные используются для повышения точности прогнозирования. PSP использует метод PROBE (PROxy Based Estimation – оценка на основе прокси) для улучшения навыков прогнозирования разработчиков и более точного планирования проектов. Для отслеживания хода проектов PSP использует метод оценки по заработанной стоимости. PSP также применяет статистические методы, такие как корреляция, линейная регрессия и стандартное отклонение, для преобразования данных в полезную информацию, позволяющую улучшить прогнозирование, планирование и качество. Эти статистические формулы рассчитываются инструментом PSP.

Использование ПСП

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

PSP и TSP

На практике навыки ПСП применяются в командной среде ТСП. Команды ТСП состоят из разработчиков, прошедших обучение ПСП, которые добровольно берут на себя ответственность за отдельные области проекта, благодаря чему проект управляется самой командой. Используя персональные данные, собранные с помощью навыков ПСП, команда разрабатывает планы, составляет сметы и контролирует качество. Применение методов процесса ПСП помогает командам ТСП выполнять свои обязательства по срокам и создавать высококачественное программное обеспечение. Например, согласно исследованиям Уоттса Хамфри, треть всех программных проектов заканчивается неудачей, однако исследование SEI, охватившее 20 проектов ТСП в 13 различных организациях, показало, что команды ТСП в среднем отставали от запланированных сроков лишь на шесть процентов. Успешное соблюдение сроков можно объяснить использованием исторических данных для более точных оценок, что позволяет разрабатывать проекты на основе реалистичных планов, а также применением методов контроля качества ПСП, благодаря которым создается программное обеспечение с низким количеством дефектов, что сокращает время, затрачиваемое на их устранение на более поздних этапах, таких как интеграция и приемочное тестирование.

PSP и другие методологии

PSP – это индивидуальный процесс, который можно адаптировать к потребностям конкретного разработчика. Он не привязан к какой-либо методологии программирования или проектирования и, следовательно, может использоваться с различными методологиями, включая гибкую разработку программного обеспечения (Agile). Методы разработки программного обеспечения могут варьироваться от предсказуемых до адаптивных. PSP является предсказуемой методологией, а Agile – адаптивной, но, несмотря на эти различия, TSP/PSP и Agile разделяют ряд концепций и подходов, особенно в отношении организации команды. Обе методологии позволяют команде:

Определять свои цели и стандарты. Оценивать объём работы и составлять график. Разрабатывать реалистичные и достижимые планы-графики. Планировать и совершенствовать процессы. И Agile, и TSP/PSP основаны на идее о том, что члены команды несут ответственность за свою работу и совместно согласовывают реалистичный план, создавая атмосферу доверия и ответственности. Однако TSP/PSP отличается от Agile акцентом на документирование процесса и использованием данных для прогнозирования и определения сроков проекта.

Сертификация

Сертификация по PSP предлагается SEI при Университете Карнеги-Меллона. Чтобы стать сертифицированным разработчиком PSP от SEI, необходимо: изучить PSP; сдать сертификационный экзамен; поддерживать свою квалификацию. Экзамен для разработчиков PSP основан на концепциях, изложенных в Базе знаний PSP. SEI поддерживает раздел часто задаваемых вопросов (FAQ) по сертификации.