Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Ответы к экзамену 2007.doc
Скачиваний:
18
Добавлен:
01.03.2025
Размер:
379.39 Кб
Скачать

10.Планирование работы. Сетевой график.

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

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

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

  3. По этим данным строится сетевой график выполнения проекта.

  4. В графике (сети) определяется критический – самый длинный – путь.

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

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

Сетевой график – это графическое представление сетевой модели.

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

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

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

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

11.Организация коллективной работы. Типы коллективов программистов.

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

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

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

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

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

Недостатки: сложность создания бригады; отсутствие перспективы продвижения участников; сложность длительного поддержания стабильной работы.

Бригада главного программиста – суть бригады этого типа в том, что основная работа над проектом производится программистом очень высокого класса, которому ассистирует «второй пилот» – тоже высококлассный программист. Остальные участники (всего их десять в варианте [Брукс-6]) играют вспомогательные роли, направленные на получение максимальной производительности именно главным игроком. Главный программист принимает основные решения и несет полную ответственность за проект. Роль второго программиста – критическое осмысление решений главного, вскрытие их недостатков, а в том случае, когда главный не сможет продолжать работу над проектом – его замена. Основное достоинство этой модели – наиболее эффективное использование потенциала программистов высокого класса.

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