Файл: Основы проектирования программ. Этапы создания программного обеспечения (ГЛАВА 1 ОСНОВЫ ПРОЕКТИРОВАНИЯ ПРОГРАММ).pdf
Добавлен: 05.07.2023
Просмотров: 93
Скачиваний: 2
ВВЕДЕНИЕ
Значительность исследования. Разработка любой программы, будь то небольшой процесс обработки поступающей на дисплей информации или комплекс программных продуктов, состоит из нескольких этапов, правильная реализация которых является обязательной для получения требуемого результата. Строгое соблюдение выверенных временем этапов разработки программного обеспечения становится основным критерием для компаний, создающих ПО, и их заказчиков, заинтересованных в получении корректно выполняющей свои функции программы. Рассмотрим подробно каждый этап общепризнанной методологии разработки ПО для оценки их значимости для достижения стоящей перед исполнителями цели.
Цель данной работы – это изучение основ проектирования программ и этапов создания ПО, для достижения поставленной цели. В ходе задачи выделим следующие этапы:
- рассмотрение основ проектирования программ;
- изучение этапов создания ПО.
Объект исследования – проектирование программ.
Предмет исследования - основы проектирования программ и этапов созданий программного обеспечения.
Сама же работа состоит из нескольких частей: введение, основная часть, заключение и список литературы.
При подготовке данной работы было использовано несколько источникво ииформации: работы российских и зарубежных авторов в области программирования и информатики, статьи периодических изданий и сети Интернет.
ГЛАВА 1 ОСНОВЫ МОДЕЛИРОВАНИЯ ПРОГРАММ
1.1 Базы данных, понятия и основы проектирования программ
База данных (БД) представляет собой неотъемлемую часть современного мира, и применяется повсеместно. Для обработки различной информации создается большое количество хранилищ разного назначения. Сегодня требуется оперировать очень большим объемом данных, которые необходимо сохранять. Эти данные могут иметь достаточно сложную структуру, но общий вид таких данных должен удовлетворять различным потребностям пользователей. Цель каждой информационной системы - обработка данных об объектах реального мира.
Для реализации работы с БД необходимо создать интерфейс пользователя, который должен эффективно выполнять все требуемые операции. Несмотря на отличия баз данных по области их использования, по хранящимся объектом и их свойствам, по методам и способам работы с ними, есть определенные базовые функции для выполнения элементарных операций с объектом, таких как: добавление данных, изменение, удаление, поиск. Однако, реализация всех собтвенных функций для каждого объекта приведет к повторному использованию кода, чего желательно избегать.
На сегодняшний день существует множество технологий разработки баз данных, включая и эти [5]. Для упрощения и создания более конкретной основы предпочтительно создавать такой каркас для выполнения программы, который будет являлся каркасом для разработки будущей системы [4]. Этот каркас должен описывать общие процедуры работы с объектами в графическом интерфейсе и на уровне БД. В тоже время функции оперируют не конкретными, а абстрактными объектами, а это позволит в будущем добавлять нужные классы без особых усилий. Получается, что созданный таким образом каркас позволит уменьшить трудозатраты по разработке итоговой программы. Для реализации каркаса предлагается использование порождающих и поведенческих паттернов проектирования.
«Паттерн является структурированным описанием задачи, с которой часто сталкиваются в процессе проектирования, ее наиболее подходящее решение и, как результат, рекомендации по применению этого решения в различных ситуациях. Удачно определенный паттерн позволяет пользоваться этим решением вновь. Также паттерн можно определить как описание взаимодействия объектов и классов, адаптированных для решения общей задачи проектирования в конкретном контексте» [1].
Применение паттернов обеспечивает следующие преимущества:
- Создаёт наглядную простую модель поведения системы структуры или поведения системы;
- позволяет выполнять анализ архитектуры системы с применением конкретного языка или платформы;
- повышает устойчивость системы к изменению требований и упрощает процесс последующей доработки системы;
- является унифицированным средством и облегчает взаимодействие разработчиков.
Паттерны проектирования отличаются своим назначением и уровнем применения в системе, поэтому они группируются определенным образом. Существует несколько вариаций классификации паттернов.
Цель - первый критерий классификации, то есть. основная функция паттерна для реализации рассматриваемой системы. Исходя из этого выделяют:
- Паттерны пораждения, применяющиеся к процессу реализации объектов;
- структурные паттерны, которые характеризуют структуру взаимодействия объектов и классов;
- паттерны поведения, описывающие взаимодействие классов или объектов между собой.
Второй критерий - уровень абстракции паттерна, т.е. определение цели применения паттерна: к объектам или классам. Паттерны уровня классов или объектов описывают соответственно отношения между классами и их подклассами или объектами. При этом отношения между классами являются статичными, а между объектами - динамичными.
Для реализации любой задачи можно применять совмещение использования различных паттернов.
1.2 Разработка интерфейса
Суть задачи заключается в том, чтобы создать граафический интерфей, для взаимодействия с объектами, при таблице базы данных будет соответсвовать свой класс, а каждой запись – объект программы. Следовательно, необходимо реализовать «скелет» программы, позволяющий выполнять следующие задачи:
- единообразная визуализация объектов;
- однообразная работа с объектами на уровне базы данных, в том числе: создание, изменение, чтение, удаление, а также поиск по БЛ;
- аналогичная работа с объектами на уровне графического интерфейса.
Для избежания повторения, написанного ранее кода, и для уменьшения трудозатрат, при реализации классов, для взаимодействия с объектами были применениы «порождающие паттерны». Скелет создавался, для конерктного программного обесепечения, которая создаёт пользовательский интерфейс для работы с БД отчетов. База данных содержит некоторое кол-во таблиц, содержащие сведения об отчётах, форматах и шаблонах. Графический интерфейс должен обеспечивать выполнение основных функций по работе с записями таблиц.
Для выполнения поставленной задачи, использовалисось несколько разновидностей паттернов: абстрактная фабрика и фабричный метод из группы порождающих паттернов и паттерны «стратегия» и «шаблонный метод» из группы поведенческих паттернов. Далее мы рассмотрим каждый паттерн и его применение по отдельности.
Классовая система, отраженная на рисунке, реадизована с использоыванием паттренов.
Рис. 1.1 – Модель реализации с помощью патентов
«Абстрактная фабрика» - паттерн, обеспечивающий создание семейства объектов, неразрывно связанных между собой, или зависимых друг от друга. В конретно этом случае, классы этих объектов не обозначаются, то есть система мы рассматриваем систему «в общем».
Этот паттрен использует когда:
- «система не зависима от того, как создаются, компонуются и представляются входящие в нее объекты;
- взаимосвязанные объекты должны использоваться вместе;
- требуется реализовать библиотеку объектов, не раскрывая реализацию интерфейсов, т.е. появляется возможность изолирования конкретных классов».
В качестве первого примера реализации паттерна «Абстрактная фабрика» можно привести класс «AEntity», являющийся абстракцией объекта в базе данных. Класс выполняет фунцию абстрактного продукта в реализации. Класс содержит атрибуты: значение идентификатора объекта и флаг необходимости сохранения объекта в БД, их методы-обозреватели, возвращающие соответствующее значение. Этот класс является родительским для всех классов, соответствующих объектам БД. Каждый объект БД должен обладать идентификатором, определенным в БД. В производных классах объектов БД – в конкретном рассматриваемом примере это классы «Шаблон» и «Отчет» - добавляются атрибуты, которые характеризуют эти объекты, а также методы- модификаторы и методы-обозреватели для работы с объектами. Методы-модификаторы изменяют значение атрибута объекта и имеют только один аргумент - новое значение атрибута. Методы-обозреватели возвращают текущее значение атрибута объекта и не имеют аргументов. Часто названия этих методов начинаются с Get и Set соответственно. Классы «Шаблон» и «Отчет» выполняют функции конкретных объектов в реализации паттерна и относятся к разным семействам продуктов.
Следующий представитель данного паттерна - класс «ADBLayer», определяющий набор базовых виртуальных функций для выполнения простых операций над объектом на уровне БД. Еще он выполняет функции абстрактного продукта в реализации паттерна. Класс содержит методы добавления, удаления, изменения записей, и выбора объектов по фильтру. При этом все функции класса являются абстрактными, т.е. их требуется определять в классах-наследниках: «TemplateDBLayer» и «PaperDBLayer», поскольку действия по отображению объектов на записи таблиц БД весьма конкретны. Классы «TemplateDBLayer» и «PaperDBLayer» играют роль конкретных объектов в реализации паттерна и относятся к разным семействам продуктов. В родительском классе «ADBLayer» в качестве входного параметра имеющихся функций выступает указатель на абстрактный объект класса «AEntity». В наследуемых классах при реализации функций уже используется конкретный объект («Шаблон» или «Отчет»), что обеспечивается приведением типов.
Последний пример реализации этого вида паттерна —класс «AFabric», являющийся абстрактной фабрикой. Класс содержит набор виртуальных функций для создания семейства абстрактных продуктов. Все функции являются абстрактными, и их требуется переопределять. Наследуемыми классами являются «TemplateFabric» и «PaperFabric», выполняющие функции конкретных фабрик. Каждый из них обеспечивает создание конкретного семейства продуктов. В нашем примере это семейства шаблонов и отчетов. Функция абстрактного класса «Создать сущность» в качестве выходного параметра возвращает указатель на абстрактный объект «AEntity», а в классах- наследниках возвращается объект конкретного класса. Аналогично реализована функция «Создать слой БД». Функция «Создать форму работы с объектом» получает в качестве параметра указатель на абстрактный объект класса «AEntity». Функция «Создать форму поиска» не использует в качестве параметров абстрактные классы, тем не менее ее надо полностью переопределять из-за того, что требуется вызывать разные формы поиска, значительно отличающиеся от объекта к объекту из-за того, что все объекты отличаются по количеству и содержанию полей данных.
Исходя из вышеизложенного, мы рассмотрели три класса, используемые в реализации паттерна «Абстрактная фабрика». Далее рассмотрим применение другого типа порождающих паттернов - фабричный метод.
Фабричные методы обеспечивают возможность разработчику не встраивать в код программы классы, которые зависят от приложения. В нашем случае подразумевается, что код использует только интерфейс абстрактного класса-родителя, при этом сами функции могут определяться совершенно разными способами в классах- наследниках, являющимися конкретными продуктами.
В этом паттерне выполняется правило: «Создавай объекты в отдельной операции, чтобы подклассы могли подменить способ их создания» [1]. Соблюдение этого правила и обеспечивает возможность изменять классы объектов так, как необходимо.
Фабричные методы могут существовать и без аргументов, и с передаваемым параметром. При этом входной параметр определяет вид создаваемого объекта, разделяющий интерфейс главного класса.
Паттерн фабричный метод используется, в следущих случаях:
- заранее неизвестно, какие объекты потребуются для работы программы;
- класс спланирован таким образом, что создаваемые объекты описываются подклассами:
- главный класс отдельно не используется, а передает свои обязанности одному из наследуемых подклассов.