Файл: Анализ методов современного программирования ( Методики программирования ).pdf
Добавлен: 28.03.2023
Просмотров: 371
Скачиваний: 2
СОДЕРЖАНИЕ
Глава 1. Методики программирования
1.1 Методы систематического программирования
1.1.2 Объектно-ориентированный подход
1.1.4 Компонентное проектирование
1.1.5 Аспектно - ориентированное программирование
1.1.6 Генерирующее программирование
1.1.7 Агентное программирование
2.1. Теоретическое программирование
2.1.1 Алгебраическое программирование
2.1.2 Экспликативное программирование
2.1.3 Алгоритмическое программирование
Глава 2. Оптимизации программного кода
2.1. Основные принципы оптимизации кода
2.1.1. Выявление узких мест программы
2.1.2. Методы оптимизации программ
2.1.3. Параллельное программирование
2.2 Архитектура программных систем.
2.2.1 MVC (Model - View - Controller)
2.2.2 MVP (Model-View-Presenter)
2.2.3 MVVM (Model - View - ViewModel)
2.2.4 MVI (Model - View - Intent)
2.2.5 VIPER (View - Interactor - Presenter - Entity - Router)
Введение
Актуальность темы исследования заключается в том, что мы живем во время стремительного прогресса и с каждым днем накапливается все больший объем информации и нам нужно его каталогизировать и выдавать пользователю в удобном для него виде. Так же из-за появления большого объема информации, программистам нужно чаще обновлять свой программный код, для добавления новых функций или поддержания старых.
Для этих целей и используется архитектура, когда модули приложения не зависят напрямую друг от друга и находятся в определенных местах, что оптимизирует добавление кода, его тестируемость и сохраняет деньги бизнеса и время программистов в будущем. Так же используется различные типы программирования и диаграммы. Так же программирование невозможно без тестирование конечного функционала.
Объект исследования - анализ методов современного программирования.
Предмет исследования - методы современного программирования и ее типы.
Цель работы - изучить особенности методов современного программирования.
Задачи исследования:
- Изучить и проанализировать литературу по теме.
- Структурировать знания по данной тематике, выделив основные методы
- Изучить особенности различных методов
- Изучить, как методы программирования влияют на оптимизацию программного кода
- Обобщить полученные в ходе работы знания
Глава 1. Методики программирования
Методология разработки программного обеспечения - совокупность методов, применяемых на различных стадиях жизненного цикла программного обеспечения и имеющих общий философский подход.
Методики программирования:
- Методы систематического программирования
- структурный
- объектно-ориентированный
- UML-метод
- компонентный
- аспектно-ориентированный
- генерирующий
- агентны
- Методы теоретического программирования
- алгебраическое
- экспликативное
- алгоритмическое программирование
1.1 Методы систематического программирования
1.1.1 Структурный подход
Сущность структурного подхода к разработке ПС заключается в разбиении целостной системы на автоматизируемые функции, которые делятся на подфункции, на задачи и так далее. Процесс декомпозиции продолжается до определения конкретных процедур. При этом автоматизируемая система сохраняет целостное представление, в котором все составляющие компоненты взаимосвязаны.
Общие принципы:
- разделение общей задачи на подзадачи для облегченного понимания
- организация составных частей задачи в древовидные структуры с добавлением новых деталей на каждом уровне.
Основные принципы:
- абстрагирование, выделение важных элементов системы от дополнительных
- формализация, общее свойство для решения задачи
- непротиворечивость, согласованность всех элементов системы
- иерархическая структуризация данных.
1.1.2 Объектно-ориентированный подход
Объектно-ориентированный подход - методология разработки, в рамках которой объекты реального мира представляются классами, у каждого из которых есть своя функция. Класс служит шаблоном для описания всех атрибутов и поведений, связанных с объектами данного класса.
Приложения содержит взаимодействующие друг с другом объекты, у которых есть свои локальные состояния и методы для взаимодействия с другими объектами. Обычно объекты имеют модификаторы доступа, которые помогают объекту не допустить изменений из вне, в целях безопасности.
Основные принципы:
- абстракция - выделение общих абстрактных свойств без их конкретной реализации
- инкапсуляция - сокрытие реализации. Применяется, чтобы внешние объекты не могли менять значения полей или поведение объекта, без его ведома.
- наследование - позволяет описать новый класс на основе уже существующего. Класс, от которого наследуются называется родителем, новый - потомком. Позволяет не писать заново новую функциональность, а часть кода использовать из ранее написанных классов.
- полиморфизм - многообразие форм. Позволяет использовать объекты с одинаковым интерфейсом без знания конкретного типа.
1.1.3 UML - программирование
UML (United Modeling Language) – язык графического описания для объектов реального мира в виде различных диаграмм.
Модель UML - это совокупность диаграмм, которые визуализируют основные элементы структуры системы.
UML – необходима, чтобы посмотреть на задачу с разных точек зрения и чтобы программистам было легче понять способ реализации задачи.
Что обеспечивает UML:
- иерархическое описание сложной системы путем выделения пакетов;
- формализацию функциональных требований к системе с помощью аппарата вариантов использования;
- детализацию требований к системе путем построения диаграмм деятельностей и сценариев;
- выделение классов данных и построение концептуальной модели данных в виде диаграмм классов;
- выделение классов, описывающих пользовательский интерфейс, и создание схемы навигации экранов;
- описание процессов взаимодействия объектов при выполнении системных функций;
- описание поведения объектов в виде диаграмм деятельностей и состояний;
- описание программных компонент и их взаимодействия через интерфейсы;
- описание физической архитектуры системы.
Основные типы UML:
- Диаграммы состояний (State diagrams);
- Диаграммы деятельностей (Activity diagrams);
- Диаграммы объектов (Object diagrams);
- Диаграммы последовательностей (Sequence diagrams);
- Диаграммы взаимодействия (Collaboration diagrams);
- Одна из диаграмм, которая довольно часто используется на практике - это диаграмма классов, которая описываю структуру классов, их атрибуты и зависимости между классами.
1.1.4 Компонентное проектирование
Компонентное программирование является наиболее производительным, так как использует готовые компоненты при создании сложных систем.
Компонентный подход дополняет и расширяет существующие подходы в программировании, например, ООП. Объекты рассматриваются на логическом уровне проектирования ПС, а компоненты - это физическая реализация объектов.
Типы компонентных структур. Компонент расширяет паттерн - абстракция, который содержит описание взаимодействия и роли для каждого объекта.
Композиция компонентов может быть следующих типов:
- композиция компонент-компонент обеспечивает взаимодействие компонентов через интерфейс на уровне приложения
- композиция каркас-компонент обеспечивает взаимодействие каркаса с компонентами, при котором каркас управляет ресурсами компонентов и их интерфейсами на системном уровне
- композиция компонент-каркас обеспечивает взаимодействие компонента с каркасом по типу "черного ящика", в видимой части которого находится описание файла для развертывания и выполнения определенной функции на сервисном уровне
- композиция каркас-каркас обеспечивает взаимодействие каркасов, каждый из которых может разворачиваться в гетерогенной среде и разрешать компонентам, входящим в каркас, взаимодействовать через их интерфейсы на сетевом уровне
1.1.5 Аспектно - ориентированное программирование
Аспектно - ориентированное программирование - это методология программирования, при которой создаются гибкие к изменениям ПС, благодаря добавлению новых функций, которые обеспечивают безопасность и взаимодействие компонентов с другими системами, так же для синхронизации одновременного доступа к данным.
Основные этапы:
- разделение задач с условием многоразового применения модулей и выделенных свойств, такие как, параллельность, синхронность, безопасность.
- определение точек соприкосновения одних элементов с другими
- разработка фильтров
- создание объектной или компонентной модели, и ее дополнение.
- отладка модулей по-отдельности, так и приложения в целом
1.1.6 Генерирующее программирование
Генерирующее программирование – методология программирования, при которой создаются семейства приложений из отдельных элементов, фабрик и тому подобное. По сути, это ООП, который дополнен многоразовыми элементами, изменяемыми свойствами, взаимодействиями между элементами.
Основные этапы:
- анализ и выявление объектов и отношений между ними
- определение области действий объектов
- определение общих характеристик и построение модели
- создание основы для производства программных членов семейства независимо от их реализации
- подбор и подготовка компонентов для многоразового применения
1.1.7 Агентное программирование
Агентное программирование - методология программирования, при которой программа способна сама управлять своими действиями в информационной среде и получать результаты выполнения задачи, изменение самой среды.
Основные свойства агента:
- автономность - это способность действовать без внешнего воздействия
- реактивность - это способность реагировать на изменения данных и среды и воспринимать их
- активность - это способность самостоятельно ставить задачи и выполнять заданные действия для достижения
- способность к взаимодействию с другими агентами
Основные задачи:
- самостоятельная работа и контроль своих действий
- взаимодействие с другими агентами
- изменение поведения в зависимости от состояния внешней среды
- получение результата
2.1. Теоретическое программирование
2.1.1 Алгебраическое программирование
Алгебраическое программирование - это конструирование программ с использованием алгебраических преобразований и функций интеллектуальных агентов. В основе математического аппарата используется алгебра языка действий и понятие транзитивной системы в качестве механизма определения поведения систем и механизмов ее эквивалентности. В качестве понятий в общем случае могут быть компоненты, программы и их спецификации, объекты, взаимодействующие друг с другом и со средой их существования.
Теория АП обеспечивает создание математической информационной среды с универсальными математическими конструкциями, вычислительными механизмами, учитывающими особенности разработки ПС и функционирования.
Алгебраическое программирование концентрирует внимание на задачах интеллектуализации и аспектах поведения агентов в их среде.
2.1.2 Экспликативное программирование
Экспликативное программирование - ориентировано на разработку теории дескриптивных и декларативных программных формализмов, адекватных моделям структур данных, программ и средств конструирования из них программ. Теоретическую основу ЭП составляют логика, конструктивная математика, информатика, композиционное программирование и классическая теории алгоритмов. Для изображения алгоритмов программ используются алгоритмические языки и методы программирования: функциональное, логическое, структурное, денотационное
Основные принципы ЭП:
- принцип развития понятия программы в абстрактном представлении и постепенной ее конкретизации с помощью экспликаций
- принцип прагматичности - решение задач пользователя
- принцип адекватности - абстрактное построение программ и реализацию задачи с учетом информационности данных и апликативности. Программа рассматривается как функция, вырабатывающая выходные данные на основе входных данных.Функция - это объект, которому сопоставляется денотат имени функции с помощью отношения именования
- принцип дескриптивности позволяет трактовать программу как сложные дескрипции, построенные из более простых и композиций отображения входных данных в результаты на основе принципа вычислимости