Функциональный точечный анализ — метод, который сильно завышает стоимость?

StackOverflow https://stackoverflow.com/questions/2694382

Вопрос

Разъяснение о вознаграждении

Я знаю, что это субъективный вопрос.Идеальный ответ, который я ищу, - это тот, который объясняет, почему приведенный здесь сценарий был бы таким удивительным.

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

Если вы считаете, что приведенный сценарий действительно завышен, пожалуйста, точно укажите ваши причины.Какие ошибки вы можете заметить в его расчетах, которые привели к таким огромным затратам на такое простое приложение, как это?Как бы вы поступили по-другому?(нет необходимости описывать весь процесс целиком, но детали вместо обобщенных ощущений были бы приятны)


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

1.Во-первых, некоторые данные

Этот вопрос основан на Учебник.У него был раздел "Количество образцов", где он демонстрировал это шаг за шагом.Вы можете увидеть некоторые скриншоты его примера приложения здесь.

В конце концов, он рассчитал нескорректированный FP быть 99.

Есть еще один статья о InformIT с отраслевыми данными о типичном часе в сутки.Он колеблется от 2 часов в сутки до 27,4 часов в сутки.Давайте попробуем придерживаться 2 на данный момент (поскольку читатели SO, вероятно, являются более эффективной аудиторией : p).

2.Проверка на реальность!?

Теперь просто посмотрите на Скриншоты снова.

Произведите здесь небольшую математику

99 * 2 = 198 hours
198 hours / 40 hours per week = 5 weeks

Серьезно?Внедрение этого образца приложения займет 5 недель?Или это просто мое ощущение, что ни одному приличному программисту не потребовалось бы больше недели (я даже не говорю выходных), чтобы завершить это?

Теперь давайте попробуем оценить стоимость проекта.На данный момент мы будем использовать минимальную заработную плату в Нью-Йорке (Википедия), что составляет $ 7,25

198 * 7.25 = $1435.5

Судя по тому, что я мог видеть на скриншотах, это приложение представляет собой небольшое приложение для улучшения Excel.Я мог бы купить MS Office Pro за 200 долларов, что дает мне большую совместимость (файлы .xls) и гибкость (электронные таблицы).

(Между прочим, на том же веб-сайте есть еще одна статья, в которой обсуждается производительность.Похоже, что они обычно используют 4,2 часа в секунду, что дает нам еще более шокирующую статистику:

99 * 4.2 = 415 hours = 10 weeks = almost 3 whopping months!
415 hours * $7.25 = $3000 zomg

(Это даже при условии, что все наши бедные программисты получают минимальную заработную плату!)

3.Я что-то здесь упускаю?

Прямо сейчас я мог бы предложить несколько возможных объяснений:

  1. FPA действительно подходит только для больших проектов (1000 + кадров в секунду), поэтому в меньшем масштабе он становится крайне неточным.
  2. Показатель часов / FP колеблется резко от команды к команде, от проекта к проекту.Для такого небольшого проекта, как этот, мы могли бы использовать что-то вроде 0,5 часа в сутки или что-то в этом роде.(Теперь это делает всю процедуру оценки бессмысленной, если только моя фирма не выполняет проекты одного типа в течение нескольких лет с одной и той же командой, что на самом деле не является обычным явлением.)

Исходя из моего опыта работы с несколькими программными показателями, функциональная точка на самом деле не является легковесной метрикой.Если значение hour / FP так сильно колеблется, то какой смысл, может быть, я мог бы использовать точки истории пользователя, которые намного быстрее получить и, возможно, почти так же неопределенны.

Как бы на это ответили эксперты FP?

Это было полезно?

Решение

Около десяти лет назад мой, питьевой мой, дал мне действительно отличный кусок мудрости. На любой консультации проекта задайте три вопроса: 1. Какая проблема мы пытаемся решить? 2. Какие результаты? 3. Как мы узнаем, когда мы сделаем? Он добавил, что никогда не следует принимать на любой проект, для которого любой из вопросов не ответил до начала проекта.

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

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

Другие советы

Это просто мое ощущение, что это не принесет никакого приличного программиста длиннее одной недели (я даже не говорю выходные), чтобы он был завершен?

Разработчики всегда имеют тенденцию недооценивать, как долго требуется что-то закончить. Они думают, что не будет никаких ошибок, никаких изменений в требованиях, и ничего они никогда не делали раньше и должны проводить дни на выяснение.

Из того, что я мог видеть со скриншотов, это приложение - небольшое приложение для улучшения Excel. Я мог бы купил MS Office Pro за 200 баксов, что дает мне большую совместимость (файлы .xls) и гибкость (электронные таблицы).

Вы сравниваете цену за совершенно пользовательскую часть программного обеспечения к тому, что продает миллионы копий? Серьезно?

Реальность такова, что большинство методов оценки программного обеспечения на самом деле занижают оценку, хотя на первый взгляд это кажется нелогичным.Однажды я работал в компании, где 300 строк кода на человеко-месяц считались завышенной оценкой, а в большинстве месяцев мы получали больше 200-250.Но давайте остановимся на цифре 200.Это 10 строк кода за рабочий день.Кто не может написать 10 строк кода за рабочий день?Давай же!Я мог бы написать от 50 до 100 или более строк кода в хороший день!И все же компании, использующие подобные цифры, постоянно завершают свои проекты с отставанием от графика и превышением бюджета.Почему это так?Что ж, масштабируемость, как предполагает Майкл Боргвардт, очень велика.Но давайте на минутку вычленим это из общей картины и предположим, что заказчик и заказчица сделали все правильно с первого раза.Почему компания должна оценивать только 10 строк кода в день?

  • Анализ требований
  • Разработка программного обеспечения на основе требований
  • Встречи для координации интерфейсов и архитектуры с коллегами по команде.
  • Накладные расходы (служебные совещания с руководством, больничные, отпуска, ...)
  • Написание модульных тестов
  • Написание плана тестирования для всего приложения
  • Тестирование на уровне приложения

Это вся повседневная разработка программного обеспечения, с которой я могу справиться за 3 минуты, я уверен, что пропустил еще кое-что, но поможет ли это получить более полную картину того, откуда берутся эти оценки?

Не эксперт FP. Однако мы смотрим на ФП на данный момент. В частности, мы выполняем анализ FP против старых проектов, которые у нас есть метрики для усилий / стоимости и т. Д. Тогда мы можем оценить его полезность для нас в проектах оценки / размера.

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

Дальнейшая мысль - затраты / усилия на точку функции (т. Е. Функциональное требование) будут зависеть от нефункциональных требований, которые необходимы для системы. После того, как вы начнете снимать безопасность, доступность, производительность, регистрацию (и оповещение), ремонтопригодность, переносимость, нормативное соблюдение и т. Д., Стоимость / усилия на FP значительно возрастают. Теперь они не могут быть рассмотрением для приложения приложения одного пользователя. Но если это приложение важно для компании или потенциально их клиентов или широкой доли широкой общественности, необходимость учета тех нефункциональных требований, безусловно, увеличится.

Лично я нашел FPA вводить в заблуждение ... изначально.

Если у вас нет исторических данных о предыдущих проектах FPA предыдущих проектов, FPA может определенно оказаться чрезмерной оценкой всего, используя отраслевые стандарты.

Я узнал, что VAF является хорошим указателем для использования при работе с FPA. Хотя он дает вам вариант вариации 35% на вашем FP Count, который останавливает руководитель аналитика / проекта от включения этого в 50% вариации.

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

Поэтому я бы сказал, если вы используете лучший сценарий случая от -35% на нескончаемое количество, вы достигаете скорректированного количества FP ~ 64. Дает вам примерно 3 с половиной недели оценки. Из опыта я бы сказал, что приложение такого рода может быть сделано, наножно, но любые тщательные тестирования, отладки, документации и другие бумажные работы будут растягиваться дальше, а FP принимает во внимание. Очень возможно, что ваша команда делает 1 fp / hr. По нормальным стандартам, кодированию и тестированию учетных записей в течение 25% отчета FP, поэтому в этом случае даже принимая вашу цифру 99 кадров FPS, часть кодирования и тестирования допуску до 25 кадров FPS, что более понятно, учитывая ситуацию.

То, что я также видел на практике, состоит в том, что некоторые компании разработали свои собственные столы сложности, поэтому, если 3 вспомогательные и 10 ДЕТС означают среднюю сложность для одной компании, другая будет оценивать ее как низкую сложность. Это в значительной степени повлияет на последний счет FP.

Итак, используйте инструмент FP в качестве руководства и собирать столько данных для предыдущих проектов, как вы можете на самом деле начать полагаться на FPA, чтобы извлечь оценки стоимости и времени.

Как сбоку, я думаю, что оценки стоимости на простом программном обеспечении, как таковые, кажутся смешными сегодня, где аутсорсинг и фриланс - это путь. Большие компании, которые были в этом бизнесе, все еще взимаются смешно высокими для разработки программного обеспечения. Например, если вы хотите, чтобы инженер поддержки уровня 3 поможет вам с вашими серверами в хорошей хостинговой компании, они будут взимать 250 долларов в час, однако вы можете получить тот же совет от кого-то, находящихся в частности в мире в мире на 25 долларов США или даже 2,5 доллара.

Надеюсь, что мои 2 цента имеют некоторое использование для вас.

В моей предыдущей компании мы бы рассчитали, как это, особенно если кто-то хочет платить за это;)

Я практиковал FP в нескольких проектах и обнаружил, что он дает довольно точную оценку.Иногда он может быть завышен, а иногда и занижен в зависимости от типа приложения.Как правило, для научных применений FP может быть недооценен.FP обеспечивает время разработки всего проекта, а не только время на написание кода.Конечно, нет никаких действий по разработке, таких как настройка тестовой среды и т.д., и они должны оцениваться отдельно.Я не большой сторонник FP, но ценю его использование.Если оценка не точная, то при правильной практике (идентификация файлов и элементов записи) она, по крайней мере, подтверждает полноту ваших требований.

В некотором смысле, мы должны сказать, что FP хорош для средних и крупных проектов, масштабируемых выше 350-400 кадров в секунду.

Оплата, основанные на времени, приводит к более низкой производительности. Я помню проекты с платежом на основе времени, что я сделал много исследований для каждого аспекта проекта, в то время как если у него был метод оплаты на основе проекта, может быть, я этого не делал. Это бессознательный разум не этика. Лучшая практика состоит в том, чтобы сослаться на определение «проекта» (в течение ограниченного времени и бюджета) и принять решение на основе ограничений. Это не о самой работе, то есть вы платите за зонтик в дождливый день намного больше, чем когда вы покупаете нормально. Не беспокойтесь о том, что сделали и насколько это стоит. Сосредоточиться на ценности работы клиенту и его варианты.

Подключение значений из примера, который вы приведены в эту удобную онлайн-калькулятор функциональной точки (http://develessergeeks.com/funcentpontpoint.aspx.), который рассчитывает скорректированный FPS и учитывает различные другие весовые факторы, я получаю следующие результаты, при условии, что скорость производительности 2 кадров в секунду в час, поскольку система в примере настолько проста:

  1. Скорректированный FPS: 42.9
  2. Предполагаемое лицо месяца: 0,54

Предполагая 160 часов в рабочем месяце, это работает около 86,4 часа или примерно две рабочие недели для одного разработчика. Не пять недель, когда вы пришли к выводу на шаге 2. Учитывая, что развивающиеся системы для оплаты клиентов требуют, чтобы забрать немного больше внимания и усилиям, чем просто удавать какой-то код поздно ночью для своего собственного развлечения, я не думаю, что это необоснованная оценка в все.

Я имею в виду, не поймите меня неправильно, анализ FP в неправильных руках, вероятно, ужасная идея. Но если у вас есть фон разработчика, вы можете подать заявку на подсчет FPS и GUT, проверка различных весовых факторов, это не плохой способ получить разумную оценку, которая не основана на чистой фантазии, когда у вас нет подробных спецификаций дизайна , полностью задокументированные требования или подробный план проекта на уровне задач для работы. Но вы должны использовать здравый смысл, чтобы заставить его работать для вас.

Из моего опыта с несколькими метриками программного обеспечения функциональная точка действительно не является легкой метрикой. Если час / FP вещь так сильно колеблется, то в чем смысл, может быть, я мог бы пойти с пользовательскими историями, которые намного быстрее получить и возможно, почти как неопределенно.

Точка при имении функциональной точки анализа имеет какие-то правила / руководящие принципы, которые являются объективными и стандартными, так что он должен (в пределах определенной маржи) в конечном итоге, давая вам то же количество точек функций на приложении и / или проекте, независимо от Какой эксперт подсчитал его, если правила применяются последовательно и правильные. Продуктивность на функциональную точку, как вы обнаружены, очень надежна на многих факторах, таких как опыт работы, инструменты, язык программирования, платформы и т. Д. И т. Д. Поэтому отраслевые стандарты приятно знать, но в большинстве случаев совершенно бесполезны (в моем скромном мнениях ). Основная ценность в подсчете повторяющегося, создает вашу собственную «BASKNMARK» на основе вашей собственной истории производительности команды. Это, в свою очередь, поможет вам увидеть тенденции, а также помочь планировать и прогнозировать часы, необходимые для будущих изменений. Если вы ищете скорость, просто нанесите Global Count вместо подробных отсчетов. При выполнении нескольких приведенных примеров (вроде при подготовке к экзаменам) Вы заметите разницу между подробным количеством и глобальным количеством не достаточно большим, чтобы потерять сон (на%).

Эта дискуссия абсолютно вводит в заблуждение, поскольку вопрос уже предполагает FPA - это методика оценки усилий. Это не.

Функциональный размер (экспрессируется в точках функций) может быть одним из многих входных факторов для модели оценки (например, Cocomo). Не больше - но и не меньше, если мы согласны с тем, что «сумма» функциональных требований является усилием водителя для программных проектов.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top