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

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

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

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

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

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

Фирма «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

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

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

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

Существуют два варианта бригад:

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

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

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

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

Формирование специализированных бригад (из специалистов одного профиля). Результат работы отдельной бригады не всегда представляет собой конечный результат разработки.

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

Если из-за сложности и масштабности разработки требуется большое число исполнителей и организация нескольких бригад, то рекомендуется:

Рассмотреть вопрос о специализации бригад по функциональному признаку;

Желательно выделить ведущую, главную бригаду. Эта бригада выполняет наиболее существенное задание и как можно больше участвует в жизненном цикле. Бригаде даются другие бригады соисполнители (которые могут быть со своим ТЗ).

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

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

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

хорошую работу на сайт">

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru/

Санкт-Петербургский государственный университет телекоммуникаций им. проф. М.А. Бонч-Бруевича

Санкт-Петербургский Колледж Телекоммуникаций им. Проф. М.А. Бонч-Бруевича

Реферат

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

Учебный предмет: Технология разработки программного обеспечения

Выполнила: студентка 510 группы

Белоусова Мария, ПКС 4 курс

Проверила: Кривоносова Н.В.

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

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

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

5. Обязанности членов группы

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

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

8. Повышение эффективности коллективной работы

Список используемой литературы

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

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

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

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

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

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

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

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

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

программирование коллектив управление

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

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

О первых опытах коллективных разработок

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

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

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

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

· инженеры-разработчики (специалисты по инженерии программирования и программисты);

· технические писатели;

· инженеры тестирования;

· инженеры качества;

· специалисты по сопровождению продукта;

· специалисты по продажам продукта.

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

· Разработка приложений.

o Программист.

o Специалист по инженерии программирования.

o Специалист по инженерии знаний.

· Работа с приложениями.

o Специалист по приложениям.

o Администратор данных.

o Администратор базы данных.

· Техническая поддержка.

o Системный администратор.

o Сетевой администратор.

o Администратор коммуникаций,

· Обеспечение качества продукта.

o Технический писатель.

o Инженер тестирования.

o Инженер качества.

· Маркетинг.

o Специалист по сопровождению продукта.

o Специалист по продажам продукта.

· Системное интегрирование.

o Системный интегратор.

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

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

Почему бригада скорой помощи состоит из двух врачей?

Один знает - куда ставить клизму, а другой - зачем!

(Анекдот о специализации в команде )

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

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

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

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

· Администратор, он же - менеджер. Под его контролем - деньги, люди, помещения, машинные ресурсы, контакты с другими группами и руководством.

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

· Языковед. Эксперт в тонкостях языков программирования. Может найти эффективные способы использования языка для решения сложных задач. Обычно работает с несколькими бригадами.

· Инструментальщик. Разработчик специализированных инструментов - утилит и скриптов. Поддерживает основной инструментарий и оказывает по нему консультации. При необходимости может осуществлять администрирование операционной системы.

· Отладчик. Разработчик тестов и организатор тестирования программного продукта.

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

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

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

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

· Архитектор. Он же оформитель. Придает законченную форму действиям команды. Имеет четкое представление о проблемах и их возможных решениях.

· Генератор идей. Предлагает радикально новые идеи и стратегии, новые подходы к решению проблем, с которыми сталкивается группа. Особое внимание уделяет главным проблемам.

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

· Исполнитель. Работник, собственно занимающийся написанием кода. Как правило, он не обладает широтой кругозора.

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

· Дипломат. Поддерживает силу духа в участниках проекта. Оказывает им помощь в трудных положениях. Пытается улучшить взаимоотношения в команде.

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

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

5. Обязанности членов группы

И у коллективного подхода есть недостатки:

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

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

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

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

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

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

Чтобы проект считался удачным, следует решить определенные задачи:

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

· соблюсти ограничения - разработчики проекта должны уложиться в финансовые и временные рамки;

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

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

· повысить эффективность труда пользователей - новый продукт должен упрощать работу пользователей и делать ее более эффективной. Поэтому приложение, обладающее массой возможностей применять которые сложно или неудобно, считается провальным;

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

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

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

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

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

· Мандатная деятельность, обычно представленная формальными собраниями, проводимыми на регулярной основе. Обычно собрания планируются заранее, а присутствие на них обязательно. Статистика показывает, что программисты проводят около 4% своего рабочего времени на собраниях.

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

· Естественная совместная деятельность имеет место, когда как минимум двое программистов работают над одной и той же задачей одновременно и обмениваются информацией о выполняемой работе. Эта деятельность занимает около 41% рабочего времени.

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

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

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

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

· Децентролизованность разработки. Не существует ограничения сверху на количество людей, принимающих участие в проекте. Как правило, разработки такого типа ведутся на базе сети Интернет и могут включать любого заинтересованного разработчика Сети.

· Разработка ведется на базе открытых исходных текстов. По ним можно разобраться с сутью задачи и в любой момент подключиться к разработке.

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

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

· Каждая хорошая программа начинается с энтузиазма разработчика.

· Хорошие программисты знают, что можно написать, а великие - что можно переписать.

· При правильном отношении интересная проблема найдет вас сама.

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

· Следует выпускать ранние и частые версии программ.

· Обнаружить проблему и исправить ее могут разные люди.

· Иногда использовать идеи пользователей лучше, чем свои идеи.

8. Повышение эффективности коллективной работы

Вот какие отношения друг с другом и к работе возникают в такой группе:

· заинтересованность;

· надежда, оптимизм, готовность к работе;

· определение задач и решений;

· проявление взаимопомощи;

· доверительные уважительные отношения;

· единение.

Последнее очень важно: эффективность работы группы при этом выше всего.

Для успеха проекта недостаточно только распределить роли и обязанности. Помимо структуры, следует придерживаться определенных принципов и методов. Ниже обсуждаются "лучшие методы и принципы", которые успешно применялись не только внутри Microsoft, но также партнерами и заказчиками компании.

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

На основе выработанного представления о проекте создается документ "Концепция проекта", который:

· описывает не только то, что делает продукт, но и то, чего он не делает;

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

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

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

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

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

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

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

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

Прежде всего нужно выяснить, является проект самостоятельным или частью более крупного проекта. MSF рекомендует идентифицировать проекты - это позволяет людям чувствовать себя членами команды. Скажем, в Microsoft принята практика присвоения проектам кодовых имен (например "Чикаго" для Windows 95 и "Мемфис" для Windows 98). Кодовые имена четко идентифицируют проект и работающую над ним группу, позволяют людям четче ощущать причастность к проекту и ответственность за него. Создать и усилить значимость группы, поднять ее боевой дух можно разными способами - скажем, помещая название проекта на футболки, кружки и прочие сувениры.

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

Бывший менеджер программ Microsoft Крис Питере описал отношение к продукту следующим образом:

"У нас всех... одна и та же работа - выпуск продукта. Ваша задача - не писать код, не тестировать его и не создавать спецификации. Ваша задача - выпустить продукт. Именно это делает группа разработки продукта.

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

Когда вы просыпаетесь утром и приходите на работу, вы спрашиваете себя: " Что мы делаем, пишем код или делаем продукт? " Ответ очевиден - мы делаем продукт. Вы не должны программировать, вы обязаны не программировать, и это не каламбур " .

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

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

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

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

Ответственность в равной мере . Крис Питерс однажды не без юмора заметил:

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

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

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

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

Совместное проектирование . Джим Маккарти так описал концепцию общего участия в проектировании в своей книге "Dynamics of Software Development":

" Цель проектирования любого продукта - собрать лучшие идеи. Поэтому в проектировании должны участвовать все члены группы " .

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

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

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

· используйте меньше людей, но лучших в своей области;

· подбирайте задачи в соответствии с квалификацией и мотивацией людей;

· помогайте людям набирать опыт и знания;

· подбирайте людей, дополняющих друг друга;

· не бойтесь отсекать все, что не подходит.

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

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

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

Вот какие технологии необходимы для работы над проектом по созданию системы управления ресурсами (Resource Management System, RMS), о которой идет речь в практикумах этой книги:

· Dynamic HTML;

· Microsoft Active Server Pages (ASP);

· Microsoft Visual Basic Scripting Edition (VBScript); *Microsoft Internet Information Server (US);

· Microsoft Windows NT 4.0;

· Microsoft Windows 2000;

· Microsoft Systems Management Server 2.x (SMS);

· Microsoft Outlook 2000;

· Microsoft Visual InterDev;

· Microsoft Visual Basic 6.0 (VB);

· Microsoft Visual C++ 6.x (C++), библиотеки ATL и STL;

· Microsoft Transaction Server 2.0 (MTS);

· Microsoft SQL Server 7.x;

· создание СОМ-объектов с помощью VB и C++;

· ActiveX Data Objects (ADO);

· Collaborative Data Objects (CDO).

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

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

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

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

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

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

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

На основе результатов тестирования разработчики включают в очередную итерацию работу над ошибками.

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

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

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

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

И еще одна составляющая коллективного владения кодом - непрерывная интеграция.

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

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

Список используемой литературы

1. С.А. Орлов. Технологии разработки программного обеспечения: Учебник. - СПб.: Питер, 2002

2. Брауде Э. Технология разработки программного обеспечения. - СПб.: Питер, 2004

3. Г.С. Иванова, Т.Н. Ничушкина, Е.К. Пугачев. Объектно-ориентированное программирование: Учебник для вузов. - 2-е изд., перераб. и доп./Под. Ред. Г.С. Ивановой. - М.: Издательство МГТУ им. Н.Э Баумана, 2003.

4. Книга цитат от Джона Ллойда

Размещено на Allbest.ru

...

Подобные документы

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

    реферат , добавлен 25.12.2017

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

    презентация , добавлен 12.11.2014

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

    курсовая работа , добавлен 23.08.2011

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

    курсовая работа , добавлен 29.06.2010

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

    реферат , добавлен 10.09.2010

    Современные инструменты разработки программного обеспечения для СУТП. Универсальные языки программирования и сравнение их со SCADA-системами. Разработка программного обеспечения с использованием многоканальных измерительных преобразователей Ш9327.

    дипломная работа , добавлен 13.07.2011

    Исследование объектно-ориентированного подхода к проектированию программного обеспечения будильника. Модель программного обеспечения. Взаимодействие между пользователями и системой. Диаграммы и генерация программного кода при помощи средств Rational Rose.

    курсовая работа , добавлен 26.09.2014

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

    презентация , добавлен 13.10.2013

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

    курсовая работа , добавлен 14.12.2012

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

Лекция 2. Групповая разработка Программного обеспеченья (ПО).

Структурная формула всего механизма

Строение групп Асcура

Степень подвижности механизма

Кинематические пары

Обозначение на структурной схеме Соединяемые звенья Вид Тип пары Индекс пары
Характер соприкосновения Степень подвижности

Число одноподвижных кинематических пар p 1 =7 , число двух подвижных кинематических пар р 2 =0.

а).Последняя группа Асcура

б).Предпоследняя группа Асcура

в).Начальный механизм

7.Класс всего механизма II , так как наивысший класс группы Ассура, входящей в данный механизм II.

  • изучение инструментария коллективной разработки
  • изучение принципов организации процесса разработки и управления коллективом разработчиков

Определения:

Source control (revision control, source code management (SCM)) - по-русски это все обычно называют системами контроля версий. Контролировать ими можно много чего, но меня они, конечно, интересуют в плане работы с кодом. Основная идея систем контроля версий - запоминать все внесенные изменения с комментариями . Понятно кто когда что менял, зачем. Главное - можно все эти изменения откатить. Ну а кроме этого систему контроля версий можно обвешать дополнительными фишками и рюшечками.

Репозиторий, хранилище - место, где хранятся и поддерживаются какие-либо данные. Чаще всего данные в репозитории хранятся в виде файлов, доступных для дальнейшего распространения по сети. Существуют репозитории для хранения программ, написанных на одном языке (например, CPAN для Perl) или предназначенных для одной платформы. Многие современные операционные системы, такие как OpenSolaris, FreeBSD и большинство дистрибутивов Linux, имеют официальные репозитории, но также позволяют устанавливать пакеты из других мест. Большинство репозиториев бесплатны, однако некоторые компании предоставляют доступ к собственным репозиториям за платную подписку. Репозитории используются в системах управления версиями, в них хранятся все документы вместе с историей их изменения и другой служебной информацией. Русское сообщество Subversion рекомендует использовать вместо термина репозиторий термин хранилище, поскольку он полностью соответствует как прямому переводу слова «repository», так и его понятию. Существуют различные автоматизированные системы создания репозиториев. Один из типов репозиториев: хранилища на CD/DVD - установочные диски для пакетов того или иного ПО.



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

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

Пример, Redmine BUGS - the Bug Genie Bugzilla eTraxis GNATS

Базовые принципы разработки ПО в VCS

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

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

Самые известные, которые чаще всего упоминаются - CVS, Subversion (SVN), Perforce. Все системы, что я перечислила, объединяет то, что это системы с одним, выделенным сервером, на котором и находится репозиторий с кодом. Скорее всего вы работали с какой-то из них. Если ни с какой не работали, то очень рекомендую поставить Subversion. Его легко и непринужденно можно погонять на одной локальной машине и получить полное представление о работе систем контроля версий.

Небольшой словарик для понимания дальнейшего. Переводами народ себя обычно не утруждает:-).
Транк (trunk) - основная ветка кода
Бранч (branch) - ответвления (для экспериментов, например)
Чекин (Check in (submit, commit)) - отправка кода в репозиторий
Чекаут (Check out) - получение изменения из репозитория.
Конфликты - возникают, когда несколько человек правят один и тот же код, конфликты можно разрешать
Патч - кусок с записанными изменениями, которые можно применить к репозиторию с кодом

Список литературы