Комплексная оценка эффективности разработки программных систем | Sailet

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

Аспектно-ориентированные библиотеки AspectJ

Сквозная функциональность актуальна в задачах:

  1. аутентификации и авторизации;
  2. криптографической конфиденциальности;
  3. поиска инвариантов и тестирования;
  4. многопоточного выполнения;
  5. протоколирования и профилирования (трассировки программы) и др.

От неопределенностей и сложностей не спасает и распространенная объектно-ориентированная методология ООПП. Поэтому решение ищут на основе АОПП (аспектно-ориентированном подходе, библиотеках AspectJ).

Стандарт IEEE 610.12 регламентирует базовые этапы и спецификации к проектированию, разработке, эксплуатации, сопровождению ПО. Релевантная оценка стоимости ПО – фактор важный, он влияет на проектные и исполнительские параметры, управляемость проекта (Project Management). Необходимо моделирование жизненного цикла проекта.

На стоимость ПО (растущей экспоненциально) повлияет релевантность методологии, в частности, продвигаемая в последнее время Agile-методология.

Эффективные методологии быстрой разработки программных комплексов

На релевантность проекта (комплекса) влияют различные факторы:

  1. аналитические неувязки при оценке (спецификации, стоимость, трудоемкость и др.);
  2. недооценка рисков проекта;
  3. отсутствие опыта, компетенций, адекватных методик;
  4. сжатый график проектных работ;
  5. неточности спецификаций, документации и др.

Методология Agile позволяет приближаться к цели проекта итерационной процедурой на основе тестирования и адаптивной корректировки результатов этапа.

Семейство методологий (технологий) Agile включает важные составляющие:

  • XP – экстремальное программирование с непрерывным, коротким циклом обратной связи, понимаемыми всеми метафорами и стандартами (Extreme Programming);
  • SCRUM – разработка с жестко фиксируемыми итерациями по времени, спринтами, инструментарием конечного пользователя (один из переводов – SCRibingUnifiedMethodology).

Методология ХР

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

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

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

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

В XP все работы (включая и тестирование) на итерации разрабатываются и анализируются «вертикально», а заказчик имеет возможность анализировать результат итерации, вносить соответствующие изменения, более того, пользоваться продуктом итерации, например «бета-гамма-…» версией. К тому же, стартует проект, возможно, с упрощённой версии, ведь модульный и ООП подходы – также инструментарий XP.

Методология SCRUM и сайтостроение

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

SCRUM определяет правила планирования/управления для спецификаций проекта с целью максимизации:

  1. прибылей от функциональности (без их «раздутия»);
  2. заинтересованности команды (каждого участника) в результате и их сплочённости;
  3. оперативности, адаптивности реагирования на сложившаяся итеративную ситуацию.

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

SCRUM адаптирует разработчиков к изменениям требований, как и продукт – к потребительским требованиям заказчика, используя обратные связи и расставляя приоритеты, учитывая возможности команды проекта эффективно. SCRUM-команда состоит из 5-9 профессионалов-программистов, креативных и инициативных. Её задачи – ориентирование на достижение цели в условиях ограниченности ресурсов, заданных сроков и качества.

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

Методология и модели оценки разработки ПО

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

По всем элементам, операциям определяем «доверительный интервал», например, 95%-ый. Отметим, что это высокий показатель. Выбирается, например, 65%. Для m%-ой значимости находим коэффициент постройки (по статистическим данным) по весовым коэффициентам, степени влияния характеристик, количеству учитываемых характеристик.

Например, к учитываемым характеристикам можно отнести:

  1. производительность;
  2. сложность (сетевой структуры, логическая);
  3. связность, распределённость (обработки данных);
  4. частоту транзакций;
  5. конечную эффективность;
  6. количество потребителей; обновляемость и др.

Решаем проблемы, например, отделив проблемы его бизнес-функциональности от проблем сквозной (общесистемной) функциональности, вносящей определенные неопределенности в проект.