Технология коллективной разработки.

Коллективные разработки часто сталкиваются с проблемами разделения ресурсов - файлов и каталогов и необходимости синхронизации времени и места.

Системы разделения файлов

Для поддержки коллективной работы с файлами применяются три основных класса систем.

    Системы управления версиями файлов.

    Системы управления пространствами пользователей.

    Системы синхронизации удаленных пространств.

Если три класса систем выпускаются одним производителем, то часто каждая последующая система в этом списке использует предыдущую систему, выступая в качестве надстройки.

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

Поскольку данные системы действительно очень важны, их реализации существуют в большом количестве практически для всех операционных систем. Приведем два стека таких систем (табл. 5.2).

Таблица 5.2. Примеры средств поддержки коллективной разработки

Система управления версиями файлов

Система управления версиями файлов предназначена для отслеживания изменений между различными версиями файлов и разделения доступа к ним. Файлы обычно содержат программы на языках программирования и тексты.

Обратим внимание на то, что системой отслеживаются именно изменения (дельты) между версиями, а не сами полные версии, что позволяет занимать небольшое количество дискового пространства. Каталог SCCS часто называют репозиторием проекта.

Как и все широко распространенные программы утилита SCCS имеет надстройки в виде графического интерфейса, например утилиту vertool.

Система управления пространствами

Система управления рабочими пространствами пользователей предназначена для обмена результатами работы между отдельными разработчиками через объединение результатов в выделенном рабочем пространстве. Система работает на основе модели "копирование-изменение-слияние" и понятия "рабочее пространство".

Рабочее пространство - специальным образом выделенная совокупность каталогов с файлами, переданными системе управления версиями файлов. Кстати, на профессиональном жаргоне разработчики называют свои рабочие пространства - песочницами.

Модель "копирование-изменение-слияние" отражает схему организации работы с пространствами. Основная последовательность действий такова:

    Создается основное мастер-пространство, от которого разработчики порождают свои рабочие пространства.

    После внесения изменений в своем рабочем пространстве разработчик передает их в мастер-пространство.

    Все разработчики периодически обновляют свои рабочие пространства из мастер-пространства.

Основная проблема, которая может при этом возникнуть, - это конфликт изменений в том случае, когда разработчик передает измененные файлы в мастер-пространство, но они уже оказываются измененными другим разработчиком. Можно попытаться избежать такой ситуации, выполняя обновления как можно Чаще или установив регламент для внесений изменений.

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

Система синхронизации удаленных пространств

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

Для осуществления пересылки можно воспользоваться стандартными средствами Интернета - электронной почтой или утилитой ftp. Для облегчения синхронизации следует завести два дополнительных пространства-порта и выполнять их синхронизацию (например, при помощи семафоров). Утилиты, выполняющие пересылку, должны тщательно сверять контрольные суммы, чтобы убедиться в корректности полученной информации. Естественно, в пересылаемый пакет информации входят только инкрементальные изменения (дельты), а не измененные файлы целиком.

Системы поддержки работы виртуальных групп

Общение в виртуальных группах очень часто осуществляется через Интернет, а в качестве средств общения выступают традиционные и хорошо известные средства, такие как:

    видеоконференции;

    аудиоконференции;

    средства группового общения в реальном времени (чаты);

    средства группового общения с разным временем подключения (доски объявлений, форумы);

    электронная почта (включая списки рассылки, архивы и поиск по ним). Однако все перечисленные средства имеют определенные недостатки. Например, видео- и аудиоконференции не позволяют передавать файлы, а средства группового общения в Интернете не обеспечивают секретности от доступа любых других пользователей с одной стороны и позволяют разработчикам выступать анонимно с другой стороны.

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

    Необходимость регистрации пользователя при его входе в систему.

    Сохранение всей переписки и прочих данных в архиве.

    Использование системы управления версиями текстов для программ и документации.

Классификация систем поддержки работы групп по предоставляемым ими возможностям общения была предложена Бобом Йохансеном (Bob Johansen).

    В одно и то же время, в одном и том же месте (same time, same place).. Это классический случай, когда разработчики имеют возможность встречаться в одном помещении в определенное время. Здесь оказываются полезными следующие системы поддержки:

    • система упорядочивания доступа к данным для показов видеозаписей, слайдов и других документов;

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

    В одно и то же время, в разных местах (same time, different place). Системы должны обеспечивать общение в реальном времени. Для этого обычно применяются средства аудио- и видеоконференций.

    В разное время, в одном и том же месте (different time, same place). Это довольно редкая ситуация, когда существует комната группы, но разработчики не имеют возможности собраться в ней в одно и то же время. Разработчику должна быть предоставлена возможность доступа к репозиторию проекта и всей информации, доступной на данном этапе проекта.

    В разное время, в разных местах (different time, different place). Системы реализуют возможности ведения конференций, форумов и чатов с асинхронным подключением, возможность доступа к репозиторию проекта.

    Неограниченные возможности доступа к данным (anytime, anyplace). Эта категория оставлена автором классификации на дальнейшее развитие коммуникационных технологий, когда возможности доступа к данным станут практически неограниченными.

Обратим внимание на то, что часто тип систем поддержки работы виртуальных групп зависит от рода их деятельности.

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

    Группы проекта. Разработчикам требуется максимально возможное количество средств общения и доступа к репозиториям.

    Группы сопровождения. Группам необходимы средства связи и быстрый доступ к данным из любого места.

Приведем несколько наиболее известных систем поддержки виртуальных групп:

    Facilitate.com (компании Facilitate.com (http://www.facilitate.com/ ));

3. menu – меню. Реализовано в виде списка, причем каждый пункт может содержать подменю, которое тоже представляет собой список. Каждый элемент списка обязательно содержит текст (часто с горячей клавишей) и может содержать иконку 32*32, сочетание «горячих клавиш» для вызова элемента без вхождения в меню или символ 4. Сочетание icon+menu = Tool panel (Панель инструментов)

4. pointers – механизм индивидуальной настройки пользователя. Обозначается маленькой стрелкой в левом нижнем углу иконки. Пользователь может конфигурировать под себя любое количество указателей в любой папке и области.

Разработчик и архитектор в больших программах – разные люди.

Задача архитектора: представить предметную область с точки зрения пользователя (удобство использования интерфейса). Архитектор должен выяснить тезаурус пользователя и обеспечить лингвистическое обеспечение проекта.

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

19. Требования к программистам. Формирование команды программистов.

Требование к программистам и их оценка
  1. Уровень образования

По учреждению выясняются возможности

Тестирование знаний

Резюме – представление опыта программистов, характеризующее его возможное применение.

На производительность влияют:

  1. Наличие амбиций человека (собственная оценка своих качеств и себя в коллективе)
  2. Уровень притязания. Самооценка может быть источником конфликтов в коллективе.
  3. Коммуникабельность! при сдаче проекта.

Задача руководителя после подбора команды организовать работу так, чтобы по максимуму использовать профессиональные и персональные данные программистов.

20. Организация процесса работы команды программистов (персональная организация и коллективная работа).

Осуществляет руководитель проекта.

Опытный руководитель распараллеливает работы. Идет пересечение этапов.

По каждому этапу четко сформулирован результат. Если результата нет, то этап не завершен.

Документирование процесса работы. Все, что делается - оформляется.

Документация создается с начала реализации проекта. Оформляется в соответствии с ГОСТом (ISO) или с корпоративными стандартами документациями.

Удобно использовать маршрутный лист.

Достоинства подхода:

1. документация нужна не только тем, кто пишет программу, но и тем, кто работает рядом, т.е. вынужден использовать ваши результаты.

2. документация отражает текущее состояние работы над проектом

3. при окончании проекта требуется минимум усилий для оформления документации для передачи заказчику.

Организация персональной работы программиста

Менеджер планирует работу программисту, формулирует суть работы, сроки. Ежедневный самоотчет о проделанной работе позволяет менеджеру лучше планировать рабочее время программиста. Написание самоотчета занимает от 15 до 30 минут в день, но дисциплинирует программиста и дает возможность менеджеру перепланировать работу так, чтобы успеть.

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

Организация коллективной работы

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

«Рабочая тетрадь». Все проектные решения документируются в рабочую тетрадь. Иногда размер всех рабочих тетрадей по проекту достигал толщины в 1 м.

Идея рабочей тетради поддерживается в виде выпуска очередной версии программного продукта, где документация и сам ПП отражают эволюцию его изменения.

Версия 0 является версией, готовой в бета-тестированию.

Согласование работ:

1. Распараллеливание работ

2. Сетевое планирование

Программные продукты, позволяющие осуществлять планирование работ и оптимизировать сроки:

  1. MS Outlook
  2. Time manager
  3. MS Project – управление ресурсами, планирование с дискретностью от часа до месяца. Позволяет работать удаленным пользователям надо удаленным проектом.

21. Планирование работы команды программистов. Эффект второй системы.

После того, как намечены все этапы, определены исполнители (ресурсы проекта и сроки), необходимо организовать получение информации о текущем состоянии проекта. Для этого можно организовать карты учёта такой структуры:

  1. Шифр, номер работы
  2. Описание выполнения
  3. Время окончания
  4. Результат, если работа окончена.

Отслеживает эту информацию менеджер группы.

По оценкам 28-33% времени программист пишет программу. Остальное – совещания, согласования, поиск литературы, обучение, координация с программистами, пишущими совместные с его модулями – 60%.

Задача менеджера – минимизировать 60% так, чтобы увеличить время работы программиста над программой. Если менеджер хороший, то он сможет снизить 60% до 50%.

Критическая ситуация – проект не успевает по срокам:

В этом случае возможны следующие шаги:

  1. увеличить число программистов на проект (зачастую только усугубляет положение);
  2. на существующем количестве перераспределить работу, ввести дополнительное время;
Эффект второй системы

Часть фирм планируют разработку системы на «выброс», чтобы получить представление о трудностях, ошибках, проверить основные идеи, а после разрабатывать вторую систему.


22. Работа с заказчиком.

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

  1. 1 Заказчик, 1 Разработчик
  2. Заказчик объявляет тендер на разработку. Выигрывает фирма, которая либо уменьшает стоимость разработки, либо за эту же сумму предоставляет больше возможностей. Играет роль имидж компании (участие и завершение аналогичных разработок, участие в семинарах, совещаниях по теме, открытость компании).

Преимущества:

Заказчик в курсе всей работы

Тестирование параллельно с написанием

Разработка программного обеспечения – это групповой процесс. Большинство программных продуктов рождается в результате коллективных усилий. Люди являются одной из главных составляющих, необходимых для производства программного продукта. При организации работы программистов важно учитывать не только их технические навыки, но и взаимодействие между ними.

Существует две основные модели организации коллектива при разработке ПО:

– Иерархическая модель. определяет начальников и подчиненных, т.е – это структура с вертикальной формой управления (контроля) элементами, входящими в неё. Фактически это пирамида, каждым уровнем которой управляет более высокий уровень. Можно выделить следующие недостатки иерархической модели:

§ нехватка информации на различных уровнях;

§ невозможность учесть все особенности проекта;

§ отсутствие полноценной связи между всеми участниками проекта, так как вся информация идет в одном направлении – вверх по иерархии, к главному менеджеру;

§ трудность освоения новых технологий, необходимых при создании кроссплатформенных приложений;

§ сложность расстановки приоритетов.

– Модель проектной группы. В проектной группе предусматривается распределение обязанностей руководителя между членами коллектива. При этом за проект отвечает не один человек, а все члены группы - каждый за свой участок.

Можно выделить следующие недостатки модели группы:

§ разрозненная связь с внешними источниками информации;

§ несогласованное представление о разных сторонах проекта;

§ несогласованность личных планов членов группы;

§ отсутствие опыта, снижающее эффективность коллективной работы.

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

Рисунок 1 – Роли в модели проектной группы

Каждая ролевая группа выполняет свои задачи:

«Архитектура»

§ формулирует спецификацию решения и разрабатывает его архитектуру;

§ определяет структуру развертывания (внедрения) решения.

«Разработка»

§ определяет детали физического дизайна;

§ оценивает необходимые время и ресурсы на реализацию каждого элемента дизайна;

§ разрабатывает или контролирует разработку элементов;

§ подготавливает продукт к внедрению;

§ консультирует команду по технологическим вопросам.

«Тестирование»

§ обеспечивает обнаружение всех дефектов;

§ разрабатывает стратегию и планы тестирования;

§ осуществляет тестирование.

«Управление выпуском»

§ представляет интересы отделов поставки и обслуживания продукта;

§ организует снабжение проектной группы;

§ организует внедрение продукта;

§ вырабатывает компромиссы в управляемости и удобстве сопровождения продукта;

§ организует сопровождение и инфраструктуру поставки.

«Удовлетворение потребителя»

§ представляет интересы потребителя в команде;

§ организует работу с требованиями пользователя;

§ определяет компромиссы, относящиеся к удобству использования и потребительским качествам продукта;

§ определяет требования к системе помощи и её содержание;

§ разрабатывает учебные материалы и осуществляет обучение пользователей.

«Управление продуктом»

§ выступает в роли представителя заказчика;

§ организует работу с требованиями заказчика;

§ формирует ожидания заказчика;

§ формирует общее видение и рамки проекта;

§ определяет компромиссы между параметрами "возможности продукта / время / ресурсы";

§ организует маркетинг;

§ разрабатывает, поддерживает и исполняет план коммуникаций.

Влияние на успех группы такого важного фактора, как состав команды, выявили М. Белбин и его коллеги. Было проведено исследование нескольких сотен небольших групп в процессе их деятельности. Учёные определили, что поведение членов групп соответствует одной из девяти выделенных ими в ходе исследования ролей (Таблица 1).

Таблица 1 – Типология командных ролей М. Белбина

Виды командных ролей Необходимые личностные качества и вклад в деятельность команды Допустимые недостатки
Мыслитель (генератор идей) Творческая направленность, богатое воображение, неординарность мышления. Стремление к новаторству. Источник оригинальных идей для команды. Недостаточность опыта межличностного общения. Психологическая неустойчивость. Может долго задерживаться на рассмотрении "интересных идей".
Исполнитель Претворяет идеи в практические действия. Превращает решения в легко выполнимые задания. Вносит упорядоченность в деятельность команды. Недостаточная гибкость. Неприязнь к фантастическим идеям. Неприязнь к частым изменениям планов.
Доводчик Усердие и добросовестность. Следит за тем, чтобы задания выполнялись полностью. Отслеживает своевременность выполнения заданий. Чрезмерная обеспокоенность состоянием дел. Склонность к внутренним переживаниям. Нежелание перепоручать свои обязанности. Неприятие несерьезного отношения к его обязанностям со стороны других.
Оценщик (эксперт) Исповедует беспристрастный критический анализ ситуации. Стратегический подход и проницательность в оценках. Точность суждений, стремление рассматривать все возможные варианты решения. Недооценка факторов стимулирования и воодушевления. Недостаточность вдохновения и творческого воображения. Способность сбивать других, подавляя их инициативу.
Исследователь ресурсов Владение искусством проведения переговоров, разнообразие контактов. Талант импровизатора, изучает благоприятные возможности. Энтузиазм, коммуникабельность. Теряет интерес по мере угасания энтузиазма. Перескакивает от одной задачи к другой. Нуждается в повышенном внешнем давлении.
Формирователь Постоянная ориентированность на решение поставленной задачи; стимулирует работу всей команды. Способствует реализации принятых решений; побуждает сотрудников работать интенсивнее. Энергичность, стремление к превосходству и работе с полной отдачей сил. Легко переходит к состоянию раздражительности. Импульсивность и нетерпеливость. Нетерпимость к нечетким формулировкам и нерешительности в поведении. Результат - любой ценой.
Коллективист Способствует гармонизации отношений в команде и устранению разногласий. Внимательно выслушивает собеседника; опирается на мнения других. Чуткость, отсутствие чрезмерной самоуверенности. Нерешительность в кризисных ситуациях. Стремление избегать обострения ситуаций. Может воспрепятствовать совершению действий в решающий момент.
Председатель (координатор) Четко формулирует цели; хорошо выполняет функции ведущего во время дискуссий. Способствует эффективному принятию решений. Имеет хорошие коммуникативные навыки; социальный лидер. Может производить впечатление человека, склонного к манипуляциям. Склонность к переложению своих обязанностей на других. Может приписывать себе заслуги всей команды.
Специалист Обладает редко встречающимися навыками и знаниями. Целеустремленность и способность концентрировать усилия. Инициативность и способность всецело отдаваться работе. Полезен только в узкой профессиональной сфере. Зачастую слабые коммуникативные навыки. Иногда, образно выражаясь, "не видит леса за деревьями".

В равной степени важными для эффективной командной работы их можно считать лишь при условии, что они применяются в надлежащее время и наилучшим образом. Например, в тот период, когда команда только приступает к рассмотрению проблемы или к разработке проекта, обычно требуются инновационные идеи (т.е. нужен «мыслитель»). Затем возникает необходимость оценки того, как эти идеи могут быть претворены в практически выполнимые задачи (т.е. нужен «исполнитель»). Успех достигается при условии, что в команде есть хороший координатор («председатель»), задача которого - обеспечить наибольшую отдачу от членов команды в нужное время. Движущую силу и стимул команда обретает в лице энергичного «формирователя». Когда возникает необходимость в проведении сложных переговоров с другими группами, большое значение приобретают качества, которыми обладает «исследователь ресурсов». Чтобы сдерживать чрезмерные проявления энтузиазма, отвлекающие от главной цели, в составе команды должен быть «оценщик» (т.е. «эксперт»). Всевозможные трения и недоразумения между членами команды устраняются усилиями «коллективиста». Благодаря наличию «специалиста» команда имеет редко встречающиеся навыки и знания, в которых периодически возникает необходимость. Роль «доводчика» состоит в том, чтобы не упустить из виду даже мельчайшие детали реализации всех намеченных планов.

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

– Единое понимание целей проекта. Данное условие является важнейшим фактором успеха как при разработке ПО, так и при любой совместной деятельности. На начальных этапах работы каждый участник команды имеет собственное мнение и представление о продукте. Необходимо обсудить частные мнения и по итогам обсуждения выработать концепцию проекта – единый документ, который содержит:

§ описание возможностей продукта (что продукт позволяет сделать);

§ конкретизацию продукта (описание функциональных возможностей данной версии);

§ описание путей реализации проекта.

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

– Ориентация на продукт и понимание целей заказчика, нацеленность на результат.

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

§ обучение на опыте других проектов;

§ изучение методологии;

§ изучение технологий.

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

Можно выделить следующие этапы развития команды:

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

2. Второй этап – бурление (или неразбериха) – самый сложный и опасный период. Мотивация новизны уже исчезла, а сильные и глубокие стимулы у команды еще не появились. Неизбежные сложности или неудачи порождают конфликты, «поиск виновных». На этом этапе важно обеспечить открытую коммуникацию в команде – конфликты не следует прятать или разрубать. Споры необходимо разруливать – спокойно, терпеливо и тщательно.

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

4. Четвертый этап – отдача. Наконец-то можно получить дивиденды за потраченные усилия. Команда работает эффективно, высок командный дух, люди хорошо знают друг друга и умеют использовать сильные стороны коллег. Высок уровень доверия. Это лучший период для раскрытия индивидуальных талантов. Люди хотят и могут совершенствоваться, они более всего заинтересованы в профессиональном росте. Растет значение нематериальной мотивации сотрудников, а оценивать и поощрять материально лучше команду в целом. Если четвертый этап достигнут, значит, команда создавалась не зря.

Любая коллективная разработка программного обеспечения сталкивается с одними и теми же проблемами:

– групповая работа над кодом, документами;

– учет проблем, ошибок, требований;

– документирование, накопление и циркуляция (поиск, трансляция, агрегация) знаний компании;

– организация правильного тестирования.

Работа средств коллективной разработки основана на выполнении двух базовых функций:

– Ведение общей для всех разработчиков базы данных проекта, содержащей историю изменений в каждом файле проекта.

– Автоматизация следующих операций:

§ доступа к общей базе данных;

§ обработки конфликтующих версий файла;

§ именования различных версий файла;

§ ввода и сохранения комментариев к изменениям.

Формирование рабочих коллективов и выбор программного проекта вещи взаимосвязанные. В данном курсе даётся возможность студентам сначала «собрать команду», а потом выбрать проект. Группы, работающие над проектом должны состоять из 3-5 человек. Группы менее 3 человек, не позволят студентам получить навыки коллективной работы над проектом. Группы более 5 человек требуют более сложной координации и допустимы для уже сложившихся творческих коллективов.

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

В сильные сформированные группы преподаватель может по собственному усмотрению добавить студента, не нашедшего группу самостоятельно. Студенты, не сумевшие сформировать группы, разделяются на группы преподавателем, либо вводятся в уже существующие группы.

Сформированные группы утверждаются преподавателем. Если преподаватель считает, что с точки зрения освоения практических навыков, предусмотренных программой ТРПО, данная группа малоэффективна, то он вправе расформировать или переформировать такую группу. Использовать данное право следует только в исключительных случаях, предварительно проконсультировавшись с лектором.

Студенты на основе своих личных предпочтений и желаний организуют рабочие команды. Следует выбирать тех людей, с которыми приятно и интересно работать. После выбора темы проекта рекомендуется распределить роли между участниками, договориться о способах взаимодействия, а так же определить количество часов в неделю, выделяемых на работу над проектом каждым участником. Данный момент является очень важным, поскольку одной из распространенных причин провала проекта является невыполнение рабо­чих обязательств одним или несколькими членами группы.

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

1. Руководитель проекта назначает секретаря и оглашает заранее подготовленную повестку собрания и краткий отчет о текущем состоянии проекта. (~5 минут).

2. Участники собрания вносят замечания. В результате формируется окончательная повестка собрания. (~5 минут).

3. Собрание идет согласно выработанной повестке. Заслушиваются отчеты разработчиков о проделанной работе, включая отчеты об исправлении замечаний, и выполняется анализ текущей документации и других артефактов. Обсуждаются и определяются дальнейшие направления и задачи. (~35–70 минут).

4. Подведение итогов. Распределение задач, назначение ответственных и т.п. (~10 минут).

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

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

Считается, что у нас в стране прекрасные программисты, и это действительно так!

Наши соотечественники работают во многих ведущих софтверных компаниях мира. Однако с точки зрения среднего уровня технологии производства массового ПО мы пока далеки от западных стран или, например, Индии, известной высоким уровнем организации оффшорного программирования.

Разобраться в причинах данного явления весьма важно для дальнейшего развития отечественной индустрии ПО.

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

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

Фирма «1С»

«1С» - это чисто российская фирма со штатом более 160 человек, работающая в основном на отечественный рынок и опирающаяся исключительно на собственные профессиональные успехи. По данным многочисленных опросов, «1С» отличается рекордной отдачей от одного сотрудника. В связи с этим информация о том, как организован процесс производства на фирме, представляет особый интерес. Как известно, в «1С» существует два основных направления: первое (традиционное) связано с экономическими программами и второе - «1С:Мультимедиа» - посвящено производству игр. В силу того что оба направления имеют свою специфику, мы попросили рассказать о каждом из них отдельно.

Экономическое ПО

На вопросы об организации процесса создания программных продуктов делового назначения фирмы «1С» и прежде всего системы программ «1С:Предприятие» ответил Алексей Харитонов , руководитель отдела продвижения экономических программ фирмы «1С».

Алексей Харитонов: Поскольку речь идет о разработке тиражного софта, требуются очень квалифицированные специалисты. Мы рассматриваем очень много кандидатур, но в штат берем относительно мало. По сравнению с фирмами, занимающимися разработкой и внедрением заказного ПО, мы считаем, что разработчики массового софта - это элитные войска (спецназ) по сравнению с регулярной армией. Они более высокооплачиваемые, но и гораздо более квалифицированные; каждый много чего умеет. У нас практически нет так называемых простых кодировщиков, которые занимаются программированием по подробно расписанной задаче - каждый разработчик отвечает за какой-либо проект или за его часть и должен профессионально выполнять очень разные работы, требующие и квалификации, и творческого подхода, и умения слаженно работать в команде. Разработчики системной части специализируются по различным технологиям, составляющим платформу «1С:Предприятие», разработчики прикладных решений в той или иной предметной области - (бухгалтерский учет, торговый, производственный и т.п.).

Стыковка модулей сильно различается в системной и прикладной части. В системной части используются специализированные технологии разработки больших проектов (частично стандартные, частично выработанные собственно в «1С»). В прикладной части отдельные проекты являются, с одной стороны, независимыми прикладными решениями, а с другой - частью единой методологической системы. Они и работать могут как вместе, так и по отдельности.

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

По принятой у нас технологии разработки очень большая роль отводится руководителям проектов. Конечно, руководитель проекта планирует и координирует работы, следит за соблюдением технических требований к проекту и сроков его выполнения, собирает готовый проект. Но главное - каждый руководитель проекта в «1С» фактически является руководителем направления, его идеологом. Он творчески развивает свое направление, руководствуясь при этом не только анализом текущих потребностей рынка, но, что очень важно, - своим видением перспективы развития, вносит в разработки те новшества, потребность в которых будет осознана рынком только в будущем.

КП: Расскажите поподробнее, как организовано тестирование? Какое ПО для этого используется? Кто занимается тестированием?

А.Х.: Технология и порядок тестирования зависят от того, что именно тестируется. Отдельно выходят новые платформы, отдельно - конфигурации к ним. Платформа - это ядро, на нем пишутся типовые конфигурации, которые образуют прикладной уровень с определенными правилами учета, набором документов и взаимосвязями между документами, правилами заполнения реквизитов и пр. Конечно, они не полностью независимы друг от друга, но их делают разные группы, и выходят они в разные сроки, по-разному тестируются. Многое зависит от того, какой это продукт: абсолютно новый или модификация существующей конфигурации (новый релиз). В среднем новая версия тестируется самими разработчиками примерно в течение месяца (модули, естественно, тестируются по мере готовности), а затем начинается более формальный процесс - альфа-тестирование внутри самой фирмы.

Мы сами являемся пользователями собственных продуктов, и учет у нас поставлен так, что наши бухгалтеры, учетчики, менеджеры, являются альфа-тестерами наших новинок.

Очень важную роль в жизни фирмы играет отдел технической поддержки, один из самых многочисленных. Они отвечают на вопросы пользователей и партнеров, они же занимаются тестированием. Это очень хорошее решение по двум причинам: во-первых, они часто сталкиваются с ошибками в реальной «жизни» продукта, а во-вторых, это позволяет им хорошо изучить, «пощупать» продукт и таким образом к началу консультирования пользователей накопить немалый опыт обращения с ним.

Затем наступает этап бета-тестирования. К нему мы привлекаем в первую очередь наиболее продвинутых партнеров, но и «предметники», специалисты по учету, тоже занимаются тестированием.

Условия тестирования разные. Если тестируются конфигурации, то допускается установка системы у конечных пользователей. Пользователей предупреждают, что это бета-версия и что обычно у них эксплуатируется предыдущая, рабочая версия и параллельно проверяется и осваивается новая. Так, чтобы кто-то один мог протестировать все «1С:Предприятие» сразу, не бывает - обычно в бета-тестировании только одной новой конфигурации, например «Производство+Услуги+Бухгалтерия», принимает участие около 150 партнерских организаций. Бета-версии мы, как правило, продаем им по обычной цене, но с обязательным условием прислать потом отчет. Если партнер присылает нормальный отчет, то бета-версия ему потом заменяется на обычную. Бета-тестирование длится от полутора до трех месяцев, поступающие отчеты сводятся и обобщаются, затем выпускается «боевой» релиз, который тиражируется и поступает в продажу.

КП: Существуют ли какие-либо нормативные документы, предписывающие, как нужно писать программы внутри коллектива?

А.Х.: Такие документы, конечно, есть - на разработку как системной части, так и прикладных решений (конфигураций). Есть также внутренние инструкции и нормативы на контроль исправления ошибок и другие работы. Эти документы совершенствуются, со временем их становится все больше, на их основе мы создаем, например, открытые нормативы по сертификации тиражных партнерских разработок на получение логотипа «Совместимо! Система программ «1С:Предприятие».

КП: Если можно, расскажите, как документируется ПО.

А.Х.: Подробное и всестороннее документирование своих программ мы считаем исключительно важной задачей. Ведь современные системы автоматизации учета - это гибкие и в то же время функционально очень насыщенные продукты. Эффективно их использовать, корректно настраивать, вести учет с высокой степенью автоматизации без качественной документации нельзя. Так, например, официальные пользователи «1С:Бухгалтерия 7.7» получают в комплекте поставки семь томов документации общим объемом более 3000 страниц.

В написании документации участвуют и собственно разработчики, и специальные сотрудники, приглашаются сторонние специалисты, например аудиторы.

Выпускается и широкий спектр дополнительной методической литературы, посвященной ведению различных разделов учета с использованием программ «1С». Такие книги пишут профессиональные экономисты и специалисты по бухучету, например заведующий кафедрой Финансовой академии при Правительстве РФ профессор Д.В.Чистов или известный аудитор С.А.Харитонов.

А.Х.: Основное средство разработки системной части - MS Visual C++. Все прикладные решения пишутся собственно на технологической платформе «1С:Предприятие», возможности которой позволяют эффективно создавать и модифицировать прикладные решения.

Использование в «1С:Предприятие» набора типовых объектов предметной области позволяет избавить проектировщика от целого этапа разработки, а также от комплекса проблем, встающих при проектировании структур таблиц базы данных.

Объекты «1С:Предприятие» существенно упрощают не только проектирование и поддержание структуры базы данных. Второй их важной особенностью является то, что они реализуют существенную часть бизнес-логики задачи автоматизации. Три функциональных компонента «1С:Предприятие» поддерживают три основных механизма учета: оперативный учет, бухгалтерский учет и сложные периодические расчеты. Настройка этих механизмов выполняется визуально и обеспечивает не только все необходимые структуры данных, но и расчетные и аналитические операции.

В случае тиражируемого прикладного решения очень важно, может ли разработчик передать его поддержку сторонней организации. В системе «1С:Предприятие» структура конфигурации сама по себе является четко организованной схемой построения прикладного решения. Состав объектов конфигурации является формализованным описанием и структуры данных, и бизнес-логики прикладной задачи. Специалист, знакомый с объектами «1С:Предприятие», практически за несколько минут может по составу объектов конфигурации понять ее основные принципы.

Вообще конфигурация «1С:Предприятие» - нечто большее, чем программа, написанная на некотором языке. Фактически это проект, который вмещает в себя и алгоритмы, и интерфейс, и словарь данных, и даже документацию. Структура конфигурации сама по себе является четко организованной схемой построения прикладного решения.

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

Возможности платформы «1С:Предприятие» позволяют без особых усилий обеспечить отчуждаемость от разработчика самого процесса обновления прикладного решения. Это помогает легко поддерживать одинаковые или сходные прикладные решения многим пользователям. Получив обновленное прикладное решение, пользователь может самостоятельно установить его, не прибегая к сложным манипуляциям с базой данных. При этом средства конфигурирования позволяют выполнять обновление прикладного решения, даже если работающая конфигурация была модифицирована заказчиком самостоятельно и соответственно отличается от того оригинала, в который вносит изменение разработчик. Весьма полезной является также возможность сравнения конфигураций, позволяющая выявить все внесенные изменения - от структур данных до алгоритмов программных модулей.

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

Такие возможности системы «1С:Предприятие 7.7» позволили реализовать технологию непрерывного индустриального сопровождения эксплуатируемых учетных систем, которую мы считаем очень перспективной. Сейчас центральным звеном поддержки всех категорий пользователей и специалистов по внедрению является ежемесячно выпускаемый компакт-диск информационно-технологического сопровождения (ИТС). Это подписное издание, на котором содержатся обновления текущих версий программ, дополнения к типовым конфигурациям, новые формы отчетности, методические материалы и рекомендации по использованию программных продуктов, комментарии и правовая информация по учету, налогообложению и многое другое. В результате пользователю, работающему с системой, для внесения в нее очередных обновлений, например отражения изменений в правилах расчета налогов, достаточно установить новый релиз типовой конфигурации с диска ИТС.

Разработка на платформе «1С» ведется не только в пределах фирмы, но и в масштабах всей страны - «1С:Предприятие» изначально предназначалось для того, чтобы независимые специалисты могли настраивать продукты в точном соответствии с потребностями предприятий, используя наши типовые конфигурации в качестве основы. Эти работы выполняют сейчас около 1500 фирм, входящих в сеть «1С:Франчайзинг». Возможности «1С:Предприятие» позволяют франчайзи создавать эффективные тиражные решения для автоматизации предприятий различных отраслей.

Поэтому фирма «1С» принимает серьезные меры по технологической и методической поддержке партнеров-разработчиков, разработке технологий и стандартов интеграции «1С:Предприятия» с другими системами. Кроме упомянутой выше методики сертификации партнерских разработок на совместимость с «1С:Предприятие», выпущены методики интеграции с торговым оборудованием, совместно с ведущими разработчиками банковского ПО разработан открытый стандарт обмена данными с системами типа «клиент банка», сейчас совместно с Microsoft ведутся работы над стандартами по электронному обмену торговой информацией в формате XML..

(Продолжение следует)

КомпьютерПресс 10"2000

Все множество разработок в зависимости от количества участников и типов взаимоотношений между ними может быть сведено к триаде разработок, приведенной на рис. 3.21.

Люблю одиночество, даже когда я один.
Ж. Ренар

Этот принцип был достаточно широко распространен в 70-80-е годы XX века. Сейчас он применяется редко.

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

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

Объем программного продукта, выполненного методом авторской разработки, в 5-20 раз меньше по сравнению с индустриальными аналогами.

Авторская разработка предполагает достижение профессионального успеха, известности и славы в одиночку. Такое вполне реально, следует только правильно выбрать профессиональную "нишу", область ведения разработки.

2. Коллективная разработка

Собрать стадо из баранов легко, трудно собрать стадо из кошек.
С. П. Капица

Одним из основных вопросов коллективной разработки является разделение труда - от равноправных соисполнителей до организации в виде жесткой иерархии (например, бригады главного программиста).

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

2.1. Технические командные роли

Равноправные соисполнители

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

  • инженеры-разработчики (специалисты по инженерии программирования и программисты);
  • технические писатели;
  • инженеры тестирования;
  • инженеры качества;
  • специалисты по сопровождению продукта;
  • специалисты по продажам продукта.

Тип работы определяет содержание и природу выполняемой работы. Приведем список типов работ и областей специализации на основе классификации Конгер .

  • Разработка приложений.
    • Программист.
    • Специалист по инженерии программирования.
    • Специалист по инженерии знаний.
  • Работа с приложениями.
    • Специалист по приложениям.
    • Администратор данных.
    • Администратор базы данных.
  • Техническая поддержка.
    • Системный администратор.
    • Сетевой администратор.
    • Администратор коммуникаций,
  • Обеспечение качества продукта.
    • Технический писатель.
    • Инженер тестирования.
    • Инженер качества.
  • Маркетинг.
    • Специалист по сопровождению продукта.
    • Специалист по продажам продукта.
  • Системное интегрирование.
    • Системный интегратор.

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

Бригада главного программиста

- Почему бригада скорой помощи состоит из двух врачей?
- Один знает - куда ставить клизму, а другой - зачем!
Анекдот о специализации в команде

Харлан Миллз [Брукс 1999] предложил организовывать команды (бригады) главного программиста (chief programmer teams), подобные хирургическим бригадам. Лишь один участник команды занимается основной работой, остальные оказывают ему всевозможную поддержку. Бригада главного программиста включает десять человек, выполняющих специализированные роли в команде (рис. 3.22).


Основные члены бригады выполняют функции, перечисленные ниже.

  • Главный программист. Лично выполняет анализ и проектирование, создание и отладку кода, написание документации. Должен обладать талантом, большим опытом работы и существенными знаниями.
  • Дублер. Может выполнять любую работу главного программиста, но менее опытен. Подстраховывает главного программиста, может заниматься написанием кода, но не несет ответственности за проект.
  • Администратор, он же - менеджер. Под его контролем - деньги, люди, помещения, машинные ресурсы, контакты с другими группами и руководством.
  • Редактор. Фактически, это технический писатель. Его задача - критически переработать черновики документации (созданные главным программистом), снабдить их ссылками и библиографией и обеспечить публикацию или помещение в Интернете.
  • Языковед. Эксперт в тонкостях языков программирования. Может найти эффективные способы использования языка для решения сложных задач. Обычно работает с несколькими бригадами.
  • Инструментальщик. Разработчик специализированных инструментов - утилит и скриптов. Поддерживает основной инструментарий и оказывает по нему консультации. При необходимости может осуществлять администрирование операционной системы.
  • Отладчик. Разработчик тестов и организатор тестирования программного продукта.
  • Делопроизводитель. Отвечает за регистрацию всех технических данных бригады в библиотеке программного продукта. Благодаря делопроизводителю, активные программисты освобождались от рутинных работ. Заметим, что в настоящее время функции делопроизводителя автоматизированы и переданы репозиторию проекта.

2.2. Психологические командные роли

Роб Томсет (Rob Thomsett) предложил восемь ключевых ролей в проекте (рис. 3.23).


  • Председатель. Выбирает путь, по которому команда движется вперед к общим целям. Умеет обнаружить сильные и слабые стороны команды и обеспечить наибольшее применение потенциала каждого ее участника.
  • Архитектор. Он же оформитель. Придает законченную форму действиям команды. Имеет четкое представление о проблемах и их возможных решениях.
  • Генератор идей. Предлагает радикально новые идеи и стратегии, новые подходы к решению проблем, с которыми сталкивается группа. Особое внимание уделяет главным проблемам.
  • Критик. Он же скептик, оценивающий проблемы с прагматической точки зрения. Ищет недостатки, изъяны и недоделки. Компенсирует оптимизм генератора идей.
  • Исполнитель. Работник, собственно занимающийся написанием кода. Как правило, он не обладает широтой кругозора.
  • Завершающий. Поддерживает в команде настойчивость в достижении цели. Играет доминирующую роль на завершающих стадиях разработки.
  • Дипломат. Поддерживает силу духа в участниках проекта. Оказывает им помощь в трудных положениях. Пытается улучшить взаимоотношения в команде.
  • Организатор. Обнаруживает и сообщает о новых идеях, разработках и ресурсах. Имеет много друзей и связей в своей организации, с помощью которых можно выпросить или одолжить необходимые ресурсы.

В реальных командах программистов могут быть выделены не все из этих ролей. Роль исполнителя часто берут на себя сразу несколько членов команды.

2.3. Типы совместной деятельности

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

  • Мандатная деятельность, обычно представленная формальными собраниями, проводимыми на регулярной основе. Обычно собрания планируются заранее, а присутствие на них обязательно. Статистика показывает, что программисты проводят около 4% своего рабочего времени на собраниях.
  • Созываемая деятельность, которая имеет место в случае решения двух или более программистов собраться вместе для решения некоторого технического вопроса. Такие собрания обычно не планируются заранее и в них участвуют только действительно заинтересованные в решении проблемы программисты. На эту деятельность уходит около 14% рабочего времени.
  • Естественная совместная деятельность имеет место, когда как минимум двое программистов работают над одной и той же задачей одновременно и обмениваются информацией о выполняемой работе. Эта деятельность занимает около 41% рабочего времени.
  • Индивидуальная деятельность имеет место, когда программист работает над задачей, которая не выполняется в то же самое время никаким другим программистом и поэтому маловероятно его взаимодействие по этому предмету с любыми другими программистами группы. Эта деятельность занимает также около 41% рабочего времени.

3. Общинная модель разработки

Совершенство в проекте достигается не тогда, когда нечего добавить,
а тогда, когда нечего убрать.
Антуан де Сент-Экзюпери

Идеология общинной ("базарной") модели разработки сформулирована в программной статье Эрика Раймонда (Eric Raymond) "Собор и Базар". Общинная модель характеризуется тремя основными факторами.

  • Децентролизованность разработки. Не существует ограничения сверху на количество людей, принимающих участие в проекте. Как правило, разработки такого типа ведутся на базе сети Интернет и могут включать любого заинтересованного разработчика Сети.
  • Разработка ведется на базе открытых исходных текстов. По ним можно разобраться с сутью задачи и в любой момент подключиться к разработке.
  • Большое количество внешних тестеров (бета-тестеров), позволяющих быстро обнаруживать ошибки и проблемы в программе.

Эрик Рэймонд сформулировал несколько уроков, которые позволяют лучше понять особенности общинной разработки.

  • Каждая хорошая программа начинается с энтузиазма разработчика.
  • Хорошие программисты знают, что можно написать, а великие - что можно переписать.
  • При правильном отношении интересная проблема найдет вас сама.
  • Когда вы теряете интерес к программе, ваша последняя обязанность - передать ее компетентному преемнику.
  • Следует выпускать ранние и частые версии программ.
  • Обнаружить проблему и исправить ее могут разные люди.
  • Иногда использовать идеи пользователей лучше, чем свои идеи.

Есть системные пометки.



Поделиться