Базы данныхИнтернетКомпьютерыОперационные системыПрограммированиеСетиСвязьРазное
Поиск по сайту:
Подпишись на рассылку:

Назад в раздел

CASE. Структурный системный анализ.


Часть 1

МЕТОДЫ И СРЕДСТВА СТРУКТУРНОГО
СИСТЕМНОГО АНАЛИЗА И ПРОЕКТИРОВАНИЯ


ГЛАВА 1. ПОНЯТИЕ СТРУКТУРНОГО АНАЛИЗА
-------------------------------------

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

Традиционно выделяются следующие основные этапы ЖЦ ПО:

¦ анализ требований,

¦ проектирование,

¦ кодирование (программирование),

¦ тестирование и отладка,

¦ эксплуатация и сопровождение.

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

Существующие модели ЖЦ определяют порядок исполнения этапов в ходе
разработки, а также критерии перехода от этапа к этапу. В соответствии с
этим наибольшее распространение получили три следующие модели ЖЦ:

1. Каскадная модель (70-80г.г.) - предполагает переход на следующий
этап после полного окончания работ по предыдущему этапу.

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

3. Спиральная модель (86-90г.г.) - делает упор на начальные этапы ЖЦ:
анализ требований, проектирование спецификаций, предварительное и
детальное проектирование. На этих этапах проверяется и
обосновывается реализуемость технических решений путем создания
прототипов. Каждый виток спирали соответствует поэтапной модели
создания фрагмента или версии программного изделия, на нем
уточняются цели и характеристики проекта, определяется его
качество, планируются работы следующего витка спирали. Таким
образом углубляются и последовательно конкретизируются детали
проекта и в результате выбирается обоснованный вариант, который
доводится до реализации.

Специалистами отмечаются следующие преимущества спиральной модели:

¦ накопление и повторное использование программных средств, моделей и
прототипов;

¦ ориентация на развитие и модификацию ПО в процессе его
проектирования;

¦ анализ риска и издержек в процессе проектирования.

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

Анализ требований является первой фазой разработки ПО, на которой
требования заказчика уточняются, формализуются и документируются.
Фактически на этом этапе дается ответ на вопрос: "Что должна делать
будущая система?". Именно здесь лежит ключ к успеху всего проекта. В
практике создания больших систем ПО известно немало примеров неудачной
реализации проекта именно из-за неполноты и нечеткости определения
системных требований.

Список требований к разрабатываемой системе должен включать:

¦ совокупность условий, при которых предполагается эксплуатировать
будущую систему (аппаратные и программные ресурсы, предоставляемые
системе; внешние условия ее функционирования; состав людей и работ,
имеющих к ней отношение);

¦ описание выполняемых системой функций;

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

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

¦ архитектура системы, ее функции, внешние условия, распределение
функций между аппаратурой и ПО;

¦ интерфейсы и распределение функций между человеком и системой;

¦ требования к программным и информационным компонентам ПО,
необходимые аппаратные ресурсы, требования к БД, физические
характеристики компонентов ПО, их интерфейсы.

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

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

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

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


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

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

¦ аналитику сложно получить исчерпывающую информацию для оценки
требований к системе с точки зрения заказчика;

¦ заказчик, в свою очередь, не имеет достаточной информации о
проблеме обработки данных, чтобы судить,что является выполнимым, а
что - нет;

¦ аналитик сталкивается с чрезмерным количеством подробных сведений о
предметной области и о новой системе;

¦ спецификация системы из-за объема и технических терминов часто
непонятна для заказчика;

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

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

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

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

Выделение двух базовых принципов инженерии программного обеспечения
не означает, что остальные принципы являются второстепенными,
игнорирование любого из них может привести к непредсказуемым последствиям
(в том числе и к неуспеху всего проекта). Отметим основные из таких
принципов.

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

2. Принцип формализации - заключается в необходимости строгого
методического подхода к решению проблемы.

3. Принцип упрятывания - заключается в упрятывании несущественной на
конкретном этапе информации: каждая часть "знает" только
необходимую ей информацию.

4. Принцип концептуальной общности - заключается в следовании единой
философии на всех этапах ЖЦ (структурный анализ - структурное
проектирование - структурное программирование - структурное
тестирование).

5. Принцип полноты - заключается в контроле на присутствие лишних
элементов.

6. Принцип непротиворечивости - заключается в обоснованности и
согласованности элементов.

7. Принцип логической независимости - заключается в концентрации
внимания на логическом проектировании для обеспечения
независимости от физического проектирования.

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

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

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

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

Средства структурного анализа и их взаимоотношения
---------------------------------------------------------------------
Прежде чем подробно рассмотреть каждое из основных инструментальных
средств структурного анализа, необходимо обсудить их в общем виде и
продемонстрировать их взаимосвязи.

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

¦ функции, которые система должна выполнять;

¦ отношения между данными;

¦ зависящее от времени поведение системы (аспекты реального времени).

Среди всею многообразия средств решения данных задач в методологиях
структурного анализа наиболее часто и эффективно применяемыми являются
следующие:

¦ DFD (Data Plow Diagrams) - диаграммы потоков данных (глава 2)
совместно со словарями данных (глава 3) и спецификациями процессов
или миниспецификациями (глава 4);

¦ ERD (Entity-Relationship Diagrams) - диаграммы "сущность-связь"
(глава 5);

¦ STD (State Transition Diagrams) - диаграммы переходов состояний
(глава 6).

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

Логическая DFD показывает внешние по отношению к системе источники и
стоки (адресаты) данных, идентифицирует логические функции (процессы) и
группы элементов данных, связывающие одну функцию с другой (потоки), а
также идентифицирует хранилища (накопители) данных, к которым
осуществляется доступ. Структуры потоков данных и определения их
компонентов хранятся и анализируются в словаре данных. Каждая логическая
функция (процесс) может быть детализирована с помощью DFD нижнего уровня;
когда дальнейшая детализация перестает быть полезной, переходят к
выражению логики функции при помощи спецификации процесса
(миниспецификации). Содержимое каждого хранилища также сохраняют в словаре
данных, модель данных хранилища раскрывается с помощью ERD. В случае
наличия реального времени DFD дополняется средствами описания зависящего
от времени поведения системы, раскрывающимися с помощью STD. Эти связи
показаны на рис. 1.1.

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

Рис. 1.1: Компоненты логической модели.



  • Главная
  • Новости
  • Новинки
  • Скрипты
  • Форум
  • Ссылки
  • О сайте




  • Emanual.ru – это сайт, посвящённый всем значимым событиям в IT-индустрии: новейшие разработки, уникальные методы и горячие новости! Тонны информации, полезной как для обычных пользователей, так и для самых продвинутых программистов! Интересные обсуждения на актуальные темы и огромная аудитория, которая может быть интересна широкому кругу рекламодателей. У нас вы узнаете всё о компьютерах, базах данных, операционных системах, сетях, инфраструктурах, связях и программированию на популярных языках!
     Copyright © 2001-2024
    Реклама на сайте