Чтение онлайн

на главную

Жанры

Время — деньги. Создание команды разработчиков программного обеспечения
Шрифт:
Ответственность за реализацию плана

Чаще всего команду ставят перед фактом, жёстко определяя необходимый объём функциональности ПО, выделенные для этого ресурсы и срок, к которому всё должно быть готово. И получается, что ответственность за выполнение плана лежит не на разработчиках, а на организации или персоне, которая эти требования «спустила сверху». Такова общая формулировка этой серьёзной проблемы. Боевой дух участников команды будет невысок: ведь они будут чувствовать, что их поставили в заведомо проигрышное положение. Без чувства ответственности, не принимая на себя обязательств, команда не сможет вложить в реализацию проекта сердце и душу, и никакого энтузиазма.

Вместо этого группа разработки

должна создать свой собственный план, точнее, сама поддерживать баланс в рамках плана. С принятием обязательств в команде появляется чувство ответственности. Выдвинув свой план разработки ПО, за который она отвечает, команда должна приложить все усилия, чтобы выдержать установленные в нём сроки. Доверие — это следствие выполненных обязательств.

Из собственного опыта

Разработка ПО в NuMega обычно проходила под огромным давлением необходимости уложиться в срок. Конечные сроки сдачи наших продуктов обычно приурочены к выходу Microsoft Visual Studio или появлению новых платформ и технологий, например Microsoft Windows 95, Microsoft Windows NT или Microsoft COM. Чтобы воспользоваться преимуществом этих событий, наши группы маркетинга разработали всесторонние планы продвижения продукта, включающие рекламу, пресс-конференции, аналитические исследования, презентации и обучение продавцов. Ассигнования на эти мероприятия, зависящие от даты выхода ПО, достигают сотен тысяч долларов. Кроме того, наши специалисты по продажам и старшие менеджеры рассчитывали на существенный прирост прибылей с выходом каждой последующей программы. Любая задержка была чревата не только потерей больших денег и времени, но и упущенными возможностями по продаже и потерей выгодной для нашего товара рыночной конъюнктуры.

Чтобы обеспечить своевременный выпуск ПО, вся «домашняя работа» (поиск компромиссов между реализацией функций, доступным временем и ресурсами) выполнялась заранее, затем на основе конечного срока выхода ПО составлялись реальные планы. Таким образом, автором планов были технические специалисты, а не экономисты или старшие менеджеры. Приходилось брать на себя ответственность за реализацию этих планов независимо от их содержания. Любая ошибка планирования была нашей проблемой, и мы отвечали за то, чтобы найти решение, не допуская задержки выпуска ПО.

Вопрос доверия к техническим специалистам

Одна из наибольших проблем, с которыми сталкиваются технические специалисты, — нехватка доверия. Постоянно нарушая сроки, техническая группа теряет доверие остальных подразделений организации. Это угрожает потерей доверия к плану и достоверности суждений о возможных компромиссах проекта, а также открывает лазейку в планировании для разного рода игр («липовым» срокам сдачи, заведомо завышенным просьбам в расчёте получить хотя бы часть от запрошенного). Однако хорошая репутация, завоёванная своевременным исполнением работы, — источник доверия, которое при необходимости позволяет бороться с серьёзными трудностями, привлекать дополнительную поддержку и извлекать выгоду из чужих сомнений.

Как составить хороший план

Теперь можно сосредоточиться на особенностях составления хорошего плана разработки ПО. В этом процессе три основных этапа: определение задач, объединение задач в группы, называемые базовыми уровнями, и группировка последних в этапы проекта.

Ниже я приведу пример типичного плана с описанием основных структур проекта, необходимых для разработки плана. Легко заметить, что целью планирования не является «микроуправление» каждой деталью проекта. Просчитать, чем будет заниматься каждый член команды в течение шести месяцев, начиная с сегодняшнего дня, скорее всего невозможно. Вместо этого нужно составить план со списком чётко определённых задач,

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

Задачи

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

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

Базовые уровни

Базовые уровни определяют срок реализации группы связанных функций. Каждые 2-3 недели должен быть готов очередной базовый уровень. Помните: соответствующий фрагмент ПО должен устанавливаться с помощью программы установки, а его функциональность должна быть доступна для разработчиков. Реализация базовых уровней — важные краткосрочные цели, на достижении которых необходимо сосредоточить внимание и усилия команды. Вообще ничто не может быть важнее своевременного завершения очередного базового уровня. Если он запаздывает, можно официально говорить об отставании проекта от плана, что требует немедленных корректирующих действий. Ниже приводится ряд базовых уровней (из продукта BoundsChecker, разработанного NuMegaдля обнаружения ошибок в программах).

• Создана библиотека исходных текстов, выполнена первая ежедневная сборка программы, закончена установочная процедура для «скелета» программы.

• Программа позволяет активизировать основные функции для работы с памятью и вести регистрацию их работы.

• Программа выводит первое сообщение об ошибке при работе с памятью с помощью прототипа пользовательского интерфейса.

• Программа успешно обнаруживает утечки памяти типа 1 и 2.

• Программа успешно обнаруживает утечки памяти типа 3 и 4.

• Программа успешно обнаруживает утечки памяти типа 5 и 6.

• Появляется реальный пользовательский интерфейс программы, но без поддержки печати, сортировки и фильтрации.

• Закончена поддержка печати, сортировки и фильтрации.

• Программа интегрируется с другими программами пакета.

Промежуточные этапы

Промежуточный этап — это группа базовых уровней, представляющих законченную часть программы. Необходимо равномерно распределить их завершение по ходу работы над проектом. Например, если для проекта определено 4 промежуточных этапа, то каждому из них должны соответствовать 25% реализации проекта. Очевидно, что чем сложнее проект, тем больше у него промежуточных этапов.

У каждого промежуточного этапа должен быть период стабилизации и интеграции (см. главу 6). Напоминаю, что в это время (обычно 1-2 недели) вся команда концентрируется на решении проблем, обнаруженных в реализованных функциях. Периоды стабилизации жизненно важны для проекта, поскольку в это время проводится тестирование, исправление ошибок, устранение неполадок в структуре и интеграции, проводится оценка производительности, т.е. все мероприятия, способствующие стабилизации программы. Не приступайте к реализации новой функции, пока не убедитесь, что только что законченные функции работают хорошо. Помимо всего прочего, периоды стабилизации очень удобны для разного рода доработок. В это время отставшие участники или подразделения команды могут наверстать упущенное и догнать остальных, чтобы вновь работать синхронно.

Поделиться:
Популярные книги

Камень Книга седьмая

Минин Станислав
7. Камень
Фантастика:
фэнтези
боевая фантастика
6.22
рейтинг книги
Камень Книга седьмая

Я сделаю это сама

Кальк Салма
1. Магический XVIII век
Любовные романы:
любовно-фантастические романы
5.00
рейтинг книги
Я сделаю это сама

Кровь на эполетах

Дроздов Анатолий Федорович
3. Штуцер и тесак
Фантастика:
альтернативная история
7.60
рейтинг книги
Кровь на эполетах

Сыночек в награду. Подари мне любовь

Лесневская Вероника
1. Суровые отцы
Любовные романы:
современные любовные романы
5.00
рейтинг книги
Сыночек в награду. Подари мне любовь

Кодекс Крови. Книга ХII

Борзых М.
12. РОС: Кодекс Крови
Фантастика:
боевая фантастика
попаданцы
5.00
рейтинг книги
Кодекс Крови. Книга ХII

Найди меня Шерхан

Тоцка Тала
3. Ямпольские-Демидовы
Любовные романы:
современные любовные романы
короткие любовные романы
7.70
рейтинг книги
Найди меня Шерхан

Идеальный мир для Лекаря 4

Сапфир Олег
4. Лекарь
Фантастика:
фэнтези
юмористическая фантастика
аниме
5.00
рейтинг книги
Идеальный мир для Лекаря 4

Релокант. По следам Ушедшего

Ascold Flow
3. Релокант в другой мир
Фантастика:
фэнтези
попаданцы
рпг
5.00
рейтинг книги
Релокант. По следам Ушедшего

Мир-о-творец

Ланцов Михаил Алексеевич
8. Помещик
Фантастика:
альтернативная история
5.00
рейтинг книги
Мир-о-творец

Протокол "Наследник"

Лисина Александра
1. Гибрид
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Протокол Наследник

Кодекс Охотника. Книга VII

Винокуров Юрий
7. Кодекс Охотника
Фантастика:
фэнтези
попаданцы
аниме
4.75
рейтинг книги
Кодекс Охотника. Книга VII

Попаданка в семье драконов

Свадьбина Любовь
Попаданка в академии драконов
Любовные романы:
любовно-фантастические романы
7.37
рейтинг книги
Попаданка в семье драконов

Новые горизонты

Лисина Александра
5. Гибрид
Фантастика:
попаданцы
технофэнтези
аниме
сказочная фантастика
фэнтези
5.00
рейтинг книги
Новые горизонты

Скрываясь в тени

Мазуров Дмитрий
2. Теневой путь
Фантастика:
боевая фантастика
7.84
рейтинг книги
Скрываясь в тени