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