В понятие структуры программы (program structure) включается состав и описание связей всех модулей, которые реализуют самостоятельные функции программы и описание носителей вводимых и выводимых данных, а также данных, участвующих в обмене между отдельными подпрограммами.
Для разработки больших и сложных программ программисту необходимо овладеть специальными приемами получения рациональной структуры программы, которая обеспечивает почти двукратное сокращение объема программирования и многократное сокращение
Подчиненность модулей программы отражается в схеме иерархии. Однако последняя не отражает порядок их вызова или функционирование программы. Схема иерархии может иметь вид, показанный на рис. 5. Она, обычно, дополняется расшифровкой функций, выполняемой модулями.
Перед составлением схемы иерархии целесообразно составить внешние спецификации программы и составить функциональные описания программы вместе с описанием переменных-носителей данных. Особое внимание следует уделять иерархии типов структурированных данных и их комментированию.
Расчленение программы на подпрограммы производится по принципу от общего к частному, более детальному. Процесс составления функционального описания и составления схемы иерархии является итерационным, а выбор наилучшего варианта является многокритериальным. Расчленение должно обеспечивать удобный порядок ввода частей в эксплуатацию.
Схеме иерархии можно придать любой топологический рисунок. Фрагменты с вертикальными вызовами могут быть преобразованы в вызовы одного уровня посредством введения дополнительного модуля, который может не выполнять никаких полезных функций с точки зрения алгоритма программы. Функция нового модуля может состоять лишь в мониторинге, то есть вызове других модулей в определенном порядке.
Фрагменты с горизонтальными вызовами на одном уровне могут быть преобразованы в вертикальные вызовы модулей разных уровней посредством введения дополнительных переменных, которые не могли быть получены декомпозицией функционального описания на подфункции. Эти дополнительные переменные обычно имеют тип целый или логический и называются флагами, семафорами, ключами событий. Их смысл обычно характеризуется фразой: в зависимости от следующей предыстории действий, выполнить такие-то действия.
В процессе проектирования нужно сделать несколько проектных итераций, каждый раз генерируя новую схему иерархии, и сравнить эти иерархии по данным критериям для отбора лучшего варианта.
Ключ - значение переменной, используемое для подтверждения полномочий на доступ к некоторой информации или подпрограмме.
Флаг - переменная, значение которой свидетельствует о том, что некоторый аппаратный или программный компонент находится в определенном состоянии или что для него выполняется определенное условие. Флаг используется для реализации условного ветвления и прочих процессов принятия решений.
Семафор - тип данных специального назначения, который является средством управления доступом к критическому ресурсу со стороны совместно идущих последовательных процессов.
Над семафором можно производить только две операции (не считая создания и аннулирования): операцию ожидания (занятия) и операцию сигнализации (освобождения). Семафор принимает целое значение, которое не может быть отрицательным. Операция ожидания уменьшает значение семафора на единицу, когда это можно сделать, не получая при этом отрицательного значения, и это означает, что свободный ресурс используется. Операция сигнализации увеличивает значение семафора на единицу, что означает освобождение ресурса.
Критический ресурс - ресурс, который в каждый момент времени используется не более чем одним процессом. Когда требуется, чтобы несколько асинхронных процессов координировали свой доступ к критическому ресурсу, используется управляемый доступ через семафор.
КРИТЕРИИ ОЦЕНКИ КАЧЕСТВА
СТРУКТУРНОЙ СХЕМЫ ПРОГРАММЫ
Первый вариант структурной схемы, полученный путем простого членения функций программы на подфункции с указанием переменных, необходимых для размещения данных, чаще всего не является оптимальным и требуются проектные итерации для улучшения топологии схемы. Эти действия обычно выполняются методом «проб и ошибок». Каждый новый вариант сравнивается с предшествующим по описанным ниже критериям:
1) полнота выполнения специфицированных функций;
2)возможность быстрого и дешевого пополнения новыми, ранее не специфицированными функциями;
3)обозримость (понятность) для проектировщика составных частей программы;
4)максимальная независимость отдельных частей программы;
5) возможность связывания подпрограмм редактором связей;
6)достаточность оперативной памяти;
7) влияние топологии схемы иерархии на скорость выполнения программы при использовании динамической загрузки программы и механизма подкачки страниц;
8) отсутствие разных модулей со сходными функциями. Один и тот же модуль должен вызываться на разных уровнях схемы иерархии;
9)достижение такого графика работы коллектива программистов при реализации программы, который обеспечивает равномерную загрузку коллектива;
10)всемерное сокращение затрат на тестирование программы.
Хорошая схема иерархии в 2-5 раз сокращает затраты на тестирование по сравнению с первоначальным вариантом;
11)использование в данном проекте как можно большего числа проработанных в предшествующих проектах модулей и библиотек при минимальном объеме изготавливаемых заново частей.
Генерация вариантов прекращается при невозможности дальнейших улучшений. Рациональная структура программы обеспечивает сокращение общего объема текстов в 2-3 раза, что соответственно удешевляет создание программы и ее тестирование, на которое обычно приходится не менее 60% от общих затрат. При этом облегчается и снижается стоимость сопровождения программы.
МОДУЛЬНОЕ ПРОГРАММИРОВАНИЕ
Реализация принципа структурного программирования осуществляется с использованием макрокоманд и механизмов вызова подпрограмм. Эти же механизмы подходят и для реализации модульного программирования, которое можно рассматривать как часть структурного подхода.
Необходимо различать использование слова модуль, когда имеется в виду единица дробления большой программы на отдельные блоки (которые могут быть реализованы в виде процедур и функций) и когда имеется ввиду синтаксическая конструкция языков программирования (unit в Object Pascal).
Модульное программирование - это организация программы как совокупности независимых блоков, называемых модулями, структура и поведение которых подчиняются определенным правилам.
Концепцию модульного программирования можно сформулировать в виде нескольких понятий и положений:
1) большие задачи разбиваются на ряд более мелких, функционально самостоятельных подзадач - модулей, которые связаны между собой только по входным и выходным данным;
2) модуль представляет собой «черный ящик» с одним входом и одним выходом. Это позволяет безболезненно производить модернизацию программы в процессе ее эксплуатации, облегчает ее
сопровождение, а также позволяет разрабатывать части программодного проекта на разных языках программирования;
3) в каждом модуле должны осуществляться ясные задачи. Если назначение модуля непонятно, то это означает, что декомпозиция на модули была проведена недостаточно качественно. Процесс декомпозиции нужно продолжать до тех пор, пока не будет ясного понимания назначения всех модулей и их оптимального сочетания;
4) исходный текст модуля должен иметь заголовок и интерфейсную часть, где отражаются назначение модуля и все его внешние связи;
5) в ходе разработки модулей программы следует предусматривать специальные блоки операций, учитывающие реакцию на возможные ошибки в данных или в действиях пользователя.
Большое значение в концепции модульного программирования придается организации управляющих и информационных связей между модулями программы, совместно решающими одну или несколько больших задач.
При работе с модулями нужно помнить их основное отличие от процедур и функций. Традиционные правила сферы действия глобальных и локальных переменных для модулей не работают. Эта языковая конструкция разработана так, чтобы исключить влияние глобальных переменных, объявленных в главной программе, на внутренние описания модуля. Поэтому, если возникает необходимость ввести доступные для всех блоков программы глобальные описания то следует создать модуль глобальных объявлений и включить его в список импорта всех модулей, где нужны его описания.
3.7. СТРУКТУРА МОДУЛЯ В OBJECT PASCAL
Object Pascal имеет различные средства для структурирования программ. На нижнем уровне деления (для элементарных подзадач) чаще всего используются процедуры и функции, а на верхнем уровне (для больших задач) используются модули.
В среде Delphi каждой форме обязательно соответствует свой модуль, что позволяет локализовать все свойства окна в отдельной программной единице. Кроме этого, невизуальные алгоритмические действия также оформляются в виде отдельных модулей. Первая строка модуля начинается с ключевого слова:
unit <идентификатор_модуля>;
Для правильной работы среды программирования это имя должно совпадать с именем дискового файла, в который помещается исходный текст модуля. Далее следует
{Интерфейсный раздел} interface
где описывается взаимодействие данного модуля с другими пользовательскими и стандартными модулями, а также с главной программой.
Связь модуля с другими модулями устанавливается специальным предложением:
{Список импорта интерфейсного раздела} uses <список_модулей>
В этом списке через запятые перечисляются идентификаторы модулей, информация интерфейсных частей которых должна быть доступна в данном модуле.
{Список экспорта интерфейсного раздела} const type var
procedure function
Список экспорта состоит из подразделов описания констант, типов, переменных, заголовков процедур и функций, которые определены в данном модуле, но использовать которые разрешено во всех других модулях и программах, включающих имя данного модуля в своей строке uses. Для процедур и функций здесь описываются только заголовки, но с обязательным полным описанием формальных параметров.
{Раздел реализации) implementation
В этом разделе указывается реализационная (личная) часть описаний данного модуля, которая недоступна для других модулей и программ.
{Список импорта раздела реализации) uses
В этом списке через запятые перечисляются идентификаторы модулей, информация интерфейсных частей которых должна быть доступна в данном модуле. Здесь целесообразно описывать идентификаторы всех необходимых модулей, информация из которых не используется в описаниях раздела interface данного модуля.
{Подразделы внутренних для модуля описаний} label const type var
procedure function
В этих подразделах описываются метки, константы, типы, переменные, процедуры и функции, которые описывают алгоритмические действия, выполняемые данным модулем, и которые являются «личной собственностью» исключительно только данного модуля. Эти описания недоступны ни одному другому модулю.
Исполняемая часть содержит описания подпрограмм, объявленных в интерфейсной части. Описанию подпрограммы должен предшествовать заголовок, в котором можно опускать список формальных параметров и тип результата для функции. Если заголовки указаны с параметрами, то их список должен быть идентичен такому же списку для соответствующей процедуры или функции в разделе interface.
{Раздел инициализации} initialization
В этом разделе между ключевыми словами initialization и finalization располагаются операторы начальных установок, необходимых для запуска корректной работы модуля. Эти операторы исполняются до передачи управления основной программе и обычно используются для подготовки ее работы. Операторы разделов инициализации модулей, используемых в программе, выполняются при начальном запуске программы в том же порядке, в каком идентификаторы модулей описаны в предложениях uses файла проекта. Если операторы инициализации не требуются, то зарезервированное слово initialization может быть опущено.
{Раздел завершения) finalization
Раздел завершения finalization является необязательным и может присутствовать только вместе с разделом инициализации initialization. В разделе завершения располагается список операторов, которые будут выполняться при завершении модуля, что обычно происходит при окончании работы приложения. Разделы finalization модулей приложения выполняются в порядке, противоположном выполнению разделов initialization этих модулей.
Раздел завершения используется, как правило, для освобождения ресурсов, которые выделяются приложению в разделе инициализации. Это гарантирует корректное завершение приложения, что особенно это важно, когда приложение заканчивается по возникновению исключительных ситуаций.
После ввода данных необходимо дать пользователю возможность распечатки бланка справки и копии клиента. данная операция должна быть выполнена в обязательном порядке. Печать может быть осуществлена на два типа принтеров: ударного действия (матричные) и струйные. Печать справки на лазерных принтерах невозможна из-за повышенных требований к качеству бумаги. При печати справки на матричном принтере можно осуществить печать двух экземпляров (справка+копия) за один проход с применением копировальной бумаги. На струйном принтере необходимо печатать каждый экземпляр отдельно. Таки м образом нужно предусмотреть изменяемый пользователем счетчик числа копий или специальную функцию настройки на тип принтера.
Рис.2 Схема взаимодействия и сязей данных |
Разработка функциональной схемы программы.
Функциональный состав программы должен максимально обеспечивать необходимый набор возможностей для выполнения кассиром ОП его должностных обязанностей, связанных с вводом данных, регистрацией сделок и оформлением отчетных документов. Для этого составим примерный перечень функций, которые должны быть реализованы в нашей системе.
Примерный перечень функций системы.
1) Регистрация обменной операции
· Ввод данных по покупке валюты
· Ввод данных по продаже валюты
· Ввод данных по конверсии валюты
· Печать справки клиента
2) Просмотр документов
· Просмотр списка документов дня
· Просмотр списка архивных документов
3) Ведение справочников
· Ввод данных по кодам ценностей
· Ввод данных по видам документов
· Ввод данных по кодам валют
· Ввод курсов валют по датам
4) Генерация отчетных документов
· Печать реестра наличной иностранной валюты, купленной за наличные рубли;
· Печать реестра наличной иностранной валюты, проданной за наличные рубли;
· Печать реестра по обмену (конверсии) наличной иностранной валюты;
5) Прочие функции
· Ввод данных в поле ввода из справочника
· Перевод числа из цифровой формы в строчную (сумма прописью)
· Изменение вида курсора
· Сохранение данных в архивных файлах
Приведенный перечень охватывает все процедуры, описанные в разделе технологического процесса ОП и дополнен некоторыми функциями, которые будут необходимы в процессе ввода данных и их корректировки.
Разработка структурной схемы программы.
Структурная схема программного комплекса определяет в основных чертах и внешний вид проектируемой системы и принципы взаимодействия с пользователем. Схема проектируемой системы будет представлять собой иерархическую древовидную структуру, описывающую процедуры ввода, обработки и вывода данных. Построение программ информационно-справочного класса по такому принципу позволяет довольно легко производить модификацию системы в целом и облегчает восприятие и понимание принципа работы программы. Для построения структурной схемы необходимо определить иерархию и связь перечисленных выше процедур обработки данных. Естественно установить иерархию процедур в том виде, в каком они были описаны в предыдущей главе, поскольку таковая схема соответствует схеме «важности» и «употребимости» процедур. Структурная схема программы, с учетом всего вышеизложенного, представлена на рис 2.
Разработка экранного интерфейса программы
Существующие подходы к проектированию экранного интерфейса
Экранный интерфейс программы во многом определяет удобство работы пользователя и является одним из важных факторов, влияющих на эффективность его труда. Программа, выполняющая все возложенные на нее функции, обладающая высоким быстродействием может быть полностью непригодной для работы из-за неприемлемого интерфейса с пользователем. Еще буквально несколько лет назад существовал текстовый редактор, прекрасно иллюстрирующий такой подход к проектированию программного обеспечения. Вряд ли кому-то придется по душе редактор текста, в котором для вставки символа в строку нужно набрать однобуквенный код команды вставки, номер обрабатываемой строки (к счастью не двоичный), номер символа, после которого будет вставлен новый символ и собственно этот символ. Конечно такой подход абсолютно неприемлем.
Наиболее практичными и удобными с точки зрения пользователя можно считать системы, имеющие экранный интерфейс, построенный на основе системы всплывающих меню. Наиболее распространенными в настоящее время являются две идеологии (имеются в виду DOS-приложения), включающие в себя и определенную форму экранных окон и цветовую гамму и вид всплывающих списков. Это инструментальные Среды фирмы Borland, и операционная оболочка Norton, фирмы Symantec. Обе идеологии предусматривают определенное разбиение экранного пространства на области или зоны, предназначенные для конкретных информационных объектов и действий. Зоны могут быть в некоторой степени переконфигурированы по желанию пользователя: изменены размеры и положение на экране. Команды обработки данных вызываются из системы меню, присутствующего на экране постоянно (Borland), или вызываемого по функциональной клавише (Symantec).
И в том и в другом случае все команды системы распределены по функциональному признаку на группы и в главном меню присутствуют
собственно наименования групп команд. Выбрав группу, пользователь получает доступ к списку команд группы, в который могут быть включены также команды, объединенные в группы второго уровня и т.д.
Таким образом, создается система многоуровневого всплывающего меню. Применение такой идеологии обеспечивает удобство ориентировки в системе, имеющей достаточно сложное, многоуровневое меню с множеством выборов. Естественно, что увеличение вложенности и размеров списков выбора, должно иметь разумные границы, которые к счастью имеются в виде ограниченности экранного пространства монитора. В большинстве систем заложена также возможность настройки цветовой палитры по желанию пользователя. В операционной оболочке Norton предлагается выбор гаммы из нескольких стандартных вариантов, в системах фирмы Borland можно создать свою собственную цветовую гамму, вплоть до мельчайших деталей. Примерный вид некоторых экранных объектов приведен на рис.4,5.
Выбор идеологии экранного интерфейса
Тема 3. ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ
Для адекватного использования компьютера (обработки информации ) необходимо знать назначение и свойства нужных при работе с ним программ. Совокупность программ и сопровождающей их документации (используемой при эксплуатации этих программ ), называется программным обеспечением (ПО). Программное обеспечение является неотъемлемой частью любой вычислительной системы и делится (по назначению ) на три категории: системное программное обеспечение (необходимое для управления компьютером, для создания и поддержки выполнения других программ пользователя, для предоставления пользователю набора всевозможных услуг ), системы программирования или инструментальные системы (обеспечивающие создание новых программ для компьютеров ) и прикладное программное обеспечение (непосредственно обеспечивающее выполнение необходимых пользователю работ ).
Структура программного обеспечения
Системное программное обеспечение включает комплекс программ, управляющих работой аппаратной части компьютеров и компьютерных сетей (как правило, эти программы не решают конкретных задач пользователя, но создают условия для их решения ). Системное ПО направлено:
· на обеспечение устойчивой работы компьютера и вычислительной сети;
· на создание условий для нормальной работы прикладных программ;
· на выполнение вспомогательных операций;
· на диагностику аппаратной части компьютера и вычислительной сети;
Все множество системных программ можно разделить на две большие группы: базовое ПО и сервисные системы . Базовое программное обеспечение - это минимальный набор программных средств, обеспечивающих работу компьютера.
Базовый подкласс ПО включает:
· операционные системы(ОС) - комплекс программ, управляющих процессом выполнения прикладных программ, планированием и управлением вычислительными ресурсами ПК (ОС берет на себя выполнение таких операций, как контроль работоспособности оборудования ПК; выполнение процедуры начальной загрузки; управление работой всех устройств ПК; управление файловой системой; взаимодействие пользователя с ПК; загрузка и выполнение прикладных программ; распределение ресурсов ПК - оперативной памяти, процессорного времени и периферийных устройств между прикладными программами ).
· операционные оболочки - специальные программы, предназначенные для облегчения общения пользователя с командами операционной системы, имеющие текстовый и графический варианты интерфейса конечного пользователя (программы-оболочки обеспечивают удобный и наглядный способ общения с компьютером, позволяют наглядно отображать содержимое каталогов на дисках, удобно копировать, переименовывать, пересылать и удалять файлы и др. ).
· сетевые операционные системы - комплекс программ, обеспечивающих обработку, передачу и хранение данных в сети.
До недавнего времени на большинстве ПК была установлена операционная система MS DOS , которая была создана в 1981 г. фирмой Microsoft (заметим, что она не была оригинальной разработкой самой Microsoft - компания Билла Гейтса лишь доработала «операционку» под названием QDOS, созданную другой компанией ). До появления Windows дисковая операционная система MS DOS была самой популярной и массовой в применении. В ее среде создано целое поколение программного продукта. На основе MS DOS в процессе развития компьютерных технологий появился Windows (с 1996 г. MS DOS включена в состав операционной среды Windows 95 ). Основные компоненты ОС, развитые в среде MS DOS, являются классикой, и органично включены в Windows на новом этапе развития программного обеспечения в целом и его сердцевины - операционных систем.
MS DOS 16-разрядная однозадачная операционная система, обладающая «интерфейсом командной строки», компактна, предъявляет скромные требования к аппаратуре и выполняет необходимый минимум функций для пользователей и программ. Основные недостатки DOS:
· главным ее уязвимым местом является работа с ограниченной оперативной памятью (в эпоху создания MS-DOS оперативная память большинства компьютеров не превышала 256 килобайт. DOS могла работать с 640 килобайтами ОП, и Билл Гейтс утверждал, что никому и никогда не понадобится больший объем, но время шло и появились программы, которым требовался для работы больший объем оперативной памяти и приходилось использовать специальные программы - менеджеры памяти, но и они не решали проблему );
· вторым недостатком DOS была невозможность работы в полноценном графическом режиме (хотя тогдашние компьютеры уже могли бы обеспечить его поддержку );
· третьим недостатком MS-DOS была однозадачность.
Операционные системы семейства DOS, несмотря на свою простоту и экономичность, морально устарели, и на смену им пришли операционные системы нового поколения. К числу таких ОС относятся операционные системы семейства Windows , операционные системы семейства Unix и др.
Сервисные системы - предназначены для обслуживания компьютера (расширяют возможности базового ПО ). По функциональному признаку среди сервисного ПО можно выделить:
· программы обслуживания дисков (обеспечивающие проверку качества поверхности диска, контроль сохранности файлов, сжатие дисков, создание страховых копий, резервирование данных на внешних носителях и др. );
· антивирусные программы (обеспечивающие защиту компьютера, обнаружение и восстановление зараженных файлов );
· программы архивирования данных (обеспечивают процесс сжатия информации в файлах с целью уменьшения объема памяти для ее хранения );
· программы обслуживания сети.
· программы диагностики работоспособности компьютера;
Программы, служащие для выполнения вспомогательных операций обработки данных или обслуживания компьютеров (диагностики, тестирования, оптимизации использования дискового пространства, восстановления разрушенной на магнитном диске информации и т.д. ), называют утилитами.
Системы программирования или инструментальные системы - это программные продукты, поддержки технологии программирования. В рамках этого направления существуют средства для создания приложений, включающие:
· локальные средства, обеспечивающие выполнение отдельных работ по созданию программ;
· интегрированные среды разработчиков программ, обеспечивающие выполнение комплекса взаимосвязанных работ по созданию программ.
Локальные средства разработки программ включают языки и системы программирования, а также инструментальную среду пользователя. Существуют машинные языки программирования (воспринимаемые аппаратной частью компьютера машинные коды ), машинно-ориентированные языки (языки программирования, которые отражают структуру конкретного типа компьютера – ассемблеры ), алгоритмические (универсальные ) языки, не зависящие от архитектуры компьютера, например, Фортран (Fortran ), Кобол (Cobol ), Алгол (Algol ), Паскаль (Pascal ), Бейсик (Basic ), Си (C ), Си++ (C++ ) и др.; процедурно-ориентированные языки (где имеется возможность описания программы как совокупности процедур – подпрограммы ), проблемно-ориентированные языки (предназначенные для решения задач определенного класса ), интегрированные системы программирования. Заметим, что классификация языков программирования не закреплена ГОСТами (в учебных целях обычно проводится их классификация по различным признакам ). Программа, подготовленная на языке программирования, проходит этап трансляции, отладки и тестирования.
Основное назначение инструментария интегрированных программных сред – повышение производительности труда программистов, автоматизация создания программ, обеспечивающих интерфейс пользователя графического типа и др.
Кроме того, существуют средства для создания сложных информационных систем (CASE – технология ). Проектирование информационных систем представляет собой трудоемкую и длительную работу, требующую высокой квалификации участвующих в ней специалистов. В недалеком прошлом проектирование нередко выполнялось на интуитивном уровне неформализованными методами, включающими в себя элементы искусства, практический опыт, экспертные оценки и дорогостоящие экспериментальные проверки качества функционирования. В начале 70-х гг. в США был отмечен кризис программирования (software crisis ). Это выражалось в том, что большие проекты стали выполняться с отставанием от графика или с превышением сметы расходов, разработанный продукт не обладал требуемыми функциональными возможностями, производительность его была низка, качество получаемого программного обеспечения не устраивало потребителей. Потребность контролировать процесс разработки ПО, прогнозировать и гарантировать стоимость разработки, сроки и качество результатов привела к необходимости перехода от кустарных к индустриальным способам создания ПО и появлению совокупности инженерных методов и средств создания ПО, объединенных общим названием «программная инженерия» (software engineering ). В основе программной инженерии лежит следующая идея: проектирование ПО является формальным процессом, который можно изучать и совершенствовать. К концу 80-х гг. было проведено много исследований в области программирования (разработка и внедрение языков высокого уровня, методов структурного и модульного программирования, языков проектирования и средств их поддержки, формальных и неформальных языков описания системных требований и спецификаций и т. д. ). Термин CASE (Computer Aided Software Engineering ) имеет весьма широкое толкование. Первоначально значение термина CASE ограничивалось вопросами автоматизации разработки только лишь программного обеспечения, а в настоящее время оно приобрело новый смысл и охватывает процесс разработки сложных информационных систем в целом. CASE-технология представляет собой совокупность методов проектирования информационных систем, а также набор инструментальных средств, позволяющих в наглядной форме моделировать предметную область, анализировать эту модель на всех стадиях разработки и сопровождения, разрабатывать приложения в соответствии с информационными потребностями пользователей. Большинство существующих CASE-средств основано на методах структурного или объектно-ориентированного анализа и проектирования, использующих спецификации в виде диаграмм или текстов для описания внешних требований, связей между моделями системы, динамики поведения системы и архитектуры программных средств.
Прикладные программы - предназначены для решения прикладных задач пользователя (обеспечивает выполнение необходимых пользователю задач на компьютере ). Условно (по их назначению ) можно выделить следующие подклассы:
· программы обработки текстов;
· графические редакторы;
· программы обработки фото- и видеоизображений;
· программы подготовки презентаций;
· электронные таблицы;
· системы управления базами данных;
· программы экономического и статистического анализа;
· системы автоматизированного проектирования (САПР);
· информационно-поисковые системы;
· сетевое программное обеспечение (программы для работы с электронной почтой, доступ к видеоконференциям, браузеры Интернет и т.д. );
· игровые программы.
Прикладное программное обеспечение состоит из пакетов прикладных программ (ППП) и прикладных программ пользователя.
В настоящее время значительное место в прикладном ПО занимают пакеты прикладных программ, которые по сфере применения делятся на проблемно-ориентированные пакеты (направлены на решение узкого круга задач ), пакеты общего назначения (предназначены для решения типовых задач обработки данных ) и интегрированные пакеты (областью их применения является в основном экономическая сфера; они, как правило, содержат: табличный процессор, текстовый редактор, систему управления базами данных, графический редактор, коммуникационные средства ). Прикладные программы создаются в составе конкретной вычислительной среды (их разработка осуществляются обычно индивидуально в соответствии с соглашением ППП или ОС, в рамках которых они применяются ).
Структурной называют схему, отражающую состав и взаимодействие по управлению частей разрабатываемого программного обеспечения.
Структурные схемы пакетов программ не информативны, поскольку организация программ в пакеты не предусматривает передачи управления между ними. Поэтому структурные схемы разрабатывают для каждой программы пакета, а список программ пакета определяют, анализируя функции, указанные в техническом задании.
Самый простой вид программного обеспечения - программа, которая в качестве структурных компонентов может включать только подпрограммы ибиблиотеки ресурсов. Разработку структурной схемы программы обычно выполняют методом пошаговой детализации.Структурными компонентами программной системы или программного комплекса могут служить программы, подсистемы, базы данных, библиотеки ресурсов и т. п.Структурная схема программного комплекса демонстрирует передачу управления от программы-диспетчера соответствующей программе (рис. 5.1).
Рис. 5.1. Пример структурной схемы программного комплекса
Структурная схема программной системы, как правило, показывает наличие подсистем или других структурных компонентов. В отличие от программного комплекса отдельные части (подсистемы) программной системы интенсивно обмениваются данными между собой и, возможно, с основной программой. Структурная же схема программной системы этого обычно не показывает (рис. 5.2).
Рис. 5.2. Пример структурной схемы программной системы
Более полное представление о проектируемом программном обеспечении с точки зрения взаимодействия его компонентов между собой и с внешней средой дает функциональная схема.
Функциональная схема. Функциональная схема или схема данных (ГОСТ 19.701-90) - схема взаимодействия компонентов программного обеспечения с описанием информационных потоков, состава данных в потоках и указанием используемых файлов и устройств. Для изображения функциональных схем используют специальные обозначения, установленные стандартом. Основные обозначения схем данных по ГОСТ 19.701-90 приведены в табл. 5.1.
Таблица 5.1
Название блока | Обозначение | Назначение блока |
Запоминаемые данные | Для обозначения таблиц и других структур данных, которые должны быть сохранены без уточнения типа устройства | |
Оперативное запоминающее устройство | Для обозначения таблиц и других структур данных, хранящихся в оперативной памяти | |
Запоминающее устройство с последовательной выборкой | Для обозначения таблиц и других структур данных, хранящихся на устройствах с последовательной выборкой (магнитной ленте и т.п.) | |
Запоминающее устройство с прямым доступом | Для обозначения таблиц и других структур данных, хранящихся на устройствах с прямымдоступом (дисках) | |
Документ | Для обозначения таблиц и других структур данных, выводимых на печатающее устройство | |
Ручной ввод | Для обозначения ручного ввода данных с клавиатуры | |
Карта | Для обозначения данных на магнитных или перфорированных картах | |
Дисплей | Для обозначения данных, выводимых на дисплей компьютера |
Функциональные схемы более информативны, чем структурные. На рис. 5.3 для сравнения приведены функциональные схемы программных комплексов и систем.
Все компоненты структурных и функциональных схем должны быть описаны. При структурном подходе особенно тщательно необходимо прорабатывать спецификации межпрограммных интерфейсов, так как от качества их описания зависит количество самых дорогостоящих ошибок. К самым дорогим относятся ошибки, обнаруживаемые при комплексном тестировании, так как для их устранения могут потребоваться серьёзные изменения уже отлаженных текстов.
Рис. 5.3. Примеры функциональных схем: а - комплекс программ; б - программная система
Схемы алгоритмов
КУРСОВОЙ ПРОЕКТ
по дисциплене «Программирование на языке высокого уровня»
Разработка программного средства для долговременного хранения и обработки информации на примере игры «Скачки»
ОГУ 27.03.03.0316.000ПЗ
Руководитель
преподаватель
В. В. Чекрыгина «___»_____________ 2016 г.
Студент группы 14САУ(ба)САУИТ _______ _________И.О. Фамилия
«___»_____________ 2016 г.
Оренбург 2016
Аннотация
Курсовая работа содержит 18 страницы, в том числе 4 рисунка, 5 источников и листинг программы.
В данной курсовой работе подробно рассмотрена технология создание программного продукта с использованием системы объектно-ориентированного программирования Delphi . Кратко рассмотрены существующие языки объектно-ориентированного программирования. Произведено описание технического задания и сам алгоритм программа. В конце работы представлено тестирование программного продукта и его листинг.
Введение. 5
1 Техническое задание. 6
2 Описание программы.. 7
3 Руководство пользователю.. 9
4 Тестирование программы.. 10
Заключение. 11
Список использованных источников. 12
Приложение А.. 13
Введение
В настоящее время среди широкого круга пользователей популярна система объектно-ориентированного программирования Delphi, основу которой составляет язык Оbject Pascal, который изначально был разработан Н. Виртом в начале 60–х годов прошлого века специально как язык обучения программированию. Delphi позволяет быстро создавать приложения различной степени сложности на основе технологии визуального программирования.
Система Delphi воплощает в себе лучшие достижения современной теории программирования. Эта интегрированная среда объединяет в себе множество полезных инструментов и готовых компонентов, из которых собираются пользовательские программы – проекты. Delphi – это визуальная среда разработки программ. Это означает, что внешний вид каждой программы (интерфейс) создаётся простым перемещением компонентов.
Базовым языком программирования служит язык Object Pascal – объектно-ориентированный Паскаль. Принципиальное различие систем программирования Delphi и Turbo Pascal (Turbo – торговая марка разработчика системы фирмы Borland International, Inc.(США)) состоит в использовании экранного режима монитора: Turbo Pascal – ориентирован на текстовый режим системы DOS, а Delphi, как и Windows – на графический. Поэтому одна из последних версий Delphi 7 уже может создавать приложения для новейшей среды.NET. Причём последние версии позволяет программировать и для операционной системы Linux.
Система Delphi реализует технологию объектно-ориентированного виртуального программирования (ООП). От всех других языков программирования его отличают строгость в определении всех переменных и констант, модульность программирования, широкие возможности в создании собственных структур данных, использование объектно-ориентированного программирования, отсутствие машинно-ориентированных конструкций. Корпорация Borland, которая является родоначальником Delphi, с самого начала сделала ставку на визуальное объектно–ориентированное программирование с предоставлением возможности работы с любыми базами данных. В настоящее время система программирования Delphi ни в чем не уступает по своим возможностям таким языкам программирования, как C++, С#, Visual C++, C–Builder, Visual Basic и др.
1 Техническое задание
Была поставлена задача: разработать игру на тему скачек на ипподроме в среде Delphi с организованным тотализатором.
В процессе решения данной задачи получили следующее приложение:
Имеется 5 лошадей, которые должны пробежать по прямой, с организованной анимацией движения, состоящей из 2-хкартинок, так же должен присутствовать тотализатор. Лошади должны выигрывать в разном порядке.
Задача играющего: выиграть как можно больше «денег» на тотализаторе.
Минимальные требования для работы с программой: IBM-совместимый 486dx или выше, 5 мб. свободного пространства на жестком диске, ОС Win9x/Me, Win2000/XP/Vista/Seven.
В программе предусмотрено:
Возможность при нулевом балансе можно взять долг;
Лошади движутся с разными скоростями и узнать победителя заранее невозможно.
2 Описание программы
Структурная схема программы
На рисунке 1 показано, расположение основных элементов программы, так выглядит основное окно программного продукта.
Рисунок 1 – Основное окно программы