Что такое development kit

Национальная библиотека им. Н. Э. Баумана
Bauman National Library

Персональные инструменты

SDK (Software Development Kit)

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

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

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

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

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

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

Источник

Национальная библиотека им. Н. Э. Баумана
Bauman National Library

Персональные инструменты

Java Development Kit

Что такое development kit. Смотреть фото Что такое development kit. Смотреть картинку Что такое development kit. Картинка про Что такое development kit. Фото Что такое development kit

Содержание

История

Компания Sun Microsystems активно развивала и обновляла JDK, почти каждый год выходили новые версии. В 1996 г. была выпущена первая версия — JDK 1.0, которая модифицировалась до версии с номером 1.0.2. В этой версии библиотека классов Java API содержала 8 пакетов. Весь набор JDK 1.0.2 поставлялся в упакованном виде в одном файле размером около 5 Мбайт, а после распаковки занимал на диске около 8 Мбайт.

В 1997 г. появилась версия JDK 1.1, последняя ее модификация, 1.1.8, выпущена в 1998 г. В этой версии было 23 пакета классов, занимала она 8,5 Мбайт в упакованном виде и около 30 Мбайт — в распакованном. В первых версиях JDK все пакеты библиотеки Java API были упакованы в один архивный файл classes.zip и вызывались непосредственно из этого архива, его не нужно было распаковывать. Затем набор инструментальных средств JDK был сильно переработан.

Версия JDK 1.2 вышла в декабре 1998 г. и содержала уже 57 пакетов классов. В архивном виде это файл размером почти 20 Мбайт и еще отдельный файл размером более 17 Мбайт с упакованной документацией. Полная версия располагается на 130 Мбайт дискового пространства, из них около 80 Мбайт занимает документация. Начиная с этой версии, все продукты технологии Java собственного производства компания Sun стала называть Java 2 Platform, Standard Edition, сокращенно J2SE, а в литературе утвердилось название Java 2. Кроме 57 пакетов классов, обязательных на любой платформе и получивших название Core API, в Java 2 JDK 1.2 входят еще дополнительные пакеты классов, называемые en:Standard Extension API.

В версии J2SE JDK 1.5.0, вышедшей в конце 2004 г., было уже под сотню пакетов, составляющих Core API (Application Programming Interface). В упакованном виде — это файл размером около 46 Мбайт и необязательный файл с упакованной документацией такого же размера. В это же время произошло очередное переименование технологии. Из версии убрали первую цифру и стали писать Java 2 Platform, Standard Edition 5.0, сокращенно J2SE 5.0 и JDK 5.0, хотя во внутрифирменной документации сохраняется название JDK 1.5.0. Последнее обновление J2SE 5.0, JDK 1.5.0_22, было выпущено 3 ноября 2009 года.

В шестой версии, вышедшей в начале 2007 г., из названия технологии убрали цифру 2 и стали писать Java Platform, Standard Edition 6, сокращенно — Java SE 6 и JDK 6. Впрочем, во внутрифирменной документации остается прежнее обозначение, например последнее на момент написания книги обновление обозначается JDK 1.6.0_26. Летом 2011 года появилась седьмая версия Java SE 7 и распространяется JDK 1.7.0.

Программы и классы, входящие в JDK

Набор программ и классов JDK содержит:

Версии

JDK имеет следующие версии:

Различие между JDK, SDK и ADK

Разница между JDK и JRE

«JDK» является Java Development Kit. То есть, это комплект JDK программного обеспечения, которое можно использовать для разработки Java Based программного обеспечения. «JRE» является Java Runtime Environment. То есть, en:JRE это реализация виртуальной машины Java, которая в действительности выполняет Java программы.

Источник

SDK и API: в чем разница?

Разработчики программного обеспечения пользуются основными инструментами: SDK и API. По сути, как SDK, так и API позволяют улучшить функционал приложений, не прибегая к большим усилиям.

Что такое SDK?

Аббревиатура SDK расшифровывается как software development kit. SDK, или devkit, — это набор средств для разработки ПО под определенную платформу. Он содержит компоновочные блоки, средства отладки, а зачастую фреймворк или группу библиотек кода, например набор подпрограмм для определенной операционной системы.

В стандартном SDK могут присутствовать как некоторые, так и все компоненты из списка ниже:

Как работает SDK

SDK предоставляет инструменты, которые способствуют ускорению и стандартизации разработки приложений.

Примеры использования SDK

SDK — неотъемлемая часть разработки мобильных приложений. SDK имеют множество областей применения:

Преимущества SDK

Что такое API?

Аббревиатура API расшифровывается как application programming interface (интерфейс программирования приложений). API — и как отдельное решение, и в составе SDK — облегчает обмен данными между двумя платформами и позволяет сторонним разработчикам использовать функционал проприетарного ПО.

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

Поскольку некоторые API предоставляют интерфейс напрямую, термины API и «интерфейс» иногда взаимозаменяемы.

Чтобы внести ясность, стоит отметить, что API может состоять из двух компонентов:

Что представляет вызов API с технической точки зрения:

Нужно ли выбирать между SDK и API?

Нет, ведь как сказано выше, SDK зачастую имеет по меньшей мере один API. Они выполняют разные функции, но могут работать и помогать вместе.

Следует иметь в виду, что с использованием API и SDK связаны некоторые сложности. Одна из них заключается в потенциальных уязвимостях. Другая сложность, относящаяся к SDK, — частота обновлений. Поэтому важно, чтобы команды DevOps держали вопрос информационной безопасности в поле зрения, а также следили за своевременным обновлением компонентов.

Оригинальный материал на английском языке доступен по ссылке.

Источник

Что такое IDE и SDK? «Страшные» термины простыми словами

Что такое development kit. Смотреть фото Что такое development kit. Смотреть картинку Что такое development kit. Картинка про Что такое development kit. Фото Что такое development kit

Современному человеку нередко приходится сталкиваться с различными малопонятными терминами из мира компьютеров, даже если он никогда не занимался и не планирует заниматься программированием.

Пусть даже вы хотите сосредоточиться исключительно на вопросах бизнеса, взвалив всю нагрузку по созданию приложений для вашей компании на разработчиков, некоторое понимание совершаемых ими действий будет совсем не лишним. Ранее мы уже рассматривали такие понятия, как API и Webhook. На этот раз хотелось бы раскрыть тему SDK и IDE.

Что такое IDE?

Термин IDE расшифровывается как Integrated Development Environment или «интегрированная среда разработки» (в русском языке иногда используется аббревиатура ИСР). Это набор инструментов, позволяющих создавать приложения. Иными словами, если говорить очень просто, то IDE – это программа, в которой создаются другие программы.

Изначально, на заре развития компьютерной техники, программисты записывали код на бумаге, после чего его вводили в ЭВМ при помощи перфолент или перфокарт (кстати, и то и другое также изготовлялось из бумаги). Одна малейшая ошибка могла привести к неработоспособности программы. Со временем, когда вычислительная техника достигла определённого уровня развития, появилась возможность редактирования кода прямо на экране терминала. А несколько позже появились и средства, позволяющие набирать текст программы на экране, избегая «бумажной волокиты».

IDE – это не специализированные текстовый редактор!

На самом деле, это куда более сложный инструмент. Сама по себе среда разработки обычно включает в себя и специализированный текстовый редактор, «заточенный» для работы с кодом. Но для полноценного программирования этого, конечно же, недостаточно.

Требуется также наличие хотя бы компилятора и отладчика. Первый необходим для того, чтобы перевести текст программы, созданный с использованием команд, написанных на английском (обычно) языке, в машинные коды, понятные компьютеру. Отладчик же используется для нахождения и устранения ошибок, неизбежно возникающих при написании кода.

Что такое development kit. Смотреть фото Что такое development kit. Смотреть картинку Что такое development kit. Картинка про Что такое development kit. Фото Что такое development kit

По факту же современные IDE включают в себя множество самых разнообразных инструментов, призванных решать те или иные задачи. Например, там могут присутствовать инструменты для визуальной разработки, позволяющие буквально «нарисовать» программу, используя для этого специальный графический редактор.

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

Какие сегодня существуют IDE

Современные IDE могут быть бесплатными или платными. Существуют также и условно бесплатные решения. В последнем случае среду разработки можно просто скачать в Сети и тут же начать использовать. Но при этом она будет иметь ряд ограничений. Например, в бесплатном варианте популярная среда разработки IntelliJ IDEA позволит работать только с Java, в то время как оформление подписки откроет доступ к ещё целому ряду языков программирования.

Что такое development kit. Смотреть фото Что такое development kit. Смотреть картинку Что такое development kit. Картинка про Что такое development kit. Фото Что такое development kit

Тут уместно будет привести несколько примеров популярных IDE (в алфавитном порядке):

Естественно, что это только некоторые примеры. По факту же количество IDE в мире значительно больше.

Какой IDE самый лучший?

Сам по себе вопрос некорректный. На сегодняшний день в мире существует немало самых разнообразных IDE, предназначенных для решения самых разных задач. И выбор зависит от разных факторов, из которых самым главным является список стоящих перед программистом задач.

Например, если планируется создавать программные продукты для экосистемы Apple, то вполне логичным выглядит решение воспользоваться таким решением, как XCode. Разработчики под Windows нередко используют Visual Studio. А среди пишущих на языке программирования Python популярность завоевала среда разработки PyCharm. Список примеров можно продолжать.

Что такое development kit. Смотреть фото Что такое development kit. Смотреть картинку Что такое development kit. Картинка про Что такое development kit. Фото Что такое development kit

Влияет также и то, насколько опытным является разработчик. Так, новичка вполне может удовлетворить среда разработки Code::Blocks – с открытым кодом, для разных платформ, простая и нетребовательная к ресурсам, предназначенная для тех, кто пишет на C, C++ или Fortran (да, этот динозавр всё ещё используется, причём довольно активно). Однако целый ряд ограничений делает невозможным применение данного решения в сложных проектах, профессионалам оно точно не подойдёт.

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

Что такое SDK и чем он отличается от API

Как показывает практика, понять термин SDK новичку бывает несколько сложнее, нежели описанный выше IDE. Нередко также возникают сложности с пониманием различий между SDK и API. И действительно, эти термины часто используются вместе. Но синонимами они при этом не являются!

Простая расшифровка термина – Software Development Kit, набор средств разработки – мало что объясняет. Попробуем объяснить всё максимально простым языком (для начала рекомендуем ознакомиться с нашим материалом про API, если вы ещё не сделали этого ранее).

Итак, SDK – это набор средств, при помощи которого разработчики могут создавать программное обеспечение под самые разные платформы. Данный набор может включать в себя самые разнообразные инструменты (утилиты, библиотеки, драйверы, документацию, фрагменты готового кода и многое другое), позволяющие писать и внедрять приложения. При этом SDK включает в себя и API (а иногда и сразу несколько), который используется для взаимодействия с платформой, под которую и пишется софт.

Простыми словами про SDK

Представьте себе дом, к которому подведена электрическая проводка, для которой существует подробная спецификация (описание). Вот данная спецификация и является API. А SDK – это набор инструментов и комплектующих, позволяющий вам создавать самые разнообразные приборы, которые вы потом сможете подключать к этой электрической сети. То есть описание сети (платформы, для которой мы пишем приложения) важно, но одним только этим описанием для создания приборов не обойтись.

Что такое development kit. Смотреть фото Что такое development kit. Смотреть картинку Что такое development kit. Картинка про Что такое development kit. Фото Что такое development kit

Приведём и другой, более «программистский» пример. Так, язык программирования, который используется при написании программы, можно представить себе как API. А в качестве SDK при этом будут выступать инструменты для написания и отладки кода.

Конечно же, оба этих примера очень поверхностны, их задача – лишь передать суть. По факту же, для глубокого понимания таких понятий, как SDK и API необходимо обладать специальными знаниями и опытом. Иначе говоря, быть разработчиком.

Откуда берётся SDK

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

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

Что такое development kit. Смотреть фото Что такое development kit. Смотреть картинку Что такое development kit. Картинка про Что такое development kit. Фото Что такое development kit

Часто SDK имеют лицензию, с которой нужно считаться при написании приложений. Например, проприетарные наборы не подходят для создания программ с открытым кодом.

Порой первая буква в аббревиатуре SDK меняется для того, чтобы сделать название более близким к тому, для чего именно создавался данный набор. Например, DDK или Driver Development Kit – набор средств, предназначенный специально для написания драйверов устройств. Впоследствии компания Microsoft пошла ещё дальше, заменив термин DDK на WDK – Windows Driver Kit. Или другой пример – JDK или Java Development Kit. В данном случае речь идёт о наборе средств разработки для языка Java.

Apix-Drive — универсальный инструмент, который быстро упорядочит любой рабочий процесс, освободив вас от рутины и возможных денежных потерь. Опробуйте ApiX-Drive в действии и убедитесь, насколько он полезен лично для вас. А пока настраиваете связи между системами, подумайте, куда инвестируете свободное время, ведь теперь его у вас будет гораздо больше.

Источник

SDK тебе, SDK мне, SDK всем! Как делать SDK и зачем это нужно

Что такое development kit. Смотреть фото Что такое development kit. Смотреть картинку Что такое development kit. Картинка про Что такое development kit. Фото Что такое development kit

Наша компания делает сервис для хранения и обработки данных с промышленных устройств (насосы, буры и прочая промышленная техника). Мы храним данные наших клиентов и предоставляем функционал для их анализа: построение отчетов, графиков и еще много чего.

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

И тогда мы поняли, что лучшим решением в данной ситуации будет разработать SDK и предоставлять его клиенту. Сразу же начал искать лучшие практики и рассуждения на тему разработки SDK и сильно удивился — в рунете об этом практически ничего нет, а в басурманских интернетах очень мало информации и она разрознена. Ну что ж, задача понятна, обдумана и реализована.

Пора определяться

Начнем с того, что определим, что такое 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, а подтянет только необходимые модули.

Но не стоить плодить модули как попало, ведь чем больше модулей, тем больше головной боли от их зависимостей! Т.е. важно правильно разбить логику на модули, соблюдая баланс между решением «все в одном» и «на каждую функцию свой модуль».

«А что, так можно было?!» — Универсальность

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

Если предоставить только синхронную версию, то при реализации асинхронного приложения клиент вынужден будет делать асинхронные обертки вашего синхронного метода. Если предоставить только асинхронную версию — ситуация похожа. Дайте клиенту и то и другое и он скажет вам спасибо.

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

Таким образом мы предоставили клиенту аж три реализации, которые он может использовать. Дженерики очень удобны, но при работе с динамическими типами их можно вызывать только через рефлексию, что накладно. Общий принцип универсальности, надеюсь, понятен.

«Родитель 1, Родитель 2, Дети[ ]» — Именование

Что самое трудное в работе программиста? Выдумывать имена для переменных.

И тем не менее… Правильное именование модулей, классов, свойств и методов сильно помогут тем, кто будут с вашим SDK работать. Пример, не требующих комментариев:

Kinect 2.0 SDK example

Всё ясно из названий классов и методов. А если есть автодополнение кода в вашей IDE, то зачастую можно и в документацию не заглядывать, если и так все понятно.

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

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

Мы выбрали самый простой путь — summary + articles. Мы добавляем Xml атрибуты для методов и классов, которые светятся в intellisense как подсказки. Используя Docfx мы строим документацию по этим атрибутам и получаем подробную и удобную документацию, которую дополняет статьями, описывающими сценарии использования и примеры.

«— Чтобы чисто было! — Как я буду вилкой-то чистить?» — Тестирование

Что можно сказать про тестирование в рамках обсуждения SDK… Must have! Лучшим решением будет TDD (несмотря на то, что я негативно отношусь к данному подходу, в данном случае я решил использовать именно его). Да, долго. Да, нудно. Но зато в будущем вы не повеситесь от постоянных падений SDK на стороне и следствий этого падения.

Основной сок ситуации заключается в том, что отдавая SDK клиенту вы теряете контроль: вы не можете быстро пофиксить ошибку, сложно эту самую ошибку найти, да и выглядеть в такой ситуации вы будете достаточно глупо. Поэтому — тестируйте. Тестируйте лучше. И еще раз. И, на всякий случай, протестируйте ваши тесты. И тесты тестов. Так, что-то я увлекся, но важность тестирования SDK, надеюсь, понятна.

«Жертва, которая не могла противостоять своему прошлому, была поглощена им» — Логи

Поскольку вы отдаете SDK сторонней компании, в следствие чего теряете контроль над ситуацией, в случае ошибки (на этапе тестирования вы все-так решили «и так сойдёт», да?) вас ждет достаточно долгий и болезненный процесс поиск этой самой ошибки. Именно тут вам на помощь придут логи.

Логируйте все, абсолютно все, а в случае возникновения ошибки запросите у вашего клиента логи. Таким образом вы сэкономите много времени и сможете не потярять лицо перед клиентом.

«Alarm! Achtung! Attention!» — Ошибки

Что такое development kit. Смотреть фото Что такое development kit. Смотреть картинку Что такое development kit. Картинка про Что такое development kit. Фото Что такое development kit
Долго размышляя на тему ошибок я пришел к интересному выводу — ни один метод в вашем SDK не должен отдавать ошибку, не описанную в документации. Согласитесь, очень неприятно, когда вы подключаете стороннюю библиотеку для работы с HttpRequest, а она вываливает на вас какой-нибудь NullPointerException и StackTrace, который уводит в недра библиотеки. И вам приходиться погружаться в эти самые «недра», пытаясь понять, насколько глубока кроличья нора, и в чем, собственно, проблема.

Поэтому я предлагаю следующее решение — декларируйте закрытый список возможных исключений и документируйте их. Но, т.к. нельзя быть увереннным, что вы предусмотрели все, оберните метод в try-catch, а пойманную ошибку — в задекларируему. Например, ConfigurationException, который будет содержать InnerException — пойманную ошибку. Это позволит стороннему разработчику поймать все возможные ошибки, но в случае чего быстро разобраться в чем дело.

Версии или «как не укусить себя за хвост»

Во избежание проблем в будущем крайне рекомендую использовать строгое версионирование. Выберете подходящую вам систему построения версий и используйте ее. Но если новая версия библиотеки не имеет обратной совместимости — это необходимо указать. Как это разруливать — думать вам. Но подумать об этом точно стоит.

«Паровозик, который смог» — Deploy

Необходимость актуальности документации и версий порождают требование к корректности деплоя. В своем решении мы используем следующее решение (костыли, но работают).
Когда надо выпустить нвый релиз, разработчик дергает bat’ник с указанием номера релиза, а затем батник:

На выходе получаем обновленную версию сайта с документацией, откуда можно скачать архив с последней версией SDK.
В планах на будущее — упаковка всего в Nuget пакеты и публикация в локальный Nuget репозиторий.

Рекоммендую обратить внимание на этот пункт, ведь вы можете существенно снизить количество головной боли, вызванной отсутствием актуальной информации о новой версии библиотеки.

«-А так можешь? — Фигня. Смотри как надо!» — Примеры & toolkit

Заключение

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

Спасибо за прочтение, буду рад вашим комментариям. Надеюсь, эта статья будет для вас полезной.

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *