Структурное проектирование программ. Функциональная схема программного обеспечения Функциональная схема программного обеспечения


Шаг 1. Определяем структуру управляющей программы, которая для нашего случая реализует работу с меню через клавиатуру: Программа
Шаг 2. Детализируем операцию Выполнить команду: Выполнить Команду
Подобный материал:
  • Н. Э. Баумана Факультет Информатики и систем управления Кафедра Компьютерные системы , 254.77kb.
  • Н. Э. Баумана Кафедра Компьютерные системы и сети Г. С. Иванова, Т. Н. Ничушкина Оформление , 109.65kb.
  • Н. Э. Баумана Факультет "Инженерный бизнес и менеджмент" Кафедра "Менеджмент" , 786.11kb.
  • Примерная программа наименование дисциплины Проектирование и архитектура программных , 182.2kb.
  • С. В. Чувиков Метрология и сертификация программного обеспечения Учебное пособие , 1298.56kb.
  • Электронное гиперссылочное учебное пособие по дисциплине «Основы теории управления» , 57.71kb.
  • Н. Э. Баумана Факультет "Информатика и системы управления" Кафедра "Системы обработки , 128.07kb.
  • М. В. Красильникова проектирование информационных систем раздел: Теоретические основы , 1088.26kb.
  • Программа вступительных испытаний (собеседования) для поступающих в магистратуру , 87.89kb.
  • Учебное пособие, 2003 г. Учебное пособие разработано ведущим специалистом учебно-методического , 454.51kb.

4.Проектирование программного обеспечения при структурном подходе

4.1.Разработка структурной и функциональной схем

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

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

Самый простой вид ПО – программа в качестве структурных компонентов может включать только подпрограммы и библиотеки ресурсов. Разработка структурной схемы программы обычно выполняется методом пошаговой детализации (см. § 4.2).

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

Более полное представление о проектируемом ПО с точки зрения взаимодействия его компонентов между собой и с внешней средой дает функциональная схема.

Функциональная схема. Функциональная схема или схема данных (ГОСТ 19.701–90) – схема взаимодействия компонентов ПО с описанием информационных потоков, состава данных в потоках и указанием используемых файлов и устройств. Для изображения функциональных схем используют специальные обозначения, установленные стандартом.

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

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

4.2.Использование метода пошаговой детализации для проектирования структуры программного обеспечения

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

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

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

Кроме этого целесообразно придерживаться следующих рекомендаций:

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

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

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

Для того чтобы построить график необходимо задать функцию, интервал изменения аргумента , на котором функция непрерывна, количество точек графика n, размер и положение окна экрана, в котором необходимо построить график: wx1, wy1, wx2, wy2 и количество линий сетки по горизонтали и вертикали nlx, nly. Значения wx1, wy1, wx2, wy2, nlx, nly можно задать, исходя из размера экрана, а интервал и число точек графика надо вводить.

Разработку алгоритма выполняем методом пошаговой детализации, используя для его документирования псевдокод.

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

Шаг 1. Определяем структуру управляющей программы, которая для нашего случая реализует работу с меню через клавиатуру:

Программа.

Инициализировать глобальные переменные

Вывести заголовок и меню

Выполнять

Если выбрана Команда

то Выполнить Команду

иначе

Все-если

до Команда=Выход

Конец.

Очистка экрана, вывод заголовка и меню, а также выбор Команды – операции сравнительно простые, следовательно, их можно не детализировать.

Шаг 2. Детализируем операцию Выполнить команду:

Выполнить Команду:

Выбор Команда

Функция:

Выполнить разбор формулы

Отрезок:

Ввести значения x1,x2

Ввести значение h

Вид результата:

Ввести вид_результата

Если Вид_результата=График

то Построить график

иначе Вывести таблицу

все-если

Все-выбор

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

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

Подпрограмма Вывод заголовка и меню параметров не имеет.

Подпрограмма Разбор формулы должна иметь два параметра: Fun – аналитическое задание функции, Tree – возвращаемый параметр – адрес дерева разбора.

Подпрограмма Расчет Значений функции должна получать адрес дерева разбора Tree, отрезок x1 и x2, а также шаг h. Обратно в программу она должна возвращать таблицу значений функции X(n) и Y(n), где n – количество точек функции.

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

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

Программа.

Вывод заголовка и меню

Выполнять

Если выбрана Команда

то

Выбор Команда

Функция:

Ввести или выбрать формулу Fun

Разбор формулы (Fun; Var Tree)

Отрезок:

Ввести значения x1,x2

Ввести значения h

Вид результата:

Ввести Вид_результата

Выполнить:

Расчет таблицы(x1,x2,h,Tree; Var X, Y, n)

Если Вид_результата=График

то Построение графика(X, Y, n)

иначе Вывеод таблицы(X, Y, n)

все-если

Все-выбор

иначе Обработать нажатие клавиш управления

Все-если

до Команда=Выход

Конец.

На следующих шагах необходимо выполнить детализацию алгоритмов подпрограмм. Детализацию выполняют, пока алгоритм программы не станет полностью понятен. Один из возможных вариантов полной структурной схемы данной программы показан на рис. 4.5.

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

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

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

Функциональная схема или схема данных (ГОСТ 19. 701-90) - схема взаимодействия компонентов программного обеспечения с описанием информационных потоков, состава данных в потоках и указанием используемых файлов и устройств. Для изображения функциональных схем используют специальные обозначения, установленные стандартом.

Функциональные схемы более информативны, чем структурные. На рисуноке- 12. для сравнения приведены функциональные схемы программных комплексов и систем.

Рисунок - 12. Примеры функциональных схем: а - комплекс программ, б - программная система.

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

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

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

Унифицированный язык объектно-ориентированного моделирования Unified Modeling Language (UML) явился средством достижения компромисса между этими подходами. Существует достаточное количество инструментальных средств, поддерживающих с помощью UML жизненный цикл информационных систем, и, одновременно, UML является достаточно гибким для настройки и поддержки специфики деятельности различных команд разработчиков.

UML представляет собой объектно-ориентированный язык моделирования, обладающий следующими основными характеристиками:

· является языком визуального моделирования, который обеспечивает разработку репрезентативных моделей для организации взаимодействия заказчика и разработчика ИС, различных групп разработчиков ИС;

· содержит механизмы расширения и специализации базовых концепций языка.

· UML - это стандартная нотация визуального моделирования программных систем, принятая консорциумом Object Managing Group(OMG) осенью 1997 г., и на сегодняшний день она поддерживается многими объектно-ориентированными CASE-продуктами.

· UML включает внутренний набор средств моделирования (модулей?) ("ядро"), которые сейчас приняты во многих методах и средствах моделирования. Эти концепции необходимы в большинстве прикладных задач, хотя не каждая концепция необходима в каждой части каждого приложения. Пользователям языка предоставлены возможности:

· строить модели на основе средств ядра, без использования механизмов расширения для большинства типовых приложений;

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

Совокупность программ, предназначенная для решения задач на ПК, называется программным обеспечением. Состав программного обеспечения ПК называют программной конфигурацией. Программное обеспечение, можно условно разделить на три категории (рис.1):

Рисунок 1. Классификация ПО

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

    прикладное ПО, обеспечивающее выполнение необходимых работ на ПК: редактирование текстовых документов, создание рисунков или картинок, обработка информационных массивов и т.д.

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

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

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

    операционные системы (эта программа загружается в ОЗУ при включении компьютера)

    программы – оболочки (обеспечивают более удобный и наглядный способ общения с компьютером, чем с помощью командной строки DOS, например, Norton Commander)

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

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

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

К утилитам относятся:

    диспетчеры файлов или файловые менеджеры

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

    средства просмотра и воспроизведения

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

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

    средства обеспечения компьютерной безопасности (резервное копирование, антивирусное ПО).

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

Иногда утилиты относят к классу сервисного программного обеспечения

Утилиты используются для:

    Мониторинга показателей датчиков и производительности оборудования - мониторинг температур процессора, видеоадаптера; чтение S.M.A.R.T. жёстких дисков;

    Управления параметрами оборудования - ограничение максимальной скорости вращения CD-привода; изменение скорости вращения вентиляторов.

    Контроля показателей - проверка ссылочной целостности; правильности записи данных.

    Расширения возможностей - форматирование и/или переразметка диска с сохранением данных, удаление без возможности восстановления.

Типы утилит:

Дисковые утилиты

      Дефрагментаторы

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

      Очистка диска - удаление временных файлов, ненужных файлов, чистка «корзины».

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

      Резервное копирование - создание резервных копий целых дисков и отдельных файлов, а также восстановление из этих копий.

      Сжатие дисков - сжатие информации на дисках для увеличения вместимости жёстких дисков.

      • Утилиты работы с реестром

        Утилиты мониторинга оборудования

        Тесты оборудования

Рисунок 2. Место СПО в многоуровневой структуре компьютера

Необходимо отметить, что часть утилит входит в состав операционной системы, а другая часть функционирует автономно. Большая часть общего (системного) ПО входит в состав ОС (рис.2). Часть общего ПО входит в состав самого компьютера (часть программ ОС и контролирующих тестов записана в ПЗУ или ППЗУ, установленных на системной плате). Часть общего ПО относится к автономными программам и поставляется отдельно.

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

    Комплект офисных приложений MS OFFICE

    Бухгалтерские системы

    Финансовые аналитические системы

    Интегрированные пакеты делопроизводства

    CAD – системы (системы автоматизированного проектирования)

    Редакторы HTML или Web – редакторы

    Браузеры – средства просмотра Web - страниц

    Графические редакторы

    Экспертные системы.

          Инструментальное ПО. Инструментальное ПО или системы программирования - это системы для автоматизации разработки новых программ на языке программирования. В самом общем случае для создания программы на выбранном языке программирования (языке системного программирования) нужно иметь следующие компоненты:1. Текстовый редактор для создания файла с исходным текстом программы. 2. Компилятор или интерпретатор. Исходный текст с помощью программы-компилятора переводится в промежуточный объектный код. Исходный текст большой программы состоит из нескольких модулей (файлов с исходными текстами). Каждый модуль компилируется в отдельный файл с объектным кодом, которые затем надо объединить в одно целое.3. Редактор связей или сборщик, который выполняет связывание объектных модулей и формирует на выходе работоспособное приложение – исполнимый код. Исполнимый код – это законченная программа, которую можно запустить на любом компьютере, где установлена операционная система, для которой эта программа создавалась. Как правило, итоговый файл имеет расширение.ЕХЕ или.СОМ.4. В последнее время получили распространение визуальный методы программирования (с помощью языков описания сценариев), ориентированные на создание Windows-приложений. Этот процесс автоматизирован в средах быстрого проектирования. При этом используются готовые визуальные компоненты, которые настраиваются с помощью специальных редакторов. Наиболее популярные редакторы (системы программирования программ с использованием визуальных средств) визуального проектирования:

    Borland Delphi - предназначен для решения практически любых задачи прикладного программирования

    Borland C++ Builder – это отличное средство для разработки DOS и Windows приложений

    Microsoft Visual Basic – это популярный инструмент для создания Windows-программ

    Microsoft Visual C++ - это средство позволяет разрабатывать любые приложения, выполняющиеся в среде ОС типа Microsoft Windows

Контрольные вопросы:

    Дайте определение операционной системе.

    Какое программное обеспечение относят к системному?

    Назовите служебное программное обеспечение.

    Какое программное обеспечение относят к прикладному?

    Каково назначение программного обеспечения?

    Каковы основные классы программ? Приведите примеры программ в каждом классе по назначению.

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

  • (Технология разработки программного обеспечения)
  • ПРОЕКТИРОВАНИЕ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ
    Существуют два стиля проектирования: эволюционное и предварительное проектирование . Методология Extreme Programming (ХР) бросила вызов многим устоявшимся представлениям о разработке программного обеспечения. Пожалуй, наиболее противоречивой идеей является отказ от предварительного проектирования...
    (Технология разработки программного обеспечения)
  • Разработка структуры программного обеспечения при объектном подходе
    На этапе проектирования уточняются поля и методы классов, а также отношения между классами. Все это находит отражение на диаграмме классов. Для уточнения содержания некоторых классов на диаграмме используют следующие обозначения: управляющий класс (control class) отвечает за координацию действий...
    (Технология разработки программного обеспечения)
  • Структурный метод разработки программного обеспечения
    Сущность структурного подхода к разработке АИС заключается в ее декомпозиции (разбиении) на автоматизируемые функции: система разбивается на функциональные подсистемы, которые, в свою очередь, делятся на подфункции, подразделяемые на задачи, и т.д. - вплоть до конкретных процедур. При этом автоматизируемая...
    (Информационные системы в экономике)
  • ЛАБОРАТОРНАЯ РАБОТА № 1. Этапы разработки программного обеспечения при структурном подходе к программированию. Стадия «Техническое задание»
    Цель работы: ознакомиться с правилами написания технического задания. Лабораторная работа рассчитана на 4 академических часа. Подготовка к лабораторной работе 1. Ознакомиться с лекционным материалом по теме «Этапы разработки программного обеспечения. Постановка задачи» учебной дисциплины «Технология...
    (Технология разработки программного обеспечения)
  • МОДЕЛЬ СТРУКТУРНОЙ СХЕМЫ
    Если систему представить тремя указанными выше моделями, то мы будем иметь представление о том: что поступает в систему из внешней среды и что система передает во внешнюю среду; из каких частей и элементов состоит система; как части системы между собой связаны. Существует и четвертая модель, которая...
    (Теория организаций)
  • После рассмотрения технических требований к программному обеспечению становится возможным уточнение его структуры, т.е. определение структурных компонентов и связей между ними. В результате разработки структуры будет получена функциональная схема и описание компонентов.

    Разработка структуры программного обеспечения

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

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

    Система состоит из трех взаимосвязанных программных модулей:

    модуль личного кабинета;

    Модуль отображения расписания предназначен для приема от пользователя информации о запрашиваемом расписании и выводе его на дисплей или на печать.

    Полная структурная схема проектируемого программного обеспечения представлена на рисунке 2.1.

    Рисунок 2.1 - Структурная схема программного обеспечения

    Детальное рассмотрение каждого модуля позволяет ее представить в виде следующих элементов:

    «Ввод параметров запроса» - позволяет указывать данные для запроса.

    «Отображение страницы расписания» - формирование страницы с запрошенными данными на экране.

    «Формирование электронных документов» - формирование файлов с запрошенными данными.

    «Отправка расписания» - отправка при изменениях, данных с изменениями.

    Разработка функциональной схемы

    Функциональная схема или схема данных (ГОСТ 19.701-90) - схема взаимодействия компонентов программного обеспечения с описанием информационных потоков, состава данных в потоках и указанием используемых файлов и устройств. Для изображения функциональных схем используют специальные обозначения, установленные стандартом.

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

    Таким образом, она также разбивается на три программных модуля:

    модуль отображения расписания;

    модуль личного кабинета;

    Функциональная схема программного обеспечения общего вида представлена на рисунке 2.2.

    Рисунок 2.2 - Функциональная схема программного обеспечения

    Loading...Loading...