Теория разработки программ. Создание телеграм бота на Kotlin

Теория разработки программ. Создание телеграм бота на Kotlin

Теория по разработке ПО

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

Статья будет разделена на 2 части.

  1. Публичная. Теория о подходе к разработке программ.
  2. Подробности нашего технического задания. Что нужно описывать в ТЗ (или что треобовать от заказчика). И другие подробности составления этапов разработки, которые непосредственно касаются проекта телеграм-бота. Эта часть будет доступна только участникам спринта.

Теория разработки программ. Создание телеграм бота на Kotlin

Разработка мобильного приложения

Итак, начинаем разрабатывать полноценное приложение. Полезный телеграм-бот, который будет помогать учить английские слова. Да и не только английские, в пару действий можно будет загрузить фразы и их перевод на любом языке и поведать его всем, до кого вы сможете дотянуться в Telegram.

Скорее всего это ваше первое приложение, разрабатываемое с нуля. Чтобы слепо не писать алгоритм, не понимая зачем это нужно, давайте немного поговорим о подходе к разработке программ в целом. В университетах есть целый курс с названием “Проектирование информационных систем”. Там объясняется что из себя представляет информационная система (приложение), какие есть инструменты и этапы проектирования, а также варианты реализации. Вот об этом пойдет речь в упрощенном виде в рамках ознакомления.

Что такое программа?

Теория разработки программ. Создание телеграм бота на Kotlin

Начнем с двух простых понятий.

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

Интерфейс – способ управлять ходом выполнения программы и получения результатов ее работы. Интерфейс может быть как консольный (или терминальный), так и графический. Или, например, голосовой. Как у умной колонки “Алиса” – и это все программируется.

Примеры

Теория разработки программ. Создание телеграм бота на Kotlin

Скрипт для уменьшения размера фоток тоже программа. У нее есть входные параметры из консоли, сами фотки. А выход из программы (результат ее работы) уже сжатые фотографии. Сайт – по сути тоже программа, которая отображает пользователю данные.

Этапы разработки

Теория разработки программ. Создание телеграм бота на Kotlin

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

Сбор требований и формулирование задачи – когда мы у менеджера или у заказчика (или у себя) составляем список того, что программа должна (или не должна) делать.

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

Программирование – собственно само написание, реализация описанного кодом. Если проект хорошо спроектирован, его легко запрограммировать.

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

В завершении этап внедрения и эксплуатации.

Зачем так усложнять? Почему бы не сразу начать писать готовый код. Дело в том, что есть такое понятие “цена ошибки”.

Цена ошибки

Теория разработки программ. Создание телеграм бота на Kotlin

В данном случае относительная цена ошибки. Если найден баг у пользователя, то цена ошибки довольно высокая. Чтобы исправить баг, нужно сначала его воспроизвести, найти место, где он произошел. А если этот баг затрагивает еще и уровни формулирования задачи (например, отсутствует кнопка удаления чего-либо), то вообще может быть придется переделывать бОльшую часть проекта. Поэтому на этапе эксплуатации условная цена 100.

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

Характеристики программ

Теория разработки программ. Создание телеграм бота на Kotlin

Вообще “ошибка” – это нарушение стабильности. Стабильность сама по себе это характеристика программы. Одна из самых важных. Если ваша программа не работает, она скорее всего не очень будет нужна пользователю. Случаи бывают разные, иногда просто нет альтернатив. Но как правило надежность это ключевая характеристика.

Помимо этого есть другие характеристики, такие как безопасность, скорость работы, функционал, сложность поддержки.. Вы как разработчик смотрите что вы разрабатываете. Для банковского приложения важна безопасность, для игры нужна скорость работы. Условно пусть в игре долго выполняется покупка вещи (происходит транзакция), но fps во время игры не должен проседать.

Размер исполняемого файла тоже характеристика. Для android приложений .apk файл должен весить мало. Иначе пользователи будут меньше его качать (есть исследования).

Популярность стека – тоже характеристика. В последнее время была популярная история, что у тебя проект написан на старых технологиях и разработчики просто не хотят идти туда работать. И это важная характеристика. Нужно поддерживать приложение, выкатывать фичи и так далее.

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

План курсовой

Теория разработки программ. Создание телеграм бота на Kotlin

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

Первое. Формулируем требования для консольного тренажера. Здесь прошу обратить внимание “консольного тренажера”. Дело в том, что первую версию я предлагаю сделать именно в терминале. Чтобы сконцентрироваться на коде Kotlin. И получить какой-то рабочий промежуточный результат. При этом мы сформулируем требования, разберемся как работать с файлами и текстом.

Можете считать, что это этап проектирования. Где мы выбираем технологии, смотрим как работать с файлами и текстом. Этап проектирования важен, чтобы давать более точные оценки. Менеджеры или заказчики хотят знать, когда будет готов их продукт. Иногда необходимо провести небольшое исследование, чтобы более четко прописать “как его делать”. Ну мы определили, что хранить информацию будем в файлах. Но дополнительно разберемся в нюансах, чтобы вы или вспомнили, или получили этот важный в обучении навык.

Далее будет этап программирования. Мы напишем консольную версию этого тренажера. Разработка будет разделена на этапы с подробным описанием каждого. Что за чем следует и почему. Этапы подразумевают самостоятельное написание кода, чтобы из кирпичиков в виде задач, которые вы делали на практике, уже собирать полноценную программу для продакшена.

Конечно, тут не будет ситуации из мема “как нарисовать сову”. Этапы комфортно декомпозированы. Описание логики разработки и грамотное ТЗ интуитивно подталкивает на мысли о том, какой код писать дальше. Все этапы протестированы на начинающих учениках и такое структурированное описание было удобным для всех учатников фокус-группы при финальной прогонке проекта. Этап внедрения для консольного тренажера мы опустим, но самостоятельно можно будет потестировать.

И затем перейдем к следующей итерации – формирование требований для телеграм-бота. То есть какой интерфейс должен иметь, как должен работать.

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

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

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

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

Бесплатные Telegram-боты для обучения

Практика с проверкой кода и помощью ИИ-ментора

AndroidSprint AI Mentor

Проверяет Pull Request'ы в GitHub, проводит тестовые собеседования с голосом и таймером, помогает разбираться с кодом 24/7

Попробовать ИИ-ментора →

KotlinSprint Bot

22 урока Kotlin, 220 тестов, 120 практических задач с код-ревью

Начать обучение Kotlin →

AndroidSprint Bot

Тесты по Android SDK, Jetpack Compose, архитектуре приложений

Тесты по Android →

Бесплатная диагностика с сениор разработчиком

Запишитесь на консультацию — перезвоним в рабочие часы

Или свяжитесь удобным способом

Вам также может быть интересно

Узнать подробнее
Курс AndroidSprint

Глубокое обучение Android разработке с 0 до получения оффера. Только персональная практика с гарантией получения продуктового опыта.

Курс AndroidSprint - Глубокое <strong>обучение Android разработке с 0 до получения оффера</strong>. Только персональная практика с гарантией получения продуктового опыта.
Узнать подробнее
Узнать подробнее
Практикум по Kotlin

Изучение Котлин с 0 для профессиональной разработки. Личный ментор и разбор кода задач через git-flow.

Практикум по Kotlin - Изучение Котлин <strong>с 0 для профессиональной разработки</strong>. Личный ментор и разбор кода задач через git-flow.
Узнать подробнее
Узнать подробнее
Бесплатные уроки по Kotlin разработке

Самостоятельное освоение базы по языку для дальнейшего развития в Android/back-end разработке или в автотестах.

Бесплатные уроки по Kotlin разработке - <span>Самостоятельное освоение базы по языку для дальнейшего развития в Android/back-end разработке или в автотестах.</span>
Узнать подробнее
Узнать подробнее
Onboarding в разработку

Полное обучение Android разработке с нуля до получения оффера. Делаем упор на практику и обратную связь

Onboarding в разработку - <span>Полное обучение Android разработке с нуля до получения оффера. Делаем упор на практику и обратную связь</span>
Узнать подробнее
Узнать подробнее
Обучающий Kotlin телеграм бот (с тестами)

Ваш основной инструмент для изучения основ языка. Бесплатные тесты и практика внутри.

Обучающий Kotlin телеграм бот (с тестами) - Ваш основной <span>инструмент для изучения основ языка.</span> Бесплатные тесты и практика внутри.
Узнать подробнее
Узнать подробнее
Бесплатные уроки по Android разработке

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

Бесплатные уроки  по Android разработке - Самостоятельное <span>обучение разработке Андроид приложений.</span> Понятные видеоуроки с разжеванными примерами.
Узнать подробнее
Узнать подробнее
Курс по UI/Unit тестированию

Для ручных тестировщиков, которые готовы осваивать автотесты с использованием актуального стека технологий. [в разработке]

Курс по UI/Unit тестированию - Для ручных тестировщиков, которые <span>готовы осваивать автотесты</span> с использованием актуального стека технологий. [в разработке]
Узнать подробнее
Узнать подробнее
Обучающий Android телеграм бот (с тестами)

Бесплатные теоретические тесты для самопроверки. А также информер на практических спринтах по Android.

Обучающий Android телеграм бот (с тестами) - Бесплатные <span>теоретические тесты для самопроверки.</span> А также информер на практических спринтах по Android.
Узнать подробнее
ИИ-ментор код-ревью и голосовые собесы
Открыть