Лекция № 10. Структурный подход. Анализ требований, определение спецификаций
Содержание лекции: спецификации программного обеспечения; структуры данных; математические модели задач, разработка и выбор методов решения;
Цель лекции: ознакомиться с особенностями структурного подхода к определению спецификаций, структур данных, моделей и методов решения задач.
Собственно разработка любого программного обеспечения начинается с анализа требований к будущему программному продукту. В результате анализа получают спецификации разрабатываемого ПО: выполняют декомпозицию и содержательную постановку решаемых задач, уточняют их взаимодействие и эксплуатационные ограничения. В целом в процессе определения спецификаций строят общую модель предметной области, как некоторой части реального мира, с которой будет тем или иным способом взаимодействовать разрабатываемое программное обеспечение, и конкретизируют его основные функции.
Спецификации - полное и точное описание функций и ограничений разрабатываемого программного обеспечения. Функциональные спецификации описывают функции разрабатываемого программного продукта, а эксплуатационные - определяют требования к техническим средствам, надежности, информационной безопасности и т. д.
Естественный язык для описания спецификаций не подходит, поскольку не обеспечивает необходимой точности. Точные спецификации можно определить лишь разработав некоторую формальную модель ПО. Формальные модели можно разделить на две группы: модели, зависящие от подхода к разработке, и модели, не зависящие от него. Диаграммы переходов состояний, которые демонстрируют особенности поведения разрабатываемого ПО при получении тех или иных сигналов извне, и математические модели предметной области, позволяющие уточнить основные соотношения анализируемых величин и накладываемые на них ограничения,используются при любом подходе к разработке.
В рамках структурного подхода на этапе анализа и определения спецификаций используют три типа моделей: ориентированные на функции, ориентированные на данные и ориентированные на потоки данных, каждая из которых пригодна для своего класса программных разработок. Поскольку разные модели описывают проектируемое ПО с разных сторон, рекомендуется использовать сразу несколько моделей и сопровождать их текстами (словарями, описаниями), которые поясняют соответствующие диаграммы.
Спецификации процессов обычно представляют в виде краткого текстового описания, схем алгоритмов, псевдокодов, Flow-форм или диаграмм Насси-Шнейдермана. Для краткости и понятности описания не только разработчику, но и заказчику, чаще всего используют псевдокоды.
Словарь терминов – краткое описание основных понятий, используемых при составлении спецификаций, который включает определение основных понятий предметной области, описание структур элементов данных, их типов и форматов, а также всех сокращений и условных обозначений. Предназначен для повышения степени понимания предметной области и исключения риска возникновения разногласий при обсуждении моделей между заказчиками и разработчиками. Описание термина в словаре выполняется по схеме [1]:
«термин – категория– краткое описание».
Диаграмма переходов состояний демонстрирует поведение разрабатываемой программной системы при получении управляющих воздействий (управляющей информации, поступающей извне). Для ее построения в соответствии с теорией конечных автоматов необходимо определить: основные состояния, управляющие воздействия (или условия перехода), выполняемые действия и возможные варианты переходов из одного состояния в другое.
Если программная система в процессе функционирования активно не взаимодействует с окружающей средой (пользователем или датчиками), например, использует примитивный интерфейс и выполняет некоторые вычисления по заданным исходным данным, то диаграмма переходов состояний обычно интереса не представляет, поскольку она демонстрирует только последовательно выполняемые переходы (рисунок Г.2а): из исходного состояния в состояние ввода данных, после выполнения вычислений - в состояние вывода и, наконец, в состояние завершения работы. Для интерактивного ПО с развитым пользовательским интерфейсом характерно получение команд различных типов (рисунок Г.2б), а для ПО реального времени - однотипных сигналов (либо от многих датчиков, либо требующих продолжительной обработки). Общим для них является наличие состояния ожидания, когда ПО приостанавливает работу до получения очередного управляющего воздействия. В отличие от интерактивных систем для систем реального времени обычно установлено более жесткое ограничение на время обработки полученного сигнала ПО. Такое ограничение часто требует выполнения дополнительных исследований поведения системы во времени. К ПО, требующему уточнения особенностей поведения посредством построения диаграммы переходов состояний, относится и ПО, ориентированное на работу в сети. При этом отдельно строят модели поведения сервера и клиента, представляя сообщения, передаваемые между ними, в виде управляющих воздействий. Полученную диаграмму переходов состояний обязательно согласовывают с заказчиком.
Функциональными называют диаграммы, отражающие взаимосвязи функций разрабатываемого программного обеспечения. Отображение взаимосвязи функций осуществляется посредством построения иерархии функциональных диаграмм, схематически представляющих взаимосвязи нескольких функций. Каждый блок такой диаграммы соответствует некоторой функции, для которой должны быть определены: исходные данные, результаты, управляющая информация и механизмы ее осуществления - человек или технические средства. Все перечисленные выше связи функции представляются дугами, причем тип связи и ее направление строго регламентированы. Дуги, изображающие каждый тип связей, должны подходить к блоку с определенной стороны (рисунок 10.1), а направление связи должно указываться стрелкой в конце дуги.
Рисунок 10.1 – Функциональный блок и интерфейсные дуги
Физически дуги исходных данных, результатов и управления представляют собой наборы данных, передаваемые между функциями. Дуги, определяющие механизм выполнения функции, используются при описании сложных информационных систем. Блоки и дуги маркируются текстами на естественном языке. Блоки на диаграмме размещают по «ступенчатой» схеме в соответствии с последовательностью их работы или доминированием, которое понимается как влияние, оказываемое одним блоком на другие. Дуги могут разветвляться и соединяться различными способами. Разветвление означает, что часть или вся информация может использоваться в каждом ответвлении дуги. В процессе построения иерархии диаграмм фиксируют всю уточняющую информацию и строят словарь данных, в котором определяют структуры и элементы данных, показанных на диаграммах. В результате получают спецификацию, которая состоит из иерархии функциональных диаграмм, спецификаций функций нижнего уровня и словаря, имеющих ссылки друг на друга. Функциональную модель целесообразно применять для определения спецификаций ПО, не предусматривающего работу со сложными структурами данных, так как она ориентирована на декомпозицию функций.
Диаграммы потоков данных позволяют специфицировать как функции разрабатываемого ПО, так и обрабатываемые им данные. При использовании этой модели систему представляют в виде иерархии диаграмм потоков данных, описывающих асинхронный процесс преобразования информации с момента ввода в систему до выдачи пользователю. На каждом следующем уровне иерархии происходит уточнение процессов, пока очередной процесс не будет признан элементарным. В основе модели лежат понятия внешней сущности, процесса, хранилища (накопителя) данных и потока данных.
Структура данных- совокупность правил и ограничений, которые отражают связи, существующие между отдельными элементами данных.
Различают абстрактные структуры данных, используемые для уточнения связей между элементами, и конкретные структуры, используемые для представления данных в программах. Все абстрактные структуры данных можно разделить на три группы: структуры, элементы которых не связаны между собой, таблицы (структуры с неявными связями элементов) и графы (структуры, связь элементов которых указывается явно). В первую группу входят множества и кортежи. Наиболее существенная характеристика элемента данных в этих структурах - отношение вхождения (его принадлежность некоторому набору). Ко второй группе относят векторы, матрицы, массивы (многомерные), записи, строки, а также таблицы, включающие перечисленные структуры в качестве частей. В тех случаях, когда существенны связи элементов данных между собой, в качестве модели структур данных используют графы. В зависимости от описываемых типов отношений модели структур данных принято делить на иерархические и сетевые.
Для задач, алгоритм решения которых не очевиден, используют разного рода математические модели. Процесс построения такой модели включает:
а) анализ условия задачи;
б) выбор математических абстракций, адекватно, т. е. с требуемой точностью и полнотой представляющих исходные данные и результаты;
в) формальную постановку задачи;
г) определение метода преобразования исходных данных в результат (метода решения задачи).
Для многих задач, которые часто встречаются на практике, в математике определены как модели, так и методы решения. В ряде случаев формальная постановка задачи однозначно определяет метод ее решения, но, как правило, методов решения существует несколько, и тогда для выбора метода решения может потребоваться специальное исследование. При выборе метода учитывают: особенности данных конкретной задачи, связанные с предметной областью (погрешность, возможные особые случаи и т. п.); требования к результатам (допустимую погрешность); характеристики метода (точный или приближенный, погрешности результатов, вычислительную и емкостную сложности, сложность реализации).
Определив методы решения, целесообразно для некоторых вариантов исходных данных вручную подсчитать ожидаемые результаты. Эти данные будут использованы при тестировании ПО. Выполнение операций вручную позволяет точно уяснить последовательность действий, что упростит разработку алгоритмов. Имеет смысл продумать, для каких сочетаний исходных данных результат не существует или не может быть получен данным методом, что тоже необходимо учесть при разработке ПО.
Дополнительную информацию по теме можно получить в [1, 4, 6, 8, 11].