Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
конспект ТП.doc
Скачиваний:
325
Добавлен:
01.05.2015
Размер:
897.54 Кб
Скачать

10 Лекция № 10. Структурный подход. Анализ требований, определение спецификаций

Содержание лекции: спецификации программного обеспечения; структуры данных; математические модели задач, разработка и выбор методов решения;

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

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

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

Естественный язык для описания спецификаций не подходит, поскольку не обеспечивает необходимой точности. Точные спецификации можно определить лишь разработав некоторую формальную модель ПО. Формальные модели можно разделить на две группы: модели, зависящие от подхода к разработке, и модели, не зависящие от него. Диаграммы переходов состояний, которые демонстрируют особенности поведения разрабатываемого ПО при получении тех или иных сигналов извне, и математические модели предметной области, позволяющие уточнить основные соотношения анализируемых величин и накладываемые на них ограничения, используются при любом подходе к разработке.

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

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

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

«терминкатегориякраткое описание».

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

Если программная система в процессе функционирования активно не взаимодействует с окружающей средой (пользователем или датчиками), на­пример, использует примитивный интерфейс и выполняет некоторые вычис­ления по заданным исходным данным, то диаграмма переходов состояний обычно интереса не представляет, поскольку она демонстрирует только последовательно выполняемые переходы (рисунок Г.2а): из исходного состояния в состоя­ние ввода данных, после выполнения вычислений - в состояние выво­да и, наконец, в состояние завершения работы. Для интерактивного ПО с развитым пользова­тельским интерфейсом характерно получение команд различных типов (рисунок Г.2б), а для ПО реального времени - однотипных сигналов (либо от многих датчиков, либо требующих продолжительной об­работки). Общим для них является наличие состояния ожидания, когда ПО приостанавливает работу до получения очередно­го управляющего воздействия. В отличие от интерактивных си­стем для систем реального времени обычно установлено более жесткое ограничение на время обработки по­лученного сигнала ПО. Такое ограничение ча­сто требует выполнения дополни­тельных исследований поведения системы во времени. К ПО, требующему уточнения особеннос­тей поведения посредством построе­ния диаграммы переходов состоя­ний, относится и ПО, ориентированное на работу в сети. При этом отдельно строят модели поведения сервера и клиента, представляя сообщения, передаваемые между ними, в виде управляющих воздействий. Полученную диаграмму переходов состояний обязательно согласовывают с заказчиком.

Функциональными называют диаграммы, отражающие взаимосвязи функций разрабатываемого программного обеспечения. Отображение взаимосвязи функций осуществля­ется посредством построения иерархии функциональных диаграмм, схемати­чески представляющих взаимосвязи нескольких функций. Каждый блок та­кой диаграммы соответствует некоторой функции, для которой должны быть определены: исходные данные, результаты, управляющая информация и ме­ханизмы ее осуществления - человек или технические средства. Все перечисленные выше связи функции представляются дугами, при­чем тип связи и ее направление строго регламентированы. Дуги, изображаю­щие каждый тип связей, должны подходить к блоку с определенной стороны (рисунок 10.1), а направление связи должно указываться стрелкой в конце дуги.

Рисунок 10.1 – Функциональный блок и интерфейсные дуги

Физически дуги исходных данных, результатов и управления представ­ляют собой наборы данных, передаваемые между функциями. Дуги, опреде­ляющие механизм выполнения функции, используются при описании сложных информационных систем. Блоки и дуги марки­руются текстами на естественном языке. Блоки на диаграмме размещают по «ступенчатой» схеме в соответствии с последовательностью их работы или доминированием, которое понимается как влияние, оказываемое одним блоком на другие. Дуги могут разветвляться и соединяться различными способами. Разветвление означает, что часть или вся информация может использоваться в каждом ответвлении дуги. В процессе построения иерархии диаграмм фиксируют всю уточняю­щую информацию и строят словарь данных, в котором определяют структу­ры и элементы данных, показанных на диаграммах. В результате получают спецификацию, которая состоит из иерархии функциональных диаграмм, спецификаций функций нижнего уровня и словаря, имеющих ссылки друг на друга. Функциональную модель целесообразно применять для определения спецификаций ПО, не предусматривающего работу со сложными структурами данных, так как она ориентирована на декомпози­цию функций.

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

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

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

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

  1. анализ условия задачи;

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

  3. формальную постановку задачи;

  4. определение метода преобразования исходных данных в результат (метода решения задачи).

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

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

Дополнительную информацию по теме можно получить в [1, 4, 6, 8, 11].