stringtranslate.com

Прототипирование программного обеспечения

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

Прототип обычно имитирует лишь некоторые аспекты конечного продукта и может полностью отличаться от него.

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

Обзор

Цель прототипа — позволить пользователям программного обеспечения оценить предложения разработчиков по дизайну конечного продукта, фактически опробовав их, вместо того, чтобы интерпретировать и оценивать дизайн на основе описаний. Прототипирование программного обеспечения обеспечивает понимание функций программного обеспечения и потенциальных угроз или проблем. [3] Прототипирование также может использоваться конечными пользователями для описания и подтверждения требований, которые не были рассмотрены, и это может быть ключевым фактором в коммерческих отношениях между разработчиками и их клиентами. [4] В частности, проектирование взаимодействия активно использует прототипирование с этой целью.

Этот процесс контрастирует с монолитным циклом разработки 1960-х и 1970-х годов, когда сначала создавалась вся программа, а затем устранялись любые несоответствия между проектированием и реализацией, что приводило к более высоким затратам на программное обеспечение и плохим оценкам времени и стоимости. [ необходима цитата ] Монолитный подход был назван методом «Убийства (программного) дракона», поскольку он предполагает, что проектировщик и разработчик программного обеспечения — это один герой, который должен в одиночку убить всего дракона. Прототипирование также может избежать больших расходов и трудностей, связанных с необходимостью изменения готового программного продукта.

Практика прототипирования — один из моментов, которые Фредерик П. Брукс поднимает в своей книге 1975 года «Мифический человеко-месяц» и в своей статье, посвященной 10-летнему юбилею, « Серебряной пули нет ».

Ранним примером крупномасштабного программного прототипирования была реализация транслятора Ada/ED Нью-Йоркского университета для языка программирования Ada . [5] Он был реализован в SETL с целью создания исполняемой семантической модели для языка Ada, подчеркивая ясность дизайна и пользовательского интерфейса, а не скорость и эффективность. Система Ada/ED Нью-Йоркского университета была первой проверенной реализацией Ada, сертифицированной 11 апреля 1983 года. [6]

Контур

Процесс создания прототипа включает в себя следующие этапы: [ необходима ссылка ]

  1. Определить основные требования
    Определите основные требования, включая желаемую входную и выходную информацию. Детали, такие как безопасность, обычно можно игнорировать.
  2. Разработать начальный прототип
    Разработан первоначальный прототип, включающий только пользовательские интерфейсы. (См. Горизонтальный прототип ниже)
  3. Обзор
    Заказчики, включая конечных пользователей, изучают прототип и предоставляют отзывы о возможных дополнениях или изменениях.
  4. Пересмотреть и улучшить прототип
    Используя обратную связь, можно улучшить как спецификации, так и прототип. Могут потребоваться переговоры о том, что входит в объем контракта/продукта. Если вносятся изменения, может потребоваться повторение шагов № 3 и № 4.

Размеры

Нильсен суммирует различные аспекты прототипов в своей книге «Инженерия удобства использования» :

Горизонтальный прототип

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

Вертикальный прототип

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

Типы

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

Одноразовое прототипирование

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

Быстрое прототипирование подразумевает создание рабочей модели различных частей системы на очень ранней стадии, после относительно короткого исследования. Метод, используемый при его создании, обычно довольно неформальный, наиболее важным фактором является скорость, с которой предоставляется модель. Затем модель становится отправной точкой, с которой пользователи могут пересмотреть свои ожидания и уточнить свои требования. Когда эта цель достигнута, модель прототипа «выбрасывается», и система формально разрабатывается на основе выявленных требований. [7]

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

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

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

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

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

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

  1. Напишите предварительные требования
  2. Разработать прототип
  3. Пользователь испытывает/использует прототип, определяет новые требования
  4. При необходимости повторите.
  5. Напишите окончательные требования

Эволюционное прототипирование

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

При разработке системы с использованием эволюционного прототипирования система постоянно совершенствуется и перестраивается.

«…эволюционное прототипирование признает, что мы не понимаем всех требований, и создает только те, которые хорошо понятны». [9]

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

Чтобы система была полезной, она должна развиваться в процессе использования в предполагаемой среде эксплуатации. Продукт никогда не «готов»; он всегда развивается по мере изменения среды использования… мы часто пытаемся определить систему, используя нашу наиболее знакомую систему отсчета — где мы сейчас находимся. Мы делаем предположения о том, как будет вестись бизнес, и о технологической базе, на которой будет реализован бизнес. Принимается план по развитию возможностей, и рано или поздно что-то похожее на задуманную систему будет предоставлено. [10]

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

«В среде прототипирования нет ничего необычного в том, что пользователь применяет первоначальный прототип на практике, ожидая более проработанную версию… Пользователь может решить, что «несовершенная» система лучше, чем вообще никакой системы» [7] .

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

Чтобы минимизировать риск, разработчик не реализует плохо понятые функции. Частичная система отправляется на сайты клиентов. По мере того, как пользователи работают с системой, они обнаруживают возможности для новых функций и направляют запросы на эти функции разработчикам. Затем разработчики принимают эти запросы на улучшение вместе со своими собственными и используют надежные методы управления конфигурацией для изменения спецификации требований к программному обеспечению, обновления дизайна, перекодирования и повторного тестирования. [11]

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

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

Экстремальное прототипирование

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

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

Преимущества

Использование прототипирования при разработке программного обеспечения имеет множество преимуществ — некоторые из них ощутимы, некоторые абстрактны. [13]

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

Улучшенное и возросшее участие пользователей : прототипирование требует участия пользователей и позволяет им видеть и взаимодействовать с прототипом, что позволяет им предоставлять более качественную и полную обратную связь и спецификации. [7] Наличие прототипа, изучаемого пользователем, предотвращает множество недоразумений и недопониманий, которые возникают, когда каждая сторона считает, что другая понимает то, что они сказали. Поскольку пользователи знают проблемную область лучше, чем кто-либо в команде разработчиков, возросшее взаимодействие может привести к конечному продукту, который имеет более высокое материальное и нематериальное качество. Конечный продукт с большей вероятностью удовлетворит желание пользователя по внешнему виду, ощущениям и производительности.

Недостатки

Использование или, возможно, неправильное использование прототипирования также может иметь недостатки.

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

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

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

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

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

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

Распространенной проблемой при внедрении технологии прототипирования являются высокие ожидания производительности при недостаточных усилиях за кривой обучения. В дополнение к обучению использованию техники прототипирования, часто упускается из виду необходимость разработки корпоративной и проектной базовой структуры для поддержки технологии. Если эта базовая структура не учитывается, часто может возникнуть более низкая производительность. [14]

Применимость

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

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

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

Прототипирование особенно хорошо подходит для проектирования хороших интерфейсов человек-компьютер . «Одним из наиболее продуктивных применений быстрого прототипирования на сегодняшний день является его использование в качестве инструмента для итеративной разработки пользовательских требований и проектирования интерфейсов человек-компьютер». [8]

Метод разработки динамических систем

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

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

Четыре категории прототипов, рекомендованные DSDM:

Жизненный цикл DSDM прототипа включает в себя:

  1. Определить прототип
  2. Согласиться с планом
  3. Создать прототип
  4. Обзор прототипа

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

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

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

Конкретная методология состоит из следующих шагов: [9]

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

Развитие эволюционных систем

Разработка эволюционных систем — это класс методологий, которые пытаются формально реализовать эволюционное прототипирование. Один конкретный тип, называемый Systemscraft, описан Джоном Кринионом в его книге Разработка эволюционных систем .

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

Systemscraft не был разработан как жесткий подход к процессу разработки по принципу «поваренной книги». Сейчас общепризнанно, что хорошая методология должна быть достаточно гибкой, чтобы ее можно было приспособить к любым условиям и ситуациям... [7]

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

Эволюционно быстрое развитие

Технология Evolutionary Rapid Development (ERD) [16] была разработана Консорциумом по производительности программного обеспечения, агентом по разработке и интеграции технологий Управления информационных технологий Агентства перспективных исследовательских проектов Министерства обороны США (DARPA).

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

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

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

Процесс ERD структурирован для использования продемонстрированной функциональности, а не бумажных продуктов в качестве способа для заинтересованных сторон сообщать о своих потребностях и ожиданиях. Центральным для этой цели быстрой поставки является использование метода « временных рамок ». Временные рамки — это фиксированные периоды времени, в течение которых должны быть выполнены определенные задачи (например, разработка набора функциональных возможностей). Вместо того, чтобы позволить времени расширяться для удовлетворения некоторого неопределенного набора целей, время фиксируется (как в календарных неделях, так и в человеко-часах) и определяется набор целей, которые реалистично могут быть достигнуты в рамках этих ограничений. Чтобы не допустить вырождения разработки в « случайное блуждание », определяются долгосрочные планы для руководства итерациями. Эти планы дают видение всей системы и устанавливают границы (например, ограничения) для проекта. Каждая итерация в рамках процесса проводится в контексте этих долгосрочных планов.

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

Инструменты

Эффективное использование прототипирования требует, чтобы организация имела соответствующие инструменты и персонал, обученный использовать эти инструменты. Инструменты, используемые при прототипировании, могут варьироваться от отдельных инструментов, таких как языки программирования 4-го поколения, используемые для быстрого прототипирования, до сложных интегрированных инструментов CASE . Часто используются визуальные языки программирования 4-го поколения , такие как Visual Basic и ColdFusion, поскольку они дешевы, хорошо известны и относительно просты и быстры в использовании. Инструменты CASE, поддерживающие анализ требований, такие как среда разработки требований (см. ниже), часто разрабатываются или выбираются военными или крупными организациями. Также разрабатываются объектно-ориентированные инструменты, такие как LYMB из Центра исследований и разработок GE . Пользователи могут сами прототипировать элементы приложения в электронной таблице .

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

Генераторы экранов, инструменты проектирования и фабрики программного обеспечения

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

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

Определение приложения или программное обеспечение для моделирования

Новый класс программного обеспечения, называемого программным обеспечением определения приложений или моделирования, позволяет пользователям быстро создавать легкие, анимированные симуляции другой компьютерной программы без написания кода . Программное обеспечение моделирования приложений позволяет как техническим, так и нетехническим пользователям испытывать, тестировать, сотрудничать и проверять смоделированную программу, а также предоставляет отчеты, такие как аннотации , снимки экрана и схемы . Как метод спецификации решения, моделирование приложений находится между малорискованными, но ограниченными, текстовыми или чертежными макетами (или каркасами ), иногда называемыми прототипированием на бумажной основе , и трудоемкими, высокорискованными прототипами на основе кода , что позволяет специалистам по программному обеспечению проверять требования и выбор дизайна на ранних этапах, до начала разработки. При этом риски и затраты, связанные с внедрением программного обеспечения, могут быть значительно снижены. [17]

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

Требования к инженерной среде

«Среда проектирования требований (REE), разрабатываемая в Римской лаборатории с 1985 года, предоставляет интегрированный набор инструментов для быстрого представления, построения и выполнения моделей критических аспектов сложных систем». [18]

В настоящее время среда разработки требований используется ВВС США для разработки систем. Она:

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

REE состоит из трех частей. Первая часть, называемая proto, представляет собой инструмент CASE, специально разработанный для поддержки быстрого прототипирования. Вторая часть называется Rapid Interface Prototyping System или RIP и представляет собой набор инструментов, облегчающих создание пользовательских интерфейсов. Третья часть REE представляет собой пользовательский интерфейс для RIP и proto, который является графическим и предназначен для простоты использования.

Rome Laboratory, разработчик REE, намеревался поддержать свою внутреннюю методологию сбора требований. Их метод состоит из трех основных частей:

В 1996 году Rome Labs заключила контракт с Software Productivity Solutions (SPS) на дальнейшее усовершенствование REE с целью создания «REE коммерческого качества, которая поддерживает спецификацию требований, моделирование, прототипирование пользовательского интерфейса, сопоставление требований с аппаратной архитектурой и генерацию кода...» [19] Эта система получила название Advanced Requirements Engineering Workstation (рабочая станция разработки расширенных требований) или AREW.

Нереляционные среды

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

ПСДЛ

PSDL — это язык описания прототипов для описания программного обеспечения реального времени. [20] Сопутствующий набор инструментов — CAPS (Computer Aided Prototyping System). [21] Прототипирование систем программного обеспечения с жесткими требованиями реального времени является сложной задачей, поскольку временные ограничения вводят зависимости от реализации и оборудования. PSDL решает эти проблемы, вводя абстракции управления, которые включают декларативные временные ограничения. CAPS использует эту информацию для автоматической генерации кода и связанных с ним графиков реального времени, мониторинга временных ограничений во время выполнения прототипа и моделирования выполнения в пропорциональном реальном времени относительно набора параметризованных аппаратных моделей. Он также предоставляет предположения по умолчанию, которые позволяют выполнять неполные описания прототипов, интегрирует создание прототипа с репозиторием повторного использования программного обеспечения для быстрой реализации эффективных реализаций и обеспечивает поддержку быстрой эволюции требований и проектов. [22]

Ссылки

  1. ^ "Software Prototyping UK | Разработка прототипов программного обеспечения". www.bespokesoftwaredevelopment.com . Получено 28.01.2024 .
  2. ^ Тодд Гримм: Человеческое состояние: обоснование быстрого прототипирования. Технологии сжатия времени, т. 3, № 3. Accelerated Technologies, Inc. Май 1998 г. Страница 1. [1]
  3. ^ "Прототипирование программного обеспечения - INGSOFTWARE". ingsoftware.com . Получено 2018-06-27 .
  4. ^ Смит МФ Прототипирование программного обеспечения: внедрение, практика и управление . McGraw-Hill, Лондон (1991).
  5. ^ Dewar, Robert BK; Fisher Jr., Gerald A.; Schonberg, Edmond; Froelich, Robert; Bryant, Stephen; Goss, Clinton F.; Burke, Michael (ноябрь 1980 г.). "Транслятор и интерпретатор языка Ada Нью-Йоркского университета". Труды симпозиума ACM-SIGPLAN по языку программирования Ada - SIGPLAN '80 . Том 15. стр. 194–201. doi :10.1145/948632.948659. ISBN 0-89791-030-3. S2CID  10586359.
  6. ^ SofTech Inc. (1983-04-11). "Ada Compiler Validation Summary Report: NYU Ada/ED, Version 19.7 V-001". Архивировано из оригинала 2012-03-12 . Получено 2010-12-16 .
  7. ^ abcdef Джон Кринион: Развитие эволюционных систем, практическое руководство по использованию прототипирования в методологии структурированных систем. Plenum Press, Нью-Йорк, 1991. Страница 18.
  8. ^ abc SP Overmyer: Революционное против эволюционного быстрого прототипирования: баланс производительности программного обеспечения и проблем проектирования HCI. Центр передового опыта в области командования, управления, связи и разведки (C3I), Университет Джорджа Мейсона, 4400 University Drive, Фэрфакс, Вирджиния.
  9. ^ abc Алан М. Дэвис: Оперативное прототипирование: новый подход к разработке. IEEE Software, сентябрь 1992 г. Страница 71.
  10. ^ ab Software Productivity Consortium: Evolutionary Rapid Development. Документ SPC SPC-97057-CMC, версия 01.00.04, июнь 1997 г. Херндон, Вирджиния. Страница 6.
  11. ^ Дэвис. Стр. 72-73. Ссылка: E. Bersoff и A. Davis, Влияние моделей жизненного цикла управления конфигурацией программного обеспечения. Comm. ACM, август 1991 г., стр. 104–118
  12. ^ Коматинени, Сатья. «Изменение процесса поставки ИТ-проектов посредством экстремального прототипирования». Архивировано из оригинала 2016-12-06.
  13. Адаптировано из книги Мелиссы Макклендон, Ларри Регота, Джерри Эйкерса.
  14. ^ Джозеф Э. Урбан: Программное прототипирование и разработка требований. Римская лаборатория, Рим, Нью-Йорк.
  15. ^ Консорциум по методам разработки динамических систем. https://web.archive.org/web/20060209072841/http://na.dsdm.org/
  16. ^ Адаптировано из Software Productivity Consortium. PPS 10–13.
  17. ^ Как программное обеспечение для моделирования может оптимизировать разработку приложений. Архивировано 22 июля 2012 г. на archive.today
  18. ^ abc Доктор Рамон Акоста, Карла Бернс, Уильям Рзепка и Джеймс Сидоран. Применение методов быстрого прототипирования в среде разработки требований. IEEE, 1994. [2]
  19. ^ Software Productivity Solutions, Incorporated. Рабочая станция для разработки расширенных требований (AREW). 1996. [3]
  20. ^ Luqi; Berzins, Yeh (октябрь 1988 г.). «Язык прототипирования для программного обеспечения реального времени» (PDF) . IEEE Transactions on Software Engineering . 14 (10): 1409–1423. doi :10.1109/32.6186. hdl :10945/39162. S2CID  35348234.
  21. ^ Luqi; Ketabchi (март 1988). «Система автоматизированного прототипирования». IEEE Software . 5 (2): 66–72. doi :10.1109/52.2013. hdl : 10945/43616 . S2CID  15541544.
  22. ^ Luqi (май 1989). «Эволюция программного обеспечения посредством быстрого прототипирования». IEEE Computer . 22 (5): 13–25. doi :10.1109/2.27953. hdl : 10945/43610 . S2CID  1809234.