Коллективная разработка программного обеспечения. Технологии коллективной разработки. Часто обменивайтесь информацией – но не слишком часто

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Авторская разработка Авторская разработка – это создание программных продуктов, при котором весь жизненный цикл разработки поддерживается одним человеком. Был распространён в г.г. и сейчас применяется редко из-за сложности, объема, требуемого качества, сопровождения. С появлением ПК программное обеспечение стало продуктом массового применения, поэтому стали доминировать крупные компьютерные компании с развитой структурой менеджмента и рекламной компанией. Авторские разработки применяются в области наукоемких приложений. Для таких приложений характерна необходимость многолетнего изучения предметной области, практически полное отсутствие начального финансирования проекта, малая рентабельность, которая определяется узким кругом области.


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


Коллективная разработка Коллективная разработка – это создание программного продукта коллективом разработчиков. Один из основных вопросов коллективной разработки является разделение труда. Один человек не способен создать приложение масштаба предприятия. Ни один разработчик просто не удержит в голове все требования к системе и варианты проекта. Поэтому сегодня разработкой промышленных систем занимаются проектные группы, и все обязанности распределяются среди членов группы. Существует две основные модели организации коллектива при разработке ПО: 1) иерархическая модель (начальник -> подчинённые) 2) модель группы (не определяет структуру коллектива с точки зрения отдела кадров) Основной моделью разделения труда в наше время является иерархическая структура. подчинённые) 2) модель группы (не определяет структуру коллектива с точки зрения отдела кадров) Основной моделью разделения труда в наше время является иерархическая структура.">


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


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


Примерный состав бригады: 1. разработчики специалисты по инженерии и программированию (приёмы и методы программирования, знания инструментальных систем) программисты 2. технические писатели 3. специалисты по качеству 4. специалисты по сопровождению 5. специалисты по продаже


Разделение по типам работы: 1. разработка приложений требует: программистов специалистов по инженерии и программировании специалистов по инженерии и знаниям 2. работа с приложениями - эксплуатация требует: специалистов по приложениям администраторов данных администраторов баз данных 3. техническая поддержка системный администратор сетевой администратор администратор коммуникации 4. обеспечение качества программы технический писатель специалист по тестированию специалист по качеству 5. маркетинг специалист по сопровождению специалист по продаже продукта 6. системное интегрирование системный интегратор (основные задачи: предложить заказчику варианты решения проблемы, выбрать приемлемый вариант по цене, технике и реализовать)


Модель бригады главного программиста 1. Главный программист: анализ проектирование создаёт, реализует, пишет документацию. большой опыт работы и существенными знаниями с большим талантов 2. Дублёр Может выполнять любую работу главного программиста, но с небольшим опытом работы. Не несёт ответственность. 3. Администратор (менеджер) контроль денег, людей, помещений, машинных ресурсов, контактов с другими группами и руководством. 4. Редактор технический Критически перерабатывает документацию. Перерабатывает языки документации, которые разрабатывает программист. 5. Языковед Эксперт в тонкостях языка программирования. Может найти эффективные способы программирования. Обычно работает с несколькими бригадами программистов. 6. Инструментальщик Разработчик специализированных инструментальных утилит, скриптов, поддерживает основной инструментарий и оказывает по нему консультации. Может осуществлять администратор. Работает с несколькими бригадами. 7. Отладчик Разработчик тестов и организатор тестирования ПП (тестировщик, тестер) 8. Делопроизводитель Отвечает за регистрацию всех данных в бригаде, благодаря активным программистам освобождается от рутинных работ. В настоящее время функции делопроизводителя автоматизированы и выключены из проекта.


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


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


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


Модель проектной группы Менеджер продукта Менеджер программ Разработчики Тестеры Инструктор Логистик Работа над проектом включает множество разных видов деятельности и изучение требований с разных точек зрения, поэтому распределение основных задач по нескольким ролям повышает шансы на успех проекта. Как видно из рисунка, в MSF определены шесть таких ролей, которые и составляют модель проектной группы. У каждой из ролей свои обязанности, выполнение которых и обуславливает удачу проекта.


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


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


Менеджер продукта Менеджер продукта должен вовремя реагировать на потребности заказчика. Его главная задача сформировать общее представление о поставленной задаче и о том, как ее решать. Он должен ответить на вопрос «Зачем мы делаем все это?» и убедиться, что все члены группы знают и понимают ответ на него. Основная цель этой роли удовлетворение требований заказчика. Для этого менеджер продукта выступает представителем заказчика в группе разработчиков и представителем группы у заказчика. Менеджер продукта сообщает группе предварительную дату выпуска продукта, устанавливаемую заказчиком. Примечание Основная причина неудачи многих проектов непонимание ожиданий заказчика. При любых запланированных или нет изменениях проекта, его ресурсов или даты выхода продукта ожидания заказчика, пользователей и проектной группы должны быть скорректированы. Группа менеджмента продукта представляет интересы заказчика и помогает ему определить необходимые функции приложения и их приоритеты. Руководителя группы менеджмента часто называют «борцом за продукт». Как правило, это один из топ-менеджеров организации. Остальные члены группы менеджмента продукта должны хорошо разбираться в структуре организации, ее стратегии и бизнес- целях.


Менеджер программы Менеджер программ – его задача вести процесс разработки с учетом всех ограничений. Является руководителем разработки. Его цель повысить авторитет каждого члена группы, а не подавить их своим авторитетом. Главная обязанность выполнить все стадии разработки так, чтобы нужный продукт выпущен был в назначенное время. Он координирует деятельность других членов группы. Главный менеджер программы составляет график проекта на основе информации, полученной от остальных членов группы. Для выполнения своих обязанностей менеджер программы должен отлично разбираться в деловой стороне проекта и иметь ясное представление о технологиях, необходимых для его выполнения. От руководителя отдела программного менеджмента требуется коммуникабельность и талант организатора. Менеджер программы отвечает и за бюджет проекта, объединяя требования к ресурсам всех членов группы в единый план расходов.


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


Тестер Задача тестеров испытание продукта в реальных условиях, дабы определить, что в продукте работает и что не работает, и нарисовать таким образом точный «портрет» приложения. Естественно, для проведения тестов нужно отлично разбираться и в требованиях пользователей, и в том, как их удовлетворить. Тестеры разрабатывают стратегию, планы, графики и сценарии тестирования, которые позволяют убедиться, что все ошибки выявлены и исправлены до выпуска приложения. При работе над проектом необходимо контролировать изменения, им должны заниматься все участники группы, но чаще всего в полном объеме этим приходится заниматься именно группе тестирования. Некоторые важные обязанности тестеров: · уведомление об ошибках и их отслеживание; · контроль сборки продукта; · выявление и контроль рисков.


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


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


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


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


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


Деструктивные и созидательные сочетания ролей На рис. показаны комбинации ролей, оказывающие позитивное и негативное влияние на проект. Роли, отмеченные буквой «3» Запрещено нельзя совмещать из-за конфликтов интересов. Вероятность совмещения ролей, отмеченных буквой «Н» Нежелательно и из-за сильного различия в необходимой квалификации Например, знания и опыт менеджера продукта и логистика сильно отличаются. Сочетания ролей, помеченные буквой «Д» Допустимо возможны, так как их интересы совпадают. Например, как тестеры, так и инструкторы отвечают за выполнение требований пользователей. Менеджер продукта Менеджер программы РазработкаТестиро- вание ИнструкторЛогистика Менеджер продукта ззддн Менеджер программы ззннд Разработка ззззз Тестиро- вание днздд Инструктор днздн Логистика ндздн


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


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


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


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


Координация работы с внешними группами Разработчик Тестер Логистик Менеджер продукта Инструктор Менеджер программы Пользователи Планирование бизнеса Технологическая архитектура Стратегическое планирование Технологические цели Группы эксплуатации и сопровождения Проектная группа Пользователи Бизнес-цели Заказчик

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Поскольку данные системы действительно очень важны, их реализации существуют в большом количестве практически для всех операционных систем. Приведем два стека таких систем (табл. 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/ ));

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

Подготовка начинается с четкого определения целей, однако это не так просто, как кажется на первый взгляд. Роджер Ричардсон (Roger Richardson), президент компании Delta Sigma Corp., которая занимается разработкой производственных систем для аэрокосмической отрасли, отмечает, что "владельцы бизнеса знают свои производственные процессы гораздо лучше нас. Они знают, что сложно и что легко, а также им известны все "подводные камни". То, что они не знают – это как автоматизировать процесс".

"К сожалению, за последние 30 лет во внутренней среде компаний, наших клиентов, произошли изменения", говорит Рэнди Дженнингс (Randy Jennings), вице-президент по развитию бизнеса системного интегратора Transbotics Corp, который специализируется на системах производства, складирования и дистрибуции. "Оказывается, целый слой менеджмента и технических специалистов в американской промышленности сейчас отсутствует. В результате у клиентов есть потребности и желания, но у них нет персонала, необходимого для четкой постановки задачи".

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

Часто обменивайтесь информацией – но не слишком часто

Боб Гамбургер (Bob Hamburger), менеджер по развитию бизнеса системного интегратора Bloomy Controls (системы сбора и управления данными), говорит, что, по их опыту, большинство вещей, которые крадут время – это элементы пользовательского интерфейса в программном обеспечении. "Один из вопросов, который наши опытные специалисты сразу спрашивают – это „Есть ли у вас какие-либо пожелания к виду и работе пользовательского интерфейса?”"

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

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

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

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


Источник: Transbotics

Автоматизировать или не автоматизировать

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

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

Гари Кэш (Gary Cash), вице-президент по продукции и маркетингу поставщика распределительных систем FKI Logistex, утверждает, что при автоматизации процессов возрастает их точность, однако это не является причиной, по которой компании запускают подобные проекты. "Когда компания мала, все операции на складе производятся вручную. Автоматизация начинается тогда, когда становится понятно, что нельзя нанять больше людей и впихнуть их в одно здание, иначе они начнут сидеть друг у друга на головах. То есть когда не хватает производительности, начитается автоматизация. Некоторые функции автоматизируются раньше других. Перевозки, к примеру, как правило, идут первыми в этом списке".

Выполните сначала домашнее задание

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

"Составьте четкое представление о своих потребностях", говорит Дженнингс. "Вам не нужно находить решения, но вам нужно понять свои потребности – не желания, а именно потребности".

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

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

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

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

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

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

Гари Кэш из FKI говорит, что "мы должны понять ваш бизнес для того, чтобы помочь вам. Поэтому вам надо рассказать нам, как он работает, и мы придумаем, как заставить здание работать, как спроектировать его, как всё реализовать, и заставить всё работать как надо".

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

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


Источник: Kuka Robot Group

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

"Вероятно 75% веб-интерфейсов, которые мы сделали", отмечает Гамбургер, "находятся в локальных сетях. Они доступны только с компьютеров, находящихся внутри защищенной сети. Остальные 25% потребовали от нас кооперации с ИТ специалистами клиента для того, чтобы они открыли доступ в своём файрволе или поставили выделенный сервер у себя в сети. Это, кстати, довольно просто – установить аппаратный файрвол с недорогим роутером для защиты веб-сервера от атак злоумышленников".

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



Касса