• Курсы Академии Кодебай, стартующие в мае - июне, от команды The Codeby

    1. Цифровая криминалистика и реагирование на инциденты
    2. ОС Linux (DFIR) Старт: 16 мая
    3. Анализ фишинговых атак Старт: 16 мая Устройства для тестирования на проникновение Старт: 16 мая

    Скидки до 10%

    Полный список ближайших курсов ...

Вопрос

  • Автор темы TDK-dev
  • Дата начала
Статус
Закрыто для дальнейших ответов.
T

TDK-dev

Скажите, что такое фреймворки в двух словах, чтобы коротко и понятно. Спасибо заранее
P. S. А также, что такое bundle в Java? Буду очень благодарна...
 
M

mms

Что такое framework? Можно было бы дать точное научное или какое-либо пространное философское определение, но я попытаюсь объяснить, что это такое, а также, зачем кто-либо пытается создать framework, и кто те люди, которые framework создают и используют.

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

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

Каждый опытный программист знает известную программистскую дилемму – проблема не в том, что нет решения, проблема в том, что решений слишком много. Некоторые коллеги не будут пользоваться вашей библиотекой по ряду причин, начиная от простого неведенья до откровенного нежелания признавать ваши таланты. Заставить их использовать ваш код можно несколькими способами. Наиболее распространённый – это организационные меры. Кому-то поручается утвердить библиотеку как стандарт, а затем следить, чтобы все этому стандарту следовали. Но существует и другой путь.

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

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

Приведём пример. Почему .NET Framework называется именно так? За .NET я не ручаюсь, но вот Framework говорит о том, что, во-первых, имеется библиотека готовых решений (включающая в себя функции работы с памятью, строками и событиями). А во-вторых, имеется набор ограничений (например, автоматическая проверка корректности кода и метаданных). И если разработчик попытается уклониться от этих ограничений, то framework напомнит ему об этом.

Теперь нам наверно стоит ответить на очень важный вопрос: чего стоит разработка framework, и какие способности надо иметь?

Начнём с первого правила архитектора программного обеспечения. Если вы хотите спроектировать framework, то не делайте этого. Второе правило - если вы хотите спроектировать framework, то никогда не делайте этого. Третье правило – если вы всё ещё хотите спроектировать framework, то так вам и надо, отвечать за последствия будете сами :(

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

 
Статус
Закрыто для дальнейших ответов.
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!