Привет! С вами снова Merion Academy — платформа доступного IT образования . Все, что нужно знать не разработчикам: SDK – это строительные блоки разработки приложений.
Если ваша компания занимается тем, что разрабатывает или добавляет функциональные возможности в приложение, то вы, вероятно, слышали, как ваши разработчики используют термин «SDK». SDK (software development kit) – это пакет разработки средств ПО (иногда его называют devkit). Как можно понять из названия, это набор инструментов и инструкций, которые разработчики используют для создания приложений. SDK избавляют разработчиков от необходимости писать каждый банальный фрагмент кода своими руками. Они помогают стандартизировать разработку, что позволяет приложениям без каких-либо затруднений работать на различном оборудовании, операционных системах и совместно с другими приложениями.
Итак, какое это вообще имеет для вас значение, если вы не разработчик программного обеспечения? Так как архитектура вашего приложения напрямую связана с его коммерческой ценностью, то, когда вы выбираете то, какие компоненты использовать (например, Stripe или PayPal для платежей), ваш выбор должен быть продиктован SDK. Здесь мы привели краткое описание того, что такое SDK, как они работают и как сравнить их по качеству. Пакет разработки средств ПО (SDK — Software Development Kit): определение и примеры
What is an SDK? | SDK Tutorial | Why Use SDKs in Programming?
SDK – набор инструментов, который используют разработчики для создания приложений с помощью готовых компонентов, тем самым не утруждая себя тем, чтобы создавать эти компоненты собственноручно. SDK предназначены для работы с определенными операционными системами, оборудованием и языками программирования.
А вот вам аналогия из реальной жизни: если вы собираетесь собрать книжную полку, то SDK – это все то, что вы найдете в коробке из IKEA, то есть предварительно собранные детали, инструменты и инструкции, как все это собрать. А чтобы, например, собрать стол без SDK, вам придется пойти в лес, срубить дерево, чтобы у вас был свой пиломатериал, причем использовать для этого придется топор, который вы тоже должны сделать сами.
Если, например, вы хотите создать мобильное приложение, то вам нужно загрузить iOS SDK от Apple. Это даст вам доступ к любым инструментам iPhone, которые вам будут нужны для того, чтобы создать приложение, например, подключение к камере, интерфейсу Siri или включение push-уведомлений. Аналогично, если вы хотите внедрить платформу Auth0 в свои мобильные и веб-приложения, то вы должны загрузить iOS SDK, Android SDK и веб-SDK.
Что находится в SDK?
Практически все SDK содержат несколько основных компонентов:
- Библиотеки кода. Это исходный код, который разработчики могут подключают, чтобы приложение выполняло те функции, которые им нужно.
- Программный интерфейс приложения (API — Application programming interface). Они позволяют приложению без проблем подключаться к другим службам (подробнее об этом позже).
- Интегрированная среда разработки (IDE — Integrated development environment). Это интерфейс, с помощью которого разработчики пишут программы. В него встроен компилятор, который переводит высокоуровневый язык программирования, на котором написан исходный код SDK, на язык более низкого уровня, который можно использовать для сборки приложений.
- Документация. Это инструкции для разработчиков, в которых описано, как нужно использовать код. Понятная и подробная документация – важный критерий хорошего SDK.
- Отладчик. Отладка автоматически исправляет мелкие ошибки, упрощая тем самым процесс разработки приложения.
- Примеры кода. Они помогают разработчикам начать работу. Это примеры кода в действии, которые показывают, как их можно использовать.
Некоторые SDK также содержат учебные руководства и другие инструментальные средства поддержки.
Что такое API простыми словами
Виды SDK
Для создания большинства приложений используются самые различные SDK. Некоторые из этих SDK оптимизируют приложение для конкретного устройства или операционной системы, а некоторые позволяют разработчикам добавлять различные инструменты.
- SDK с точки зрения аппаратных средств : SDK предназначены не только для мобильных и веб-приложений; они также используются для программирования Интернета вещей (IoT). Поэтому, если вы покупаете, например, набор солнечных батарей, то поставщик оборудования может включить в поставку SDK, чтобы разработчики могли запрограммировать их так, как им нужно.
- Операционная система мобильного устройства : как мы уже говорили, для того, чтобы разработать приложение, которое бы работало как на Android, так и на Apple необходимы SDK для каждой ОС.
- Язык программирования для веб-приложений : разработчикам требуются SDK, которые позволяют создавать веб-приложения на том языке программирования, который они выбрали, например, Python, Ruby, JavaScript или PHP.
- SDK с открытым исходным кодом : это бесплатные SDK, и разработчики могут их модифицировать как сочтут нужным. Это может быть, как преимуществом, когда дело доходит до настройки, так и недостатком, когда возникают риски для безопасности.
- Проприетарные SDK : в отличие от SDK с открытым исходным кодом, для проприетарных, или коммерческих, SDK нужна лицензия на использование, и к тому же разработчики не могут менять его исходный код.
SDK vs API
Различие между SDK и API может легко запутать вас, однако оно одновременно и очень простое, и очень важное.
API – это фрагменты кода, которые взаимодействуют между двумя частями программного обеспечения. Таким образом, если вы создаете приложение для совместных поездок, то вам нужны API, которые бы соединяли его с телефоном пользователя и, соответственно, возможностью обмена сообщениями, платежной платформой и GPS. Все эти элементы могут находиться в разных серверных частях, но API позволяет им взаимодействовать друг другом и обеспечивает беспроблемное взаимодействие с пользователем.
Большинство SDK содержат API, поэтому разработчики могут создавать приложения, которые подразумевают возможность подключения и взаимодействия. Без API подключение приложений чем-то похоже на знаменитую сцену из «Аполлона-13».
Но все не так просто, так как вы можете использовать API и без SDK. А в некоторых случаях разработчикам приходится выбирать между SDK и API, чтобы можно было произвести интеграцию с конкретной службой. Преимущество SDK заключается в том, что его проще и быстрее интегрировать (как стол из IKEA – большая часть работы уже сделана за вас). Преимущество API в том, что он более компактный (то есть не содержит библиотек кода для ненужных вам функций) и дает больше возможностей для индивидуальной настройки (если вы мастерите свой собственный стол, то вы можете спроектировать его так, как вам нужно, — любого размера, который вам нужен).
Составляющие хорошего SDK
Если вы создаете приложение, то, скорее всего, для таких функций, как оплата, обмен сообщениями или аутентификация, вы будете использовать SDK. Разработчикам крайне сложно дается создание этих компонентов, и любые ошибки могут повлечь за собой серьезные проблемы с безопасностью. При выборе поставщика для этих услуг, вы можете сравнивать цены и функции, но также вы должны обратить внимание на их SDK.
Вот что должно быть в хорошем SDK:
- Легковесность : вам нужен SDK, который бы выполнял все необходимые функции с минимальным количеством кода. В противном случае мобильное приложение может занимать слишком много места на телефоне пользователя и работать медленнее, чем нужно. Когда вы перестраиваете устаревшее приложение, то стоит посмотреть, сколько кода используют ваши существующие решения и задаться вопросом, а не упростит ли их SDK.
- Хорошая документация : представим: два практически идентичных SDK. Однако, если у одного есть подробная документация о том, как его использовать, а второй оставляет разработчиков разбираться с этим самостоятельно, то навряд ли их можно считать равными.
- Индивидуальная настройка : некоторые SDK настраивать нельзя, то есть вы можете использовать их только такими, какие они есть. Это становится проблемой, когда разработчики решают, что хотят настроить продукт под свои уникальные потребности или добавить фирменное оформление или графику.
- Безопасность : очень важно использовать SDK только из надежных источников, чтобы исключить возможность того, что вы нечаянно добавите вредоносный или иной нежелательный код в приложение. Из отчета SafeDK: «58% проверенных приложений все еще используют, как минимум, один SDK, который обращается к личным данным пользователя». В эпоху законов о конфиденциальности данных это может привести к тому, что ваше приложение может нажить себе юридических неприятностей.
- Простота использования : хороший SDK должен предоставлять учебные руководства и примеры кода, а также давать разработчикам возможность обращаться к надежному сообществу или службам поддержки при возникновении каких-либо проблем.
SDK: не просто еще одна аббревиатура, которая сбивает с толку
Любая компания, которая создает новые приложения или добавляет новые функции в уже существующие, будет использовать SDK как часть процесса разработки. Но SDK – это не просто загадочные концепции программирования; они напрямую влияют на безопасность приложения, его индивидуальную настройку и срок до выпуска на рынок. Если вы не разработчик, то вам необязательно разбираться во всех тонкостях данной темы, но вы должны уметь задавать правильные вопросы.
Источник: dzen.ru
SDK тебе, SDK мне, SDK всем! Как делать SDK и зачем это нужно
Наша компания делает сервис для хранения и обработки данных с промышленных устройств (насосы, буры и прочая промышленная техника). Мы храним данные наших клиентов и предоставляем функционал для их анализа: построение отчетов, графиков и еще много чего.
И в ходе работы мы заметили, что интеграция каждого нового клиента сильно затягивается, а количество различных ошибок постоянно возрастает. Тогда стало понятно, что пора с этим разобраться. Как показал анализ ситуации, IT отдел каждого нашего клиента разрабатывал свое решение для локального сбора данных с устройств и отправки к нам в сервис. Все усложняет то, что с учетом специфики отрасли, не всегда есть доступ к интернету и необходимо хранить данные локально и отправлять при первой возможности. И таких нюансов достаточно большое количество, что и приводит к росту количества ошибок.
И тогда мы поняли, что лучшим решением в данной ситуации будет разработать SDK и предоставлять его клиенту. Сразу же начал искать лучшие практики и рассуждения на тему разработки SDK и сильно удивился — в рунете об этом практически ничего нет, а в басурманских интернетах очень мало информации и она разрознена. Ну что ж, задача понятна, обдумана и реализована.
Но именно отсутствие информации на данную тему породило желание рассказать сообществу о размышлениях, принятых решениях и выводах на тему разработки SDK. В статье рассматривается решение для .NET, но речь идет о концепции, так что будет интересно многим. Подробности под катом!
Пора определяться
Начнем с того, что определим, что такое SDK и зачем он может быть нужен.
SDK (от англ. software development kit) — комплект средств разработки, который позволяет специалистам по программному обеспечению создавать приложения для определённого пакета программ, программного обеспечения базовых средств разработки, аппаратной платформы, компьютерной системы, игровых консолей, операционных систем и прочих платформ. SDK использует преимущества каждой платформы и сокращает время на интеграцию.
…
Инженер-программист обычно получает SDK от разработчика целевой системы.
Что ж, логично. Простыми словами, SDK — это пакет библиотек, для того, чтобы клиент мог легко и быстро начать работать с вашей системой (в данной статье речь пойдет про наш сервис, но всё изложенное в статье применимо и к другим видам SDK) или выполнять однотипные действия.
Но, как и у любого подхода, у «Пути SDK» есть как преимущества, так и недостатки.
Преимущества
Высокая скорость интеграции нового клиента — вашим клиентам нужно писать меньше кода.
Переиспользование кода — один и тот же код используется сразу в нескольких местах. Можно сказать, что это дублирование предыдущего пункта, но речь идет о том, что логика работы везде одинокава, из чего следует
Предсказуемость поведения — использование одних и тех же библиотек приводит поведение систем к определенному стандарту, что сильно облегчает поиск и устранение ошибок и уязвимостей.
Качество кода — много где любят экономить на тестировании (жалко бюджета, горят сроки и прочие причины). Понятно, что в реальном мире покрыть тестами все участки проекта это учень трудоемкая задача. Но качественно протестировать все модули SDK, а затем использовать их — это путь повышения процента покрытия тестами, что приведет вас к снижению количества ошибок.
Документация — тот же сценарий, что и с тестами. Покрыть документацией весь проект достаточно проблематично. Переиспользование модулей SDK повышает процент покрытия документацией, что снижает порог вхождения новых сотрудников в проект и вообще помогает по жизни.
Все преимущества, по сути, это следствия самого главного — мы очень качественно пишем код один раз, а затем его переиспользуем.
Недостатки
Высокие требования к качеству кода SDK — следствие главного преимущества. Ошибка в SDK породит ошибки во всех системах, его использующих.
Установка ограничений — SDK — это набор библиотек для реализации стандартных сценариев. Иногда разработчики SDK полагают, что кроме реализации одного из предусмотренных сценариев клиенту ничего не потребуется, что клиенту проще сделать все с нуля самостоятельно, чем строить пьедестал из костылей для SDK.
Dependency hell и обновления — при расширении функционала (например, кастомизации решения под конкретного клиента), вы выпустите новую версию библиотеки. Но существуют зависимости, различные наборы версий библиотек у разных клиентов, и нужно очень тщательно следить за обратной совместимостью или строгим версионированием.
Когда SDK действительно нужен
У вас есть несколько стандартных сценариев, которые реализуются заново из раза в раз — собственно, наш случай.
Внутренние разработки — в разных проектах вы используете системы логирования, конфигурирования систем, работу с HttpRequest, БД, файлами? Выработайте внутренний SDK — набор библиотек для внутреннего использования. Вы в любой момент можете расширить функционал SDK, но скорость разработки новых проектов, процент покрытия тестами и документацией вырастет, а порог вхождения новых разработчиков снизится.
Когда SDK скорее всего будет лишним
Сценарии использования не определены или постоянно меняются — оставьте реализацию кастомных решений клиентам и помогите им. Не надо городить вундервафлю, которая будет только мешать. Очень актуально для молодых компаний и стартапов.
Вы не умеете делать качественно — у меня для вас плохая новость: пора учиться. Но отдавать кривое решение клиенту это очень, очень неправильно. Клиентов надо уважать, в конце концов.
Итак, мы определились, что такое SDK, с его преимуществами и недостатками и когда он нам нужен. Если после этого вы поняли, что SDK действительно нужен — приглашаю вас встать на «путь SDK» и разобраться, а каким он должен быть и как его, черт подери, делать?
«А вы любите Lego?» — Модульность
Представим все возможные сценарии использования SDK (вы же уже определились, зачем он вам нужен, правда?) и сделаем по библиотеке на сценарий. Чем не выход? Но это плохой подход, и так мы делать не будем. А будем так:
- разобьем все сценарии на шаги
- выявим общие шаги
- построим список модулей, реализующих все возможные шаги (один модуль отвечает за реализацию чего-то конкретного, например, работы с конфигурациями)
Например, с учетом специфики задачи, нам необходимо, чтобы вся логика задавалась из конфигов. Реализуем модуль работы с конфигами (чтения, записи, обновления, валидации и обработки конфигураций) и будем использовать его во всех остальных модулях.
А для реализации стандартных сценариев мы действительно сделаем модули — этакие «управляющие» модули, каждый из которых реализуют один конкретный сценарий, используя другие модули того же SDK. Таким образом для реализации стандартных сценариев клиент должен лишь подключить управляющий модуль сценария (а он сам подтянет все зависимости), а для реализации нестандартных — используем базовые модули, так же переиспользуя код.
Именно этим обусловлено то, что SDK не должен быть одной библиотекой (хотя очень хочется, понимаю. Ведь когда весь SDK в одной библиотеке, можно забыть о зависимостях и всем, что с ними связано), а быть комплектом библиотек. Дополнительным плюсом данного подхода будет уменьшение «веса» программы клиента — он будет тянуть тяжеловесный SDK, а подтянет только необходимые модули.
Но не стоить плодить модули как попало, ведь чем больше модулей, тем больше головной боли от их зависимостей! Т.е. важно правильно разбить логику на модули, соблюдая баланс между решением «все в одном» и «на каждую функцию свой модуль».
«А что, так можно было?!» — Универсальность
Предоставьте клиенту различные интерфейсы для работы с вашей библиотекой. Приведу пример:
public void LoadConfiguration(string filename); public async Task LoadConfigurationAsync(string filename);
Если предоставить только синхронную версию, то при реализации асинхронного приложения клиент вынужден будет делать асинхронные обертки вашего синхронного метода. Если предоставить только асинхронную версию — ситуация похожа. Дайте клиенту и то и другое и он скажет вам спасибо.
Приятным плюсом будут дженерики. Например, у нас есть класс для работы с конфигурациями, реализующий методы упаковки конфига в строку, загрузки конфига из файла и т.д. Конфигурация конкретного модуля будет наследоваться от нашего базового класса, но для работы с новым классом нам необходимо также предоставить методы распаковки.
class BaseConfiguration < public BaseConfiguration FromString(string source)public BaseConfiguration FromString(string source,Type configurationType) public T FromString(string source) where T:BaseConfiguration > class CustomConfiguration : BaseConfiguration<>
Таким образом мы предоставили клиенту аж три реализации, которые он может использовать. Дженерики очень удобны, но при работе с динамическими типами их можно вызывать только через рефлексию, что накладно. Общий принцип универсальности, надеюсь, понятен.
«Родитель 1, Родитель 2, Дети[ ]» — Именование
Что самое трудное в работе программиста? Выдумывать имена для переменных.
И тем не менее… Правильное именование модулей, классов, свойств и методов сильно помогут тем, кто будут с вашим SDK работать. Пример, не требующих комментариев:
Kinect 2.0 SDK example
var skeletons = new Skeleton[0]; using (var skeletonFrame = e.OpenSkeletonFrame()) < if (skeletonFrame != null) < skeletons = new Skeleton[skeletonFrame.SkeletonArrayLength]; skeletonFrame.CopySkeletonDataTo(skeletons); >> if (skeletons.Length == 0) < return; >var skel = skeletons.FirstOrDefault(x => x.TrackingState == SkeletonTrackingState.Tracked); if (skel == null) < return; >var rightHand = skel.Joints[JointType.WristRight]; XValueRight.Text = rightHand.Position.X.ToString(CultureInfo.InvariantCulture); YValueRight.Text = rightHand.Position.Y.ToString(CultureInfo.InvariantCulture); ZValueRight.Text = rightHand.Position.Z.ToString(CultureInfo.InvariantCulture);
Всё ясно из названий классов и методов. А если есть автодополнение кода в вашей IDE, то зачастую можно и в документацию не заглядывать, если и так все понятно.
«Уверен, если бы Смерть знала, что такое бюрократия, люди бы никогда не умирали, вечно стоя в очереди. » — Документация
Но даже если у вас очень красиво и актуально названы все модули, классы, методы и свойства, документацию все равно необходимо написать. Во-первых, это очень сильно сбережет вам нервы (количество вопросов клиентов уменьшается на порядок. Все есть в документации), а во-вторых, всегда понятно, почему вы сделали так, а не иначе.
Документация, в SDK, как правило, проста и лаконична. Она обычно делится на две части: Tutorial — пошаговый курс в стиле “Построим город за 10 минут” и раздел Reference — справочник по всему, что можно сделать с помощью данного SDK.
SDK — что это?
В этой статье мы разберем, как функционируют SDK, а также API.
Время чтения — 2 минуты
Поделитесь статьей в социальных сетях
Что такое SDK?
SDK — это инструмент, который позволяет решать более важные и масштабные задачи, чем API. Благодаря SDK не просто обеспечивается процесс обмена данными между веб-приложением и сторонними системами, но ещё и имеет возможность разработки полноценного масштабного проекта, что, несомненно, является большим плюсом.
SDK и API — это очень важные инструменты, благодаря которым происходит интеграция айти продуктов с какими-то внешними системами.
Что ещё может входить в SDK?
1) Несколько API.
2) Куски дополнительного кода.
3) Документация в достаточном большом объеме.
Получается, что SDK — это не только какой-то интерфейс для работы, но и целый набор инструментов, позволяющий реализовать какую-то бизнес логику.
Источник: pro-dgtl.ru