Обзоры Обзоры 08.06.2007 в 05:37 comment

Разработка ПО: инструментарий для получения оценок

author avatar
https://secure.gravatar.com/avatar/2f8d57cddfeb455ba418faa11ee01bb0?s=96&r=g&d=https://itc.ua/wp-content/uploads/2023/06/no-avatar.png *** https://secure.gravatar.com/avatar/2f8d57cddfeb455ba418faa11ee01bb0?s=96&r=g&d=https://itc.ua/wp-content/uploads/2023/06/no-avatar.png *** https://itc.ua/wp-content/themes/ITC_6.0/images/no-avatar.svg

ITC.UA

автор

Охватить весь спектр средств для оценки производства ПО не представляется возможным. Даже если оставить «за бортом» универсальные пакеты (для планирования, контроля, бюджетирования, анализа рисков и пр.), спектр имеющихся решений все равно будет слишком широким. Поэтому в статье рассматриваются лишь инструменты, специфичные для софтверной индустрии, а именно предназначенные для вычисления метрик ПО и оценки экономических параметров (для данного класса есть устоявшееся название Software Estimation, однако буквальные переводы вроде «оценка ПО» у нас пока не прижились).

На начальной стадии проекта можно получить быстрые импровизированные оценки, которые будут значительно более представительны, чем просто взятые «с потолка».
Из руководства к Construx Estimate

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

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

Разработка ПО: инструментарий для получения оценок
Минимализм интерфейса отнюдь не мешает программе хорошо выполнять свою задачу

Но проблемы могут возникнуть и с переоценкой трудоемкости. Такая ситуация в лучшем случае обернется перерасходом ресурсов (в соответствии с известным законом Паркинсона, работа занимает столько времени, сколько отводится на ее выполнение), что будет свидетельствовать о двойной неудаче: сначала ошибка была допущена на этапе планирования, а затем – и в процессе управления проектом. Нужно ли говорить, что это значит в условиях жесткой конкурентной среды? В худшем же проект будет остановлен или отложен в связи с его (вероятно, мнимой) нецелесообразностью. Таким образом, переоценка ничуть не лучше недооценки, хотя на практике часто бытует обратное мнение – нередко даже используется правило, в соответствии с которым для страховки первоначальную оценку следует волюнтаристски увеличить в 2,5 раза.

Еще один неоднозначный момент заключается в различии между такими понятиями, как «правильность» (accuracy) и «точность» (precision) – в русском языке эти термины часто выступают синонимами, хотя в английском их смысл разграничен четче. Правильность предполагает близость полученной оценки к реальному значению, а точность – ее однозначность и полноту. К примеру, для числа π оценка 3 будет более правильной, чем 4, но в то же время обе имеют одинаковую и гораздо меньшую точность (в данном случае – число знаков после запятой), чем 3,14.

Курс UX/UI дизайнер сайтів і застосунків з Alice K.
Курс від практикуючої UI/UX дизайнерки, після якого ви знатимете все про UI/UX дизайн .
Реєстрація на курс
Разработка ПО: инструментарий для получения оценок
Коммерческий продукт GeroneSoft Code Сounter Pro не имеет особых преимуществ по сравнению с открытыми аналогами, за исключением графического интерфейса

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

Большинство продуктов класса Software Estimation не обладает презентабельным интерфейсом, а сопровождающая их документация достаточно скупа. Одни из них абсолютно бесплатны и даже поставляются в исходных кодах (при том, что аналогичные коммерческие решения бывают невероятно дорогими – до десятков тысяч долларов за одну лицензию на год использования), другие же даже нельзя предварительно опробовать. Но все подобные нюансы легко объяснимы – во многих случаях такие инструменты бесполезны сами по себе, даже самые совершенные из них не могут быть использованы без серьезной теоретической подготовки и практического опыта в области оценивания программных проектов. Поэтому они рассчитаны на квалифицированных специалистов и нередко создаются «под себя» крупными консалтинговыми фирмами.

Инструменты вычисления метрик проектов

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

Почетное место занимают средства подсчета числа строк кода (метрики SLOC и ее производных) – их абсолютное большинство как среди коммерческих, так и среди бесплатных продуктов, в том числе с открытым кодом.

Вычисление метрики SLOC

Locmetrics – очень простой бесплатный продукт с минималистским интерфейсом. В числе поддерживаемых языков – C/C++, C#, Java, SQL – возможно вычисление не только метрики SLOC и ее разновидностей, но и цикломатической сложности. Отсутствие документации не является препятствием для использования программы, поскольку разобраться в интерфейсе из двух кнопок и двух полей ввода совсем несложно. Хуже, что нет даже описания методики расчета метрик. К недостаткам также следует отнести отсутствие хотя бы самых простых средств построения отчетности или экспорта данных в один из популярных форматов.

Курс UX/UI дизайнер сайтів і застосунків з Alice K.
Курс від практикуючої UI/UX дизайнерки, після якого ви знатимете все про UI/UX дизайн .
Реєстрація на курс
Разработка ПО: инструментарий для получения оценок
Хотя вычисление метрик в Borland Together – далеко не основная функция, программа справляется с ней на «отлично»

USC Codecount – бесплатный продукт с открытыми исходными кодами на языке ANSI C, разработанный Университетом Южной Калифорнии (University of Southern California, USC) – той же организацией, в которой были созданы COCOMO/COCOMO II. По этой причине USC Codecount является официальным инструментом для подсчета метрики SLOC при использовании указанных моделей. В число поддерживаемых языков входят C/C++, C#, Java, JavaScript, SQL, Perl, XML, в документации указано, что методика расчета соответствует принятой SEI для моделей CMM/CMMI.

По сути, USC Codecount представляет собой целый набор инструментов, разработанных по единым принципам – для каждого языка программирования имеется отдельный проект, и компилируемая консольная программа может быть использована только для него. Несмотря на видимые неудобства, эту особенность следует считать как раз преимуществом, поскольку таким образом максимально учитываются свойства (характеристики) конкретного языка.

USC Codecount дает возможность вычислять количество логических и физических SLOC, пустых строк, комментариев, директив компилятора, описаний данных, исполняемых инструкций по файлам проекта по отдельности и суммарно. Также предоставляется статистика по числу вхождений ключевых слов различных категорий и соотношения между различными значениями.

SLOCCount – бесплатный продукт, разработанный Дэвидом Вилером (David A. Wheeler), поставляется в виде исходных кодов на языке C по лицензии GNU GPL. Ориентирован на UNIX-платформы, хотя возможно применение и в Windows после соответствующей адаптации.

Среди рассматриваемых это, пожалуй, наиболее универсальный инструмент – в число поддерживаемых языков входят Ada, Assembler, awk, Bourne shell (включая производные: bash, ksh, zsh, pdksh), C, C++, C#, C shell (включая tcsh), COBOL, Expect, Fortran (включая Fortran 90), Haskell, Java, lex (включая flex), LISP (включая Scheme), make-файлы, Modula3, Objective-C, Pascal, Perl, PHP, Python, Ruby, sed, SQL, TCL, Yacc.

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

Благодаря своей универсальности этот продукт довольно популярен, к примеру, именно он используется в перспективном поисковом механизме для разработчиков Krugle для подсчета статистики по проектам.

Code Counter Pro – единственный коммерческий продукт, попавший в нашем обзоре в данную категорию. Впрочем, он совсем недорог ($25 за одну лицензию), зато в отличие от предыдущих имеет развитый графический интерфейс, что, безусловно, делает его использование более удобным.

Поддерживаются следующие языки программирования: Java, JSP, C/C++, VB, PHP, HTML, Delphi/Pascal, ASM, XML, COBOL, есть возможность декларировать новые.

Несмотря на то что программа хорошо справляется со своей задачей и даже позволяет строить детальные отчеты, чего не может предложить, скажем, Locmetrics, она уступает рассмотренным открытым аналогам по количеству вычисляемых показателей (только число физических строк кода, комментариев, пустых строк, а также суммарные значения).

Вычисление метрик сложности

Verisoft Complexity Measures Tool – коммерческий продукт с достаточно внушительной ценой в 1200 евро. Поддерживаются только языки C/C++ и Java (поставляется в виде двух различных редакций).

С помощью этого продукта можно рассчитывать следующие метрики: SLOC, цикломатическую сложность, метрики Холстеда, индекс сопровождаемости (вычисляется на основе предыдущих). Имеет графический интерфейс (с возможностью работы в режиме командной строки), позволяет формировать отчеты в текстовой форме или HTML.

Borland Together – коммерческий инструмент UML-моделирования, дополненный возможностями вычисления метрик исходного кода. Цена зависит от редакции (начиная с $200).

Поддерживается обширное число различных метрик, значительная часть которых – объект-но-ориентированные: SLOC, количественные метрики классов (число атрибутов, классов, конструкторов, операций), цикломатическая сложность, метрики сложности классов (LOCOM1, LOCOM2, LOCOM3, WMPC1, WMPC2, NORM), метрики связности, Холстеда, наследования, полиморфизма, процентные соотношения (доля комментариев, приватных, публичных и защищенных членов классов), максимальные значения (уровня вложенности, числа параметров и операций).

Разработка ПО: инструментарий для получения оценок
Бесплатный Eclipse Metrics Plugin может дать фору многим коммерческим аналогам

Eclipse Metrics Plugin, как следует из названия, представляет собой подключаемый модуль для популярной IDE Eclipse, разрабатываемый в рамках открытого проекта под той же лицензией, что и сама Eclipse.

Вычисляет SLOC, количественные метрики классов, цикломатическую сложность, метрики сложности классов (LOCOM1, LOCOM2, LOCOM3, WMPC, NORM, индекс специализации), метрики связности, уровень абстракции и некоторые другие.

Достаточно функциональный продукт, который вполне может дать фору многим коммерческим аналогам.

Оценки экономических параметров

Инструменты оценки экономических параметров составляют центральную часть класса Software Estimation, применяются для оценки трудоемкости, сроков реализации и стоимости ПО и часто являются куда более сложными, чем средства расчета метрик.

Разработка ПО: инструментарий для получения оценок
Duvessa Estimate Easy UC – пример достаточно простого продукта, выполняющего свою задачу без нареканий

Duvessa Estimate Easy UC – пример довольно простого коммерческого продукта с невысокой ценой ($40–90 в зависимости от редакции). Программа предназначена для оценки трудоемкости реализации проекта на основе прецедентов. Работа с программой заключается в регистрации составляющих UML-модели: прецедентов и акторов (участников), для которых необходимо указать параметры сложности и число форм и отчетов (для прецедентов). Поддерживается возможность импорта требуемой информации из форматов Rational Rose, Rational XDE, Rational Requisite Pro, Microsoft Visio и XML. Помимо вычисления объема проекта в скорректированных точках прецедентов (UCP) и трудоемкости в человеко-часах, программа производит автоматическое преобразование количества UCP в число объектных точек (OP) и затем выполняет еще одну оценку трудоемкости реализации проекта в соответствии с композиционной прикладной моделью методики COCOMO II.

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

Разработка ПО: инструментарий для получения оценок
В USC COCOMO Tool есть все для оценки проекта по методике COCOMO II, и в то же время нет ничего сверх этого

USC COCOMO Tool – официальный инструмент от создателей методики COCOMO II, поставляется бесплатно. Поддерживаются две модели COCOMO II: ранней разработки проекта и постархитектурная.

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

Результаты работы программы могут быть экспортированы в формат CSV, а затем импортированы в Microsoft Excel для дальнейшей обработки – с этой целью в комплекте поставляется дополнительный инструмент COCOMO Import & Analyze Tool. Сама же программа умеет строить только итоговый отчет.

Разработка ПО: инструментарий для получения оценок
Costar – солидный продукт за внушительные деньги

SoftStar Systems Costar – один из наиболее популярных коммерческих инструментов класса Software Estimation, основанный на методиках COCOMO/COCOMO II и их различных модификациях (на текущий момент поддерживается 10 вариантов, допускается регистрировать новые). При этом программа имеет весьма серьезную цену – от 1900 до 25 000 долл. в зависимости от редакции.

Так же, как и USC COCOMO Tool, Costar охватывает только две модели COCOMO II: ранней разработки проекта и постархитектурную. Однако в остальном Costar гораздо функциональнее, в частности, поддерживает несколько различных моделей жизненного цикла программного проекта (в том числе REVIC, не предусмотренную оригинальными COCOMO/COCOMO II), инкрементную разработку компонентов (можно учитывать до двадцати итераций), обеспечивает подготовку полноценных отчетов (свыше двадцати видов) и их экспорт в различные форматы. Для тонкой настройки и калибровки моделей предоставляется отдельная программа Calico.

Разработка ПО: инструментарий для получения оценок
Construx Estimate – очень мощный инструмент, не имеющий аналогов среди бесплатного ПО

Construx Estimate – бесплатный продукт от компании Construx Software, созданной очень авторитетной личностью в сфере программной инженерии и управления программными проектами – Стивом МакКонеллом (Steve McConell), который среди прочего был признан в 1998 г. одним из трех самых влиятельных людей в софтверной индустрии (наряду с Биллом Гейтсом и Линусом Торвальдсом).

Программа Construx Estimate построена на двух методиках оценки характеристик проекта – SLIM и COCOMO II, а ее уникальность состоит в том, что обе они применяются совместно. SLIM является основной и обеспечивает оценки стоимости выполнения проекта, графика работ, требуемого персонала и вероятного количества дефектов. COCOMO II используется в качестве дополнительной и служит для уточнения оценок при вычислении затрат. В зависимости от типа проекта определяется базовая оценка производительности, которая затем корректируется в соответствии с COCOMO II.

Программе необходимо передать такие данные, как тип и подтип проекта (бизнес-системы, управляющие системы, интернет-системы, системное ПО и пр.), текущая фаза, дата начала фазы проектирования, ограничения и приоритеты отдельных параметров, приблизительный объем (в виде SLOC, FP, числа функций/процедур, классов/модулей, подсистем), используемый язык программирования. В результате будет получена оценка по методу Монте-Карло с распределением 50/50 – т. е. вероятности переоценки и недооценки проекта будут равны 50%. Затем позволяется проводить анализ по сценариям «что-если?». На заключительном этапе программа формирует готовый к печати многостраничный отчет, содержащий исчерпывающую информацию о характеристиках проекта.

С помощью Construx Estimate можно последовательно повышать точность оценки как в «тактическом» плане (т. е. в процессе реализации конкретного проекта), так и в «стратегическом» (за счет наработки опыта по выполнению многих проектов).

В первом случае эффекта можно достичь переходом от базовой оценки объема проекта (которая представляется одним значением SLOC, FP, числа классов/модулей/процедур/подсистем) к более детальной на основе расчета числа FP встроенным инструментом, либо вообще оценивать объем работ числом элементов интерфейса (диалоговых окон, рабочих областей, отчетов и пр.) различных категорий сложности. Для больших систем допускается обсчитывать отдельные модули, подбирая для них подходящие единицы измерения и способы их получения.

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

Разработка ПО: инструментарий для получения оценок
CaliberRM Estimate Professional – настоящий инструмент профессионала, серьезное оружие в арсенале корпорации Borland

Borland CaliberRM Estimate Professional – коммерческий аналог программы Construx Estimate, изначально выпускаемый компанией Software Productivity Center под названием Estimate Professional. В 2004 г. данный продукт был приобретен корпорацией Borland и включен в поставку комплексного ПО для управления требованиями CaliberRM (в качестве отдельного продукта не предлагается), цена которого – от $2000.

По своей идее и принципам работы данный продукт очень похож на бесплатный аналог (полностью совпадают даже целые разделы документации). Различия касаются главным образом более удобного интерфейса, повышенной гибкости в формировании и настройке отчетности, числа примеров оценки, входящих в комплект поставки, а также интеграции с CaliberRM. Пожалуй, самое принципиальное преимущество инструмента от Borland – возможность выбора одного из двух типов оценки: на основе объема проекта или трудоемкости (Construx Estimate предусматривает только первый вариант).

Заключение

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

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

В заключение следует напомнить, что рассмотренные нами инструменты (при видимой простоте некоторых) отнюдь не принадлежат к тем, которыми можно пользоваться, не читая документации. Прежде всего нужно инвестировать серьезные средства в обучение специалистов, которые должны их применять. Например, в результате одного из исследований, проведенных компанией Hewlett-Packard, было установлено, что если затраты на подготовку персонала не превышают стоимости приобретенных CASE-средств, то они почти наверняка не приведут к существенному увеличению производительности. В случае же с управлением программными проектами квалификация менеджера окажется несоизмеримо ценнее любого, даже самого изощренного инструментария.

e-mail автора:
[email protected]

Продолжается конкурс авторов ИТС. Напиши статью о развитии игр, гейминг и игровые девайсы и выигрывай профессиональный игровой руль Logitech G923 Racing Wheel, или одну из низкопрофильных игровых клавиатур Logitech G815 LIGHTSYNC RGB Mechanical Gaming Keyboard!


Loading comments...

Сообщить об опечатке

Текст, который будет отправлен нашим редакторам: