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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  • Совершенный код. Совершенный код. Мастер-класс. Стив Макконнелл. Руководство по стилю программирования и конструированию по


    Скачать 5.88 Mb.
    НазваниеРуководство по стилю программирования и конструированию по
    АнкорСовершенный код
    Дата31.03.2023
    Размер5.88 Mb.
    Формат файлаpdf
    Имя файлаСовершенный код. Мастер-класс. Стив Макконнелл.pdf
    ТипРуководство
    #1028502
    страница81 из 106
    1   ...   77   78   79   80   81   82   83   84   ...   106
    ГЛАВА 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   ...   77   78   79   80   81   82   83   84   ...   106


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