Коллективная разработка программного обеспечения

Автор: Пользователь скрыл имя, 28 Октября 2013 в 13:43, реферат

Описание работы

Авторская разработка — принцип создания программных продуктов, при котором весь жизненный цикл разработки поддерживается одним — единственным человеком.
Этот принцип был достаточно широко распространен в 70 — 80-е годы ХХ века. Сейчас он применяется редко. Примерами авторских разработок являются операционная система Диспак (В. Ф. Тюрин), текстовый редактор Лексикон (Е. М. Веселов), трансляторы с языков Algol – 68 (П. Наур) и Pascal (H. Вирт).

Работа содержит 1 файл

Коллективная разработка ПО.doc

— 160.50 Кб (Скачать)

Коллективная  разработка программного обеспечения

 

1. Авторская разработка

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

Этот принцип  был достаточно  широко  распространен  в  70 — 80-е  годы ХХ века. Сейчас он применяется редко. Примерами авторских разработок являются операционная система Диспак (В. Ф. Тюрин), текстовый редактор Лексикон (Е. М. Веселов), трансляторы с языков Algol – 68 (П. Наур) и Pascal (H. Вирт).

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

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

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

Об интеллектуальных работниках

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

Авторская работка  может выигрывать по производительности в 30 и более раз у коллективной разработки, что достигается за счет:

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

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

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

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

О применении авторской разработки

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

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

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

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

Иерархическая модель

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

Матричная модель (равноправные соисполнители)

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

Примерный состав такой бригады разработчиков, а  именно:

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

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

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

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

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

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

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

Разработка приложений (Application Development):

•     программист (Programmer);

•     специалист по инженерии программирования (Software Design Engineer);

•     специалист по инженерии знаний (Knowledge Engineer).

Разработка  документации (Documentation):

•     технический писатель (Technical Writer). Тестирование продукта (Testing):

•     инженер тестирования (Tester);

•     инженер по разработке тестов (Test Design Engineer). Продажи (Sales):

•     консультант по продукту (Product Support);

•     специалист по маркетингу (Product Marketing).

Управление  разработкой (Management):

•      менеджер проекта (Project Manager);

•     менеджер информационных систем (IT Manager).

Разработка  аппаратуры (Hardware Design):

•     разработчик аппаратуры (Hardware Design Engineer).

Работа с  приложениями (Application Support):

•     специалист по приложениям (Application Specialist);

•     администратор данных (Data Administrator);

•     администратор базы данных (Database Administrator).

Техническая поддержка (Technical Specialists):

•     системный администратор (System Administrator);

•     сетевой администратор (Network Administrator);

•     администратор коммуникаций (Communications Administrator).

Системное интегрирование (System Integration):

•     системный интегратор (System Integrator).

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

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

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

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

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

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

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

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

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

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

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

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

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

Программирование в парах

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

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

-        Второй партнер решает стратегические задачи:

•     будет ли работать используемый подход в целом;

•     какими могут быть дополнительные тестовые случаи;

•     существуют ли способы упростить всю систему так, что текущая проблема просто исчезнет.

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

Ядерная модель

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

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

Кроме технических  командных ролей следует разбираться  и в психологических ролях. С  одной стороны, важно понимать характеристики конкретно людей. Это может очень  пригодиться, когда надо иметь дело с определенным человеком, и именно для него придумывать способы мотивации, характеристики  должны  определяться  профессиональным  психологом, правило, на основе интерпретации тестов. Одним из традиционных тестов является Миннесотский стандартный многофакторный метод исследования личности — СМИЛ (Minnesota Multiphasic Personality Inventory — MMPI). По результатам тестирования можно прогнозировать и диагностировать или иные возможные проблемы или хотя бы области проблем. С другой стороны, важны характеристики людей в отношениях с внешним миром. Такая типология может быть полезной, когда надо решить, кто с какой работой лучше справится. Далее мы рассмотрим два примера командных характеристик.

Ключевые проектные роли

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

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

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

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

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

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

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

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

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

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

Соционические роли

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

Методика основана на выделении концентрированно выраженных и легко узнаваемых типов личности. Основы методики созданы швейцарским  психологом Карлом Густавом Юнгом (Carl G. Jung), а развита и усовершенствована    она    была    в    работах    литовской   исследовательницы    Ayшры Аугустинавичуте.

Экстраверт, по определению Юнга, — это человек, чья деятельность направлена на объект и определяется этим объектом. Такой человек имеет тенденцию к направленному взаимодействию с внешней средой. Интровер ориентируется на свою оценку предмета или события, а не на объект как таковой. Юнг выделил четыре базовых области восприятия: материя, энергия, пространство и время (иначе — логика, этика, сенсорика, интуиция). Им соответствуют следующие типы личности: мыслительный, эмоциональный, ощущающий и интуитивный.

Информация о работе Коллективная разработка программного обеспечения