И. Соммервилл - Инженерия программного обеспечения (1133538), страница 45
Текст из файла (страница 45)
Как только системные компоненты интегрированы в каркас, их интерфейсы больше не изме няются, 8.1.2. Экспериментальное прототипирование Модель процесса разработки ПО, основанная на экспериментальном прототипировании, показана на рис.8.5. В этой модели расширен этап анализа требований в целях уменьшения общих затрат на разработку. Основное назначение прототипа — сделать понятными требования и предоставить дополнительную информацию для оценки рисков.
После этого прототип больше не используется и не участвует в дальнейшем процессе разработки системы. Рис. 8.5. Рнгрнботнн ПО с исяолыоопниан экпи9имгнтааьнык нрототнноо Этот метод прототипирования обычно используется для разработки аппаратных систем. Прежде чем будет начата дорогостоящая разработка системы, создается макет (прототип), который используется для проверки структуры системы. Электронный макет системы создается с использованием готовых компонентов, что позволяет разработать версию системы до того, как будут вложены денежные средства в разработку специализированных интегральных схем.
Экспериментальный прототип программных систем обычно не используется для проверки архитектуры системы, он помогает разработать системные требования. Прототип часто совершенно не похож на конечную систему. Система разрабатывается по возможно. сти быстро, поэтомудля ускоренил формирования требований используется упрощенный прототип системы. В экспериментальный прототип закладываются только обязательные системные функции, стандарты качества для прототипа мокнут быть снижены, критерии эффективности игнорируются. Язык программирования прототипа часто отличается от языка программирования, на котором будет создаваться окончательный вариант системы.
В модели процесса разработки ПО, показанной на рис. 8.5, предполагается, что прототип разрабатывается исходя из обобщенных системных требований, далее над прототипом прово. дятся эксперименты и он изменяется до тех пор, пока его функциональные возможности не удовлетворят заказчика. После этого на основе прототипа детализируются систеиные требовэ иия, реализуется обычная для организации-разработчика технология разработки ПО и система доводится до окончательной версии. Некоторые ком понсгггы прототипа могут использоваться в системе, поэтому стоимость разработки может быть снижена. 8.
Прототипирование программных систем 177 В описываемой модели разработки ПО основная проблема состоит в том, что экспериментальный прототип может не соответствовать конечной системс, поставляемой заказчику. Специалист, тестирующий прототип, может иметь собственные интересы к системе, не типичные для ее пользователей. Время тестирования прототипа может быть недостаточным для его полного оценивания. Если прототип работает медленно, эксперты могут внести в него изменения, которые ускоряют работу, но не будут совпадать со средствами ускорения работы конечной системы. Разработчики иногда подвергаются давлению менеджеров для ускорения работы над прототипом, особенно если намечается задержка в поставке окончательной версии системы.
Обычно такое "ускорение" порождает ряд проблем. 1. Невозможно быстро настроить прототип для выполнении таких нефункциональ. ных требований, как производительность, защищенность, устойчивость к сбоям и безотказность, которые игнорировались во время разработки прототипа. 2. Частые изменение во время разработки неизбежно приводят к тому, что прототип плохо документнрован. Для разработки прототипа используется только спецификация системной архитектуры. Этого недостаточно для долговременного сопровождения системы.
3. Изменения, сделанные во время разработки прототипа могут нарушить архитекту ру системы. Ее обслуживание будет сложным и дорогостоящим. 4. В процессе разработки прототипа ослабляются стагщарты качества. Чтобы быть полезными в процессе разработки требований, экспериментальные прототипы не обязательно должны выполнять роль реальных макетов систем. Бумажные формы, имитирующие пользовательские интерфейсы систем [292[, показали свою эф. феативность при формировании требований пользователя, в уточнении проекта интерфейса и при создании сценариев работы конечного пользователя. Они очень дешевы в разработке и могут быть созданы за несколько дней.
Расширением этой методики является макет пользовательского интерфейса "Ъг1гагб оЕ Ох" (Волшебник страны Оз). Пользователи взаимодействуют с этим интерфейсом, но их запросы направлены к специалисту, ко. торый интерпретирует их и имитирует соответствующую реакцию. Подобные подходы к прототипированию рассмотрены в работе [321]. 8.2. Технологии быстрого прототипирования Эти технологии рассчитаны главным образом на обеспечение быстрой разработки прототипов, а не на такие их системные характеристики, как производительность, удобство эксплуатации или безотказность. Существует трн основных негода быстрой разработки прототипов. 1.
Разработка с применением динамических языков высокого уровня. 2. Использование языков программирования баз данных. 3. Сборка приложений с повторным использованием компонентов. Для удобства эти методы описаны в отдельных разделах. Но на практике они часто совместно используются при разработке прототипов систем. Например, язык программирова. ния баз данных может применяться для извлечения данных с их последующей обработкой с помощью повторно используемых компонентов. Интерфейс пользователя системы можно разработать, используя визуальное программирование.
В статье [2241 описано смешанное применение этик методов при создании прототипа управляющей системы. 178 Часть 11. Требования В настоящее время разработка прототипов обычно опирается на набор инструментов, поддерживающих по крайней мере два из этих методов. Например, система БшаНгаа ЧЬна1йгогМз поддерживает язык очень высокого уровня и обеспечивает повторное использование компонентов. Пакет 1огпэ Ко!ее включает поддержку программирования баз данных с помощью языка высокого уровня и повторное использование компонентов, кш торые могут обеспечить операции над базой данных. Болыпннство систем прототипирования сегодня поддерживают визуальное программи. рованис, при котором некоторые части или весь прототип разрабатываются в интерактивном режиме. Вместо последовательного написания программ разработчик прототипа предпочитает работать с графическими пиктограммами, представляющими функции, данные илн компоненты интерфейса пользователя, и соответствующими сценариями управления этими пихгограммами.
Программа, готовая к исполнению, генерируется автоматически из визуального представления системы. Зго упрощает разработку программы и уменьшает затраты па прототипирование. Более подробно виз)цльное программирование рассматривается в разделе 8.2.8. 8.2.1. Применение динамических языков высокого уровня Динамические языки высокого уровня — это языки программирования, которые имеют мощные средства контроля данных во время выполнения программы. Онн упрощают разработку программ, так как уменьшают число проблем, связанных с распределением памяти и управлением сю.
Такис языки имеют средства. которые обычно должны быть по. строены из более примитивных конструкций в языках, подобных Ада или С. Примеры языков очень высокого уровня — 1зэр (основанный на структурах списков), Рго!ой (основанный на алгебре логики) и Бшайгзйг (основанный на объектах). До недавнего времени динамические языки высокого уровня широко не использовались для разработки больших систем. поскольку они нуждаются в основательных средствах динамической поддержки.
Эти средства увеличивали объем необходимой памяти и уменьшали скорость выполнения программ, написанных на этих языках. Однако возрастание мощности и снижение стоимости компьютерного оборудования сделало эти факто. ры нс столь существенными. Таким образом, для многих деловых приложений эти языки могут заменить тзкие традиционныс языки программирования, как С, СОВО!. н Аба. Язык)ага, несомненно, является основным языком разработки, имеющим корни в языке С++, но с включением многих средств языка бгпа81айг нагюдобие платформеппой независимости и автоматического управления памятью.
Язык )ага объединяет в себе многие преимущества языков высокого уровня, совмещая это с точностью и возможностью оптимизации выполнения, обычно предлагаемой языками третьего поколения. В языке )ага мною компонентов, доступных для повторного использования, все это делает сто подходящим для эволюционного прототипирования.
В табл. 8.1 представлены динамические языки, которые более всего используются при разработке прототипов. При выборе языка для написания прототипа необходимо ответить на ряд вопросов. 1. Каков жкв реирлбптыэлемоео ирклозгекил? Как показано в табл. 8.1, для каждого типа приложения можно применить несколько различных языков. Если необходим прототип приложения, которос обрабатывает данных на естественном языке, то языки (зар или 1'го!об более подходят, чем )ага или Бгпайнайь 8.