Внутримашинная реализация комплекса задач. Описание процедур, функций и модулей Структурная схема программного обеспечения

В понятие структуры программы (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 – Основное окно программы