Реферат по организации и планировании производства (модуль 1)




Скачать 114.04 Kb.
НазваниеРеферат по организации и планировании производства (модуль 1)
Дата публикации24.07.2013
Размер114.04 Kb.
ТипРеферат
vbibl.ru > Информатика > Реферат
Санкт-Петербургский национальный исследовательский университет

информационных технологий, механики и оптики
Кафедра Менеджмента

Реферат

по организации и планировании производства

(модуль 1)

Применение метода парного программирования

при производстве программного обеспечения”
Выполнили: Булыгин К., Пинкевич В., гр. 4105

- 2011 -

1. Обзор методологий разработки ПО.

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

Для начала расскажем про важнейшие методологии программирования.

1. Водопадная (или каскадная) модель.

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

1. Определение требований к будущему ПО.

2. Проектирование ПО.

3. Реализация и интеграция (преодоление проблем совместимости).

4. Тестирование.

5. Установка.

6. Сопровождение ПО.

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

2. Спиральная модель.

В спиральной модели итеративно, по спирали, выполняются следующие фазы:

1. Определение целей.

2. Обнаружение и преодоление рисков (эта фаза - отличительная черта спирального метода; автором метода Барри Боэмом выделено десять наиболее распространённых рисков: от нехватки специалистов до перфекционизма разработчиков).

3. Разработка и тестирование.

4. Планирование следующей итерации.

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

3. Методология Agile (или гибкая методология разработки).

Лучше всего методологию Agile характеризует манифест Agile, который в переводе с английского языка звучит так:

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

- Личностей и взаимодействие больше, чем процессы и инструменты

- Работающее ПО больше, чем всеобъемлющую документацию

- Сотрудничество с клиентом больше, чем заключение контракта

- Ответ на изменение больше, чем следование плану

То есть хотя у вторых элементов есть некоторая ценность, мы ценим первые элементы больше."

Основной методологией, воплощающей эти принципы, является методология экстремального программирования, которая предполагает:

1. Частый выпуск версий ПО для быстрого реагирования на изменяющиеся требования пользователей.

2. Применение парного программирования или проведение всесторонней проверки кода.

3. Автономное (и автоматизированное) тестирование всего кода (так называемый unit testing).

4. Избегание добавления функций, пока они действительно не понадобятся.

5. Плоская управленческая структура (т. е. минимум уровней управления).

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

7. Простота и ясность кода (чтобы его можно было легко переделывать и сопровождать).

8. Частое взаимодействие программистов с пользователями и с другими программистами.

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

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

Парное программирование - это такой способ организации процесса разработки ПО, при котором два человека работают вместе за одним компьютером над одной задачей.

Один член пары, пилот (или driver), печатает за компьютером или изображает архитектуру на бумаге. Другой, навигатор (navigator), наблюдает за работой первого и ищет тактические и стратегические ошибки в работе пилота. Это могут быть случайные ошибки при наборе текста программы или использование неправильного метода. Навигатор является стратегом, обдумывающим действия на далекую перспективу, он имеет более объективную точку зрения, поскольку не так глубоко вовлечён в текущий проект, алгоритм или код. Тем не менее, оба члена пары остаются равноправными партнёрами. Эффективная работа в паре подразумевает постоянное обсуждение проблемы и способов её решения. Если навигатор молчит, это показатель того, что пара не функционирует как надо. Время от времени пилот и навигатор должны меняться ролями, причем в команде разработчиков программного обеспечения каждый член команды должен работать в паре с разными людьми, чтобы использовать максимум возможностей для оценки того, над чем он работает, и для распространения информации о проекте среди всех членов команды.

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

Перечислим основные принципы парного программирования.

1. Взаимное давление.

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

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

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

2. Парное взаимодействие и мозговой штурм.

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

3. Взаимное ободрение в паре.

Наличие кого-нибудь рядом прибавляет смелости. Одобрение со стороны партнёра придаёт программисту решимости делать то, на что он сам бы не решился. Работая совместно, программисты объединяют свои знания и чувствуют уверенность в том, что они делают.

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

4. Проверка в парах.

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

5. Отладка в паре.

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

6. Обучение и передача опыта в паре.

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

Рассказав о достоинствах парного программирования, поговорим теперь о его недостатках.

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

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

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

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

Сначала нужно приучить людей работать в паре. Обычно необходимо несколько дней, чтобы перестроиться на новый способ работы. Изначально многие разработчики настроены по отношению к парному программированию скептически, даже враждебно. Дело в том, что работа с партнёром меняет условия работы программиста-одиночки, к которым он так привык. Один программист написал: "Перестроиться с одиночного программирования на парное - все равно, что приучить себя к острой пище. Когда вы в первый раз пробуете её, она кажется совершенно отвратительной, потому что вы просто к ней не привыкли. Но чем больше вы будете есть острого, тем вкуснее оно вам покажется".

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

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

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

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

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

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

Парное же программирование целесообразно применять в следующих случаях:

1) если проект не очень ответственный - можно поручить его паре новичков, чтобы они приобрели опыт;

2) наоборот, если проект ответственный - пара профессионалов сможет разобраться в нём лучше, чем профессионалы по одиночке.
5. Заключение.

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

1. Постоянный обмен знаниями о способах решения текущей задачи и о проекте в целом.

2. Непрерывный контроль кода.

3. Повышенная мотивация и уверенность в работе.

Литература:

1. Laurie Williams. "Pair programming" (http://collaboration.csc.ncsu.edu/laurie/Papers/ESE WilliamsPairProgramming_V2.pdf).

2. Laurie Williams. "Pair Programming Illuminated" (2002)

3. Wikipedia contributors. "Pair programming" (http://en.wikipedia.org/wiki/Pair_programming)

4. Алистэр Коуберн. "Парное программирование: преимущества и недостатки"

5. Алистэр Коуберн. "Люди как нелинейные и наиболее важные компоненты в создании программного обеспечения"

6. Фредерик Брукс. "Мифический человеко-месяц"

Добавить документ в свой блог или на сайт

Похожие:

Реферат по организации и планировании производства (модуль 1) iconРеферат На тему: «Экономическое и организационное обеспечение логистического...
Логистика – наука о планировании, управлении, контроле и регулировании движения материальных и информационных потоков в пространстве...

Реферат по организации и планировании производства (модуль 1) iconВопросы к экзамену по дисциплине «Экономика отрасли»
Характеристика типов организации производств: единичного, серийного, массового. 18. Характеристика методов организации производства:...

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

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

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

Реферат по организации и планировании производства (модуль 1) iconМодуль контроля и управления
Дгу, входное напряжение 12 в постоянного тока. Модуль устанавливается в следующие пульты управления дгу

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

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

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

Реферат по организации и планировании производства (модуль 1) iconКод для установки модуля
Модуль подбора туров устанавливается на web-сайт агентства. Модуль связан с базой данных компании tez tour, служит для предоставления...

Вы можете разместить ссылку на наш сайт:
Школьные материалы


При копировании материала укажите ссылку © 2013
контакты
vbibl.ru
Главная страница