Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология
Образование Политология Производство Психология Стандартизация Технологии 


Обоснование выбора средств разработки клиентского приложения




Delphi — императивный, структурированный, объектно-ориентированный язык программирования, диалект ObjectPascal. Начиная со среды разработки Delphi 7.0, в официальных документах Borland стала использовать название Delphi для обозначения языка ObjectPascal. Начиная с 2007 года уже язык Delphi (производный от ObjectPascal) начал жить своей самостоятельной жизнью и претерпевал различные изменения, связанные с современными тенденциями.

BorlandDelphi представляет собой средство разработки приложений для MicrosoftWindows. Delphi является мощным и простым в использовании инструментом для создания автономных программ, обладающих графическим интерфейсом (GUI), или 32-битных консольных приложений (программ, которые не имеют графического интерфейса).

В сочетании с BorlandKylix, программисты Delphi могут создавать из одного исходного текста приложения и для Windows и для Linux, и это открывает новые возможности и увеличивает потенциальную отдачу от усилий, вложенных в изучение Delphi. В Delphi используется кросс-платформенная библиотека компонентов CLX и визуальные дизайнеры для создания высокопроизводительных приложений для Windows, которые повторной компиляцией можно легко превратить в приложения для Linux.

Delphi ― это продукт для быстрого создания приложений (RAD).

Delphi позволяет создавать приложения интерактивным выбором необходимых компонентов из ComponentPalette и перетягиванием их на форму. Основное же достоинство этого метода заключается в том, что Delphi при этом самостоятельно создает необходимый код. Это напоминает по своим возможностям VisualBasic и другие подобные языки программирования. Однако в случае Delphi можно получить настоящий объектно-ориентированный код и все возможности этого подхода, включая расширение функциональных возможностей компонентов Delphi до уровня, удовлетворяющего поставленным запросам. Можно использовать компоненты Delphi, можно наследовать их и добавлять собственные методы, а кроме того, можно использовать управляющие элементы Active X.

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

Одна из больших проблем невизуального программирования — создание пользовательского интерфейса. То есть решение всех вопросов взаимодействия с пользователем: что он будет видеть на экране, какой внешний вид должны иметь кнопки. Зачастую больше времени занимает именно разработка и создание "одежек", чем рабочей части программы. Но забывать про рабочую часть все-таки не стоит.

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

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

Основным преимуществом Delphi является его среда программирования с визуальным конструктором программ. Эта среда (вместе с объектной библиотекой VCL) позволяет эффективно программировать под MS Windows, не отвлекаясь на выяснение всех деталей Win API, а работать над логикой программы.

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



Еще одно преимущество Delphi в том, что он позволяет создавать большие программы, которые неудобно размещать в одном файле. Основной частью программы является проект. Проектами могут быть файлы с исходным текстом модулей (расширение .pas), формы, являющиеся графическим представлением приложения (расширение .dfm), и сами файлы проектов (расширение .dpr). Следует отметить тот факт, что каждому файлу формы обязательно соответствует файл с исходным текстом модуля, но файл с исходным текстом модуля не обязательно должен иметь соответствующую ему форму.

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

Также при создании программы используются динамические библиотеки и библиотеки стандартных компонент. Динамические библиотеки проектируются, компонуются и компилируются отдельно. Их файлы имеют расширение .dll. Файлы библиотек стандартных компонент имеют расширение .dlc. Такие библиотеки содержат особым образом отработанные классы (например, неотображаемые объекты, компоненты окон или баз данных) и файлы, расположенные в архиве объектов. Отработанные классы можно использовать в программе, как целое, а файлы представляют собой различные заготовки проектов и формы.

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

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

programProjectl;

uses Forms, Unitl in 'Unit1.pas' {Forml};

{$R *.RES}

begin

Application.Initialize;

Application.CreateForm(TForml, Forml);

Application.Run;

end.

Использование модуля Forms обязательно для всех программ, создаваемых в среде Delphi, так как в этом модуле содержится описание класса TApplication, который лежит в основе всех Delphi-приложений. В приведенном примере первая строка содержит имя проекта. Это же имя используется в качестве имени приложения, если не задано другое. Оператор uses сообщает компилятору, что программа использует модуль с исходным кодом формы Unit1.pas, который описывает главную форму, включенную в данное приложение. Название формы (ее идентификатор) приводится в фигурных скобках. Следует иметь ввиду, что имя формы должно быть отлично от имени модуля, описывающего эту форму. Директива in указывает на то, что модуль является обязательной частью проекта, а не просто файлом, используемом в проекте. Директива $R подключает к проекту все необходимые ресурсы (файлы с расширением .res). Само изображение формы хранится в виде Windows-ресурса и имеет расширение .dfm.

Далее начинается главный блок программы, в котором создается форма и содержится команда запуска основного цикла приложения. Вызов метода Application.Initialize приводит к инициализации самого приложения, представленного экземпляром класса TApplication. Метод Application.Create-Form загружает и инициализирует форму, a Application.Run начинает выполнение приложения и загружает главную форму. При добавлении к проекту новой формы или нового модуля. Delphi автоматически добавляет соответствующий оператор uses в файл проекта. Аналогично добавляются методы Application.CreateForm, для загрузки и инициализации дополнительных форм, используемых в данном приложении.

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

Если несколько проектов объединены в группу, то для управления взаимосвязанными проектами используется файл группы проектов. Файлы групп проектов имеют расширение .bpg.

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

Сценарий диалога ЭИС

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

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

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

Степень неопределенности действий пользователя зависит от выбранной структуры диалога. Наибольшей детерминированностью обладает диалог на основе меню, наименьшей – диалог типа «вопрос-ответ», управляемый пользователем.

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

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

Сценарий диалога пользователя представлен на Рисунке 3.2.


ЭИС управления проектами
Идентификация пользователя
Проекты
Справочники
Печатные формы
Роли
Персонал
Отчеты
План-график проекта
Проектная команда
Назначения на проект
Проектная документация
Отклонения по проекту
Затратына проект
План-график проекта
Приказ о создании проектной команды и установление тарифа оплаты
Отчет о сроках
Отчет о затратах
Отчёт об отклонениях
Отчет о текущем состоянии
Отчет о проектах компании

 


Рисунок 3.2 — Сценарий диалога пользователя


Описание функций ЭИС

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

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

К основным функциям ИС, как правило, относятся функции сбора и регистрации информационных ресурсов, их хранение, обработка, актуализация, а так же обработка запросов пользователя.

К основным функциям разрабатываемой системы можно отнести:

· планирование проекта;

· контроль проекта;

· расчет плановых и фактических затрат на проект;

· расчет материальных и трудовых затрат;

· ведение справочной информации;

· генерация отчетов;

· формирование печатных форм.

К служебным функциям относятся:

· связь с базой данных;

· идентификация пользователя;

· разграничение полномочий.

На Рисунке 3.3 представлено дерево функций системы.


Функции системы управления проектами  
Основные функции
Служебные функции
Планирование проекта
Контроль выполнения проекта
Формирование печатных форм
Генерация отчетов
Ведение справочной информации
Расчет плановых и фактических затрат на проект
Связь с базой данных
Идентификация пользователя
Расчет материальных и трудовых затрат затрат
Разграничение полномочий

 


Рисунок 3.3 — Дерево функций системы


Ниже представлен программный код некоторых функций системы.

Листинг 3.1 — Создание новой роли

procedure TfrmAddNewRole.FormActivate(Sender: TObject); begin NewRoleID:=dtmConnection.qurJobs.RecordCount + 1; dtmConnection.dtsJobs.DataSet.Insert; end;   procedure TfrmAddNewRole.cmbOkRoleClick(Sender: TObject); begin dtmConnection.dtsJobs.DataSet.FieldByName('ID').Value:=NewRoleID; dtmConnection.dtsJobs.DataSet.Post; dtmConnection.qurJobs.Refresh; frmAddNewRole.Close; end;

Листинг 3.2 — Добавление нового персонала

procedure TfrmPersonel.FormActivate(Sender: TObject); varNewPersonelID:integer; begin if frmMain.AddNewPersonel=True then begin dtmConnection.dtsPersonal.DataSet.Insert; NewPersonelID:=dtmConnection.qurPersonal.RecordCount + 1; dtmConnection.dtsPersonal.DataSet.FieldByName('ID').Value:=NewPersonelID; end; end;   procedure TfrmPersonel.cmbOkPersonelClick(Sender: TObject); begin if frmMain.AddNewPersonel=True then begin dtmConnection.dtsPersonal.DataSet.Post; frmPersonel.Close; end; end;

Листинг 3.3 — Назначение на проект

procedure TfrmProjectTeam.cmbOkProjectTeamClick(Sender: TObject); varNewEntry:integer; begin dtmConnection.qurProjectTeam.Post; cmbJob.DataSource:=frmProjectDetails.dtsProjectTeam; cmbPersonel.DataSource:=frmProjectDetails.dtsProjectTeam; frmProjectDetails.qurProjectTeam.Active:=False; frmProjectDetails.qurProjectTeam.Active:=True; dtmConnection.qurProjectTeam.Active:=False; dtmConnection.qurProjectTeam.Active:=True; frmProjectTeam.Close; end;   procedure TfrmProjectTeam.FormActivate(Sender: TObject); varNewEntry:integer; begin NewEntry:=dtmConnection.qurProjectTeam.RecordCount; NewEntry:=NewEntry+12; cmbJob.DataSource:=dtmConnection.dtsProjectTeam; cmbPersonel.DataSource:=dtmConnection.dtsProjectTeam;

Продолжение Листинга 3.3

if frmProjectDetails.AddNewProjectTeam=True then with dtmConnection do begin dtsProjectTeam.Dataset.Insert; dtsProjectTeam.DataSet.FieldByName('ID').Value:=NewEntry; dtsProjectTeam.DataSet.FieldByName('ProjectID').Value:=frmProjectDetails.ProjectID; end;

Листинг 3.4 — Добавление стадии или проекта

procedure TfrmProjectDetails.cmbAddNewEntryClick(Sender: TObject); begin ckbIsFixated.DataSource:=dtmConnection.dtsProject; txtPlanBeginDate.DataSource:=dtmConnection.dtsProject; txtPlanEndDate.DataSource:=dtmConnection.dtsProject; txtPlanManHour.DataSource:=dtmConnection.dtsProject; txtFactBeginDate.DataSource:=dtmConnection.dtsProject; txtFactEndDate.DataSource:=dtmConnection.dtsProject; txtFactManHour.DataSource:=dtmConnection.dtsProject; txtNameProject.DataSource:=dtmConnection.dtsProject; cmbStatusProject.DataSource:=dtmConnection.dtsProject; cmbTypeProject.DataSource:=dtmConnection.dtsProject; dtmConnection.dtsProject.DataSet.Insert; end;   procedure TfrmProjectDetails.cmbCancelEntryClick(Sender: TObject); begin dtmConnection.dtsProject.DataSet.Cancel; ckbIsFixated.DataSource:=dtsProjectDetails; txtPlanBeginDate.DataSource:=dtsProjectDetails; txtPlanEndDate.DataSource:=dtsProjectDetails; txtPlanManHour.DataSource:=dtsProjectDetails; txtFactBeginDate.DataSource:=dtsProjectDetails; txtFactEndDate.DataSource:=dtsProjectDetails; txtFactManHour.DataSource:=dtsProjectDetails; txtNameProject.DataSource:=dtsProjectDetails; cmbStatusProject.DataSource:=dtsProjectDetails; cmbTypeProject.DataSource:=dtsProjectDetails; Label10.Visible:=False; cmbTypeEntry.Visible:=False; end;   procedure TfrmProjectDetails.cmbApplyEntryClick(Sender: TObject); varNewEntryID,ParentProject, ParentStage:integer; begin if cmbTypeEntry.Text='' then begin ShowMessage('Не выбран тип новой записи'); cmbTypeEntry.SetFocus; Exit; end; dtmConnection.dtsProject.DataSet.FieldByName('ID').Value:=NewEntry; dtmConnection.dtsProject.DataSet.FieldByName('ParentProjectID').Value:=ProjectID; if cmbTypeEntry.Text='Новаястадия' then

Продолжение Листинга 3.4

begin dtmConnection.dtsProject.DataSet.FieldByName('ParentStageID').Value:=NewEntry; dtmConnection.dtsProject.DataSet.FieldByName('ParentWorkID').Value:=0; end; if cmbTypeEntry.Text='Новаяработа' then begin dtmConnection.dtsProject.DataSet.FieldByName('ParentStageID').Value:=dtsProjectDetails.DataSet.FieldValues['ID']; dtmConnection.dtsProject.DataSet.FieldByName('ParentWorkID').Value:=NewEntry; end; dtmConnection.dtsProject.DataSet.Post; ckbIsFixated.DataSource:=dtsProjectDetails; txtPlanBeginDate.DataSource:=dtsProjectDetails; txtPlanEndDate.DataSource:=dtsProjectDetails; txtPlanManHour.DataSource:=dtsProjectDetails; txtFactBeginDate.DataSource:=dtsProjectDetails; txtFactEndDate.DataSource:=dtsProjectDetails; txtFactManHour.DataSource:=dtsProjectDetails; txtNameProject.DataSource:=dtsProjectDetails; cmbStatusProject.DataSource:=dtsProjectDetails; cmbTypeProject.DataSource:=dtsProjectDetails; qurProjectDetails.Active:=False; qurProjectDetails.Active:=True; cmbTypeEntry.Visible:=True; Label10.Visible:=True; dbgProjectDetails.Group(4); dbgProjectDetails.SubGroup(5); end;

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

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

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

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

 

В Таблице 3.1 представлена структурная схема программы.

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

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

В таблице приведено описание модулей.

Таблица 3.1 — Структурная схема программы

Идентификатор модуля Описание функций
Project База данных
U_Data Модуль подключения к БД и хранилище всех справочников
U_Login Модуль авторизации
U_Role * Модуль справочника «Роли»
U_Main Модуль главной формы
U_Personal * Модуль справочника персонала
U_ProjectDet Модуль формы детализации проекта
U_ProjectDev * Модуль отклонений проекта
U_Resources * Модуль ресурсов проекта
U_ProjectManHour * Модуль времени проекта
U_ProjectTeam * Модуль команды проекта

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

Взаимосвязь модулей программы представлена на Рисунке 3.4


Project
E SWXc97fsMR7UgZeSFpzHnN82zAkA9kWDVOd4qrgkSRmNT4dQ3HPP6rlHb5orA9BzbLjlSYzxQT2K 0pnmAes5i1XhYpqjdodor1yFbhex4FzMZikMi2FZuNZ3lsfkEaeI4/3ugTnbkySAXjfmcT9eEaWL jTe1mW2CkXVi0ROuIGBUsFSJiv0HIG7tcz1FPX2mpn8AAAD//wMAUEsDBBQABgAIAAAAIQCLPf2r 3gAAAAgBAAAPAAAAZHJzL2Rvd25yZXYueG1sTI/NTsMwEITvSLyDtUjcqJ1WjSCNU1WowKUcUjj0 6MZLEvCfYjdN357lRI87M5r9plxP1rARh9h7JyGbCWDoGq9710r4/Hh5eAQWk3JaGe9QwgUjrKvb m1IV2p9djeM+tYxKXCyUhC6lUHAemw6tijMf0JH35QerEp1Dy/WgzlRuDZ8LkXOrekcfOhXwucPm Z3+yEkJf70asL+8hfm+3b6+77JBvjJT3d9NmBSzhlP7D8IdP6FAR09GfnI7MSHiaZ5QkXdAk8hcL kQM7SliKJfCq5NcDql8AAAD//wMAUEsBAi0AFAAGAAgAAAAhALaDOJL+AAAA4QEAABMAAAAAAAAA AAAAAAAAAAAAAFtDb250ZW50X1R5cGVzXS54bWxQSwECLQAUAAYACAAAACEAOP0h/9YAAACUAQAA CwAAAAAAAAAAAAAAAAAvAQAAX3JlbHMvLnJlbHNQSwECLQAUAAYACAAAACEAG8xOGHoCAADuBAAA DgAAAAAAAAAAAAAAAAAuAgAAZHJzL2Uyb0RvYy54bWxQSwECLQAUAAYACAAAACEAiz39q94AAAAI AQAADwAAAAAAAAAAAAAAAADUBAAAZHJzL2Rvd25yZXYueG1sUEsFBgAAAAAEAAQA8wAAAN8FAAAA AA== " fillcolor="window" strokecolor="#4f81bd" strokeweight="2pt"/>
U_Data
U_ProjectDev
U_Main
U_ProjectDet
U_Role
U_Personal
U_Login
U_Resources
U_Project ManHour
U_ProjectTeam

 

 


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





Рекомендуемые страницы:


Читайте также:



Последнее изменение этой страницы: 2016-04-10; Просмотров: 802; Нарушение авторского права страницы


lektsia.com 2007 - 2021 год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! (0.027 с.) Главная | Обратная связь