Программная инженерия. Теория и практика
Шрифт:
Методология строится на базе некоторого подхода и определяет шаги работы, их последовательность, а также правила распределения и назначения методов. Метод определяет способ достижения той или иной цели – выполнение шага работы.
Нотацией называют систему обозначений, используемых для описания некоторого класса моделей. Нотации бывают графические (предоставление моделей в виде графов, диаграмм, таблиц, схем и т.п.) и текстовые (описания моделей на формальных и естественных языках). В CASE-технологиях нотации используют для описания структуры проектируемой системы, элементов данных, этапов обработки и т.п.
Средства – инструментарий для поддержки методов: средства создания и редактирования графического проекта, организации проекта в виде иерархии уровней абстракции, а также проверки соответствия компонентов разных уровней. Различают:
• CASE-средства анализа требований, проектирования спецификаций и структуры, редактирования интерфейсов (первое поколение CASE-I);
• CASE-средства генерации исходных текстов и реализации интегрированного окружения поддержки полного жизненного цикла разработки программного обеспечения (второе поколение CASE-II).
CASE-I в основном включают средства для поддержки графических моделей, проектирования спецификаций, экранных редакторов и словарей данных. CASE-II отличается существенно большими возможностями, обеспечивая контроль, анализ и связывание системной информации и информации по управлению процессом проектирования, построение прототипов и моделей системы, тестирование, верификацию и анализ сгенерированных программ.
Автоматизируя трудоемкие операции, современные CASE-средства существенно повышают производительность труда программистов и улучшают качество создаваемого программного обеспечения, а именно:
• обеспечивают автоматизированный контроль совместимости спецификаций проекта;
• уменьшают время создания прототипа системы;
• ускоряют процесс проектирования и разработки ПО;
• автоматизируют формирование проектной документации для всех этапов жизненного цикла в соответствии с современными стандартами;
• частично генерируют коды программ для различных платформ разработки;
• поддерживают технологии повторного использования компонентов системы;
• обеспечивают возможность восстановления проектной документации по имеющимся исходным кодам.
Появление CASE-технологий изменило все этапы жизненного цикла программного обеспечения, при этом наибольшие изменения касаются анализа и проектирования, которые предполагают строгое и наглядное описание разрабатываемого программного обеспечения.
В табл. 1 показано, как изменяется процесс разработки ПО при переходе к использованию CASE-средств.
Применение CASE-средств позволяет существенно снизить тру-дозатраты на разработку сложного программного обеспечения (табл. 2) в основном за счет автоматизации процессов документирования и контроля. Однако необходимо иметь в виду, что современные CASE-средства дороги, а их использование требует более высокой квалификации разработчиков. Следовательно, их целесообразно использовать в сложных проектах, причем чем сложнее разрабатываемое программное обеспечение, тем больше выигрыш от использования CASE-технологий. В настоящее время практически все промышленно производимое сложное программное обеспечение разрабатывается с использованием CASE-средств.
Таблица 1
Особенности процесса разработки ПО
Таблица 2
Трудозатраты на разработку сложного ПО, %
Ускорение разработки программного обеспечения. Разработка спиральной модели жизненного цикла программного обеспечения и CASE-технологий позволили сформулировать условия, выполнение которых сокращает сроки создания программного обеспечения.
Современная технология проектирования, разработки и сопровождения программного обеспечения должна отвечать следующим требованиям:
• поддержка полного жизненного цикла программного обеспечения;
• гарантированное достижение целей разработки с заданным качеством и в установленное время;
• возможность выполнения крупных проектов в виде подсистем, разрабатываемых группами исполнителей ограниченной численности (3–7 человек) с последующей интеграцией составных частей, и координации ведения общего проекта;
• минимальное время получения работоспособной системы;
• возможность управления конфигурацией проекта, ведения версий проекта и автоматического выпуска проектной документации по каждой версии;
• независимость выполняемых проектных решений от средств реализации (систем управления базами данных – СУБД, операционных систем – ОС, языков и систем программирования);
• поддержка комплекса согласованных CASE-средств, обеспечивающих автоматизацию процессов, выполняемых на всех стадиях жизненного цикла.
Этим требованиям отвечает технология RAD (Rapid Application Development – быстрая разработка приложений). Эта технология ориентирована, как следует из названия, на максимально быстрое получение первых версий разрабатываемого программного обеспечения. Она предусматривает выполнение следующих условий:
• ведение разработки небольшими группами разработчиков (3–7 человек), каждая из которых проектирует и реализует отдельные подсистемы проекта, позволяет улучшить управляемость проекта;
• использование итерационного подхода способствует уменьшению времени получения работоспособного прототипа;
• наличие четко проработанного графика цикла, рассчитанного не более чем на три месяца, существенно увеличивает эффективность работы.
Процесс разработки при этом делится на следующие этапы: анализ и планирование требований пользователей, проектирование, реализация, внедрение.
На этапе анализа и планирования требований формулируют наиболее приоритетные требования, что ограничивает масштаб проекта.
На этапе проектирования, используя имеющиеся CASE-средства, детально описывают процессы системы, устанавливают требования разграничения доступа к данным и определяют состав необходимой документации. При этом для наиболее сложных процессов создают частичный прототип: разрабатывают экранную форму и диалог. По результатам анализа процессов определяют количество так называемых функциональных точек и принимают решение о количестве подсистем и, соответственно, команд, участвующих в разработке.