Результатом этапа определения стратегии является документ, где четко сформулировано, что получит заказчик, если согласится финансировать проект; когда он получит готовый продукт (график выполнения работ); сколько это будет стоить (для крупных проектов должен быть составлен график финансирования на разных этапах работ). В документе должны быть отражены не только затраты, но и выгода, например время окупаемости проекта, ожидаемый экономический эффект (если его удается оценить). В документе обязательно должны быть описаны: ограничения, риски, критические факторы, влияющие на успешность проекта, например время реакции системы на запрос является заданным ограничением, а не желательным фактором; совокупность условий, при которых предполагается эксплуатировать будущую систему: архитектура системы, аппаратные и программные ресурсы, предоставляемые системе, внешние условия ее функционирования, состав людей и работ, которые обеспечивают бесперебойное функционирование системы; сроки завершения отдельных этапов, форма сдачи работ, ресурсы, привлекаемые в процессе разработки проекта, меры по защите информации; описание выполняемых системой функций; будущие требования к системе в случае ее развития, например возможность работы пользователя с системой с помощью Интернета и т.п.; сущности, необходимые для выполнения функций системы; интерфейсы и распределение функций между человеком и системой; требования к программным и информационным компонентам ПО, требования к СУБД (если проект предполагается реализовывать для нескольких СУБД, то требования к каждой из них, или общие требования к абстрактной СУБД и список рекомендуемых для данного проекта СУБД, которые удовлетворяют заданным условиям); что не будет реализовано в рамках проекта. Стратегия
Во многих аспектах системный анализ является наиболее трудной частью разработки. Нижеследующие проблемы, с которыми сталкивается системный аналитик, взаимосвязаны (и это является одной из главных причин их трудноразрешимости): аналитику сложно получить исчерпывающую информацию для оценки требований к системе с точки зрения заказчика; заказчик, в свою очередь, не имеет достаточной информации о проблеме обработки данных для того, чтобы судить, что является выполнимым, а что нет; аналитик сталкиваетсяс чрезмерным количеством подробных сведений, как о предметной области, так и о новой системе; спецификация системы из-за объема и технических терминов часто непонятна для заказчика; в случае понятности спецификации для заказчика, она будет являться недостаточной для проектировщиков и программистов, создающих систему.
Следует отметить, что и на этапе выбора стратегии, и на этапе анализа, и при проектировании независимо от метода, применяемого при разработке проекта, всегда следует классифицировать планируемые функции системы по степени важности. Один из возможных форматов представления такой классификации MuSCoW предложен в Clegg, Dai and Richard Barker, Case Method Fast-track: A RAD Approach, Adison-Wesley, Эта аббревиатура расшифровывается так: Must have необходимые функции; Should have желательные функции; Could have возможные функции; Wont have отсутствующие функции. Функции первой категории обеспечивают критичные для успешной работы системы возможности. Реализация функций второй и третьей категорий ограничивается временными и финансовыми рамками: разрабатываем то, что необходимо, а также максимально возможное в порядке приоритета число функций второй и третьей категорий. Последняя категория функций особенно важна, поскольку необходимо четко представлять границы проекта и набор функций, которые будут отсутствовать в системе.
Анализ Аналитики собирают и фиксируют информацию в двух взаимосвязанных формах: функции информация о событиях и процессах, которые происходят в бизнесе; сущности информация о вещах, имеющих значение для организации и о которых что-то известно. Двумя классическими результатами анализа являются: иерархия функций, которая разбивает процесс обработки на составные части (что делается и из чего это состоит); модель «сущность-связь» (Entity Relationship model, ER-модель), которая описывает сущности, их атрибуты и связи (отношения) между ними. Три наиболее часто применяемые методологии структурного анализа: диаграммы «сущность-связь» (Entity-Relationship Diagrams, ERD), которые служат для формализации информации о сущностях и их отношениях; диаграммы потоков данных (Data Flow Diagrams, DFD), которые служат для формализации представления функций системы; диаграммы переходов состояний (State Transition Diagrams, STD), которые отражают поведение системы, зависящее от времени; диаграммы жизненных циклов сущностей относятся именно к этому классу диаграмм.
Принципы структурного анализа Структурным анализом принято называть метод исследования системы, которое начинается с ее общего обзора и затем детализируется, приобретая иерархическую структуру со все большим числом уровней. Для таких методов характерно: разбиение на уровни абстракции с ограничением числа элементов на каждом из уровней (обычно от 3 до 6-7); ограниченный контекст, включающий лишь существенные на каждом уровне детали; дуальность данных и операций над ними; использование строгих формальных правил записи; последовательное приближение к конечному результату.
Все методологии структурного анализа базируются на ряде общих принципов. В качестве двух базовых принципов используются следующие: принцип "разделяй и властвуй; принцип иерархического упорядочивания. Первый является принципом решения трудных проблем путем разбиения их на множество меньших независимых задач, легких для понимания и решения. Второй принцип декларирует, что устройство этих частей также существенно для понимания. Понимаемость проблемы резко повышается при организации ее частей в древовидные иерархические структуры, т.е. система может быть понята и построена по уровням, каждый из которых добавляет новые детали.
Отметим основные принципы: Принцип абстрагирования заключается в выделении существенных с некоторых позиций аспектов системы и в отвлечении от несущественных с целью представления проблемы в простом общем виде. Принцип формализации заключается в необходимости строгого методического подхода к решению проблемы. Принцип упрятывания заключается в упрятывании несущественной на конкретном этапе информации: каждая часть "знает" только необходимую ей информацию. Принцип концептуальной общности заключается в следовании единой философии на всех этапах ЖЦ (структурный анализ – структурное проектирование – структурное программирование – структурное тестирование). Принцип полноты заключается в контроле на присутствие лишних элементов. Принцип непротиворечивости заключается в обоснованности и согласованности элементов. Принцип логической независимости заключается в концентрации внимания на логическом проектировании для обеспечения независимости от физического проектирования. Принцип независимости данных заключается в том, что модели данных должны быть проанализированы и спроектированы независимо от процессов их логической обработки, а также от их физической структуры и распределения. Принцип структурирования данных заключается в том, что данные должны быть структурированы и иерархически организованы. Принцип доступа конечного пользователя заключается в том, что пользователь должен иметь средства доступа к базе данных, которые он может использовать непосредственно (без программирования).
Средства структурного анализа и их взаимоотношения Для целей моделирования систем вообще, и структурного анализа в частности, используются три группы средств, иллюстрирующих: функции, которые система должна выполнять; отношения между данными; зависящее от времени поведение системы (аспекты реального времени). Среди всего многообразия средств решения данных задач в методологиях структурного анализа наиболее часто и эффективно применяемыми являются следующие: DFD (Data Flow Diagrams) – диаграммы потоков данных совместно со словарями и спецификациями процессов или миниспецификациями; ERD (Entity-Relationship Diagrams) – диаграммы "сущность- связь"; STD (State Transition Diagrams) – диаграммы переходов состояний. Все они содержат графические и текстовые средства моделирования: первые – для удобства демонстрирования основных компонент модели, вторые – для обеспечения точного определения ее компонент и связей.
DFD (Data Flow Diagrams) – диаграммы потоков данных
Логическая DFD показывает: внешние по отношению к системе источники истоки (адресаты) данных; идентифицирует логические функции (процессы); идентифицирует группы элементов данных, связывающие одну функцию с другой (потоки); идентифицирует хранилища (накопители) данных, к которым осуществляется доступ. Структуры потоков данных и определения их компонент хранятся и анализируются в словаре данных. Каждая логическая функция (процесс) может быть детализирована с помощью DFD нижнего уровня. Когда дальнейшая детализация перестает быть полезной, переходят к выражению логики функции при помощи спецификации процесса (миниспецификации). Содержимое каждого хранилища также сохраняют в словаре данных, модель данных хранилища раскрывается с помощью ERD. В случае наличия реального времени DFD дополняется средствами описания зависящего от времени поведения системы, раскрывающимися с помощью STD.
Компонента Нотация Йодана Нотация Гейна-Сарсона ИМЯ ПОТОК ДАННЫХ имя номер имя ПРОЦЕСС имя ХРАНИЛИЩЕ ИМЯ ВНЕШНЯЯ СУЩНОСТЬ Основные компоненты диаграммы потоков данных
ПОТОКИ ДАННЫХ являются механизмами, использующимися для моделирования передачи информации (или даже физических компонент) из одной части системы в другую. Важность этого объекта очевидна: он дает название целому инструменту. Потоки на диаграммах обычно изображаются именованными стрелками, ориентация которых указывает направление движения информации. Иногда информация может двигаться в одном направлении, обрабатываться и возвращаться назад в ее источник. Такая ситуация может моделироваться либо двумя различными потоками, либо одним – двунаправленным. Назначение ПРОЦЕССА состоит в продуцировании выходных потоков из входных в соответствии с действием, задаваемым именем процесса. Это имя должно содержать глагол в неопределенной форме с последующим дополнением (например, ВЫЧИСЛИТЬ МАКСИМАЛЬНУЮ ВЫСОТУ). Кроме того, каждый процесс должен иметь уникальный номер для ссылок на него внутри диаграммы. Этот номер может использоваться совместно с номером диаграммы для получения уникального индекса процесса во всей модели. ХРАНИЛИЩЕ (НАКОПИТЕЛЬ) ДАННЫХ позволяет на определенных участках определять данные, которые будут сохраняться в памяти между процессами. Фактически хранилище представляет "срезы" потоков данных во времени. Информация, которую оно содержит, может использоваться в любое время после ее определения, при этом данные могут выбираться в любом порядке. Имя хранилища должно идентифицировать его содержимое и быть существительным. В случае, когда поток данных входит или выходит в/из хранилища, и его структура соответствует структуре хранилища, он должен иметь то же самое имя, которое нет необходимости отражать на диаграмме. ВНЕШНЯЯ СУЩНОСТЬ (или ТЕРМИНАТОР) представляет сущность вне контекста системы, являющуюся источником или приемником системных данных. Ее имя должно содержать существительное, например, СКЛАД ТОВАРОВ, Предполагается, что объекты, представленные такими узлами, не должны участвовать ни в какой обработке.
Контекстная диаграмма и детализация процессов Декомпозиция DFD осуществляется на основе процессов: каждый процесс может раскрываться с помощью DFD нижнего Уровня. Важную специфическую роль в модели играет специальный вид DFD – контекстная диаграмма, моделирующая систему наиболее общим образом. Контекстная диаграмма отражает интерфейс системы с внешним миром, а именно, информационные потоки между системой и внешними сущностями, с которыми она должна быть связана. Она идентифицирует эти внешние сущности, а также, как правило, единственный процесс, отражающий главную цель или природу системы насколько это возможно. Каждый проект должен иметь ровно одну контекстную диаграмму, при этом нет необходимости в нумерации единственного ее процесса. DFD первого уровня строится как декомпозиция процесса, который присутствует на контекстной диаграмме. Построенная диаграмма первого уровня также имеет множество процессов, которые в свою очередь могут быть декомпозированы в DFD нижнего уровня. Таким образом строится иерархия DFD с контекстной диаграммой в корне дерева. Этот процесс декомпозиции продолжается до тех пор, пока процессы могут быть эффективно описаны с помощью коротких (до одной страницы) миниспецификаций обработки (спецификаций процессов). При таком построении иерархии DFD каждый процесс более низкого уровня необходимо соотнести с процессом верхнего уровня. Обычно для этой цели используются структурированные номера процессов. Так, например, если мы детализируем процесс номер 2 на диаграмме первого уровня, раскрывая его с помощью DFD, содержащей три процесса, то их номера будут иметь следующий вид: 2.1, 2.2 и 2.3. При необходимости можно перейти на следующий уровень, т.е. для процесса 2.2 получим 2.2.1, и т.д.
Построение модели Главная цель построения иерархического множества DFD заключается в том, чтобы сделать требования ясными и понятными на каждом уровне детализации, а также разбить эти требования на части с точно определенными отношениями между ними. Для достижения этого целесообразно пользоваться следующими рекомендациями: Размещать на каждой диаграмме от 3 до 6-7 процессов. Верхняя граница соответствует человеческим возможностям одновременного восприятия и понимания структуры сложной системы с множеством внутренних связей, нижняя граница выбрана по соображениям здравого смысла: нет необходимости детализировать процесс диаграммой, содержащей всего один или два процесса. Не загромождать диаграммы несущественными на данном уровне деталями. Декомпозицию потоков данных осуществлять параллельно с декомпозицией процессов; эти две работы должны выполняться одновременно, а не одна после завершения другой. Выбирать ясные, отражающие суть дела, имена процессов и потоков для улучшения понимаемости диаграмм, при этом стараться не использовать аббревиатуры. Однократно определять функционально идентичные процессы на самом верхнем уровне, где такой процесс необходим, и ссылаться к нему на нижних уровнях. Пользоваться простейшими диаграммными техниками: если что-либо возможно описать с помощью DFD, то это и необходимо делать, а не использовать для описания более сложные объекты. Отделять управляющие структуры от обрабатывающих структур (т.е. процессов), локализовать управляющие структуры.
В соответствии с этими рекомендациями процесс построения модели разбивается на следующие этапы: Расчленение множества требований и организация их в основные функциональные группы. Идентификация внешних объектов, с которыми система должна быть связана. Идентификацияосновных видовинформации, циркулирующей между системой и внешними объектами. Предварительная разработка контекстной диаграммы, на которой основные функциональные группы представляются процессами, внешние объекты – внешними сущностями, основные виды информации – потоками данных между процессами и внешними сущностями. Изучение предварительной контекстной диаграммы и внесение в нее изменений по результатам ответов на возникающие при этом изучении вопросы по всем ее частям. Построение контекстной диаграммы путем объединения всех процессов предварительной диаграммы в один процесс, а также группирования потоков. Формирование DFD первого уровня на базе процессов предварительной контекстной диаграммы. Проверка основных требований по DFD первого уровня. Декомпозиция каждого процесса текущей DFD с помощью детализирующей диаграммы или спецификации процесса. Проверка основных требований по DFD соответствующего уровня. Добавление определений новых потоков в словарь данных при каждом их появлении на диаграммах. Параллельное (с процессом декомпозиции) изучение требований (в том числе и вновь поступающих), разбиение их на элементарные и идентификация процессов или спецификаций процессов, соответствующих этим требованиям. После построения двух-трех уровней проведение ревизии с целью проверки корректности и улучшения понимаемости модели. Построение спецификации процесса (а не простейшей диаграммы) в случае, если некоторую функцию сложно или невозможно выразить комбинацией процессов.
Словарь данных представляет собой определенным образом организованный список всех элементов данных системы с их точными определениями, Определения элементов данных в словаре осуществляются следующими видами описаний: описанием значений потоков и хранилищ, изображенных на DFD; описанием композиции агрегатов данных, движущихся вдоль потоков, т.е. комплексных данных, которые могут расчленяться на элементарные символы (например, АДРЕС ПОКУПАТЕЛЯ содержит ПОЧТОВЫЙ ИНДЕКС, ГОРОД, УЛИЦУ и т.д.); описанием композиции групповых данных в хранилище; специфицированием значений и областей действия элементарных фрагментов информации в потоках данных и хранилищах; описанием деталей отношений между хранилищами.
Содержимое словаря данных. Для каждого потока данных в словаре необходимо хранить имя потока, его тип и атрибуты. Информация по каждому потоку состоит из ряда словарных статей, каждая из которых начинается с ключевого слова – заголовка соответствующей статьи, которому предшествует символ По типу потока в словаре содержится информация, идентифицирующая: простые (элементарные) или групповые (комплексные) потоки; внутренние (существующие только внутри системы) или внешние (связывающие систему с другими системами) потоки; потоки данных или потоки управления; непрерывные (принимающие любые значения в пределах определенного диапазона) или дискретные (принимающие определенные значения) потоки. Атрибуты потока данных включают: имена-синонимы потока данных в соответствии с узлами изменения имени; БНФ-определение в случае группового потока; единицы измерения потока; диапазон значений для непрерывного потока, типичное его значение и информацию по обработке экстремальных значений; список значений и их смысл для дискретного потока; список номеров диаграмм различных типов, в которых поток встречается; список потоков, в которые данный поток входит (как элемент БНФ- определения); комментарий, включающий дополнительную информацию (например, о цели введения данного потока).
Пример DFD
Пример. Рассмотрим процесс СДАТЬ ЭКЗАМЕН. У нас есть две сущности СТУДЕНТ и ПРЕПОДАВАТЕЛЬ.
Теперь детализируем процесс 1.СДАЧА ЭКЗАМЕНА. Этот процесс будет содержать следующие процессы: Вытянуть билет Подготовиться к ответу Ответы на билет Проставление оценки
Со стороны сущности СТУДЕНТ опишем информационные потоки. Для сдачи экзамена необходимо, чтобы у СТУДЕНТА была ЗАЧЕТКА, а также чтобы он имел ДОПУСК К ЭКЗАМЕНУ. Результатом сдачи экзамена, т.е. выходными потоками будут ОЦЕНКА ЗА ЭКЗАМЕН и ЗАЧЕТКА, в которую будет проставлена ОЦЕНКА. Со стороны сущности ПРЕПОДАВАТЕЛЬ информационные потоки следующие. ЭКЗАМЕНАЦИОННАЯ ВЕДОМОСТЬ согласно которой будет известно, что СТУДЕНТ допущен до экзамена, а также официальна бумага, куда будет занесен результат экзамена, т.е. ОЦЕНКА ЗА ЭКЗАМЕН, ПРОСТАВЛЕННАЯ В ВЕДОМОСТЬ.
Спецификации управления Спецификации управления предназначены для моделирования и документирования аспектов систем, зависящих от времени или реакции на событие. Они позволяют осуществлять декомпозицию управляющих процессов и описывают отношения между входными и выходными управляющими потоками на управляющем процессе-предке. Для этой цели обычно используются диаграммы переходов состояний (STD).
STD состоит из следующих объектов: СОСТОЯНИЕ – может рассматриваться как условие устойчивости для системы. Находясь в определенном состоянии, мы имеем достаточно информации о прошлой истории системы, чтобы определить очередное состояние в зависимости от текущих входных событий. Имя состояния должно отражать реальную ситуацию, в которой находится система, например, НАГРЕВАНИЕ, ОХЛАЖДЕНИЕ и т.п. НАЧАЛЬНОЕ СОСТОЯНИЕ – узел STD, являющийся стартовой точкой для начального системного перехода. STD имеет ровно одно начальное состояние, соответствующее состоянию системы после ее инсталляции, но перед началом реальной обработки, а также любое (конечное) число завершающих состояний. ПЕРЕХОД определяет перемещение моделируемой системы из одного состояния в другое. При этом имя перехода идентифицирует событие, являющееся причиной перехода и управляющее им. Это событие обычно состоит из управляющего потока (сигнала), возникающего как во внешнем мире, так и внутри моделируемой системы при выполнении некоторого условия (например СЧЕТЧИК=999 или КНОПКА НАЖАТА). Следует отметить, что, вообще говоря, не все события необходимо вызывают переходы из отдельных состояний. С другой стороны, одно и то же событие не всегда вызывает переход в то же самое состояние. Таким образом, УСЛОВИЕ представляет собой событие (или события), вызывающее переход и идентифицируемое именем перехода. Если в условии участвует входной управляющий поток управляющего процесса-предка, то имя потока должно быть заключено в кавычки, например, "ПАРОЛЬ"=666, где ПАРОЛЬ – входной поток. Кроме условия с переходом может связываться действие или ряд действий, выполняющихся, когда переход имеет место. То есть ДЕЙСТВИЕ – это операция, которая может иметь место при выполнении перехода.
В ситуации, когда число состояний и/или переходов велико, для проектирования спецификаций управления могут использоваться таблицы или матрицы переходов состояний. 1.Первая колонка таблицы содержит список всех состояний проектируемой системы; 2.во второй колонке для каждого состояния приведены все условия, вызывающие переходы в другие состояния; 3.в третьей колонке – совершаемые при этих переходах действия; 4.четвертая колонка содержит соответствующие имена состояний, в которые осуществляется переход из рассматриваемого состояния при выполнении определенного условия. Матрица переходов состояний содержит по вертикали перечень состояний системы, а по горизонтали список условий. Каждый ее элемент содержит список действий, а также имя состояния, в которое осуществляется переход.
Начальное состояние действие Состояние 1 Состояние 2 условие Эта диаграмма отражает изменение состояния объекта с течением времени. Например, рассмотрим состояние товара на складе: товар может быть заказан у поставщика, поступить на склад, храниться на складе, проходить контроль качества, может быть продан, забракован, возвращен поставщику. Стрелки на диаграмме показывают допустимые изменения состояний.