Экономическая модель разработки ПО

Структура стоимости программного обеспечения. Использование строк кода LOC и функциональных точек в качестве единицы измерения размера программного продукта. Оценка затрат на разработку ПО. Описание жизненного цикла в конструктивной модели стоимости.

Рубрика Программирование, компьютеры и кибернетика
Вид контрольная работа
Язык русский
Дата добавления 13.10.2013
Размер файла 65,6 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru/

Контрольная работа

Тема 7

Экономическая модель разработки ПО

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

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

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

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

Из чего складывается стоимость ПО?

Структура стоимости программного обеспечения существенно зависит от типа ПО, применяемых методов его разработки и метода оценки. Так, многие авторы отмечают высокую долю стоимости этапа сопровождения. Для некоторых типов ПО она может составлять 60 и более процентов от общей стоимости. Между тем, этап сопровождения включает выполнение двух видов работ: исправление ошибок в программе (несоответствий первоначальным требованиям) и внесение изменений в программу (добавление новых требований). При другом подходе к оценке можно считать, что этап сопровождения на стоит оценивать отдельно, т.к. исправление ошибок можно отнести к продолжению тестирования, а внесение изменений - к новому проекту.

Типовое распределение стоимости между основными этапами (без сопровождения) выглядит следующим образом:

· 15% - спецификация - формулировка требований и условий разработки

· 25% - проектирование - разработка и верификация проекта

· 20% - разработка - кодирование и тестирование компонент

· 40% - интеграция и тестирование - объединение и сборочное тестирование продукта

Отклонения от этой схемы в зависимости от типа ПО выглядят следующим образом:

Для коробочного ПО характерна более высокая доля тестирования за счет сокращения, прежде всего, доли спецификации (до 5%)

Распределение стоимости заказного программного обеспечения зависит от его сложности. При сложном ПО также возрастает доля интеграции и тестирования, но за счет сокращения доли проектирования и разработки Доля спецификаций может возрастать. Сокращение доли проектирования и разработки достигается за счет применения опробованных проектных решений и повторного использования готовых компонент.

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

Для прогнозирования и планирования любых процессов или характеристик объектов (в частности программных средств) используются исходные данные двух типов:

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

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

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

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

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

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

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

· вследствие несовершенства методов оценивания ПС следует сравнивать оценки с действительными значениями технико-экономических показателей и использовать эти результаты для улучшения методов оценивания;

· программные проекты имеют тенденцию к изменению характеристик и экономических факторов и руководителю проекта необходимо идентифицировать эти изменения и выполнять реалистичное обновление оценок затрат.

Основными ресурсами у разработчиков при создании сложных комплексов программ являются:

· допустимые трудозатраты (стоимость) на разработку ПО с требуемым качеством;

· время - длительность полного цикла создания программного продукта;

· необходимое и доступное число специалистов соответствующей квалификации.

Потребность в этих ресурсах в наибольшей степени зависит от размера (масштаба) и сложности разрабатываемого программного средства. Уточнения размеров программного средства и его компонентов могут быть решены последовательно к концу детального проектирования, однако при этом сохраняется неопределенность оценки размера комплекса программ и его трудоемкости порядка 5 - 10%, связанная с тем, насколько хорошо программисты понимают спецификации, в соответствии с которыми они должны кодировать программу. При этом целесообразно учитывать, что:

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

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

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

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

Недостаточно достоверные оценки влекут проблемы взаимодействия разработчика с заказчиком и увеличивают степень риска проекта.

Оценивание размера ПО

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

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

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

В настоящее время при оценке размера ПО чаще всего пользуются двумя основными единицами измерения - строками программного кода (Lines of code, LOC) и функциональными точками.

В качестве единиц измерения также можно использовать точки свойств, количество «жирных точек» на диаграмме потока данных (Data flow diagram, DFD), количество сущностей на диаграмме сущностей, объем документации, количество объектов, атрибутов и служб на объектной диаграмме. Вне зависимости от того, оценивается ли конечный продукт, как в случае использования LOC, либо его некоторая абстракция или модель, оценке подвергается то, чего еще нет в природе. Поэтому оценивание размеров представляет значительные трудности.

Использование LOC в качестве единицы измерения размера программного продукта

LOC оценка представляет собой наиболее универсальную метрику, поскольку может использоваться при создании любых программных продуктов. Она проще и понятнее как для специалистов, так и для заказчиков и инвесторов. Например, если утверждается, что один компонент программной системы, состоящей из n компонентов, в среднем потребует написания около 1000 строк программного кода, то каждый в состоянии прикинуть ее общий размер и хотя бы примерно оценить трудозатраты, требующиеся для ее создания, исходя из предположения, что средняя производительность одного программиста по-прежнему составляет около 3000 строк кода в год.

Однако многие эксперты в области разработки программного обеспечения утверждают, что это плохая единица измерения. Наиболее существенный вопрос, который возникает при использовании LOC оценок, заключается в том, что же собой представляет одна строка программного кода? Кроме того, при использовании LOC в качестве единицы измерения возникают сомнения в достоверности результатов, так как не учитывается следующее:

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

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

· фактическое число LOC остается неизвестным до тех пор, пока проект не будет почти завершен. Поэтому LOC нельзя использовать для предварительной оценки усилий на разработку и построения плана-графика проекта;

· в программистском сообществе не достигнуто соглашения о методе подсчета строк кода. Языковые конструкции, используемые, например, в Visual C++, Ассемблере, Коболе или SQL, абсолютно различны. Метод же остается общим для любых приложений, в том числе использующих комбинацию различных языков;

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

В то же время для повышения достоверности оценок есть несколько достаточно простых рекомендаций:

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

· Учитывайте все выполняемые операторы. Конечный пользователь может не иметь возможности практически использовать каждый оператор, но все операторы должны поддерживаться данным продуктом, в том числе и утилитами.

· Определения данных учитывайте лишь один раз.

· Не учитывайте строки, содержащие комментарии.

· Не учитывайте отладочный код либо другой временный код (пробное ПО, средства тестирования и пр.).

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

На практике при оценке размера больших программных систем чаще пользуются показателем тысяч строк исходного кода KSLOC. Эта метрика чаще всего используется при оценках производительности, которая рассчитывается как KSLOC/SM, где SM - staff-month (человеко-месяцы).

Оценка показателя LOC с помощью экспертных оценок и восходящего суммирования

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

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

Этот показатель можно улучшить, если каждый оценщик укажет не одно, а три возможных значения размера: пессимистическое, оптимистическое и более или менее реалистическое. Затем к реалистическому значению, умноженному на 4, добавляется оптимистическая и пессимистическая оценки, и вся сумма делится на 6.

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

Например, если некоторый объект, отображенный на структуре WBS, может занимать от 200 до 400 строк кода и скорее всего его размер ближе к 200, то используя предложенный подход можно получить следующую оценку:

(200+(250*4)+400)/6 = 266 LOC

Оценка количества LOC по аналогии

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

Например, у нас имеется уже готовый модуль А, размер которого составляет 2345 LOC. Мы хотим создать новый модуль, который будет во многом схож с модулем А, но в него будут добавлены некоторые дополнительные свойства. Кроме того, мы придумали как сделать программный код более компактным. В результате этого размер модуля А' может быть оценен в 3000 LOC.

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

Преимущества использования LOC в качестве единицы измерения

· Эти единицы широко распространены и могут адаптироваться.

· Они позволяют проводить сопоставление методов измерения размера и производительности в различных группах разработчиков.

· Непосредственно связаны с конечным продуктом.

· Единицы LOC могут быть оценены еще до завершения проекта.

· Оценка размеров ПО производится с учетом точки зрения разработчиков.

· Действия по непрерывному улучшения базируются на количественных оценках. При этом спрогнозированный размер может быть легко сопоставлен с реальным размером на этапе постпроектного анализа. Это позволяет экспертам накапливать опыт и улучшать сами методы оценки.

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

Недостатки, связанные с применением LOC - оценок

· Данные единицы измерения сложно применять на ранних стадиях жизненного цикла, когда высок уровень неопределенности.

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

· Применение методов оценки с помощью количества строк не регламентируется промышленными стандартами, например ISO.

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

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

· При подсчете LOC - единиц следует различать автоматически сгенерированный код и написанный вручную. Это сильно затрудняет применение автоматических методов подсчета.

· Показатели LOC не могут осуществляться при нормализации в случае, если использовались разные платформы или типы языков программирования.

· Единственным способом получения LOC - оценки является сравнение с аналогичными разработками или экспертные мнения, а эти оценки изначально не относятся к числу точных.

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

Часто производительность труда программистов оценивается по числу производимых строк кода, а это не всегда верно. Если программист вместо 200 строк в месяц напишет 250, то это не значит, что он точно стал лучше работать и заслуживает поощрения. Более правильно было бы учитывать не только количество написанного кода, но и его качество, что можно сделать с помощью применения следующей формулы:

Количество дефектов / количество строк кода

Фаза кодирования в большинстве проектов занимает от 7% до 20% трудозатрат, поэтому более важным является качество кода, а не его объем.

Использование функциональных точек в качестве единиц измерения размера программ

Первой и наиболее удачной альтернативой методу подсчета исходных строк кода стала разработанная в 1979 году Алланом Альбрехтом из IBМ методология, названная «Анализ показателей функциональности» (FPA, от Function Points Analysis). В ее основе лежит взгляд на ПС извне, с позиций пользователя системы, а не «со стороны» ее внутренних свойств (таких, как LOC). В результате анализа исходных требований к ПС и выяснения реальных потребностей пользователей определяется объем функциональных возможностей системы, показателями которых служат функции обработки информации настолько низкого уровня, насколько они укладываются в систему мышления пользователей, а кроме функций - данные, которые эти функции обрабатывают. Таким образом, методология FPA базируется на идее декомпозиции функций и данных до предельно допустимого (с точки зрения пользователя) уровня. Объем функциональных возможностей ПС (далее просто функциональный размер) определяется в так называемых условных единицах функциональности FP - от Function Points.

В течение пяти лет с момента появления, методология FPA и метод расчета размера отшлифовывались А. Альбрехтом и проходили практическую апробацию, а в середине 80-х годов была создана Международная группа пользователей показателей функциональности (IFPUG, от International Function Points User Group), которая и поддерживает дальнейшую эволюцию метода.

Метод функциональных точек позволяет решать следующие задачи:

· Оценивать категории пользовательских бизнес-функций.

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

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

В методе функциональных точек используется 5 информационных характеристик.

1.Количество внешних вводов. Подсчитываются все вводы пользователя, по которым поступают разные прикладные данные. Вводы должны быть отделены от запросов, которые подсчитываются отдельно.

2.Количество внешних выводов. Подсчитываются все выводы, по которым к пользователю поступают результаты, вычисленные программным приложением. В этом контексте выводы означают отчеты, экраны, распечатки, сообщения об ошибках. Индивидуальные единицы данных внутри отчета отдельно не подсчитываются.

3.Количество внешних запросов. Под запросом понимается диалоговый ввод, который приводит к немедленному программному ответу в форме диалогового вывода. При этом диалоговый ввод в приложении не сохраняется, а диалоговый вывод не требует выполнения вычислений. Подсчитываются все запросы -- каждый учитывается отдельно.

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

5.Количество внешних интерфейсных файлов. Подсчитываются все логические файлы из других приложений, на которые ссылается данное приложение.

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

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

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

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

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

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

Примеры информационных характеристик приведены в таблице 1

Табл.1. Примеры информационных характеристик

Информационная характеристика

Элементы данных

Внешние Вводы

Внешние Выводы

Внешние Запросы

Поля ввода данных, сообщения об ошибках, вычисляемые значения, кнопки

Поля данных в отчетах, вычисляемые значения, сообщения об ошибках, заголовки столбцов, которые читаются из внутреннего файла

Вводимые элементы: поле, используемое для поиска, щелчок мыши. Выводимые элементы -- отображаемые на экране поля

Правила учета элементов данных из графического интерфейса пользователя приведены в таблице 2.

Табл. 2. Учет элементов данных из графического интерфейса пользователя

Элемент данных

Правило учета

Группа радиокнопок

Группа флажков (переключателей)

Командные кнопки

Списки

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

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

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

Список может быть внешним запросом, но результат запроса может быть элементом данных внешнего ввода

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

Для транзакций ранжирование основано на количестве ссылок на файлы и количестве типов элементов данных. Для файлов ранжирование основано на количестве типов элементов-записей и типов элементов данных, входящих в файл.

Ранги и оценки уровня сложности для различных информационных элементов приведены в таблицах 3 - 7.

Табл. 3. Ранг и оценка сложности внешних вводов

Ссылки на файлы

Элементы данных

1-4

5-15

>15

0-1

2

>2

Низкий (3)

Низкий (3)

Средний (4)

Низкий (3)

Средний (4)

Высокий (6)

Средний (4)

Высокий (6)

Высокий (6)

Табл. 4. Ранг и оценка сложности внешних выводов

Ссылки на файлы

Элементы данных

1-4

5-19

>19

0-1

2-3

>3

Низкий (4)

Низкий (4)

Средний (5)

Низкий (4)

Средний (5)

Высокий (7)

Средний (5)

Высокий (7)

Высокий (7)

Табл. 5. Ранг и оценка сложности внешних запросов

Ссылки на файлы

Элементы данных

1-4

5-19

>19

0-1

2-3

>3

Низкий (3)

Низкий (3)

Средний (4)

Низкий (3)

Средний (4)

Высокий (6)

Средний (4)

Высокий (6)

Высокий (6)

Табл. 6. Ранг и оценка сложности внутренних логических файлов

Типы элементов-записей

Элементы данных

1-19

20-50

>50

1

2-5

>5

Низкий (7)

Низкий (7)

Средний (10)

Низкий (7)

Средний (10)

Высокий (15)

Средний (10)

Высокий (15)

Высокий (15)

Табл. 7. Ранг и оценка сложности внешних интерфейсных файлов

Типы элементов-записей

Элементы данных

1-19

20-50

>50

1

2-5

>5

Низкий (5)

Низкий (5)

Средний (7)

Низкий (5)

Средний (7)

Высокий (10)

Средний (7)

Высокий (10)

Высокий (10)

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

· Подсчитываются функции для каждой категории (вводы, выводы, запросы, структуры данных, интерфейсы).

· Устанавливаются требования для каждой категории.

· Определяется сложность каждой функции (высокая, средняя, низкая).

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

Исходные данные для расчета сводятся в табл. 8.

Табл. 8. Исходные данные для расчета FP-метрик

Имя характеристики

Ранг, сложность, количество

Низкий

Средний

Высокий

Итого

Внешние вводы

__x3 = __

__x4 = __

__x6 = __

= __

Внешние выводы

__x4 = __

__x5 = __

__x7 = __

= __

Внешние запросы

__х3 = __

__x4 = __

__x6 = __

= __

Внутренние логические файлы

Внешние интерфейсные файлы

__x7 = __

__x5 = __

__x 1__= __

__x7 = __

__x15 = __

__x1__ = __

= __

= __

Общее количество

= __

Количество функциональных точек вычисляется по формуле

FP = Общее количество * (0,65+ 0,01 *), (2.1)

где Fi -- коэффициенты регулировки сложности.

Каждый коэффициент может принимать следующие значения: 0 -- нет влияния, 1 -- случайное, 2 -- небольшое, 3 -- среднее, 4 -- важное, 5 -- основное.

Значения выбираются эмпирически в результате ответа на 14 вопросов, которые характеризуют системные параметры приложения (табл. 9).

Табл. 9. Определение системных параметров приложения

Системный параметр

Описание

1

Передачи данных

Сколько средств связи требуется для передачи или обмена информацией с приложением или системой?

2

Распределенная обработка данных

Как обрабатываются распределенные данные и функции обработки?

3

Производительность

Нуждается ли пользователь в фиксации времени ответа или производительности?.

4

Распространенность используемой конфигурации

Насколько распространена текущая аппаратная платформа, на которой будет выполняться приложение?

5

Скорость транзакций

Как часто выполняются транзакции? (каждый день, каждую неделю, каждый месяц)

6

Оперативный ввод данных

Какой процент информации надо вводить в режиме онлайн?

7

Эффективность работы конечного пользователя

Приложение проектировалось для обеспечения эффективной работы конечного пользователя?

8

Оперативное обновление

Как много внутренних файлов обновляется в онлайновой транзакции?

9

Сложность обработки

Выполняет ли приложение интенсивную логическую или математическую обработку?

10

Повторная используемость

Приложение разрабатывалось для удовлетворения требований одного или многих пользователей?

11

Легкость инсталляции

Насколько трудны преобразование и инсталляция приложения?

12

Легкость эксплуатации

Насколько эффективны и/или автоматизированы процедуры запуска, резервирования и восстановления?

13

Разнообразные условия размещения

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

14

Простота изменений

Была ли спроектирована, разработана и поддержана в приложении простота изменений?

Производится преобразование функциональных точек в единицы LOC с помощью таблицы 10.

Табл. 10. Пересчет FP-оценок в LOC-оценки

Язык программирования

Количество операторов на один FP

Ассемблер

С

320

128

Кобол

106

Фортран

106

Паскаль

90

C++

64

Java

53

Ada 95

49

Visual Basic

32

Visual C++

34

Delphi Pascal

29

Smalltalk

22

Perl

21

HTML3

15

LISP

64

Prolog

64

Miranda

40

Haskell

38

Экономическая модель разработки ПО

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

Трудоемкость = (Персонал)(Среда)(Качество)(Размер Процесс), где

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

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

Среда - состоит из инструментов и методов, используемых для эффективной разработки ПО и автоматизации процесса. Т.е. фактически, это приобретенная или потерянная эффективность вследствие уровня автоматизации процесса (больший уровень автоматизации приводит к уменьшению усилий и повышению эффективности);

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

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

Оценка затрат на разработку ПО

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

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

Отсюда вывод: недостаточно достоверные оценки влекут проблемы взаимодействия разработчика с заказчиком и увеличивают степень риска проекта.

Оценка затрат на разработку ПО предполагает выполнение следующих четырех шагов:

1. оценка размера разрабатываемого продукта;

2. оценка трудоемкости в человеко-месяцах или человеко-часах;

3. оценка продолжительности проекта в календарных месяцах;

4. оценка стоимости проекта.

Методы, используемые для оценки размера, разбирались выше.

Оценка трудоемкости проекта производится на основании его размера. Для такой оценки также существуют два основных способа:

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

· в организации регулярно документируются результаты предыдущих проектов;

· по крайней мере один из предыдущих проектов (а лучше если несколько) имеет аналогичный характер и размер;

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

2. Если предыдущий подход по разным причинам оказывается неприменимым, следует использовать один из известных алгоритмических методов оценивания (например, модель СОСОМО или метод функциональных точек).

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

Модель оценки стоимости СОСОМО

На сегодняшний день для оценки стоимости ПО используется несколько различных моделей. Одной из самых популярных, открытых и хорошо документированных моделей оценки стоимости ПО является СОСОМО (COnstructive COst MOdel -- конструктивная модель стоимости), разработанная Барри Боэмом. Эволюция СОСОМО отражает то, каким образом эволюционировала экономика ПО последние 30 лет.

Оценочные уравнения СОСОМО имеют следующую форму:

Работа = С1* EAF *(Размер)р1

Время = С2*(Работа)р2

где Работа -- количество человеко-месяцев;

С1 -- масштабирующий коэффициент;

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

Размер -- размер конечного продукта (кода, созданного человеком), измеряемый в исходных инструкциях (DSI, delivered source instructions), которые необходимы для реализации требуемой функциональной возможности;

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

Время -- общее количество месяцев;

С2 -- масштабирующий коэффициент для сроков исполнения;

Р2 -- показатель степени, который характеризует инерцию и распараллеливание, присущие управлению разработкой ПО.

Исходная модель СОСОМО

Исходная модель СОСОМО [Boehm, 1981] явилась прорывом в разработке ПО в начале 1980-х гг. -- частично из-за присущей ей технологической составляющей, но прежде всего потому, что она представляла собой четко определенную схему взаимодействия для достижения соглашений и установки приоритетов, касающихся управления ценой и сроками создания ПО. Модель используется в том случае, когда проект требует большого объема программирования и необходимо спланировать и обосновать оценки стоимости и сроков создания ПО. Огромным преимуществом модели СОСОМО является то, что она позволяет получать оценку, подводить под нее заслуживающее доверия основание, судить о ее сильных и слабых сторонах и вести переговоры с заинтересованными сторонами.

Исходная модель СОСОМО основывалась на базе данных по 56 проектам. Три ее варианта отражали различия между процессами в разных областях ПО. Эти варианты были описаны как обычное, частично независимое и встроенное ПО. Проекты по созданию обычного ПО характеризовались как внутренние, не очень сложные разработки, процесс осуществления которых был довольно гибким. Функциональные возможности, качество, стоимость и сроки могли свободно меняться, при этом накладные расходы оказывались минимальными. Системы, относящиеся к разряду встроенных, представляли собой типичную группу проектов для обороны: преобладающими проблемами были вопросы сложности, надежности и работы в реальном времени, а контрактная природа этого бизнеса приводила к строгому процессу. Функциональные возможности, качество, стоимость и сроки жестко контролировались, а изменения требовали согласования с множеством заинтересованных сторон. Промежуточный вариант частично независимых проектов находится посредине между двумя этими вариантами.

Формулы для оценки основных работ и сроков

Исходные соотношения для оценки стоимости в модели СОСОМО имели следующий вид:

Обычный вариант

Работа = 3,2*ЕАF*(Размер)1,05

Время (в месяцах) = 2,5*(Работа)0,38

Промежуточный вариант

Работа = 3,0* ЕАF *(Размер)1,12

Время (в месяцах) = 2,5*(Работа)0,35

Встроенный вариант

Работа = 2,8* ЕАF *(Размер)1,2

Время (в месяцах) = 2,5*(Работа)0,32,

где Работа -- количество человеко-месяцев;

EAF -- результат учета 15 уточняющих факторов;

Размер -- число исходных инструкций конечного продукта (измеряемое в тысячах строк кода).

Множитель, который является уточняющим фактором работ (effort adjustment factor, EAF), представляет собой комбинацию многих параметров. Эти параметры позволяют характеризовать и нормировать проекты относительно проектов, находящихся в базе данных СОСОМО. Значения параметров приведены в таблице 3. Каждый параметр оценивается как очень низкий, низкий, номинальный, высокий или очень высокий. Влияние значения каждого параметра определяется как множитель, который обычно изменяется в диапазоне от 0.5 до 1.5. Результат учета этих 15-ти параметров и используется в качестве коэффициента в уравнении стоимости.

Допущения

В формулах модели СОСОМО используются некоторые допущения. Исходные инструкции конечного продукта включают в себя все (кроме комментариев) строки кода, обрабатываемого компьютером. Начало жизненного цикла проекта совпадает с началом разработки продукта, окончание -- совпадает с окончанием приемочного тестирования, завершающего стадию интеграции и тестирования. (Работа и время, затрачиваемые на анализ требований, оцениваются отдельно как дополнительный процент от разработки в целом.) Виды деятельности включают в себя только работы, направленные непосредственно на выполнение проекта, в них не входят обычные вспомогательные виды деятельности, такие как административная поддержка, техническое обеспечение и капитальное оборудование. Человеко-месяц состоит из 152 часов. Проект управляется надлежащим образом, в нем используются стабильные требования.

Табл. 7.11. Значение драйверов затрат в модели COCOMO

Идентификатор

Уточняющий фактор работ

Диапазон изменения параметра

Очень низкий

Низкий

Номинальный

Высокий

Очень высокий

Атрибуты программного продукта

RELY

Требуемая надежность

0,75-1,40

0,75

0,86

1,0

1,15

1,4

DATA

Размер базы данных

0,94-1,16

0,94

1,0

1,08

1,16

CPLX

Сложность продукта

0,70-1,65

0,7

0,85

1,0

1,15

1,3

Атрибуты компьютера

TIME

Ограничение времени выполнения

1,00-1,66

1,0

1,11

1,50,

STOR

Ограничение объема основной памяти

1,00-1,56

1,0

1,06

1,21

VIRT

Изменчивость виртуальной машины

0,87-1,30

0,87

1,0

1,15

1,30

TURN

Время реакции компьютера

0,87-1,15

0,87

1,0

1,07

1,15

Атрибуты персонала

ACAP

Способности аналитика

1,46-0,71

1,46

1,19

1,0

0,86

0,71

AEXP

Знание приложений

1,29-0,82

1,29

1,15,

1,0

0,91

0,82

PCAP

Способности программиста

1,42-0,70

1,42

1,17

1,00

0,86

0,7

VEXP

Знание виртуальной машины

1,21-0,90

1,21

1,1

1,0

0,9

LEXP

Знание языка программирования

1,14-0,95

1,14

1,07

1,0

0,95

Атрибуты проекта

MODP

Использование современных методов

1,24-0,82

1,24

1,1

1,0

0,91

0,82

TOOL

Использование программных инструментов

1,24-0,83

1,24

1,1

1,0

0,91

0,82

SCED

Требуемые сроки разработки

1,23-1,10

1,23

1,08

1,0

1,04

1,1

Описание жизненного цикла в модели СОСОМО

Жизненный цикл в модели СОСОМО состоит из пяти основных стадий: планирование и определение требований, проектирование продукта, детальное проектирование, кодирование и тестирование отдельных модулей, интеграция и тестирование. Модель СОСОМО дает рекомендации по распределению работ и времени по основным стадиям традиционной «водопадной» модели. Эти рекомендации в некоторой степени зависят от варианта и масштаба; в таблице 7.12 приводится стандартное распределение для большого встроенного проекта. Модель СОСОМО позволяет оценить работу и время, необходимые для получения решения (разработки продукта с помощью итераций и тестирования). Затраты на формулировку проблемы (планирование и определение требований) оцениваются в виде дополнительного процента от и сверх работы и времени, затрачиваемых на разработку.

Табл. 7.12. Распределение работ и времени по стадиям жизненного цикла при традиционном походе

Вид деятельности

Работа (%)

Время (%)

Планирование и определение требований

(+8)

(+36)

Проектирование продукта

18

36

Детальное проектирование

25

18

Кодирование и тестирование отдельных модулей

26

18

Интеграция и тестирование

31

28

Декомпозиция работ по созданию ПО

Основной задачей при планировании проекта является определение WBS-Work Breakdown Structure (структуры распределения работ). Декомпозиция работ при традиционном подходе обычно строится вокруг подсистем продукта на более высоких уровнях и вокруг подробного плана работ на более низких. К стандартным видам деятельности, оцениваемым по модели СОСОМО и включаемым в WBS по созданию ПО, относятся: анализ требований, проектирование продукта, программирование, планирование тестирования, верификация и аттестация, канцелярские функции проекта (управление и администрирование), управление конфигурацией, обеспечение качества и создание руководств. Модель СОСОМО также рекомендует самый верхний уровень распределения работ по различным видам деятельности WBS. Еще раз обращаем внимание на то, что эти значения зависят от варианта и масштаба. В таблице 7.13 показаны примерные ожидаемые затраты на каждый вид деятельности WBS для большого проекта (вариант встроенного ПО). Важное предостережение: в модели СОСОМО вид деятельности, называемый «программированием», включает в себя детальное проектирование, кодирование, тестирование модулей и интеграцию.

Таблица 7.13. Стандартное распределение работ по видам деятельности WBS в модели СОСОМО

Вид деятельности

Бюджет (%)

Анализ требований

4

Проектирование продукта

12


Подобные документы

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.