С. В. Ченцова. В. Чубарьинформатикакрасноярск 2002 введение
Скачать 0.92 Mb.
|
DFD (Data Flow Diagrams) - диаграммы потоков данных совместно со словарями данных и спецификациями процессов или миниспецификациями; ERD (Entity-Relationship Diagrams) - диаграммы «сущность-связь»; STD (State Transition Diagrams) - диаграммы переходов состояний. Все они содержат графические и текстовые средства моделирования: первые - для удобства демонстрирования основных компонент модели, вторые - для обеспечения точного определения ее компонент и связей. Логическая DFD показывает внешние по отношению к системе источники и стоки (адресаты) данных, идентифицирует логические функции (процессы) и группы элементов данных, связывающие одну функцию с другой (потоки), а также идентифицирует хранилища (накопители) данных, к которым осуществляется доступ. Структуры потоков данных и определения их компонент хранятся и анализируются в словаре данных. Каждая логическая функция (процесс) может быть детализирована с помощью DFD нижнего уровня; когда дальнейшая детализация перестает быть полезной, переходят к выражению логики функции при помощи спецификации процесса (миниспецификации). Содержимое каждого хранилища также сохраняют в словаре данных, модель данных хранилища раскрывается с помощью ERD. В случае наличия реального времени DFD дополняется средствами описания зависящего от времени поведения системы, раскрывающимися с помощью STD. Перечисленные средства дают полное описание системы независимо от того, является ли она существующей или разрабатываемой с нуля. Таким образом строится логическая функциональная спецификация - подробное описание того, что должна делать система, освобожденное насколько это возможно от рассмотрения путей реализации. Это дает проектировщику четкое представление о конечных результатах, которые следует достигать. 14.3. Диаграммы потоков данных Диаграммы потоков данных (DFD) являются основным средством моделирования функциональных требований проектируемой системы. С их помощью эти требования разбиваются на функциональные компоненты (процессы) и представляются в виде сети, связанной потоками данных. Главная цель таких средств – продемонстрировать, как каждый процесс преобразует свои входные данные в выходные, а также выявить отношения между этими процессами. 105 14.3.1. Основные символы Основные символы DFD изображены в таблице.17.2. Опишем их назначение. На диаграммах функциональные требования представляются с помощью процессов и хранилищ, связанных потоками данных. ПОТОКИ ДАННЫХ являются механизмами, использующимися для моделирования передачи информации (или даже физических компонент) из одной части системы в другую. Важность этого объекта очевидна: он дает название целому инструменту. Потоки на диаграммах обычно изображаются именованными стрелками, ориентация которых указывает направление движения информации. Иногда информация может двигаться в одном направлении, обрабатываться и возвращаться назад в ее источник. Такая ситуация может моделироваться либо двумя различными потоками, либо одним - двунаправленным Таблица 14.1 Основные элементы DFD диаграммы Название Обозначение Внешняя сущность EE-1 Название Подсистема или Процесс 1 Название процесса Рессурс Накопитель данных S-1 Название Информационный поток Название информационного потока Назначение ПРОЦЕССА состоит в преобразовании входных потоков из выходные в соответствии с действием, задаваемым именем процесса. Это имя должно содержать глагол в неопределенной форме с последующим дополнением (например, ВЫЧИСЛИТЬ МАКСИМАЛЬНУЮ ВЫСОТУ). Кроме того, каждый процесс должен иметь уникальный номер для ссылок на него 106 внутри диаграммы. Этот номер может использоваться совместно с номером диаграммы для получения уникального индекса процесса во всей модели. ХРАНИЛИЩЕ (НАКОПИТЕЛЬ) ДАННЫХ позволяет на определенных участках определять данные, которые будут сохраняться в памяти между процессами. Фактически хранилище представляет «срезы» потоков данных во времени. Информация, которую оно содержит, может использоваться в любое время после ее определения, при этом данные могут выбираться в любом порядке. Имя хранилища должно идентифицировать его содержимое и быть существительным. В случае, когда поток данных входит или выходит в/из хранилища, и его структура соответствует структуре хранилища, он должен иметь то же самое имя, которое нет необходимости отражать на диаграмме. ВНЕШНЯЯ СУЩНОСТЬ (или ТЕРМИНАТОР) представляет сущность вне контекста системы, являющуюся источником или приемником системных данных. Ее имя должно содержать существительное, например, СКЛАД ТОВАРОВ. Предполагается, что объекты, представленные такими узлами, не должны участвовать ни в какой обработке Context 1.* Администрирование членов библиотеки 2 Администрирование аренды 3 Администрирование фильмов 4 Администрирование поставщиков EE-1 Клиент EE-2 Поставщик EE-3(1/2) Руководство EE-3(2/2) Руководство Данные о клиенте Членская карточка Запрос аренды Ответ на запрос Сведения о клиенте Запрос данных клиента Новые фильмы Запрос отчета об аренде Отчет об аренде Запрос отчета о фильмах Отчет о фильмах Запрос данных о поставщике фильмов Сведения о поставщике фильма Данные поставщика Заказ фильма Предложения фильмов Запрос отчета о членах Отчет о членах Запрос отчета о поставщиках Сведения о поставщиках 107 14.3.2. Контекстная диаграмма и детализация процессов Декомпозиция DFD осуществляется на основе процессов: каждый процесс может раскрываться с помощью DFD нижнего уровня. Важную специфическую роль в модели играет специальный вид DFD - контекстная диаграмма, моделирующая систему наиболее общим образом. Контекстная диаграмма отражает интерфейс системы с внешним миром, а именно, информационные потоки между системой и внешними сущностями, с которыми она должна быть связана. Она идентифицирует эти внешние сущности, а также, как правило, единственный процесс. отражающий главную цель или природу системы насколько это возможно. И хотя контекстная диаграмма выглядит тривиальной, несомненная ее полезность заключается в том, что она устанавливает границы анализируемой системы. Каждый проект должен иметь ровно одну контекстную диаграмму, при этом нет необходимости в нумерации единственного ее процесса. DFD первого уровня строится как декомпозиция процесса, который присутствует на контекстной диаграмме. Построенная диаграмма первого уровня также имеет множество процессов, которые в свою очередь могут быть декомпозированы в DFD нижнего уровня. Таким образом строится иерархия DFD с контекстной диаграммой в корне дерева. Этот процесс декомпозиции продолжается до тех пор, пока процессы могут быть эффективно описаны с помощью коротких (до одной страницы) миниспецификаций обработки (спецификаций процессов). При таком построении иерархии DFD каждый процесс более низкого уровня необходимо соотнести с процессом верхнего уровня. Обычно для этой пели используются структурированные номера процессов. Так, например, если мы детализируем процесс номер 2 на диаграмме первого уровня, раскрывая его с помощью DFD, содержащей три процесса, то их номера будут иметь следующий вид: 2.1. 2.2 и 2.3. При необходимости можно перейти на следующий уровень, т.е. для процесса 2.2 получим 2.2.1, 2.2.2. и т.д. Построение модели Главная цель построения иерархического множества DFD заключается в том, чтобы сделать требования ясными и понятными на каждом уровне детализации, а также разбить эти требования на части с точно определенными отношениями между ними. Для достижения этого целесообразно пользоваться следующими рекомендациями: • Размещать на каждой диаграмме от 3 до 6-7 процессов. Верхняя граница соответствует человеческим возможностям одновременного восприятия и понимания структуры сложной системы со множеством внутренних связей, нижняя граница выбрана по соображениям здравого смысла: нет необходимости детализировать процесс диаграммой, содержащей всего один или два процесса. • Не загромождать диаграммы несущественными на данном уровне деталями. 108 • Декомпозицию потоков данных осуществлять параллельно с декомпозицией процессов; эти две работы должны выполняться одновременно, а не одна после завершения другой. • Выбирать ясные, отражающие суть дела, имена процессов и потоков, не использовать аббревиатуры. • Однократно определять функционально идентичные процессы на самом верхнем уровне, где такой процесс необходим, и ссылаться к нему на нижних уровнях. • Отделять управляющие структуры от обрабатывающих структур (т.е. процессов), локализовать управляющие структуры. В соответствии с этими рекомендациями процесс построения модели разбивается на следующие этапы: • Расчленение множества требований и организация их в основные функциональные группы. • Идентификация внешних объектов, с которыми система должна быть связана. • Идентификация основных видов информации, циркулирующей между системой и внешними объектами. Рис. 14.2 1 Администрирование членов библиотеки EE-3 Руководство 2 Администрирование аренды EE-1 Клиент 1.1 Регистрация членов библиотеки 1.2 Изготовление членской карточки 1.3 Подготовка отчета о членах библиотеки 1.4 Анализ данных о членах библиотеки S-1 Члены библиотеки Членская карточка Сведения о клиенте Отчет о членах Данные о клиенте Запрос данных клиента Запрос отчета о членах Новые данные о членах библиотеки Данные о членах библиотеки Данные для членской карточки Данные для отчета Данные о членах библиотеки 109 • Предварительная разработка контекстной диаграммы, на которой основные функциональные группы представляются процессами, внешние объекты - внешними сущностями, основные виды информации - потоками данных между процессами и внешними сущностями. • Построение контекстной диаграммы путем объединения всех процессов предварительной диаграммы в один процесс, а также группирования потоков. • Формирование DFD первого уровня на базе процессов предварительной контекстной диаграммы. • Проверка основных требований по DFD первого уровня. • Декомпозиция каждого процесса текущей DFD с помощью детализирующей диаграммы или спецификации процесса. • Проверка основных требований по DFD соответствующего уровня. • Добавление определений новых потоков в словарь данных при каждом их появлении на диаграммах. • Параллельное (с процессом декомпозиции) изучение требований (в том числе и вновь поступающих), разбиение их на элементарные и идентификация процессов или спецификаций процессов, соответствующих этим требованиям. • Построение спецификации процесса (а не простейшей диаграммы) в случае, если некоторую функцию сложно или невозможно выразить комбинацией процессов 14.3.3.Спецификация процесса (описание операций) Процессы DFD в конце концов должны быть реализованы как операции объектов. Каждый процесс нижнего (базового) уровня, так же как и процессы верхних уровней, в состав которых входят процессы более нижних уровней, реализуются как операции. При этом реализация процессов верхних уровней может отличаться от их представления на DFD, так как при реализации обычно производится их оптимизация: в результате оптимизации процессы нижних уровней, составляющие процесс более высокого уровня могут «слиться», после чего они станут невидимы. Все операции должны быть специфицированы. Спецификация операции содержит ее сигнатуру (имя операции, количество, порядок и типы ее параметров, количество, порядок и типы возвращаемых ею значений) и описание ее эффекта (действия, преобразования). Для описания эффекта операции можно использовать: • математические формулы; • табличные функции: таблицы, сопоставляющие выходные значения входным; • уравнения, связывающие входные и выходные значения; • аксиоматическое определение операций с помощью пред- и пост- условий; • таблицы принятия решений; • псевдокод; 110 • естественный язык. Пример описания операции (эффект ее описан на естественном языке): изменить_счет (счет, сумма, вид_проводки) -> деньги, квитанция если сумма снимается и больше баланса счета, то «отменить_проводку» если сумма снимается и меньше баланса счета, то «дебетовать_счет» и «выдать_деньги» если сумма вносится на счет то «кредитовать_счет» если запрос то «выдать_запрос» во всех случаях: квитанция должна содержать номер ATM, дату, время, номер счета, вид проводки, сумму проводки (если она есть), новый баланс счета. Внешняя спецификация операции описывает только те изменения, которые видны вне операции. Операция может быть реализована таким образом, что при ее выполнении будут использоваться некоторые значения, определенные внутри операции (например, в целях оптимизации), некоторые из этих значений могут даже быть частью состояния объекта. Эти детали реализации операции скрыты от остальных объектов и не участвуют в определении внешнего эффекта операции. Изменения внутреннего состояния объекта, не видные вне его, не меняют значения объекта. Все нетривиальные операции можно разделить на три категории: запросы, действия и активности. Запросом называется операция без побочных эффектов над видимым извне объекта его состоянием (чистая функция). Запрос, у которого нет параметров, кроме целевого объекта, является производным атрибутом. Например, для точки на координатной плоскости, радиус и полярный угол − производные атрибуты; из этого примера видно, что между основными и производными атрибутами нет принципиальной разницы, и выбор основных атрибутов во многом случаен. Действием называется операция, имеющая побочные эффекты, которые могут влиять на целевой объект и на другие объекты системы, которые достижимы из целевого объекта. Действие не занимает времени (логически, оно совершается мгновенно). Каждое действие может быть определено через те изменения, которые оно производит в состоянии объекта, меняя значения его атрибутов и связей; в каком порядке производятся эти изменения, несущественно: мы считаем, что все они происходят одновременно и мгновенно. Наиболее распространенным способом описания действия является задание алгоритма его выполнения на компьютере. 111 14.3.4. Диаграммы сущность связь Наиболее распространенным средством моделирования данных являются диаграммы «сущность-связь» (ERD), нотация которых впервые введена П. Ченом. Базовыми понятиями ERD являются: Сущность (Entity) — реальный либо воображаемый объект, имеющий существенное значение для рассматриваемой предметной области. Каждая сущность должна обладать уникальным идентификатором. Каждый экземпляр сущности должен однозначно идентифицироваться и отличаться от всех других экземпляров данного типа сущности. Каждая сущность должна обладать некоторыми свойствами: • иметь уникальное имя; к одному и тому же имени должна всегда применяться одна и та же интерпретация; • одна и та же интерпретация не может применяться к различным именам, если только они не являются псевдонимами; • обладать одним или несколькими атрибутами, которые либо принадлежат сущности, либо наследуются через связь; Рис. 14.3. • обладать одним или несколькими атрибутами, которые однозначно идентифицируют каждый экземпляр сущности 112 Каждая сущность может обладать любым количеством связей с другими сущностями модели. Связь (Relationship) — поименованная ассоциация между двумя сущностями, значимая для рассматриваемой предметной области. Связь — это ассоциация между двумя сущностями, при которой каждый экземпляр одной сущности ассоциирован с произвольным (в том числе нулевым) количеством экземпляров второй сущности, и наоборот. Атрибут — любая характеристика сущности, значимая для рассматриваемой предметной области и предназначенная для квалификации, идентификации, классификации, количественной характеристики или выражения состояния сущности. Атрибут представляет тип характеристик или свойств, ассоциированных со множеством реальных или абстрактных объектов (людей, мест, событий, идей, предметов и т.д.). Экземпляр атрибута — это определенная характеристика отдельного элемента множества. Экземпляр атрибута определяется типом характеристики и ее значением, называемым значением атрибута. В ER-модели атрибуты ассоциируются с конкретными сущностями. Таким образом, экземпляр сущности должен обладать единственным определенным значением для ассоциированного атрибута. 14.4. Методология RAD Одним из возможных подходов к разработке ПО в рамках спиральной модели ЖЦ является получившая в последнее время широкое распространение методология быстрой разработки приложений RAD (Rapid Application Development). Под этим термином обычно понимается процесс разработки ПО, содержащий 3 элемента: • небольшую команду программистов (от 2 до 10 человек); • короткий, но тщательно проработанный производственный график (от 2 до 6 мес.); • повторяющийся цикл, при котором разработчики, по мере того, как приложение начинает обретать форму, запрашивают и реализуют в продукте требования, полученные через взаимодействие с заказчиком. • Основные принципы методологии RAD: • разработка приложений итерациями; • необязательность полного завершения работ на каждом из этапов жизненного цикла; • обязательное вовлечение пользователей в процесс разработки ИС; • необходимое применение CASE-средств, обеспечивающих целостность проекта; • применение средств управления конфигурацией, облегчающих внесение изменений в проект и сопровождение готовой системы; • необходимое использование генераторов кода; • использование прототипов, позволяющее полнее выяснить и удовлетворить потребности конечного пользователя; 113 • тестирование и развитие проекта, осуществляемые одновременно с разработкой; • ведение разработки немногочисленной хорошо управляемой командой профессионалов; • грамотное руководство разработкой системы, четкое планирование и контроль выполнения работ. Жизненный цикл ПО по методологии RAD состоит из четырех фаз: • фаза анализа и планирования требований; • фаза проектирования; • фаза построения; • фаза внедрения. На фазе анализа и планирования требований пользователи системы определяют функции, которые она должна выполнять, выделяют наиболее приоритетные из них, требующие проработки в первую очередь, описывают информационные потребности Результатом данной фазы должны быть список и приоритетность функций будущего ПО. На фазе проектирования часть пользователей принимает участие в техническом проектировании системы под руководством специалистов- разработчиков. Более подробно рассматриваются процессы системы. Анализируется и, при необходимости, корректируется функциональная модель. Каждый процесс рассматривается детально. При необходимости для каждого элементарного процесса создается частичный прототип: экран, диалог, отчет, устраняющий неясности или неоднозначности. Определяются требования разграничения доступа к данным. На этой же фазе происходит определение набора необходимой документации. Результатом данной фазы должны быть: • общая информационная модель системы; • функциональные модели системы в целом и подсистем, реализуемых отдельными командами разработчиков; • точно определенные с помощью CASE-средства интерфейсы между автономно разрабатываемыми подсистемами; • построенные прототипы экранов, отчетов, диалогов. На фазе построения выполняется непосредственно сама быстрая разработка приложения. На данной фазе разработчики производят итеративное построение реальной системы на основе полученных в предыдущей фазе моделей, а также требований нефункционального характера. Программный код частично формируется при помощи автоматических генераторов. Конечные пользователи на этой фазе оценивают получаемые результаты и вносят коррективы, если в процессе разработки система перестает удовлетворять определенным ранее требованиям. Тестирование системы осуществляется непосредственно в процессе разработки. После окончания работ каждой отдельной команды разработчиков производится постепенная интеграция данной части системы с остальными, формируется полный программный код, выполняется тестирование совместной 114 работы данной части приложения с остальными, а затем тестирование системы в целом. Завершается физическое проектирование системы: • определяется необходимость распределения данных; • производится анализ использования данных; • производится физическое проектирование базы данных; • определяются требования к аппаратным ресурсам; • определяются способы увеличения производительности; • завершается разработка документации проекта. Результатом фазы является готовая система, удовлетворяющая всем согласованным требованиям. На фазе внедрения производится обучение пользователей, организационные изменения и параллельно с внедрением новой системы осуществляется работа с существующей системой (до полного внедрения новой). Так как фаза построения достаточно непродолжительна, планирование и подготовка к внедрению должны начинаться заранее, как правило, на этапе проектирования системы. Приведенная схема разработки не является абсолютной. Возможны различные варианты, зависящие, например, от начальных условий, в которых ведется разработка. Следует отметить, что методология RAD, как и любая другая, не может претендовать на универсальность, она хороша в первую очередь для относительно небольших проектов, разрабатываемых для конкретного заказчика. Методология RAD неприменима для построения сложных расчетных программ, операционных систем или программ управления космическими кораблями, т.е. программ, требующих написания большого объема (сотни тысяч строк) уникального кода, а также ПО от которых зависит безопасность людей, так как первые несколько версий ПО не будут полностью работоспособны. Контрольные вопросы и задания: 1. Дайте определение понятию технологии проектирования ПО. 2. Перечислите основные требования к технологии разработки ПО. 3. Что такое CASE-средства и CASE-технологии? 4. Как влияет использование CASE-средств на качество программного продукта и процесса его проектирования? 5. В чем смысл и основные принципы структурного подхода к разработке ПО? 6. Для чего предназначены диаграммы потоков данных? Перечислите основные элементы потоков данных. 7. Постройте диаграмму потоков данных для ПО учета оценок по итогам сессии в деканате. 8. Перечислите основные компоненты диаграммы сущность-связь. Укажите для каких целей они используются. 115 9. Постройте диаграмму сущность-связь. для ПО учета оценок по итогам сессии в деканате |