Файл: Руководство по стилю программирования и конструированию по.pdf
ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 30.11.2023
Просмотров: 852
Скачиваний: 2
ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
СОДЕРЖАНИЕ
662
ЧАСТЬ VI Системные вопросы вы должны измерить их. Заявления типа «Этот новый метод выглядит более эф- фективным» недостаточно хороши.
Отдавайте себе отчет о побочных эффектах изме-
рения Измерение влияет на мотивацию. Люди обращают внимание на выполняемые измерения, предполагая, что измерения служат для их оценки. Выбирайте объекты для измерения осторожно. Люди имеют склонность сосредоточиваться на работе,
которая измеряется, и игнорировать остальную.
Возражать против измерений означает утверждать, что лучше не знать
о том, что на самом деле происходит Если вы измерите какой-то аспект про- екта, вы узнаете о нем нечто, чего не знали ранее. Вы сможете увидеть, стал ли про- ект больше или меньше или остался таким же. Измерение предоставляет вам окно,
через которое вы можете увидеть хотя бы этот аспект проекта. Окошко может быть маленьким и мутным до тех пор, пока вы не уточните свои измерения, но это все равно лучше, чем не иметь окна вообще. Возражать против любых измерений лишь потому, что некоторые из них неубедительны — все равно, что возражать против наличия окон, потому что некоторые из них могут быть мутными.
Вы можете измерить практически любой аспект процесса разработки ПО. Вот некоторые виды измерений, которые некоторые профессионалы посчитали по- лезными (табл. 28-2).
Табл. 28-2. Полезные объекты для измерения в области разработки ПО
Размер
Качество в целом
Общее количество строк
Общее число дефектов
Общее количество строк комментариев
Число дефектов в каждом классе или методе
Общее число классов или методов
Среднее количество дефектов на тысячу строк кода
Общее количество объявлений данных
Среднее время между сбоями
Общее число пустых строк
Ошибки, выявленные компилятором
Отслеживание дефектов
Удобство сопровождения
Серьезность каждого дефекта
Число открытых методов каждого класса
Местонахождение каждого дефекта
Число параметров, передаваемых каждому
(класс или метод)
методу
Происхождение каждого дефекта
Число закрытых методов и/или переменных
(требования, проект, конструирование,
в каждом классе тестирование)
Способ, каким исправлялся каждый
Число локальных переменных, используемых из дефектов каждым методом
Лицо, ответственное за каждый дефект
Число методов, вызываемых в каждом классе или методе
Число строк, задействованных
Число точек принятия решений в каждом в исправлении каждого дефекта методе
Количество рабочих часов, потребовав-
Сложность управляющей логики шихся для исправления каждого дефекта в каждом методе
Среднее время, требуемое для поиска
Число строк кода в каждом классе или методе дефекта
Что измеряется, то выполня- ется.
Том Питерс (Tom Peters)
ГЛАВА 28 Управление конструированием
663
Табл. 28-2. (продолжение)
Среднее время, требуемое
Число строк комментариев в каждом классе для исправления дефекта или методе
Число попыток, предпринятых
Количество объявлений данных в каждом для исправления каждого дефекта классе или методе
Число новых ошибок, появившихся
Число пустых строк в каждом классе в результате исправления дефекта или методе
Количество операторов
goto в каждом классе или методе
Количество операторов ввода или вывода в каждом классе или методе
Производительность
Количество человеко-часов,
затраченных на проект
Количество человеко-часов, потрачен- ных на каждый класс или метод
Количество изменений каждого класса или метода
Сумма в долларах, потраченная на проект
Сумма в долларах, потраченная на строку кода
Сумма в долларах, потраченная на каждый дефект
Вы можете получить результаты для большинства этих измерений, используя со- временные программные средства. На протяжении всей книги обсуждались при- чины, по которым то или иное измерение может быть полезно. В настоящее вре- мя большинство этих измерений нужно не для поиска явных различий между программами, классами и методами (Shepperd and Ince, 1989). Они нужны в ос- новном для выявления методов, которые резко отличаются от других; необычные показатели измерений в каком-то методе предупреждают о том, что вам следует пересмотреть этот метод, дабы выяснить причину необычно низкого качества.
Не начинайте сбор данных для всех возможных измерений — вы закопаетесь в таких сложных данных, что не сможете выяснить, что они означают. Начните с простого набора измерений, скажем, с количества дефектов, человеко-месяцев,
общей суммы в долларах и общего количества строк кода. Стандартизуйте эти измерения во всех своих проектах, а затем уточняйте их показатели и добавляй- те к ним новые, по мере того как ваше понимание необходимых измерений улуч- шается (Pietrasanta, 1990).
Убедитесь, что вы знаете причину, по которой собираете данные. Установите цели,
определите вопросы, которые необходимо задать, чтобы добиться этих целей, а затем проводите измерения, чтобы узнать ответы (Basili and Weiss, 1984). Убеди- тесь, что существует возможность получить ту информацию, которую вы запра- шиваете, и не забывайте, что сбор данных всегда играет второстепенную роль по сравнению со сроками сдачи проектов (Basili et al., 2002).
664
ЧАСТЬ VI Системные вопросы
Дополнительные ресурсы, касающиеся измерения ПО
Oman, Paul and Shari Lawrence Pfleeger, eds.
Applying Software
Metrics. Los Alamitos, CA: IEEE Computer Society Press, 1996.
Под обложкой этого тома собрано более 25 ключевых ста- тей, посвященных измерению ПО.
Jones, Capers.
Applied Software Measurement: Assuring Productivity and Quality, 2d ed.
New York, NY: McGraw-Hill, 1997. Джонс — лидер в области измерения ПО, и его книга аккумулирует все знания в этой области. В ней представлена наиболее полная теория и практика существующих методик измерения и описаны проблемы, воз- никающие при использовании традиционных способов измерения. В книге при- ведена полная программа по сбору числа реализуемых функций. Джонс собрал и проанализировал огромный объем данных, касающийся качества и производитель- ности, и его труд содержит выжимку этих результатов, в том числе и захватываю- щую главу, посвященную средним значениям показателей в области разработки
ПО в США.
Grady, Robert B.
Practical Software Metrics for Project Management and Process Impro-
vement. Englewood Cliffs, NJ: Prentice Hall PTR, 1992. Гради рассказывает о внедре- нии программы по измерению ПО в Hewlett-Packard и о том, как внедрить такую программу в вашей организации.
Conte, S. D., H. E. Dunsmore and V. Y. Shen.
Software Engineering Metrics and Models.
Menlo Park, CA: Benjamin/Cummings, 1986. Эта книга классифицирует существую- щие знания об измерениях ПО по состоянию на 1986 год, включая часто исполь- зуемые измерения, экспериментальные методики и критерии оценки результатов эксперимента.
Basili, Victor R., et al. 2002. «Lessons learned from 25 years of process improvement:
The Rise and Fall of the NASA Software Engineering Laboratory».
Proceedings of the 24th
International Conference on Software Engineering. Orlando, FL, 2002. В статье освещен опыт, полученный организацией, разрабатывающей одни из самых сложных про- граммных продуктов в мире. В центре внимания — вопросы измерения.
NASA Software Engineering Laboratory.
Software Measurement
Guidebook, June 1995, NASA-GB-001-94. Это 100-страничное руководство возможно, лучший источник практической ин- формации о том, как настроить и использовать измерительную программу. Его можно загрузить с Web-сайта NASA.
Gilb, Tom.
Competitive Engineering. Boston, MA: Addison-Wesley,
2004. Книга представляет ориентированный на измерения подход к определению требований, разработке проекта,
измерению качества и управлению проектом в целом. Ее можно загрузить с веб- сайта автора.
28.5. Гуманное отношение к программистам
Атмосфера абстрактности в деятельности программистов требует создания непринужденной обстановки в офисе и поддержания широких контак- тов между коллегами. Высокотехнологичные компании предлагают пар- http://cc2e.com/2878
http://cc2e.com/2892
http://cc2e.com/2899
1 ... 76 77 78 79 80 81 82 83 ... 104
ГЛАВА 28 Управление конструированием
665
ковые корпоративные кампусы, органичные организационные структуры, комфор- табельные офисы и прочие удобства, чтобы компенсировать интенсивную, а по- рой и скучную интеллектуальность самой работы. Наиболее успешные компании сочетают элементы высоких технологий и бережного отношения к людям (Naisbitt,
1982). В этом разделе программисты рассматриваются как нечто большее, чем орга- ническое отражение их силиконовых alter ego.
Как программисты проводят свое время?
Программисты большую часть рабочего времени программируют, но, кроме того,
они тратят его на заседания, обучение, чтение почты и просто размышления.
Исследование, проведенное в 1964 году в Bell Laboratories, показало, что програм- мисты тратят время так (табл. 28-3):
Table 28-3. Одно из представлений того, как программисты тратят свое время
Почта Техни-
Обслужива-
Исход-
и др.
ческие ющие
Тестиро-
Деятель-
ный
Деловые Личные Засе-
доку-
руко-
процедуры, вание
ность
Код
вопросы дела
дания Обучение менты водства Разное
программИтого
Говорят
4%
17%
7%
3%
1%
32%
или слушают
Говорят
1%
1%
с менед- жером
Говорят по 2%
1%
3%
телефону
Читают
14%
2%
2%
18%
Пишут
13%
1%
14%
Отсутст- 4%
1%
4%
6%
15%
вуют
Гуляют
2%
2%
1%
1%
6%
Разное
2%
3%
3%
1%
1%
1%
11%
Итого
35%
29%
13%
7%
6%
5%
2%
2%
1%
100%
Источник: «Research Studies of Programmers and Programming» (Bairdain, 1964, приведе- но в Boehm, 1981).
Эти данные основаны на изучении времяпрепровождения 70 программистов.
Данные старые, и пропорции времени, которое тратится на различные виды де- ятельности, у разных программистов будут иными. И все же результаты наводят на размышления. Около 30% времени тратится на нетехнические виды деятель- ности: прогулки, личные вопросы и т. д. Программисты в этом исследовании тра- тят 6% времени на прогулки — это примерно 2,5 часа в неделю и 125 часов в год.
Это может показаться несущественным, пока вы не поймете, что программисты каждый год тратят на прогулки столько же времени, сколько на обучение, втрое больше, чем на чтение технической документации, и в шесть раз больше, чем ний этого показателя за прошедшие годы.