Лекция на тему «Внутреннее проектирование и разработка программных средств».



Авторы специализируются на тестах по любым дисциплинам! Средний балл по тестам 4,6.
 
Любые вопросы по дистанционному обучению. Тесты, письменные работы, сессия под ключ.
 
Известный интернет сайт, помощь по любым учебным вопросам - от теста до дипломной работы. Личный менеджер.
 
Крупная биржа студенческих работ. Закажи напрямую у преподавателя. Низкие цены, стена заказов.
 
Биржа студенческих работ. Потребуется самостоятельная выгрузка работ.
 

План лекции

  1. Определение ППП.
  2. Составные части ППП.
  3. Модель предметной области.

3.1. Табличный вариант модели предметной области

3.2. Граф предметной области.

  1. Использование теории формальных грамматик, для описания встроенного языка пакета прикладных программ.

5.Конструирование управляющей программы пакета прикладных программ.

5.1 Модуль лексического разбора

5.2 Модуль синтаксического анализа

5.3 Модуль управления

5.4 Информатор

5.5 Модуль помощи (HELP)

 

Литература

  1. Смирнов А.А. Прикладное программное обеспечение. Учебное пособие. М. ,МЭСИ, 2011.
  2. Гагарина Л. Г., Виснадул Б. Д., Кокорева Е. В. Технология разработки программного обеспечения. М. ИНФРА-М., 2013
  3. Голицына О. Л., Попов И. И., Партыка Т. Л. Программное обеспечение. М. ФОРУМ., 2010

1.      Определение пакета прикладных программ.

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

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

Прикладные программы, входящие в пакет, имеют общую структуру управления и единые информационные массивы.

Можно выделить следующие общие свойства пакета  прикладных программ:

во-первых, пакет состоит из нескольких программных  единиц;

во-вторых, пакет предназначен для решения задач определенного класса;

в-третьих, в пределах своего класса пакет обладает определенной универсальностью, т.е. позволяет решать практически все задачи данного класса;

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

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

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

ППП можно подразделить на методо-ориентированные пакеты, проблемно-ориентированные пакеты и интегрированные пакеты.

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

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

Интегрированные пакеты представляют собой пакеты широкого назначения, объединяющие: табличный процессор; систему управления базой данных; текстовый редактор; пакет графического отображения данных; средства обмена данными с удаленными абонентами и другие программные средства. Примерами интегрированных пакетов являются MICROSOFT OFFICE, FRAMEWORK, SYMPHONY.

2.Составные части ППП.

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

ППП выполняет необходимые действия в соответствии с командной информацией, заданной пользователем. Командная (управляющая) информация представляется на формальном, специально разработанном встроенном языке пакета. Задание пользователя, записанное на встроенном языке пакета, называют программой на встроенном языке (ПВЯ). Программа на встроенном языке прикладной системы, принципиально отличается от программы, написанной на универсальном языке программирования, например, Delphi. Для написания ПВЯ, прежде всего, необходимо досконально знать предметную область и принятую в данной области терминологию. Примером пакета прикладных программ с эффективным встроенным языком, является пакет «1.С Бухгалтерия».

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

во-первых, ведущего блока;

во-вторых, модуля лексического разбора;

в-третьих, модуля синтаксического анализа;

в-четвертых, модуля управления;

в-пятых,  информатора;

в-шестых, модуля помощи.

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

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

Модуль синтаксического анализа осуществляет проверку грамматической правильности программы на встроенном языке.

Модуль управления обеспечивает выполнение обращений к обрабатывающим программам.

Информатор предназначен для выдачи сообщений о ходе решения задачи.

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

Программные модули пакета, реализующие алгоритмы обработки данных, затребованные в ПВЯ, называются обрабатывающими модулями.

Поддержание ППП в работоспособном состоянии обеспечивается специальными модулями, которые называются обслуживающими модулями.

3. Модель предметной области.

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

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

Для разработки пакета прикладных программ предметная область представляется в виде модели.

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

Данное может характеризоваться: именем, типом и значением.

Имя (идентификатор) является уникальным для конкретного данного. Имя может быть дополнено пояснением или содержательным названием, отображающим его роль в предметной области. Содержательное название предназначено для разъяснения пользователю. Например, имя “PRICE” может обозначать реквизит с содержательным названием “ЦЕНА ИЗДЕЛИЯ”.

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

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

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

во-первых, связи по определению;

во-вторых, функциональные связи.

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

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

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

МПО = {X, R, F},

где X- множество данных;

R- множество связей по определению;

F- множество функциональных связей.

Если в процессе выполнения пакета множества X, R и F  остаются неизменными, то такую модель предметной области можно назвать статической.

Если пользователь имеет возможность в процессе работы пакета менять, хотя бы одно из множеств: X, R или F, то модель предметной области называется динамической. Например, если пользователь имеет возможность определения новых данных или возможность изменения формул расчета, то ППП будет являться пакетом с динамической предметной областью. В качестве примера ППП с динамической предметной областью, можно привести бухгалтерский пакет   “1.С Бухгалтерия”.

Каждое данное может относиться только к одному типу, следовательно, множество “X” является объединением непересекающихся подмножеств, содержащих однотипные данные. В подмножество объединяются данные одного типа, например, данные целого типа, данные вещественного типа, массивы некоторого базового типа и т.д.

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

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

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

Третья группа, характеризуется тем, что данное не имеет значения до тех пор, пока пользователь не предпримет действий по определению значения этого данного.

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

Связи между данными, образующие множество связей по определению “R”, отражают взаимосвязь между данными в информационной базе пакета и устанавливаются при разработке информационной базы. В частности, в системе Delphi, данные, объединенные в единую запись, являются связанными по определению. Как правило, при обработке экономической информации, в единую запись объединяют реквизиты одного документа.

Для данных, входящих в модель предметной области, может быть установлена связь подчинения. Например, если в модели имеется одномерный массив “A” и целое данное “N”, определяющее размерность массива “A”, то можно считать, что данное “A” подчинено данному “N”. Действительно, если значение “N” не определено, то данное “A” также имеет неопределенное значение.

Связи типа подчинения или задаваемые уравнениями можно представить в модели в форме предикатов. Предикатом называется функция, аргументами которой являются имена (значения) данных, а возвращаемый результат имеет логическое значение “истинно” или “ложно”. Если предикат не выполняется, то значение соответствующего данного считается неопределенным.

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

Функциональные связи реализуются в пакете обрабатывающими модулями. Отдельный обрабатывающий модуль можно рассматривать как функцию

B= f (A),

где

величина «А» представляет собой набор входных данных для конкретного модуля. Данный набор данных является подмножеством множества Х;

величина «В» представляет собой набор выходных данных модуля, который также является подмножеством множества Х.

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

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

Во-первых, набором входных данных;

Во-вторых, набором выходных данных;

В-третьих, обрабатывающим модулем, реализующим эту связь.

Модель предметной области может быть представлена различными вариантами, в частности:

Во-первых, с помощью таблиц;

Во-вторых, с помощью графа предметной области.

3.1. Табличный вариант модели предметной области

Использование табличного варианта предполагает формирование нескольких таблиц.

  1. Таблица данных (элементы множества данных)

Номер

П/п

Название

Данного

Имя

Данного

Тип

Данного

1 Число поставщиков N Целое
2 Список кодов поставщиков A

Вектор из N целых элементов

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

 

  1. Таблица связей по определению (связи подчинения).

Номер п/п.

Старшее данное Подчиненные данные
1 N

A

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

 

  1. Таблица задач ( Функциональные связи ).

Номер п/п.

Функции обрабатывающего модуля Идентификатор модуля Входные параметры Выходные параметры

1

Отбор неоплаченных поставок  

OTBOR

 

N,A

   M,B

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

3.2. Граф предметной области.

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

Например, рассмотрим типичную задачу обработки экономической информации.

Вершинами могут быть обозначены следующие стадии обработки:

1 — начальная стадия;

2 — обеспечение ввода информации;

3 — проверка корректности введенной информации;

4 — получение выходных документов;

5 —  завершение  работы.

Дугами   могут   быть   обозначены следующие алгоритмы:

1 — ввод с внешнего носителя;

2 — ввод с клавиатуры;

3 — тестирование информации;

4 — просмотр и редактирование информации;

5 — получение выходной формы;

6 — контрольная распечатка файла;

7 — сохранение информации на внешнем носителе.

В этом случае, граф предметной области будет иметь вид

 

1          3          5

1          2           3         4   7      5

о          о           о         о           о

 

2           4          6

 

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

Для приведенного примера графа предметной области массив будет иметь вид:

GPO

1     2

1     2

2     3

2     3

3     4

3     4

4     5

4. Использование теории формальных грамматик,  для описания встроенного языка пакета прикладных программ.

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

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

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

:: =   — по определению есть;

|      — логическое сложение (или);

<…>  — скобка для обозначения нетерминального символа;

[ … ]  — обозначение необязательного элемента.

Формальная грамматика G, задается четырьмя элементами

G = {N,Z, T, F} ,

где

N — множество нетерминальных символов

( нетерминальный  словарь);

Z — начальный символ (аксиома);

Т — множество терминальных символов

(терминальный словарь);

F — множество порождений, т.е. формул вида А ::= В .

Например, грамматика может иметь вид:

<ПВЯ>:: = <оператор> [<оператор>]

<оператор>:: = <имя оператора> <разделитель> [<параметр>]

                 <признак конца оператора>

<имя оператора> :: = ВВОДД | ВВОДК | ТЕСТ | ПРОСМ |

 ВЕДОМ | РАСП | СОХР

<разделитель> :: =    =

<параметр>:: = <символьная константа>

<символьная константа> :: = <буква> [<буква>| <цифра>|

                                                                 < спец. символ>]

<буква>:: =   А | Б | В…Я | A| B| C … Z

<цифра>:: =  0 | 1 | 2…9

< спец. символ> ::=  : | \ | _

<признак конца оператора>:: = ;

В соответствии с приведенным примером формальной грамматики ПВЯ может иметь вид:

ВВОДД = A:\ISX; TECT = ЭКРАН;  ВЕДОМ = ПРОМ_ИТ; СОХР = ДИСКЕТА;

 5. Конструирование управляющей программы ППП.

Центральным элементом управляющей программы является ведущий модуль. Ведущий модуль организует выполнение требуемой последовательности других модулей управляющей программы. Ведущий модуль обеспечивает выполнение следующих действий (но сам не выполняет):

во-первых, осуществление лексического разбора ПВЯ;

во-вторых, проверку синтаксической правильности ПВЯ;

в-третьих, определение множества модулей, подлежащих выполнению;

в-четвертых, реализацию обращения к модулям тела ППП.

При реализации ведущего модуля в среде DELPHI, файл, содержащий ведущий модуль, может иметь следующую структуру:

Unit Unit_VED;

INTERFACE

Uses

  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;

Type

  TForm_VED = class(TForm)

    CMDINPUT: TButton;

    CMDPROCESS: TButton;

    CMDEXIT: TButton;

    LbPVJA: TLabel;

    EdPVJA: TEdit;

    MESINF: TMemo;

    LbHELP1: TLabel;

    LbHELP2: TLabel;

    CMDHELP: TButton;

    procedure CMDPROCESSClick(Sender: TObject);

    procedure FormActivate(Sender: TObject);

    procedure CMDEXITClick(Sender: TObject);

    procedure CMDINPUTClick(Sender: TObject);

    procedure CMDHELPClick(Sender: TObject);

  End;

Var

  Form_VED: TForm_VED;

  PVJA: String; {Программа на входном языке}

IMPLEMENTATION

{$R *.DFM}

Procedure TForm_VED.FormActivate(Sender: TObject);

begin

 Caption:=’Управляющая программа’;

 CmdInput.Caption:=’ВВОД ПВЯ’;

 CmdProcess.Caption:=’ВЫПОЛНЕНИЕ’;

 CmdExit.Caption:=’ВЫХОД’;

 CmdHelp.Caption:=’СПРАВКА’;

 LbPVJA.Caption:=’Программа на встроенном языке’;

 LbPVJA.Autosize:=True;

MESINF.TEXT:=’Выполняется управляющая программа’;

 LbHelp1.Visible:=False;

 LbHelp2.Visible:=False;

 EDPVJA.TEXT:= »;

 EDPVJA.SetFocus;

end;

Procedure TForm_VED.CMDINPUTClick(Sender: TObject);

{Ввод программы на встроенном языке пакета}

Begin

PVJA:= EDPVJA.TEXT;

CMDPROCESS.SetFocus;

End;

Procedure TForm_VED.CMDPROCESSClick(Sender: TObject);

{Обработка события: нажатие клавиши «ВЫПОЛНЕНИЕ»}

Type

  TypeTinf= Record

         KV:  Integer; {Код возврата}

         PB:  Integer; {Признак блока}

   End; { TypeTinf }

  T_YV= Array[1..40] Of Integer;{Тип для управляющего вектора}

  T_PAR= Array[ 1..40] Of String;{Тип для вектора параметров}

Var

 YV: T_YV; {Управляющий вектор}

  PAR: T_PAR; {Вектор параметров}

  KSL: Integer; {Количество расшифрованных слов ПВЯ}

  TINF:  TypeTinf; {Таблица информатора}

Procedure Lan (PVJA: String; {Программа на

         входном языке}

      Var YV: T_YV; {Управляющий вектор}

      Var Par: T_Par; {Вектор параметров}

      Var Ksl: Integer; {Количество

                       расшифрованных слов ПВЯ}

      Var Tinf: TypeTinf {Таблица информатора});

Begin

 { Блок лексического разбора}

 End; {Procedure}

 Procedure San ( YV: T_YV;

                Ksl: Integer;

           Var  Tinf: TypeTinf) ;

 {Блок синтаксического анализа}

Begin

End;

 Procedure Yprava (YV: T_YV;

                   Par: T_PAR;

                   Ksl: Integer;

               Var Tinf: TypeTinf);

 {Модуль управления}

Begin

End; {Procedure}

 Procedure Inform (Tinf: TypeTinf);

 { Блок информатора}

Begin

End;

 Begin

  With TINF DO

  Begin

    Lan ( PVJA,YV,Par,Ksl,Tinf);

    { Выполнение блока лексического разбора}

    Inform ( Tinf );

    If KV =0 then

      Begin

      San (YV,Ksl,Tinf);

      {Выполнение блока синтаксического анализа}

      Inform ( Tinf );

      If KV=0  Then

        Begin

        Yprava( YV,Par,Ksl,Tinf);

         {Выполнение блока управления}

        Inform ( Tinf );

       End;

    End;

   End;    { With }

  MESINF.LINES.ADD(‘Завершение работы управляющей программы’);

END;

Procedure TForm_VED.CMDEXITClick(Sender: TObject);

Begin

 Close;

End;

Procedure TForm_VED.CMDHELPClick(Sender:  TObject);

{ Метод, обеспечивающий помощь пользователю}

Begin

End;

End.