SDK (Software Development Kit)

Материал из Национальной библиотеки им. Н. Э. Баумана
Последнее изменение этой страницы: 20:56, 1 июня 2017.
Software Development Kit
SDK (от англ. software development kit) — комплект средств разработки, который позволяет специалистам по программному обеспечению создавать приложения для определённого пакета программ, программного обеспечения базовых средств разработки, аппаратной платформы, компьютерной системы, игровых консолей, операционных систем и прочих платформ. SDK использует преимущества каждой платформы и сокращает время на интеграцию. Для того, чтобы обогатить приложения расширенными функциональными возможностями, рекламой, push-уведомлениями и многим другим, большинство разработчиков приложений реализуют специальные комплекты для разработки программного обеспечения. Некоторые SDK имеют решающее значение для разработки приложения для iOS / Android. Например, для разработки приложения для Android требуется SDK с Java, для приложений iOS - iOS SDK с Swift, а для Microsoft Windows - Microsoft .NET Framework SDK с Microsoft .NET Framework. Существуют также SDK, которые устанавливаются в приложениях для предоставления аналитики и данных о деятельности. Известные примеры включают Google Inc., InMobi и Facebook.

Это может быть так просто, как реализация одного или нескольких интерфейсов прикладного программирования (API) в виде некоторых библиотек для взаимодействия с конкретным языком программирования или для включения сложного оборудования, которое может связываться с конкретной встроенной системой. Общие инструменты включают средства отладки и другие утилиты, часто представленные в интегрированной среде разработки (IDE). SDK также часто включают примерный код и вспомогательные технические примечания или другую подтверждающую документацию, чтобы помочь прояснить моменты, сделанные основным справочным материалом.

Детали

SDK могут иметь прикрепленные лицензии[Источник 1], которые делают их непригодными для создания программного обеспечения, предназначенного для разработки в соответствии с несовместимой лицензией. Например, запатентованный SDK, вероятно, будет несовместим со свободной разработкой программного обеспечения, в то время как лицензированный GNU GPL SDK может быть несовместим с разработкой проприетарного программного обеспечения. SDK LGPL, как правило, безопасны для разработки собственных продуктов.

Среднее мобильное приложение для Android реализует 15,6 SDK, а игровые приложения используют в среднем 17,5 SDK. Самые популярные категории SDK для мобильных приложений для Android - это аналитика и реклама[Источник 2].

SDK могут быть небезопасными (поскольку SDK реализуются в приложениях, но работают независимо от кода). Вредоносные SDK (с честными намерениями или без) могут нарушить конфиденциальность данных пользователей, повредить их производительность или даже заблокировать приложения из Google Play или Apple iTunes[Источник 3]. Новые технологии позволяют разработчикам приложений контролировать и отслеживать SDK в режиме реального времени.

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

SDK для надстройки операционной системы (например, Apple QuickTime для классической MacOS) может включать в себя программное обеспечение надстройки, которое должно использоваться для целей разработки, но не обязательно для перераспределения вместе с разработанным продуктом. Между платформами, где можно разрабатывать приложения, которые могут, по крайней мере, запускаться в конфигурации системы без установленного надстройки, и использовать запрос среды времени исполнения в стиле Gestalt, чтобы определить, присутствует ли надстройка, и те, где приложение просто не запустится, можно создать единый двоичный файл, который будет работать на конфигурациях с и без дополнения, хотя и работает со сниженной функциональностью в последней ситуации.

Поставщики SDK для конкретных систем или подсистем могут иногда заменять более конкретный термин вместо программного обеспечения. Например, как Microsoft Corporation, так и Apple предоставляют комплекты разработки драйверов (DDK) [Источник 4] для разработки драйверов устройств.

Компоненты SDK

Первый компонент

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

Второй компонент

Второй — документация, которая в SDK, как правило, проста и лаконична. Она обычно делится на две части: Tutorial — пошаговый курс в стиле “Построим город за 10 минут” и раздел Reference — справочник по всему, что можно сделать с помощью данного SDK.

Третий компонент

Третий компонент обычно самый “вкусный” — примеры того, что можно сделать с помощью SDK. Во-первых, благодаря им можно вообще не вникать в SDK, но ознакомиться с тем, что же может пакет. Во-вторых, есть люди, которым даже относительно небольшой Tutorial читать лень. Так и не надо! Бери один из примеров, изменяй его и — вуаля! Новая программа или игра готова.

Группы SDK

Все SDK условно можно разделить на две большие группы.

Первая группа

Первые создаются разработчиками для тех, кто хочет сделать самостоятельную программу или игры. Пример такого SDK — DirectX, который установлен практически на любом компьютере. Но у простых смертных стоят только рабочие библиотеки — так называемый Redistributable. Для программистов же Microsoft Corporation подготовила полноценный пакет DirectX SDK весом 100 Мб. В нем есть все, что необходимо разработчику для создания компьютерной игры: собственно библиотеки, заголовочные файлы для MSVC++, примеры и многостраничная документация. Причем SDK распространяется совершенно бесплатно. Но как быть тем, кто программируют не на MSVC++, а в других средах, например в Delphi? Microsoft Corporation тут не помощник, но почти для любого из языков программирование есть адаптер, с помощью которого можно использовать возможности DirectX.

Вторая группа

Второй вид SDK — самодостаточные инструменты. К ним, к примеру, относится Torque Game Engine SDK от компании Garage Games — полноценный игровой движок, поддерживающий самые передовые технологии. В отличие от DirectX, который все же полуфабрикат, с помощью Torque можно создавать хорошие игры без глубокого знания технологий программирования под 3D. В Torque используется C-подобный скриптовый язык программирования. Для своих возможностей лицензия на разработку с помощью Torque стоит удивительно недорого — всего $100. Сколь бы ни был распространен DirectX, но самые известные SDK среди разработчиков — это движки Unreal Warfare и Lightech. В их составе есть и инструменты для разработки, и документация, и примеры готовых игр. Только условия лицензирования гораздо более жесткие.

Сообщество разработчиков SDK

Кстати, не стоит думать, что в одной игре или программе может быть использован только один пакет разработчиков. Для создания некоторых игр применяется до десятка SDK.Чаще всего SDK, только что сошедший с конвейера, содержит массу багов. Чтобы упростить разработку программ и игр, а заодно подчистить глюки движка, разработчики создают специализированное Community — Сообщество разработчиков SDK. В разных компаниях сообщество организовано по-разному, но чаще всего это форум, где разработчики могут обсудить тонкости использования SDK, посоветоваться и задать вопросы в службе технической поддержки. Иногда делается лист рассылки с новостями о развитии SDK и раздел документации, который постоянно обновляется. Приплюсуйте к этому статьи самих разработчиков, общение с другими пользователями — разработчиками SDK и самое важное — круглосуточную техническую поддержку по телефону, электронным средствам связи и даже с выездом в офис клиента. В России традиционно недооценивается эта составляющая и ценность службы технической поддержки вообще. Зато на Западе техподдержка ценится не меньше подробной документации. И стоимость этого компонента составляет значительную часть стоимости всего SDK.

Если к какой-то игре вышел SDK — это отличный повод совершенно бесплатно (лишь иногда — за небольшие деньги) создать свою собственную игру. Не надо программировать собственный движок, создавать множество дополнительных утилит, связывать все это вместе. Все уже сделано за нас. Нам нужно только изучить основы работы в SDK и... творить.

Основные направления развития SDK

  • Remote API — доступ к данным осуществляется посредством низкоуровневых HTTP запросов. Актуально для разработки собственных сайтов, приложений для мобильных устройств, для интеграции в сторонние приложения.
  • JavaScript API — позволяет получить доступ к данным и функциям в своем веб-приложении при помощи JavaScript.

SDK дает доступ к данным и позволяет расширить функциональные возможности приложений. Задумайтесь о собственном SDK если:

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

Для разработчика который использует SDK это:

  • экономия времени и денег при расширении функциональности приложения.
  • повышение удобства приложения и как следствие его рейтинга.
  • возможность заработать.

Примеры SDK

Источники

  1. License compatibility [Электронный ресурс]: Wikipedia / Дата обращения: 28.05.2017. Режим доступа: https://en.wikipedia.org/wiki/License_compatibility
  2. Shoavi, Orly. "The All-Star Winners of Mobile App Tools (SDKs)" [Электронный ресурс]: SafeDK / Дата обращения: 28.05.2017. Режим доступа: http://blog.safedk.com/sdk-economy/star-winners-mobile-app-tools-sdks/
  3. Perez, Sarah. "Hundreds Of Apps Banned From App Store For Accessing Users' Personal Information" [Электронный ресурс]: TechCrunch / Дата обращения: 28.05.2017. Режим доступа: https://techcrunch.com/2015/10/19/hundreds-of-apps-banned-from-app-store-for-accessing-users-personal-information/
  4. Driver Development Kit (DDK) [Электронный ресурс]: TechTarget / Дата обращения: 28.05.2017. Режим доступа: http://searchwindowsserver.techtarget.com/definition/driver-development-kit-DDK

Ссылки/Литература