Upload
provectus
View
83
Download
4
Embed Size (px)
Citation preview
Новые технологии при разработке нативного iOS приложения в рамках
проекта стажировки "PROVENG"Бойко Андрей
Виктория МацкевичДмитрий Кулаков
О чем доклад • О проекте • Архитектура • Язык • Внутреннее хранилище • Сетевой уровень • UI (UIKit, Eureka) • Инструменты • Статистика• Демка
Фичи• Авторизация через аккаунт Provectus • Универсальное приложение для Учителя и Ученика• Админ панель• Учитель
• Управление календарем• Управление группами• Управление Материалами
• Ученик• Лента новостей (фид)• Календарь• Материалы• Тестирование
О проекте Proveng
Design• George Frigo• Daria Servatko• Eugene Afanasiev
QA • Alex Zagulaev• Anna Ermolaeva• Anna Kirichenko• Ilona
Demkovskaya• Kirill Karnyshov
Server• Andrey
Kulbatskiy• Alexander Usov• Victor Levchenko
IOS Client• Andrey Boyko• Viktoriya
Matskevich• Dmitriy Kulakov
Android Client• Pasha Shmigol• Alexander
Smityuk
Stuff• Alla Golosenko• Alina
Remeslennikova• Alex Osadchyy
Архитектура• MVC (Apple)• MVC • MVP• MVVM• VIPER•🚲• Services
habrahabr.ru/company/badoo/blog/281162/
Layers
Api
Model
Services
UI UIKit/Eureka
Data Provider
Realm Object-Mapper
Alamofire
Auth Service … Router
habrahabr.ru/company/redmadrobot/blog/246551/
ЯзыкSwift• Новизна• Функциональный подход• Опыт• Перспектива• Поддержка Apple• Простота• Надежность• Сырость и Разочарование
Objective-C• Надежность• Инструментарий• Востребованость
рынком• Наработки
Почему Realm?• Простота• Скорость• Кросс-Платформенность• Документация и Комьюнити• Встроенный маппинг• Популярность /Тренд• Бесплатная
Обнаруженные недостатки• Создание unmanaged копии объекта (временные
объекты) • Нет визуализации связей между объектами
Почему Alamofire• Написана на Swift• Простота кода• Проверка наличия сети• Хорошая библиотека компонентов• Хорошая документация и поддержка
Почему ObjectMapper
• Написан на Swift• С легкостью преобразует JSON в объект модели и наоборот• Отображение вложенных объектов• Пользовательское преобразование• Возможность наследоваться от других объектов• Использование контекстов
UITableView - Eureka• Достойная демо-версия и хорошая документация • Разнообразие готовых ячеек / удобное прототипирование• Возможность кастомизации элементов• Валидация текстовых ячеек• Популярность среди разработчиков
Недостатки• Нечитабельный синтаксис • Неконтролируемая анимация• Нет инструмента для динамического добавления/удаления ячеек
Почему Carthage • Первый менеджер зависимостей для работы с Swift• Легко установить и удалить с проекта• Не изменяет проект и не вынуждает использовать
workspace• Использует исключительно динамические
фреймворки вместо статических библиотек• Легко добавить зависимости в проект
Недостатки• Нет возможности просмотреть исходный код библиотеки• Ограниченна поддержка Carthage • Проект должен поддерживать iOS 8 или более
позднюю версию• Миграция Swift 2.x->3.x
Почему Fabric
• Быстрый• Удобное добавление тестировщиков• Выбор версии для установки• Хороший инструментарий обработки падений • Бесплатный
ИнструментыXCode/Profiler
Jira/ Scrum board
Git / Source Tree/Git Flow
Slack / Join me/ Skype
Avocode / Invision
Что изучили• Структуры данных (обзорно)• Алгоритмы (обзорно)• Паттерны проектирования• Управление памятью (ARC) • Функциональные подходы • Unit тесты• TDD :)• Профайлинг• Swift: Generics, Enums, etc• Objective-C
СтатистикаОписание Количество
Общее количество тикетов (iOS App) 281
Tasks 119
Bugs 63
Tests 93
Improvements 6
СтатистикаОписание Количество Часы
Общее 20 220
Миграция Swift 27
Рефакторинг 121
Митинги 35
Другое 37
API 10 26
Model 7 12
Services 30 211
Screens 59 340
UI 8 5