Файл: Руководство по стилю программирования и конструированию по.pdf
ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 30.11.2023
Просмотров: 858
Скачиваний: 2
ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
СОДЕРЖАНИЕ
1 ... 75 76 77 78 79 80 81 82 ... 104
ГЛАВА 28 Управление конструированием
657
Исходя из того, что оценки различались примерно на 5%, я пришел к заключе- нию, что объем книги будет гораздо ближе к 850 страницам, чем к 250, и скор- ректировал свои планы.
Периодически делайте повторную оценку После пер- воначальной оценки факторы, влияющие на проект, могут измениться, поэтому планируйте периодически обновлять ваши оценки. Точность ваших расчетов будет увеличиваться по мере приближе- ния к завершению проекта (рис. 28-2). Время от времени сравнивайте реальные результаты с предполагаемыми и используйте это значение в целях уточнения расчетов для оставшейся части проекта.
Рис. 28-2. Оценки, полученные на ранних стадиях проекта, в действительности
не отличаются точностью. По мере продвижения проекта оценки могут стать более
правильными. На протяжении проекта периодически делайте повторные расчеты
и используйте данные, полученные во время каждого этапа, для уточнения оценки
следующей операции
Оценка объема работ по конструированию
Степень влияния конструирования на график выполнения проекта частично зависит от того, какая доля проекта от- носится к конструированию, под которым понимается со- здание рабочего проекта, кодирование, отладка и модуль- ное тестирование. Взгляните еще раз на рис. 27-3: пропор- ции меняются в зависимости от размера проекта. Пока ваша компания не создаст свою историю проектов, доля време- ни для каждой операции, показанная на рисунке, может стать хорошей отправ- ной точкой для оценки ваших проектов.
Самый правильный ответ на вопрос, каких затрат на конструирование потребует проект, таков: пропорции будут меняться от проекта к проекту и от организации http://cc2e.com/2864
Перекрестная ссылка Об объе- ме кодирования в проектах раз- личных размеров см. в подраз- деле «Соотношение между вы- полняемыми операциями и раз- мер» раздела 27.5.
658
ЧАСТЬ VI Системные вопросы к организации. Храните сведения об опыте проектов в вашей организации и ис- пользуйте их для оценки времени, необходимого будущим проектам.
Факторы влияния на график работ
Наибольшее влияние на график программного проекта ока- зывает размер создаваемой программы. Но многие другие факторы также влияют на план разработки ПО. При изуче- нии коммерческих программ были выделены следующие факторы (табл. 28-1):
Табл. 28-1. Факторы, влияющие на успех программного проекта
Потенциально
Потенциально
Фактор
полезное влияние
вредное влияние
Централизованная/распределенная разработка –14%
22%
Размер базы данных
–10%
28%
Соответствие документации нуждам проекта
–19%
23%
Гибкость, возможная при интерпретации
–9%
10%
требований
Степень активности в обслуживании рисков
–12%
14%
Опыт использования языка и инструментария
–16%
20%
Преемственность персонала (текучесть кадров)
–19%
29%
Изменчивость платформы
–13%
30%
Совершенство процесса
–13%
15%
Сложность продукта
–27%
74%
Способности программиста
–24%
34%
Требуемая надежность
–18%
26%
Способности аналитиков по изучению
–29%
42%
требований
Требования повторного использования
–5%
24%
Соответствие приложения современным
–11%
12%
требованиям
Ограничения хранилища (какая часть
0%
46%
доступного пространства будет израсходована)
Сплоченность команды
–10%
11%
Опыт команды в данной прикладной области
–19%
22%
Опыт команды в работе с данной
–15%
19%
технологической платформой
Временные ограничения (самого приложения)
0%
63%
Использование специализированных
–22%
17%
программных инструментов
Источник: «Software Cost Estimation with Cocomo II» (Boehm et al.,. 2000).
А вот факторы, влияние которых на график разработки ПО измерить труднее; эти факторы извлечены из книг Барри Бома «Software Cost Estimation with Cocomo II»
(2000) и Кейперса Джонса «Estimating Software Costs» (1998).
Перекрестная ссылка Влияние размера программы на произ- водительность и качество не всегда интуитивно понятно (см.
главу 27).
ГЛАВА 28 Управление конструированием
659
쐽
опыт и способности разработчика требований;
쐽
опыт и способности программиста;
쐽
мотивация команды;
쐽
качество управления;
쐽
объем кода, использованного повторно;
쐽
текучесть кадров;
쐽
изменчивость требований;
쐽
отношения с заказчиком;
쐽
участие пользователя в разработке требований;
쐽
опыт работы заказчика с данным типом приложений;
쐽
степень участия программистов в разработке требований;
쐽
обеспечение безопасности компьютера, программ и данных;
쐽
объем документации;
쐽
цели проекта (выполнение по графику, качество, удобство использования или какие-то другие возможные цели).
Каждый из этих факторов может оказаться важным, так что имейте их в виду на- ряду с перечисленными в табл. 28-1 (в нее включены некоторые из приведенных факторов).
Оценка или контроль
Оценка — это важная часть планирования, необходимая для своевременного завершения проекта. Когда у вас есть срок поставки и спецификация продукта, то основная проблема в том, как управлять распределением человеческих и техни- ческих ресурсов для своевременной готовности продукта.
С этой точки зрения, правильность начальной оценки гораздо менее важна, чем ваши последующие успехи в управлении ресурсами с целью соответствия графику.
Что делать, если вы отстаете
Как я уже говорил, средний проект выбивается из запланированного графика примерно на 100%. Когда вы опаздываете, увеличить время на разработку не все- гда возможно. Если сроки можно сдвинуть — сдвиньте. В противном случае вы можете принять одно или несколько из следующих решений.
Надеяться, что вы сможете наверстать упущенное Обнадежи- вающий оптимизм — типичная реакция на отставание проекта от гра- фика. Обычно объяснение выглядит так: «Составление требований заня- ло чуть больше времени, чем мы ожидали, но теперь они утверждены, и мы смо- жем сэкономить немного времени позже. Мы восполним недостачу при кодиро- вании и тестировании». Ну, это вряд ли. В одном обзоре, охватывающем более 300
программных проектов, был сделан вывод, что задержки и отклонения от графи- ка обычно увеличиваются по мере приближения к концу проекта (van Genuchten,
1991). Проекты не восполняют потерянное время позже — они отстают еще больше.
Увеличить команду Согласно закону Фреда Брукса (Fred Brooks) ввод допол- нительных людей на последних стадиях проекта приводит к задержке его выпол-
Важный вопрос состоит в том,
что вы хотите получить: прогноз или контроль?
Том Гилб (Tom Gilb)
660
ЧАСТЬ VI Системные вопросы нения (Brooks, 1995). Это все равно, что подливать масло в огонь. Объяснение Брук- са выглядит убедительно: новым людям требуется время на ознакомление с про- ектом. Их обучение отнимет время у обученных работников. А само увеличение числа участников увеличивает сложность и количество вариантов взаимодействий в проекте. Брукс подчеркивает: то, что одна женщина может родить ребенка че- рез девять месяцев, не значит, что девять женщин могут родить ребенка через месяц.
Несомненно, предупреждающий закон Брукса следует принимать во внимание гораздо чаще, чем это делается. Существует тенденция бросать людей на проект и надеяться, что они выполнят его вовремя. Менеджеры должны понимать, что разрабатывать ПО не то же самое, что ковать железо: большее число работников не обязательно означает больший объем выполненной работы.
В то же время простое утверждение, что подключение программистов к работе над тормозящим проектом задерживает его еще больше, маскирует тот факт, что при некоторых обстоятельствах подобные меры способны ускорить работу. Как
Брукс отмечает в анализе своего закона, подключение людей к программному проекту не поможет, если задачи в этом проекте нельзя разбить на составные части и выполнять их независимо. Но если задачи делятся на части, вы можете распре- делить их между разными людьми, даже недавно включившимися в работу. Дру- гие исследователи смогли формально определить обстоятельства, при которых вы можете подключать людей к проекту на поздних стадиях и не вызывать еще боль- шую его задержку (Abdel-Hamid, 1989; McConnell, 1999).
Сократить проект О таком мощном способе, как сокра- щение проекта, часто забывают. Если вы исключаете какую- то функцию, вы избавляетесь от проектирования, кодирова- ния, отладки, тестирования и документирования этой функ- ции, а также от создания интерфейса между этой и други- ми функциями.
При первоначальном планировании продукта разделите его возможности на ка- тегории «должны быть», «хорошо бы сделать» и «необязательные». Если вы отста- ете, расставьте приоритеты в категориях «необязательные» и «хорошо бы сделать»
и отбросьте те, что имеют меньшее значение.
При невозможности отмены каких-то функций вы можете представить более де- шевую версию той же функциональности. Так, вы можете сдать версию вовремя,
не обеспечив при этом максимальной производительности. Или в этой версии менее важная функциональность будет реализована лишь в общих чертах. Вы можете решить отбросить требования к скорости выполнения, так как медленную версию сделать проще. Или можете решить отбросить требования к объему па- мяти, поскольку версию, интенсивно использующую память, сделать быстрее.
Повторно оцените время разработки для менее важных функций. Какую функци- ональность вы можете предоставить за два часа, два дня или две недели? Какую выгоду вы получите от двухнедельной версии в отличие от двухдневной и чем двух- дневная версия будет отличаться от двухчасовой?
Дополнительные сведения Аргу- менты в защиту реализации толь- ко наиболее необходимой функ- циональности см. в главе 14 «Fea- ture-Set Control» книги «Rapid De- velopment» (McConnell, 1996).
ГЛАВА 28 Управление конструированием
661
Дополнительные ресурсы, посвященные оценке ПО
Далее приведены ссылки на дополнительную литературу,
посвященную вопросу оценки ПО.
Boehm, Barry, et al.
Software Cost Estimation with Cocomo II.
Boston, MA: Addison-Wesley, 2000. Здесь описана оценочная модель Cocomo II —
несомненно, самая популярная на сегодняшний день.
Boehm, Barry W.
Software Engineering Economics. Englewood Cliffs, NJ: Prentice Hall,
1981. Эта более старая книга содержит исчерпывающее толкование вопросов оценки программных проектов, более общее, чем в новой книге Бома.
Humphrey, Watts S.
A Discipline for Software Engineering. Reading, MA: Addison-Wesley,
1995. В главе 5 этой книги описывается Метод зондирования Хамфри (Humphrey’s
Probe method) — способ оценки объема работ с точки зрения отдельного про- граммиста.
Conte, S. D., H. E. Dunsmore and V. Y. Shen.
Software Engineering Metrics and Models.
Menlo Park, CA: Benjamin/Cummings, 1986. Глава 6 содержит хороший обзор мето- дик оценки, включая историю оценки, статистические модели, теоретически обо- снованные модели и составные модели. Книга также демонстрирует использова- ние каждого способа оценки для набора проектов и сравнивает полученные рас- четные значения с реальной продолжительностью проектов.
Gilb, Tom.
Principles of Software Engineering Management. Wokingham, England: Addison-
Wesley, 1988. Назвав главу 16 «Десять принципов оценки атрибутов ПО» («Ten
Principles for Estimating Software Attributes»), автор немного лукавит. Гилб возра- жает против оценки проектов и приводит аргументы в защиту контроля проек- тов. Указывая на то, что людям на самом деле нужны не точные прогнозы, а уп- равление конечным результатом, Гилб выводит 10 принципов, которые можно использовать, чтобы заставить проект соответствовать намеченным срокам, сто- имости или другим целям проекта.
28.4. Измерения
Программные проекты можно измерить по-разному. Далее приведены важные причины, по которым вам стоит проводить измерение процесса.
Для любого атрибута проекта существует возможность его из-
мерения, что в любом случае не означает отказа от его изме-
рения Измерение может быть не абсолютно верным, его может быть трудно сделать и, возможно, придется временами уточнять, но измерение даст вам такой рычаг управления процессом разработки ПО, который вы не сможете по- лучить иным способом (Gilb, 2004).
Если данные предназначены для использования в научном эксперименте, то их надо измерить. Можете ли вы представить ученого, рекомендующего запретить новый пищевой продукт, потому что группа белых крыс «кажется, чаще болеет»
по сравнению с контрольной группой? Бред! Вы бы потребовали более точного ответа, например: «Крысы, которые ели новый пищевой продукт, болели на 3,7 дня дольше, чем крысы, которые его не ели». Чтобы оценить методы разработки ПО,
http://cc2e.com/2871