Главная страница
Навигация по странице:

  • Относитесь с подозрением к изменениям большого

  • Учредите комитет контроля изменений

  • Соблюдайте бюрократические процедуры, но не позволяйте страху пе

  • Изменения в коде программного обеспечения

  • Программы управления версиями

  • Конфигурации компьютеров

  • План резервного копирования

  • Контрольный список: управление конфигурацией Общие вопросы

  • Дополнительные ресурсы по управлению конфигурацией

  • 28.3. Оценка графика конструирования

  • Дополнительные сведения

  • Выделите время для оценки

  • Выясните требования к программе

  • Делайте оценки на низком уровне детализации

  • Используйте несколько способов оценки и сравнивай

  • Руководство по стилю программирования и конструированию по


    Скачать 7.6 Mb.
    НазваниеРуководство по стилю программирования и конструированию по
    Дата18.05.2023
    Размер7.6 Mb.
    Формат файлаpdf
    Имя файлаCode_Complete.pdf
    ТипРуководство
    #1139697
    страница79 из 104
    1   ...   75   76   77   78   79   80   81   82   ...   104
    ГЛАВА 28 Управление конструированием
    651
    Оценивайте затраты на каждое изменение Каждый раз, когда ваш заказ- чик, босс или вы сами намерены изменить систему, оценивайте время, необходи- мое на внесение изменения, включая рецензирование кода этого изменения и по- вторное тестирование всей системы. Учтите в вашей оценке расходы, касающие- ся возникновения волнового эффекта от этого изменения, распространяющего- ся по направлению от требований к проектированию, кодированию, тестирова- нию и обновлениям в пользовательской документации. Пусть все заинтересован- ные стороны знают, что ПО имеет сложнопереплетенную структуру, и что вре- менная оценка требуется, даже если изменение кажется небольшим.
    Независимо от того, как оптимистично вы оцениваете предложенное изменение,
    воздержитесь от немедленной оценки. Такие оценки обычно ошибочны в два и более раз.
    Относитесь с подозрением к изменениям большого
    объема Некоторое количество изменений неизбежно, но большой объем запросов на изменение сигнализирует о том,
    что требования, архитектура или высокоуровневое проек- тирование не были выполнены достаточно качественно,
    чтобы способствовать эффективному конструированию.
    Возврат к работе над требованиями или архитектурой мо- жет показаться накладным, но он гораздо дешевле, чем кон- струирование ПО более одного раза или выбрасывание кода тех функций систе- мы, которые, как выяснилось, вам не нужны.
    Учредите комитет контроля изменений Работа комитета контроля измене- ний состоит в отделении зерен от плевел в запросах на изменение. Любой, кто хочет предложить изменение, отправляет запрос этому комитету. Термин «запрос на изменение» относится к любому запросу, который приводит к изменению ПО:
    идея новой функции, изменение в существующей функциональности, «отчет об ошибке», который сигнализирует о действительной или мнимой ошибке, и т. д.
    Комитет периодически собирается и рассматривает предложенные изменения. Он одобряет, отвергает или откладывает каждое изменение. Комитеты контроля из- менений считаются лучшим решением для расстановки приоритетов и контроля изменений в требованиях, но они еще довольно редко встречаются в коммерче- ских структурах (Jones, 1998; Jones, 2000).
    Соблюдайте бюрократические процедуры, но не позволяйте страху пе-
    ред бюрократией препятствовать эффективному контролю изменений
    Нехватка дисциплинированного контроля изменений — одна из важнейших про- блем управления. Значительный процент проектов, которые считались выполнен- ными с опозданием, на самом деле могли быть сделаны в срок, если бы в них учи- тывалось влияние неотслеживаемых, но согласованных изменений. Плохой кон- троль изменений позволяет накапливаться нерегистрируемым изменениям, что подрывает возможность видеть текущее положение дел, делать долгосрочные про- гнозы, планировать выполнение работ, а также влияет на управление рисками в частности и управление проектом в целом.
    Контроль изменений имеет тенденцию к бюрократизации, поэтому важно искать способы по рационализации этого процесса. Если вы предпочитаете не исполь-
    Перекрестная ссылка Другую точку зрения на работу с изме- нениями можно найти в подраз- деле «Что делать при изменении требований во время конструи- рования программы?» раздела
    3.4. Советы по безопасным из- менениям в коде см. в главе 24.

    652
    ЧАСТЬ VI Системные вопросы зовать традиционные запросы на изменения, заведите почтовый адрес «Change-
    Board» и обяжите сотрудников посылать на него запросы на изменение. Или по- просите высказывать предложения по изменениям интерактивно на заседаниях комитета контроля. Особенно действенная мера — запись запросов на измене- ния в качестве дефектов в систему отслеживания дефектов. Ревнители порядка могут классифицировать такие изменения как «дефекты требований», или их можно считать изменениями, а не дефектами.
    Вы можете создать официальный Комитет контроля изменений, или Группу пла- нирования продукта или Военный совет, которые будут выполнять традиционные обязанности комитета контроля изменений. Или вы можете выбрать отдельного человека в качестве Царя изменений. Но как бы вы это ни назвали, сделайте это!
    Время от времени я встречаю проекты, страдающие от неумелой реали- зации контроля изменений. Но в 10 раз чаще я вижу проекты, страдаю- щие от полного отсутствия вразумительного контроля изменений. Глав- ное — это сама сущность контроля изменений, поэтому не позволяйте страху перед бюрократизацией помешать реализации преимуществ этого подхода.
    Изменения в коде программного обеспечения
    Другое назначение управления конфигурацией — контроль исходного кода. Если вы изменили код и возникла новая ошибка, которая, вроде бы, никак не связана со сделанными вами правками, то при поиске ее источника, вы, возможно, захо- тите сравнить новую и старые версии кода. Если это ничем вам не поможет, вы,
    вероятно, захотите взглянуть на еще более старую версию. Совершить такой экс- курс в историю просто, если у вас есть инструменты управления версиями, кото- рые отслеживают многочисленные версии исходного кода.
    Программы управления версиями С хорошим ПО для управления версиями работать так легко, что вы едва замечаете его существование.
    Оно особенно полезно в групповых проектах. Один вариант управления версиями блокирует исходные файлы так, что только один человек может моди- фицировать файл в некоторый момент времени. Обычно, когда вам нужно пора- ботать с каким-то исходным кодом, вы должны снять этот файл с учета (check out)
    в системе управления версиями. Если кто-то уже проделал эту процедуру, вы по- лучите сообщение, что этого сделать нельзя. Когда вы извлечете этот файл, вы смо- жете с ним работать так же, как и без использования системы управления верси- ями до тех пор, пока не будете готовы снова зарегистрировать его (check in). Другой вариант управления версиями позволяет нескольким людям работать с файлами одновременно и следит за необходимостью слияния изменений во время регис- трации файлов. В обоих случаях, когда вы регистрируете файл, система спраши- вает вас, почему вы его изменили, и вы указываете причину.
    При таких скромных усилиях вы получаете несколько больших преимуществ:

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

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

    ГЛАВА 28 Управление конструированием
    653

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

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

    вам не надо заботиться о персональных резервных копиях, поскольку копия в системе контроля версий служит гарантией безопасности.
    Контроль версий — необходимая составляющая командных проектов. Он стано- вится еще более мощным оружием при интеграции управления версиями, отсле- живания дефектов и управления изменениями. Подразделение прикладного ПО
    Microsoft считает собственный инструментарий управления версиями «важнейшим преимуществом» (Moore, 1992).
    Версии инструментария
    Для некоторых видов проектов может понадобиться реконструкция точной сре- ды, используемой для разработки каждой конкретной версии ПО, включая ком- пиляторы, компоновщики, библиотеки кода и т. д. В этом случае вам также следу- ет поместить эти инструменты в систему управления версиями.
    Конфигурации компьютеров
    Многие компании (включая мою) на своем опыте познали преимущества созда- ния стандартизованных машинных конфигураций. На стандартной рабочей стан- ции, содержащей необходимый инструментарий, офисные приложения и другие программы, создается образ диска. Этот образ копируется на машину каждого разработчика. Стандартная конфигурация позволяет избежать уймы проблем, свя- занных со слегка различающимися конфигурационными параметрами, версиями применяемых инструментов и т. п. Стандартизованный образ диска также силь- но упрощает подготовку новой машины по сравнению с необходимостью уста- навливать каждую программу отдельно.
    План резервного копирования
    План резервного копирования — концепция не новая. Идея в том, чтобы перио- дически делать копию вашей работы. Если вы пишете книгу, вы не оставите руко- пись на крыльце, так как ее может намочить дождь, сдуть ветер или прихватить соседская собака — почитать на сон грядущий. Вы положите свой труд в безопас- ное место. ПО менее осязаемо, поэтому гораздо проще забыть, что на вашей ма- шине есть нечто очень ценное.
    С компьютерными данными может произойти множество неприятностей: может повредиться жесткий диск, вы или кто-то другой можете случайно удалить самые важные файлы, рассерженный сотрудник может устроить акцию саботажа, по разным причинам (кража, наводнение, пожар) вы можете лишиться своей маши- ны. Предпринимайте шаги для защиты своей работы. Ваш план резервного копи- рования должен включать периодическое создание копий и их хранение в дру- гих помещениях. Кроме исходного кода, в нем должны присутствовать все важ- ные для вашего проекта материалы: документы, чертежи и другие записи.

    654
    ЧАСТЬ VI Системные вопросы
    Один часто забываемый аспект разработки плана резервного копирования состоит в проверке процедуры создания резервных копий. Попробуйте восстановить дан- ные на некоторый момент времени, чтобы убедиться, что резервная копия содержит необходимую информацию и восстановленная версия работоспособна.
    Завершив проект, создайте его архив. Сохраните в надежном месте копию всего:
    исходного кода, компиляторов, инструментов, требований, проекта, документа- ции — всего, что может понадобиться для полного воссоздания продукта.
    Контрольный список: управление конфигурацией
    Общие вопросы
     Разработан ли план управления конфигурацией так, что- бы помочь работе программистов и минимизировать накладные расходы?
     Лишен ли подход к SCM излишнего контроля над проектом?
     Группируются ли запросы на изменение либо с помощью неформальных средств (например, списка планируемых изменений), либо посредством более систематического подхода (такого, как комитет контроля изменений)?
     Выполняется ли систематическая оценка влияния каждого предложенного изменения на стоимость, график и качество проекта?
     Рассматриваете ли вы большие изменения как предупреждение о том, что разработка требований завершена не полностью?
    Инструментарий
     Используется ли ПО управления версиями для облегчения управления кон- фигурацией?
     Используется ли ПО управления версиями для уменьшения сложностей в координации работы команды?
    Резервное копирование
     Выполняется ли периодическое резервное копирование всех материалов про- екта?
     Выполняется ли периодическое перемещение резервных копий проекта в сто- ронние хранилища?
     Копируются ли все материалы, включая исходный код, документы, чертежи и важные записи?
     Протестирована ли процедура восстановления из резервной копии?
    Дополнительные ресурсы по управлению конфигурацией
    Поскольку эта книга посвящена конструированию, в данном разделе рассматривается управление изменениями с точки зрения конструирования. Но изменения затрагивают все уровни проекта, и всеобъемлющая стратегия управления изменениями должна делать то же самое.
    Hass, Anne Mette Jonassen.
    Configuration Management Principles and Practices. Boston,
    MA: Addison-Wesley, 2003. Эта книга дает общую картину управления конфигура- цией ПО, а также практические советы, как его внедрить в процесс разработки.
    Berczuk, Stephen P. and Brad Appleton.
    Software Configuration Management Patterns:
    Effective Teamwork, Practical Integration. Boston, MA: Addison-Wesley, 2003. Как и в http://cc2e.com/2850
    http://cc2e.com/2843

    ГЛАВА 28 Управление конструированием
    655
    предыдущей книге, здесь дается общий обзор SCM и много практической инфор- мации. Преимуществом этой книги является наличие советов, помогающих груп- пам разработчиков изолировать и координировать свою работу.
    SPMN.
    Little Book of Configuration Management. Arlington, VA:
    Software Program Managers Network, 1998. Эту брошюра зна- комит с процессом управления конфигурацией и опреде- ляет критически важные факторы успеха. Она находится в свободном доступе на сайте SPMN по адресу
    www.spmn.com/products_guidebooks.html.
    Bays, Michael.
    Software Release Methodology. Englewood Cliffs, NJ: Prentice Hall, 1999.
    Эта книга обсуждает управление конфигурацией ПО с акцентом на выпуске про- мышленной версии продукта.
    Bersoff, Edward H. and Alan M. Davis. «Impacts of Life Cycle Models on Software Con- figuration Management».
    Communications of the ACM 34, no. 8 (August, 1991): 104–
    118. В этой статье описано, как влияют на SCM новые подходы к разработке ПО,
    особенно касающиеся создания прототипов. Статья в особенности актуальна для сред, использующих практику быстрой (agile) разработки приложений.
    28.3. Оценка графика конструирования
    Управление программным проектом — одна из исключительно трудоем- ких задач XXI века, причем оценка размера проекта и усилий, требуемых для его завершения, — один из сложнейших аспектов управления про- ектом. Большой программный проект в среднем завершается на год позже заяв- ленного срока и на 100% превышает первоначальный бюджет (Standish Group, 1994;
    Jones, 1997; Johnson, 1999). При опросах программистов по поводу разницы между ожидаемым и реальным графиками выполнения проекта выяснилось, что разра- ботчики имеют склонность к оптимистичным оценкам в пределах 20-30% (van
    Genuchten, 1991). Это в той же степени связано с ошибочной оценкой размера проекта и требуемых усилий, как и с плохой разработкой. В данном разделе очерчен круг вопросов, связанных с оценкой программных проектов, а также указано, где найти более подробную информацию.
    Подходы к оценке
    Вы можете оценить размер проекта и усилия, требуемые для его завершения, одним из нескольких способов:

    применить оценочное ПО;

    использовать алгоритмический подход, такой как Cocomo
    II, оценочная модель Барри Бома (Boehm et al., 2000);

    привлечь внешних экспертов для оценки проекта;

    обсудить предполагаемые затраты на собрании;

    оценить составные части проекта, а затем сложить их вместе;

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

    применить опыт предыдущих проектов;

    сохранить предыдущие оценки и посмотреть, насколько они были аккуратны,
    а затем применять их для коррекции новых предположений.
    http://cc2e.com/2857
    Дополнительные сведения По- дробнее о методиках оценки гра- фика работ см. главу 8 в «Rapid
    Development» (McConnell, 1996)
    и «Software Cost Estimation with
    Cocomo II» (Boehm et al., 2000).

    656
    ЧАСТЬ VI Системные вопросы
    Ссылки на подробную информацию об этих подходах даны в подразделе «Допол- нительные ресурсы, посвященные оценке ПО» в конце этого раздела. Далее опи- сан правильный подход к оценке проекта.
    Определите цели Зачем нужна оценка? Что вы оценива- ете? Только операции конструирования или весь процесс разработки? Только затраты на проект или на проект плюс отпуска, праздники, обучение и другие мероприятия, не относящиеся к проекту? Насколько аккуратной должна быть оценка, чтобы соответствовать вашим целям? Какую она дол- жна иметь степень достоверности? Приведут ли оптимистичная и пессимистич- ная оценки к существенно различным результатам?
    Выделите время для оценки Скоропалительные оценки неаккуратны. Если вы оцениваете большой проект, рассматривайте процесс оценки как минипроект и выделите время для минипланирования оценки, чтобы хорошо ее выполнить.
    Выясните требования к программе Точно так же, как архитектор не может сказать, сколько будет стоить «доста- точно большой» дом, так и вы не сможете надежно оценить
    «достаточно большой» программный проект. Бессмысленно ожидать от вас оценки объема работ, требуемых для реализации чего-то, если это «что-то» еще не опре- делено. Определите требования или запланируйте подготовительный этап для исследований, прежде чем что-то оценивать.
    Делайте оценки на низком уровне детализации В зависимости от обозна- ченных целей основывайте оценки на подробном изучении свойств проекта.
    В целом чем подробней будет ваша экспертиза, тем аккуратней будет оценка. По закону больших чисел, если на одном большом интервале существует 10%-я по- грешность, ошибка составляет 10% либо в сторону увеличения, либо в сторону уменьшения. На 50 небольших интервалах часть 10%-х погрешностей будет в сто- рону увеличения, а часть — в сторону уменьшения, и погрешности будут уравно- вешивать друг друга.
    Используйте несколько способов оценки и сравнивай-
    те полученные результаты Не все методики оценки приведут к одинаковым результатам, так что попробуйте несколько. Изучите результаты, полученные разными спо- собами. Дети быстро смекают, что, если попросить третий шарик мороженного у каждого родителя в отдельности,
    больше шансов услышать хотя бы одно «да», чем если спра- шивать только одного родителя. Иногда родители догады- ваются, в чем дело, и дают одинаковый ответ, а иногда — нет. Выясните, какие варианты ответов вы можете получить при использовании разных методик оценки.
    Ни один подход не является лучшим в любых обстоятельствах, а разница между ними может многое объяснить. Например, работая над первым изданием этой книги, я навскидку оценивал ее размер в 250–300 страниц. Когда я наконец вы- полнил углубленный расчет, предполагаемый объем оказался равен 873 страни- цам. «Этого не может быть», — подумал я. Поэтому я воспользовался абсолютно другим способом оценки. В результате второй попытки я получил 828 страниц.
    Дополнительные сведения Эта методика основана на рекомен- дациях, предложенных в «Soft- ware Engineering Economics»
    (Boehm, 1981).
    Перекрестная ссылка О требо- ваниях к ПО см. раздел 3.4.
    Перекрестная ссылка Сложно найти область разработки ПО, в которой итерация не имеет важ- ного значения. Процесс предва- рительной оценки — один из примеров, где итерация может принести пользу. Об итератив- ных методиках см. раздел 34.8.

    1   ...   75   76   77   78   79   80   81   82   ...   104


    написать администратору сайта