[содержание](/readme.md)

# Методы и средства проектирования информационных систем.

## Методы проектирования информационных систем

Методология построения информационных систем содержит три основных компонента:

- набор моделей (типов моделей, если строго) для описания требований к ИС, проектных и программных решений. Каждая модель обычно содержит как определение конструкций (нотацию), так и правила их использования (синтаксис);
- метод применения набора моделей для построения информационной системы. Метод обычно использует фиксированный набор моделей и определяет последовательность их построения для описания различных аспектовсоздаваемой системы;
- процесс организации проектных работ, который включает различные технологии —планирования, управления проектом и т.д.

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

Методы проектирования информационных систем обычно относят к одному из двух видов — **структурному** или **объектному**. Правильнее было бы говорить о структурном и объектном наборах моделей, так как существуют методы построения одних и тех же моделей с несовместимыми синтаксическими правилами. Чтобы сохранить корректность терминологии, далее используется термин «подход».

Структурный подход обычно ассоциируется с раздельным построением модели функций (чаще всего диаграммыпотоков данных) и модели данных (чаще всего диаграммы «сущность —связь»).

Объектный подход содержит набор моделей, связанных с понятием класса/объекта, объединяющего данные (состояние) и поведение.

Сами по себе наборы моделей ни в коей мере не должны навязывать принципов построения систем. Тем не менее, нередко такие принципы считаются неотъемлемой характеристикой самих моделей. Структурный и объектный подходы успешно применяются как в спиральном, так и в каскадном жизненном цикле.

Методы проектирования архитектур информационных систем:

- Проектирование архитектуры (проектирование «в большом») 
- Проектирование подсистем (проектирование «в малом»)

## Проектирование архитектуры (проектирование «в большом»)

Структурная методология. Проектирование архитектуры (проектирование «в большом») для структурной методологии включает следующие основные методы:

- метод нисходящего проектирования; 
- метод восходящего проектирования; 
- метод расширения ядра. 

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

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

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

Метод расширения ядра подход, при котором основное внимание уделяется выявлению множества вспомогательных подсистем, а не определению функции всей системы в целом.

Объектно-ориентированная методология. Проектирование архитектуры для объектноориентированной методологии включает следующие основные методы: 
- метод проектирования предметных областей;
- метод наведения мостов.

Метод проектирования предметных областей заключается в выделении предметной области системы с точки зрения пользователя. 

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

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

## Проектирование подсистем (проектирование «в малом»)

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

- диаграммы «сущность связь»; 
- структурные карты;
- диаграммы деятельности;
- диаграммы Варнье-Орра;
- диаграммы переходов состояний;
- блок-схемы;
- схемы экранов;
- псевдокод.

Объектно-ориентированная методология включает следующие основные методы проектирования модулей:

- диаграммы кооперации; 
- диаграммы компонентов; 
- диаграммы развертывания.

## Метод анализа и построения спецификаций

Структурная методология включает следующие методы ведения структурного анализа:

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

Объектно-ориентированная методология включает следующие методы ведения объектно-ориентированного анализа:
- КОК-карты (класс ответственность кооперация);
- диаграммы вариантов использования; диаграммы классов;
- диаграммы состояний;
- диаграммы деятельности;
- диаграммы последовательности.

## Подходы к ведению анализа и проектирования

Структурная методология. Комбинации структурных методов образуют структурные подходы. Можно выделить три группы структурных подходов на основе порядка построения модели: 
1) процедурно-ориентированные подходы, в которых первично проектирование функциональных компонентов; 
2) подходы, ориентированные на данные. Для таких подходов первичны входные и выходные данные, а функциональные (процедурные) компоненты вторичны; 
3) информационно-ориентированные подходы. Эта группа близка к предыдущей, но отличается тем, что работа ведется с неиерархическими структурами данных.

Можно выделить два класса целевых систем информационные системы (управляемые данными) и системы реального времени (управляемые событиями). 

Информационные системы работают с большим объемом входных данных сложной структуры.

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

Подходы используют две основные группы средств моделирования: диаграммы, иллюстрирующие функции, которые система должна выполнять, и связи между функциями, например, диаграммы потоков данных и функционального моделирования; диаграммы, моделирующие данные и их отношения, например, диаграммы «сущность связь». 

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

Объектно-ориентированная методология. Перечислим основные подходы к ведению объектно-ориентированного анализа и проектирования и рассмотрим подробно некоторые из них:

- подход на основе языка UML;
- подход Шлеер-Меллора; 
- подход Г рад и Буча; 
- подход Джеймса Рамбо; 
- подход Ивара Якобсона.

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

Подход Шлеер-Меллора использует три группы средств для создания модели предметной области: 

1) информационное моделирование для определения отношений между данными (информацией). При этом используется один тип диаграмм диаграммы классов; 
2) моделирование состояний для определения зависящего от времени поведения системы. Используются диаграммы состояний; 
3) моделирование процессов для определения функций, которые система должна выполнить. Используются диаграммы деятельности и диаграммы последовательности.

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

- диаграммы кооперации; 
- диаграммы компонентов; 
- диаграммы развертывания.

Подход предлагает механизм поддержки моделей состояний. Для этого вводятся четыре архитектурных класса: 
1) переход, описывающий каждый переход для всех моделей состояний в программе; 
2) конечная модель состояний, связывающая все экземпляры перехода, которые составляют одну модель состояний; 
3) активный экземпляр. Это абстрактный класс, из которого все экземпляры, имеющие модель состояний, наследуют их текущее состояние; 
4) таймер, обеспечивающий механизм функционирования таймеров на основе аппаратных средств, доступных для хранения следа времени.

## Структурный подход к проектированию ИС

Сущность структурного подхода к разработке ИС заключается в ее декомпозиции (разбиении) на автоматизируемые функции: система разбивается на функциональные подсистемы, которые, в свою очередь, делятся на подфункции, подразделяемые на задачи, и так далее. Процесс разбиения продолжается вплоть до конкретных процедур. При этом автоматизируемая система сохраняет целостное представление, в котором все составляющие компоненты взаимосвязаны. При разработке системы «снизу-вверх» от отдельных задач ко всей системе целостность теряется, возникают проблемы при информационной стыковке отдельных компонентов.

## Структурный анализ в проектировании ИС 

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

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

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

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

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

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

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

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

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

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

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

В структурном анализе применяются в основном две группы средств, отражающие функции, выполняемые системой, и отношения между данными. Каждой группе средств соответствуют определенные виды моделей (диаграмм), наиболее распространенными среди которых являются следующие: 
- SADT-модели (Structured Analysis and Design Technique) и соответствующие функциональные диаграммы; 
- DFD-диаграммы (Data Flow Diagrams) потоков данных; 
- ERD-диаграммы (Entity-Relationship Diagrams) «сущностьсвязь».

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


[Методы и средства проектирования информационных систем. Основные понятия системного анализа]: https://docplayer.ru/49313322-Metody-i-sredstva-proektirovaniya-informacionnyh-sistem-osnovnye-ponyatiya-sistemnogo-analiza.html
