Archives

Автор: Антон Пелянський, Test Engineer, Quality Assurance, Consultant, GlobalLogic Ukraine

Основне завдання інженерів автоматизованого тестування – це перевірка продукту, який ви розробляєте на відповідність вимогам, які були визначені замовником.

Серед інших, не менш важливих задач є:

  • Вивчення вимог до застосунку та інших проєктнихпроцедурних документів.
  • Створення документації.
  • Стратегія тестуванняТест планТест репорт.
  • Матриця TraceabilityТест протоколи.
  • Валідація тестових інструментів.
  • Розробка тестового фреймворку автоматизації.
  • Підняття проєкту для запуску автотестів.
  • Опис інструкції по підняттю проєкту та запуску тестів.

А тепер про все це поговоримо детальніше.

З чого починається інженер автоматизації мобільного тестування?

З документації. Об’єм документації є різний та різниться в залежності від проєкту та домену у якому ви працюєте. Першим кроком на початку роботи є аналіз вимог, тобто визначення очікувань від системи у розробці. Надається він замовником і цю процедуру слід робити обов’язково, щоби чітко розуміти, що ви розробляєте та яким вимогам ваш продукт повинен відповідати. Аналіз вимог дещо поєднує роботу QA інженера з бізнес-аналітикою.

Аналіз документів вам надасть:

  • Фундамент для тест плану та дизайну тестів.
  • Розуміння очікуваного функціоналу продукту.
  • Поширення розуміння на всю команду.
  • Узгодження з планом розробки.
  • Виправлення нечітких вимог, які неможливо перевірити.

У випадку з мобільними технологіями, особливу увагу потрібно звертати на вимоги по дистрибуції та по підтримці пристроїв. На ринку присутня досить велика кількість різноманітних пристроїв.

Є дві глобальні операційні системи iOS та Android, і різні версії цих систем підтримуються на різних пристроях. Зверніть особливу увагу на вимоги по сумісності: вони можуть як змусити вашу команду підтримувати застарілі пристрої, так і намагатись наздогнати тенденції ринку. Це допоможе зробити процес розробки та тестування більш ефективним. Що ж стосується дистрибуції – шляху передачі продукту до замовника, – то вона має бути заздалегідь чітко визначена і описана у відповідному документі, на кшталт Design Transfer Plan.

Підбір тестових пристроїв

Підбір тестових пристроїв це ще одна особливість, яка обов’язково має бути проговорена з замовником. Адже це допоможе вам визначити еталонні пристрої для тестування продукту.

При розробці кросс-платформенних застосунків, якщо у вас з самого початку зазначено, що продукт має бути і на iOS, і на Android, варто мати хоча б один фізичний пристрій для тестування для кожної окремої мобільної системи. Тут також варто зазначити, що підбір необхідної версії операційної системи для еталонних пристроїв залежить від вимог до застосунку.

Архітектура

Аби чіткіше розуміти, з чим ви матимете справу, пропоную розібратися в архітектурі заліза. Отож, поточна архітектура у iOS пристроях є arm64 (або ARMv8.0). Вона використовується у пристроях починаючи з iPhone 5S та iPad Air та підтримується версією iOS 7.0 та вище.

Більше, на зображенні нижче:

Якщо ж у вас написано у вимогах, що ваш продукт повинен підтримувати всі види архітектури заліза iOS (або ж це не вказано специфічно), вам варто звернути увагу на чинні архітектури та показати, що ви можете обмежитися лише архітектурою arm64, адже всі сучасні телефони підтримують саме її. Якщо у вимогах не прописано кінцевий пристрій, то всі інші архітектури можна прибрати з вимог, адже вони є вже дещо застарілими.

Нижче наведена табличка по розподілу архітектури центральних процесорів і архітектури на i- пристроях.

Всі дані, що наведені в табличці, можуть змінитися буквально за рік, тому надзвичайно важливим є слідкувати за тенденціями, цікавитися змінами, що стаються на ринку, аби завжди володіти актуальною інформацією.

Що ж стосується Android, то тут усе простіше.

У них дві основні архітектури – на ARM процесорах це armeabi-v7a (це 32- розрядна архітектура) та arm64-v8 – це 64-розрядна архітектура. Також є дві версії для процесорів Intel – це x_86 (для 32-розрядних процесорів) та x86_64 (для 64-розрядних процесорів). Варто зазначити що відсоток пристроїв що працюють на архітектурах x86 та x86_64 станом на 2017 рік складав 1.7%.

Як поширюються ті чи інші версії Android, можна дізнатися з графіку:

Оскільки є немало версій iOs та Android, а девайсів може бути понад 50 – то виникає логічне запитання:

Як нам все це перевірити?

Для цього є кілька доступних сервісів.

#1 Firebase Test Lab

Це хмарна інфраструктура для запуску тестів на мобільних пристроях. Цей сервіс підтримує запуск тестів на Android та iOS на цілому спектрі пристроїв, а також розуміє автоматизовані тести, написані на UIAutomator та Espresso для Android, а також XCTest для iOS.
Є безкоштовна версія, яка дозволяє запустити до 5 тестів на реальних пристроях і до 10 тестів на віртуальних пристроях за добу.
Firebase Test Lab є досить корисним сервісом, якщо ви тільки починаєте знайомитись з мобільною автоматизацією, а от для проєктних цілей безкоштовна версія не дуже підходить.

#2 Amazon Device Farm

Це сервіс для тестування мобільних додатків з хмарною інфраструктурою, який підтримує понад 170 різних мобільних пристроїв для запуску паралельних тестів. Amazon Device Farm підтримує більшість тестових фреймфорків для автоматизації, включаючи Appium, UIAutomator та XCTest. Перші 100 хвилин роботи тестів надаються сервісом безкоштовно. Якщо цього часу вам виявиться недостатньо, Amazon Device Farm пропонує платну підписку.

Емулятори vs Симулятори

Ви також можете обмежитися використанням емуляторів та симуляторів на вашій локальній машині. Про те, який у них контекст у плані мобільного тестування розповім далі.

Почнемо з різниці між ними:

  • Симулятор відтворює виконання коду без прив’язки до середовища запуску коду (тобто це перевірка суто логіки виконання програми, тому у випадку якщо ця логіка зав’язана на залізі, то ця перевірка не пройде).
  • Емулятор відтворює принципи роботи системи пристрою зі збереженням ключових властивостей та аспектів роботи. Емуляція відтворює код у необхідному для нього середовищі.

На iOS зараз доступні лише симулятори, а на Android – емулятори.  А тепер пропоную розглянути як все працює та відбувається наживо.

Запуск iOS симулятора через Xcode: покрокова інструкція

  • Встановити Xcode через AppStore.
  • Запустити Xcode.
  • Вибрати бажаний пристрій зі списку доступних симуляторів.
  • Запустити симулятор.

Виглядає це все так: відео.

Запуск Android емулятора через Android Studio:покрокова інструкція

  • Встановити Android Studio.
  • Запустити Android Studio.
  • Відкрити Android Virtual Device Manager.
  • Створити профілі бажаних пристроїв.
  • Запустити емуляцію пристроїв.

Виглядає це наступним чином: відео.

Що ж, розібралися з Android емулятором, і тепер поговоримо про Appium.

Хто такий цей ваш Appium?

У вас є емулятори, у вас є хмарні сервіси, які запускають тести. Відповідно, ці тести треба якимось чином написати. І саме тут нам допомагає Appium. Це фреймворк автоматизації тестування з відкритим кодом, який використовує WebDriver для керування iOS та Android пристроями.

Appium дозволяє тримати тести для iOS та Android в одному фреймворку і використовувати одні й ті самі тести для обох платформ. Він підтримує тести, що написані на:

  • Java (TestNG, JUnit)
  • JavaScript (node.js)
  • Python
  • PHP
  • Ruby

Отож, ви пишете тести тією мовою, яка вам більше до вподоби, після чого ці тести передаються на Appium сервер, написаний на Node.js, а далі Appium сервер переганяє саму логіку та назву локаторів та передає кінцеві тести на емулятори, або кінцеві пристрої.

Для Android використовується UIAutomator, для iOS – XCUITest.

Як це виглядає у коді? А ось так.

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

Автор: Олексій Жерегі, Lead Software Engineer, Consultant, GlobalLogic Ukraine

Формат інтерв’ю повертається у BlogSpot! Цього разу поговоримо про етикетки. Здавалось би, до чого тут ІТ? Річ у тім, що у сучасному світі, коли мова йде про мільйонні партії товарів, які треба каталогізувати та відстежити, потрібні новітні рішення. Наш продукт і є таким. Він використовується не для статичних етикеток, як на пляшці води, а для етикеток, що містять унікальну інформацію, таку як інвентарний номер, дата виготовлення, та інше. Таку етикетку ви радше побачите на контейнері з пляшками, що пливе чи їде до магазинів.

Як сучасні ІТ рішення змінили цю галузь, як над однією етикеткою працюють команди у Франції, Бельгії та Україні та до чого тут хмарні рішення? Читайте нижче!

  • Розкажи про ваш проєкт?

Це комплексне рішення для створення, зберігання та друку етикеток в промислових масштабах. Це ті етикетки, що містять у собі багато інформації від назви компанії постачальника до маршруту його доставки.

  • Які головні завдання цього рішення?

В еру глобальних торговельних відносин, логістики, масового виробництва різноманітних товарів, гостро відчувається необхідність маркування цих товарів. Наші рішення дозволяють спроєктувати етикетки в зручному редакторі, додати на них необхідні об’єкти, починаючи від простої лінії закінчуючи складними компонентами, що містять дані виробника, картинки, тексти, тощо. Потім спроєктовану етикетку можна роздрукувати на будь-який принтер. Але основний акцент зроблений на термальних принтерах, тому що вони в основному стоять на промислових лініях.

Також, ми працюємо над сервісом автоматизації та розподіленого друку, який здатний обробляти великий потік команд, аналізувати їх та виконувати друк на велику кількість принтерів. Крім того, існують рішення для зберігання і контролю розроблених лейб – свого роду система контролю версій і безліч інших підпроєктів. Всі ці рішення можуть працювати у зв’язці, свого роду – це екосистема. У підсумку, все це можна налаштувати на виробничій лінії заводу, скажімо розташованому десь в Німеччині, при цьому команда дизайнерів буде знаходитися у Франції, зберігатися це все буде на сервісах Azure, а друк буде відбуватися з Бельгії. Все це можливо зробити використовуючи рішення, створене нашою командою.

  • Які технології використовуються на проєкті взагалі (екосистема) і якими технологіями займаєтеся конкретно ви?

Стек технологій досить-таки великий і він постійно змінюється згідно з трендами. Коли я потрапив на проєкт, переважно використовувалися C ++ / MFC для UI складової, C / C ++ для драйверів і сервісів, .Net / C # /WinForms для допоміжних інструментів. Але за останні кілька років акцент перейшов на сторону .NET. 

Так, остання версія дизайнера використовує WPF який спілкується з core частиною за технологією ActiveX. Сервіси реалізовані на .NET WCF. Для організації розробки ми покладаємося на TFS. Там і система контролю версій, і багтрекінг система, там же є веб-версія зі зручною дошкою, яку застосовуємо для Agile процесів. Конкретно я відповідаю за розробку UI редактора етикеток та основного ядра, яке відповідає за друк етикеток.

  • У чому внесок конкретно інженерів миколаївського офісу в розвиток продукту?

Проєкту вже більше 10 років, і практично з самого початку частина команди перебувала в Миколаєві. Тут була зосереджена основна частина розробників. З роками, кількість людей в миколаївській команді росла, а як наслідок – ставало все більше продуктів, які ми розробляємо. На цей час саме миколаївська команда займається розробкою топових продуктів.

  • Як побудована робота з замовником?

За довгі роки співпраці, вийшло завоювати його довіру. Ми постійно тримаємо зв’язок. Щотижневі мітинги з обговоренням статусу продукту і так далі. Раз на місяць замовник прилітає в Україну аби поспілкуватися особисто. В основному перед нами ставлять конкретний список вимог, оформлений в ТЗ, після команда проводить аналіз і надає свій фідбек з технічними пропозиціями. Останній реліз пройшов по Agile, де кожні 2 тижні замовник міг бачити прогрес і впливати на ситуацію.

  • Які на ваш погляд основні переваги проєкту?

Їх багато, для себе я виділяю дружну команду, постійне оновлення технологій і цікаві задачі.

  • А які недоліки? Що б хотілося змінити?

Складно сказати. Мабуть, їх і немає 🙂

  • Якими навичками та вміннями потрібно володіти, аби стати частиною вашої  команди?

В першу чергу, потрібно бути цілеспрямованим та мати знання. Навіть якщо ви студент без диплома, але з великим бажанням до навчання, до самовдосконалення  – двері завжди відкриті. Важливо бути team player, бо жоден великий проєкт не розробляється на одинці.

  • Кого ви шукаєте на проєкт? Яким людям ви б рекомендували спробувати себе на цьому проєкті?

Розкажу кілька нюансів, а рішення все одно кожна людина приймає сама. Проєкт цікавий і постійно розвивається. Рішення спрямовані на промисловий сектор, де надійність і стабільність стоїть мало не першим пунктом. Тому використання найновіших технологій на даному проєкті очікувати не варто, принаймні не відразу. Крім того, через те, що стабільність продуктів в пріоритеті – більшу частину часу розробники й тестувальники витрачатимуть на фікс дефектів ніж на створення якогось нового функціоналу. Останнім часом, це змінюється, і замовник націлений на надання нових фішечок, але в основні акценти ніхто не міняв. Також, нам дуже часто доводиться допомагати support команді у розв’язанні проблем для користувача. Дуже часта ситуація – це remote сесії де потрібно проявити себе профі, тому що від того як добре і якісно ти розв’язуєш проблему, залежить імідж замовника, а це важливо.

  • Які подальші перспективи розвитку існують на проєкті та в компанії?

Все завжди в руках спеціаліста. Особисто я починав свій шлях у GlobalLogic ще коли був студентом 3-го курсу. За 6 років я став senior розробником та dev lead в команді. Це далеко не межа! Щодо проєкту – найближчим часом є плани піти в хмарні технології та веб. Так що, цікавого попереду ще багато, тож запрошуємо всіх!

Якщо бажаєте стати частиною команди GlobalLogic та створювати рішення, що змінюють цілі галузі – переходьте за посиланням та шукайте собі позицію до душі! 

Бажаєте почитати ще інтерв’ю про наші проєкти? Тоді подивіться, як команда GlobalLogic створила рішення для гіганта АПЛ Manchester City

Автор: Олександр Федірко, Solution Architect, Trainer, GlobalLogic Ukraine

Минулого разу ми розібрали, які шляхи існують для тих, хто хоче приєднатись до BigData-спільноти та стати ентузіастом “великих даних”. У цій колонці ми докладніше розберемо досвід команди GlobalLogic: розкажемо про наші проєкти та курси GL BigData ProCamp.

Чим GL BigData ProCamp відрізняється від онлайн-курсів?

Найцінніше у GL ProCamp — це, звісно, можливість поспілкуватися з експертами-практиками, отримати чимало лайфхаків та дізнатись про найкращі практики, що використовуються на реальних проєктах.

GlobalLogic має клієнтів в різних областях: маркетинг, продажі, роботизація, фінансові установи, Automotive, IoT. На проєктах ми будуємо платформи для аналізу даних та співпрацюємо з іншими технологічними напрямками (DevOps, Embedded, Data Science, QA) для створення якісних рішень.

Наведу декілька прикладів:

  • Один з маркетингових проєктів розв’язує задачу MTA (Multi Touch Attribution), в рамках якої поєднує онлайн-рекламу з офлайн-покупками в магазинах. Це дозволяє великим компаніям-виробникам продукції для супермаркетів краще планувати свої рекламні кампанії, та розуміти, яка саме реклама більше впливає на кінцеве рішення споживача.
  • Інший приклад: кожного разу, коли ви відвідуєте будь-який сайт, на ньому з’являється реклама. Як це відбувається? Як сайт знає, яку саме рекламу показувати? Відразу після того, як ви потрапили на сайт, за дуже короткий проміжок часу (10–20 мс) відбуваються торги за право показу рекламного блоку. Торги відбуваються на платформах Ad Exchange. Саме одну з таких платформ розробляють інженери GlobalLogic.
  • Ще один приклад. Проєкт фокусувався на обробці даних в контексті безпеки. У клієнта є розвинена інфраструктура, приблизно 50 000 пристроїв (персональні комп’ютери, роутери, сервери і т.п.). Завданням було розробити систему, що в режимі реального часу зможе виявляти кіберзагрози та сповіщати про них операторів. Одним з головних викликів було те, що система була повинна обробляти до 1 000 000 подій за секунду. Вся інфраструктура була розгорнута в Google Cloud та мала властивості автоматичного масштабування.
  • Мабуть, найбільш інноваційними проєктами в контексті великих даних є проєкти, що пов’язані з інтернетом речей: саме розумні девайси продукують велику кількість даних. Так, на одному з проєктів інженери GlobalLogic підтримують аналітичну платформу, що збирає інформацію з 750 000 пристроїв по США для більш ніж 1 000 000 клієнтів. Інформація збирається, агрегується та на основі цього аналізу кінцевим користувачам надаються рекомендації щодо покращення їх здоров’я.
Яку базу необхідно мати, щоб розпочати вивчення BigData? Чи є можливість приєднатися до команди після закінчення GL BigData ProCamp?

Початкові вимоги для цього курсу досить невисокі. Якщо ви знаєте Python чи будь-яку іншу мову програмування — цього вже досить. Проте пам’ятайте, що після кожного курсу варто закріпити навички. Тож знайдіть собі pet project. Будь-яка можливість застосувати навички та знання з курсів на практичних задачах допоможе вам їх опанувати.

Якщо ви закінчили наш курс і маєте хороший рейтинг та фідбек від тренерів GL BigData ProCamp, ви отримаєте пропозицію спробувати себе на позиції та проєкті, що найкраще підходять для вашого профілю.

Які вимоги до інженерів BigData в GlobalLogic?

Критичним є знання SQL як одного з основних інструментів аналізу та маніпулювання даними. На більшості проєктів зустрічається Spark, тож знання цього фреймворку дуже актуальне.

Також потрібна компетентність в наступних питаннях:

  • Spark job performance optimization.
  • Розподілені обчислення в цілому та дизайн сховищ даних.
  • Якісне впровадження програмного забезпечення, як то CI/CD: що це таке та як з цим стикається інженер.
  • Оркестрації процесів ETL.
  • Базові питання щодо обробки stream-даних.
  • Робота з різними типами сховищ даних, як то columnar storage/document oriented/key-value/graph.

На закінчення скажу, що попит на інженерів BigData невпинно зростає. Тож ким би ви не працювали — Java-розробником, QA-інженером або DevOps — вміння вправлятись із великими даними вигідно розширить ваш профіль як спеціаліста та значно підвищить вашу конкурентоспроможність на ринку.

Наприклад, якщо ви Embedded-інженер, то BigData є одним із перспективних шляхів розширення вашої спеціалізації, адже IoT тісно пов’язаний зі збиранням, обробкою та зберіганням даних з пристроїв. Тож не вагайтесь, відкривайте для себе світ BigData вже сьогодні – реєструйтесь на GL BigData ProCamp!

 

Автор: Олександр Федірко, Solution Architect, Trainer, GlobalLogic Ukraine

Мене звуть Олександр Федірко. Я понад 5 років займаюся проєктуванням та архітектурою BigData-рішень, що дозволяють отримувати якісно нові знання шляхом комплексного аналізу великих даних. Є одним із лідерів BigData-практики в GlobalLogic та відповідаю за розвиток цієї експертизи в регіоні Центральної та Східної Європи. Тренер курсів всередині GlobalLogic та активний доповідач багатьох галузевих форумів та конференцій з BigData та аналітики. Серед технологій, на яких спеціалізуюся: багатопотокова обробка даних, реляційні бази даних, NoSQL, сховища даних, системи обробки запитів.

Технологічні джунглі

Якщо ви почнете гуглити “топ тренди технологій”, то напевне серед результатів пошуку побачите BigData-технології, такі як інтеграція даних, інжиніринг даних, великі дані. І не дивно, адже BigData насправді є однією з найпопулярніших технологій на IT ринку та відіграє ключову роль в багатьох бізнес-галузях на шляху до цифрових трансформацій.

Якщо ви не хочете залишатись осторонь такого потужного тренду у світі технологій, то, мабуть, вже почали вивчати, чи задумувались над тим, із чого почати шлях опанування технологій BigData. Але без провідника на цьому шляху вам може видатись, що ви продираєтесь крізь джунглі.

Тож, розробники, інженери та архітектори, я проклав для вас маршрути, аби ви не заблукали в цих хащах.

Увесь шлях я скомпонував у 14 кроків, розбитих на 3 рівні, від Easy до Hard.

1-й рівень — для новачків, які тільки зацікавились BigData.

Це рівень Easy, користуючись ігровою термінологією. П’ять кроків, які допоможуть вам сформувати первинне розуміння теми.

  1. Почніть з одного з базових курсів Big Data Fundamentals, які дадуть вам загальне уявлення про Big Data та набори інструментів для обробки даних у Cloud чи локально. Далі вам варто зануритись глибше та вивчити кілька найпопулярніших інструментів.
  2. Hadoop — найпопулярніша вільна програмна платформа й каркас для організації розподіленого зберігання та обробки наборів великих даних.
  3. NiFi — один з найпростіших інструментів для автоматизації потоку даних між програмними системами.
  4. Ingestion. Саме час зрозуміти, як саме дані потрапляють на платформу. Добре опануйте процес отримання, внесення та обробки даних з метою їх подальшого використання чи зберігання.
  5. Основи візуалізації даних знадобляться кожному Big Data-інженеру, тож не нехтуйте цією навичкою.

2-й рівень — середній. Ви вже готові до пакетної обробки даних.

Це вже можна назвати Medium Level. Тут на вас чекає ще 7 рівнів, які треба опанувати.

  1. Настав час опанувати Spark. Це високопродуктивний рушій для оброблення даних, що зберігаються в кластері Hadoop. У порівнянні з наданим у Hadoop механізмом MapReduce, Spark забезпечує у 100 разів більшу продуктивність при обробленні даних в пам’яті та в 10 разів більшу при розміщенні даних на дисках. Програми для оброблення даних найчастіше створюються на мовах Scala та Python.
  2. Далі вам доведеться познайомитись з архітектурою BigData-проєктів.
  3. А потім – розібратися з тим, як організувати сховища даних.
  4. Потокова передача даних. Найчастіше відбувається за допомогою Spark у режимі реального часу чи наближеного до нього.
  5. Далі вам не обійтися без хмарних технологій, адже все частіше замовники віддають перевагу рішенням у Cloud, аби не витрачати ресурси на DevOps-налаштування та підтримку локальних систем. Почніть, наприклад, з AWS — комерційної платформи хмарних обчислень від Amazon.
  6. Google Cloud Platform — набір хмарних служб, які виконуються на тій же самій інфраструктурі, яку Google використовує для своїх продуктів, що призначені для кінцевих споживачів, таких як Google Search та YouTube. Окрім інструментів для керування, також надається ряд модульних хмарних служб з обчислення, зберігання даних, аналізу даних та машинного навчання.
  7. Azure — хмарна платформа та інфраструктура від Microsoft, призначена для розробників застосунків хмарних обчислень і покликана спростити процес створення онлайнових додатків.

3-й рівень — Advanced. Тут варто прокачати навички потокової передачі даних.

На цьому етапі на вас чекають два фінальні “боси”.

  1. Apache Flink — фреймворк із відкритим Source Code для реалізації обробки потоків від Apache Software Foundation. Flink підтримує програмування потоків даних як у паралельному, так і в конвеєрному режимі. В конвеєрному режимі він дозволяє реалізувати послідовність задач та їх потік. Flink також підтримує ітераційні алгоритми.
  2. Apache Beam — уніфікована модель програмування з відкритим Source Code для визначення та виконання конвеєрів обробки даних, включаючи ETL, пакетну та потокову обробку.

Нижче я зібрав перелік онлайн-курсів із посиланнями, з яких я рекомендую розпочати. Це, на мою думку, найкращі курси з найпопулярніших платформ — Coursera, Udacity та Udemy. Повний перелік посилань на всі блоки доступний для консультантів GlobalLogic. Більшість із цих курсів платні, проте GlobalLogic Education має партнерство з Udemy, тож наші консультанти та учасники BigData-практики мають можливість проходити їх на цій платформі безкоштовно.

1 рівень — Beginner
  1. Big Data – ціла спеціалізація, можна проходити окремі курси
  2. Hands-On Hadoop – курс розкриває основні компоненти екосистеми Hadoop та їх призначення. Високий рейтинг, практичні завдання.
  3. Introduction to Apache NiFi – гарний опис типових сценаріїв використання NiFi.
  4. Data Visualization in Tableau – розкривається тема використання Tableau як одного з найпопулярніших інструментів для візуалізації.
2 рівень — Intermediate
  1. Spark Scala – Курс фокусується на використанні Spark у якості інструменту пакетної обробки.
  2. Spark Python – практичні навички використання Spark  з мовою програмування Python.
  3. BI & DWH – гарний екскурс у класичне моделювання сховищ даних.
  4. Data Streaming – курс дає основи щодо потокової обробки даних,  розповідає про типові сценарії використання.
3 рівень – Advanced
  1. Apache Beam – курс навчає уніфікованому підходу до обробки даних з використанням фреймворку Apache Beam.
  2. Apache Flink – практичні навички з однією з найпопулярніших технологій для обробки даних в стрімінгу в реальному часі.

Також у GlobalLogic існує власна програма: GL BigData ProCamp.

Ми проводимо її другий рік поспіль. Ціль — розвиток Big Data-експертизи в GlobalLogic та підготовка й залучення нових інженерів. Зараз триває набір, тож якщо ви хочете доєднатись до наступної групи — деталі та форма реєстрації за посиланням.

ProCamp буде корисний тим, хто вже пройшов кілька базових онлайн-курсів та спробував дещо на практиці. На ньому ми розберемо такі теми:

  • BigData Fundamentals
  • Data Warehousing Fundamentals
  • Apache NiFi
  • Kafka as Message Broker
  • Hadoop Fundamentals
  • Apache Spark
  • Orchestrations: Oozie, AirFlow
  • Google Cloud

На сьогодні поставимо крапку. Наступного тижня ми продовжимо нашу подорож та розкажемо про проєкти GlobalLogic, на яких використовується Big Data, та докладніше розповімо про спеціальний GL BigData ProCamp.

Не перемикайтесь!

Автор: Юлія Марсо, Recruitment specialist, Consultant, GlobalLogic Ukraine

Попит на технічних спеціалістів залишається високим, проте багатьом початківцям часом нелегко знайти проєкт у сфері IT. Причина банальна — відсутність комерційного досвіду, який, зазвичай, є ключовою вимогою. Але як отримати цей самий досвід? На перший погляд, це звучить як нонсенс – аби потрапити на проєкт, тобі потрібен досвід участі на проєкті. Проте, шляхи існують!

Студенти ІТ-спеціальностей очікують, що після закінчення навчального закладу вони з легкістю отримають бажану позицію в ІТ-компаніях, але, зазвичай, той обсяг знань, який надає їм ВНЗ, недостатній. Не дивно, що після ряду невдалих інтерв’ю молоді спеціалісти починають шукати додаткові IT-курси.

Перш за все, куди вони спрямовують свої пошуки – власне, ІТ-компанії. Так, лідери ринку подекуди пропонують позиції trainee (свого роду “проба пера”, що передбачає і навчання, і участь на реальному проєкті) або ж курси, де студенти здобувають необхідні навички та знання, щоб згодом долучитися до команди.

Проте, таких пропозицій небагато. За даними DOU на січень 2020 року всього 9% ІТ-компаній мають пропозиції для кандидатів з досвідом менше ніж один рік. Тим приємніше відзначити, що GlobalLogic – серед тих, хто надає таку можливість!

Які зовнішні навчальні програми існують в GlobalLogic?

Є два типи:

GL BaseCamp – курс для студентів без досвіду, але з хорошою базою знань з програмування і хочуть доповнити їх практичним досвідом та поспілкуватися із досвідченими експертами у галузі IT. наприклад в C ++, .NET, Java, JS, QA, Embedded.

GL ProCamp – більш поглиблена програма для інженерів з досвідом. Наприклад, якщо ви C++ розробник із хорошим досвідом у Linux, то на GL ProCamp ви можете опанувати Linux Kernel чи AOSP. Або, якщо ви Java чи JS розробник, ви можете вивчити нові фреймворки. Також можна поглибити навички QA Automation, DevOps, BigData, Embedded та вийти на новий експертний рівень.

В рамках цієї колонки ми зосередимось на першому пункті, а саме – GL BaseCamp.

Як потрапити на курси?

Є простий алгоритм. Майбутньому студенту чи студентці потрібно:

  • Відповісти на декілька питань про вас.
  • Пройти вступне тестування або виконати завдання.
  • Пройти загальне та технічне інтерв’ю з експертами GlobalLogic
  • Дочекатись запрошення на курс.
  • Бінго!

Як проходить навчання?

Кожен курс розрахований в середньому на 20 студентів, звичайно реєстрацій завжди більше, середня кількість на один курс – до 300 реєстрацій, залежно від напряму. Навчання проходить, як правило, два рази на тиждень, по дві години, в ранковий або вечірній час.

Курси об’ємні, читаються 2-3 місяці групою тренерів, кожен з яких покриває декілька тем Курсами спільно опікуються представники вишів та тренери компанії GlobalLogic. Лектори та ментори дають теоретичну базу та доповнюють її реальними кейсами та прикладами з практичного досвіду у сфері IT.

Коли курс підходить до завершення, у студента є можливість розглянути відкриті trainee пропозиції у GlobalLogic.

Як це все працює?

Варто зауважити, що навчання на GL BaseCamp проходить за поглибленою програмою. Власне тому, на курсах відносно мало теорії, а більшість часу зосереджено на виконанні практичних завдань. Для успішного завершення курсів необхідно не лише відвідувати лекції, а й ефективно організовувати свій час для самостійної роботи.

Дамо слово нашим студентам!

Юрій відвідував курси PoC Smart City. Дізнався про курс через університетську програму GlobalLogic у КПІ. У рамках цієї програми компанія активно співпрацює з багатьма технічними університетами в Києві, Харкові, Львові та Миколаєві.

  • Курс дав змогу покращити свої знання в Linux, С, С++ та в Embedded в цілому. Також він дав можливість працювати з реальним проєктом та спробувати себе в ролі розробника. Все було чітко, зрозуміло та доступно.  Для мене основними перевагами навчальних програм від GlobalLogic є можливість отримати сучасні та необхідні знання у сфері розробки ПО, а також можливість зустрітись з реальними задачами в цікавих проєктах,- Юрій (Junior Software Engineer, Consultant, GlobalLogiс)

Олександр успішно пройшов курс GL ProCamp та тепер теж є частиною проєкту у GlobalLogic.

  • Дізнався про курс вже бувши частиною одного проєкту GlobalLogic. Зареєструвався, пройшов інтерв’ю на курси. Для студента зі знанням С (ким я був на той момент) це було не складно. Курс дав знання про ядро Linux, які стали мені у пригоді на усіх подальших проєктах, –  Олександр (Trainee Software Engineer, Consultant, GlobalLogic Ukraine), відвідував Linux Kernel GL ProCamp.

І результат вочевидь вартий цього. Курси дають можливість структурувати теоретичні знання, використати їх на практиці, зустріти та подолати різні труднощі, навчитися розв’язувати проблеми.

  • Лекції – це найчастіше теорія, але знання потрібно закріплювати на практиці. Без практики це більше схоже на прослуховування доповідей з конференції, з практикою тренінг перетворюється в повноцінне навчання. Також на практиці студент може зіткнутися з рішенням нових завдань і отримати більше досвіду в суміжних областях, а тренер при цьому вкаже на помилки або запропонує правильні підходи, – Руслан Біловол (Associate Manager, Engineering, Consultant, Couch, GlobalLogic Ukraine).
Що далі?

Як правило, до кінця курсу залишаються найкращі й найбільш дисципліновані студенти.

Завершення GL BaseCamp — вже сам по собі гарний старт для кар’єри в IT.

Ті, хто проявив себе з найкращої сторони протягом навчання, отримують можливість (запрошення на інтерв’ю) долучитись до проєктів GlobalLogic. Крім досвіду взаємодії з командою та розв’язання реальних задач, кожен trainee отримує:

  1. Ментора, який допомагає, підтримує та дає цінні настанови
  2. Індивідуальний план розвитку, створений з урахуванням цілей людини. Що це таке та як працює – можна дізнатись у цій колонці.
  3. Можливість будувати кар’єру та професійно зростати. Детальніше про кар’єрні цілі та їх коректне формування можна прочитати тут.
Корисні поради

Наприкінці колонки хочеться пригадати невеличкі лайфхаки, які б допомогли тим людям, що тільки починають свій професійний шлях в IT.

  • Фріланс

Як казав Генрі Форд: “Якщо у тебе щось не вийшло, то це чудова можливість почати все спочатку, але по-іншому”. Навіть якщо після курсів потрапити на бажаний проєкт не вийшло, є час аби перепочити, поглибити свої знання та спробувати себе на менших проєктах на базі фрілансу. Плюс цього шляху – це комерційні рішення, а не теоретичні міркування. Розробник вчиться комунікувати з клієнтом, вчиться дотримуватись дедлайнів, тощо. Практичні навички, отримані на фрілансі, згодом допоможуть у роботі на проєкті.

  • Не нехтувати літературою

Читати книги з програмування декому здається моветоном, але насправді фундаментальні речі незмінні й саме професійна література може допомогти заповнити пробіли у знаннях.

  • Робити те, що подобається

Не слід бігти за трендами, слід обирати ту сферу, до якої лежить душа.

А ще, звісно, треба пробувати й старатися. І ваш перший справжній проєкт у компанії вашої мрії — не за горами.

Автор: Юрій Грицай, Software Engineer, Engineering, Consultant, GlobalLogic Ukraine

Продовжуємо розбиратись з предиктивним аналізом несправностей. Докладніше про сам аналіз та методики можна прочитати у частині першій.

Моделі для передбачення потреби технічного обслуговування – тест.

Для побудови успішних моделей для передбачення потреби технічного обслуговування необхідно 3 головні речі:

  1. доступність інформації;
  2. правильне формулювання проблеми;
  3. належна оцінка прогнозів.

Збір інформації

Щоб побудувати модель для передбачення несправності, нам потрібні архівні дані, які дозволяють фіксувати інформацію про події, що призводять до несправності. Під час збору цих даних важливо відповісти на наступні запитання:

  • Які типи несправностей можуть статися? Які саме ми намагаємось передбачити?
  • Яким є процес, який призводить до несправності? Чи це повільний, чи навпаки, стрімкий процес?
  • Які частини приладусистеми можуть бути пов’язані з кожним типом несправності? Як часто та наскільки точно потрібно виконувати вимірювання?

Формулювання проблеми

Коли мова йде про те, як слід сформулювати модель для передбачення потреби у ремонті, важливо пам’ятати про наступні запитання:

  • Який результат ви очікуєте від використання моделі?
  • Чи достатньо у вас архівних даних чи доступні лише статичні дані?
  • Чи позначено кожну записану подію, які вимірювання відповідають належному функціонуванню та які відповідають несправності? Або принаймні, чи відомо, коли кожен прилад вийшов з ладу(якщо коли-небудь таке траплялось раніше).
  • Коли доступні позначені події, яка частка є кількістю подій кожного виду несправностей та тих, які відповідають за коректну роботу.
  • Наскільки завчасно модель повинна вказати, що станеться збій?

Стратегії моделювання для правильного оцінювання прогнозів:

  • Модель на основі регресії для прогнозування часу роботи, що залишається перед тим як обладнання вийде з ладу.
  • Модель на основі класифікації для передбачення несправності протягом заданого періоду часу.
  • Позначення нетипової (аномальної) поведінки.
  • Модель (Survival) для передбачення можливості виникнення несправності протягом всього часу експлуатації приладу.

Розберемо кожну докладніше.

1. Модель на основі регресії для прогнозування часу роботи, що залишається перед тим як обладнання вийде з ладу

Головне запитання: скільки днів / циклів залишається до того моменту, коли система вийде з ладу?

Основні характеристики даних:

  • доступні статичні та архівні дані, кожна подія позначена. У наборі даних присутні кілька подій кожного типу несправності;
  • використовуючи статичні характеристики системи та того, як вона поводиться зараз, можна передбачити залишковий час;
  • моделюється лише один тип ‘’шляху до несправності’’: якщо можливі багато різних типів несправностей, а система поводиться кожного разу по-іншому під час процесу, який призводить до несправностей, потрібно проєктувати окрему модель для кожного типу;
  • доступні позначені дані та вимірювання, які були зроблені в різні моменти часу протягом експлуатації системи.

2. Модель на основі класифікації для передбачення несправності протягом заданого періоду часу

Головне запитання: чи вийде прилад з ладу за наступні N днів/циклів?

Основні характеристики даних:

  • доступні статичні та архівні дані, і кожна подія є позначена. Кілька подій різних типів несправностей є в наборі даних;
  • оскільки ми визначаємо несправність в певний період часу (а не в конкретний момент), дані по деградаційному процесу усереднюються;
  • моделі класифікації застосовуються до багатьох типів несправностей, при умові що вони сформульовані як багато класова проблема;
  • Доступні позначені дані та існує достатньо випадків кожного типу несправності, щоб тренувати та оцінювати модель.

3. Модель позначення нетипової (аномальної) поведінки

Обидві попередні стратегії потребують багатьох прикладів як і нормальної поведінки, так і поведінки, яка призводить до несправностей. Проте, скільком літакам ви б дозволили впасти, лиш для того, щоб зібрати дані? Отож, якщо ви маєте надважливі системи, то у вас часто є лише обмежені, або взагалі відсутні приклади відмов. У цьому випадку необхідна інша стратегія.

Головне запитання: Чи є конкретна поведінка нормальною?

Основні характеристики даних:

  • доступні статичні та архівні дані, проте або мітки є невідомі, або дуже мало випадків з несправностями спостерігалися раніше, або ж є занадто багато різних типів несправностей;
  • можливо визначити що є нормальною поведінкою і яка ж різниця між поточною та нормальною поведінкою пов’язана з шляхом, який веде до несправності;
  • можливість виявити аномальну поведінку за допомогою цієї моделі є і перевагою і недоліком водночас: модель повинна мати можливість позначити всі типи несправностей, попри відсутність попередніх знань про них. Однак аномальна поведінка не обов’язково призводить до невдачі. І якщо це відбувається, модель не надає інформації про проміжок часу, під час якого ця несправність може трапитися
  • Оцінка моделі для виявлення аномалії також є складною через відсутність промаркованих даних. Якщо доступні хоча б деякі промарковані дані про несправності, їх можна і потрібно використовувати для оцінки алгоритму.

Попередні три підходи застосовуються до прогнозування, надаючи нам достатньо інформації аби випередити несправність шляхом вчасно наданого технічного обслуговування. Однак, якщо ви зацікавлені в самому процесі, який призводить до несправності – остання стратегія для вас.

4. Модель (Survival) для передбачення можливості появи несправності протягом всього часу експлуатації приладу

Головне запитання: маючи набір характеристик, яким чином зміниться ризик виникнення несправності у часі?

Основні характеристики даних:

  • доступні статичні дані, записана інформація щодо кожної несправності, записана дата коли певний прилад вийшов з-під спостереження на предмет несправності;
  • модель оцінює ймовірність виходу з ладу обладнання з урахуванням статичних характеристик. Цей підхід є також корисним для аналізу впливу певних обставин на термін роботи.

Автор: Юрій Грицай, Software Engineer, Engineering, Consultant, GlobalLogic Ukraine

Кожна помилка містить в собі потенціал, – з неписаних інженерних правил.

Як можна передбачити появу несправності? На щастя, сьогодні для цього не треба бути екстрасенсом чи магом – на допомогу приходить Machine Learning. У цій колонці, що матиме 2 частини, я хочу поділитись оглядом методики предиктивного аналізу несправностей та освітити найбільш актуальні питання галузі.

Вступ. Що таке Predictive Maintenance та чому він актуальний?

PdM (Predictive Maintenance) – ключовий термін, дослівно – передбачення позапланового технічного обслуговування.

Профілактичне технічне обслуговування передбачає ряд методик, спрямованих на збір інформації, яка допоможе зрозуміти максимально допустимий інтервал між ремонтом обладнання та зменшити витрати на ліквідацію неочікуваної несправності будь-якого компоненту.

На основі зібраної інформації, нейронні мережі прогнозують поведінку різноманітних механізмів та допомагають передбачити планову потребу обслуговування. Ця техніка машинного навчання є потужним інструментом, де інформація передається від однієї нейронної мережі до іншої. Згідно дослідження IoT Analytics, комплекс заходів спрямованих на технічне обслуговування зараз базується саме на аналітиці даних. Очікується щорічний зріст PdM на 39% між 2016-2022, а інвестиції в розвиток цієї технології сягнуть 11 мільярдів доларів до 2022.

Є дві ключові причини такого росту:

  1. Сучасне обладнання часто оснащене вбудованими комп’ютерними чіпами для отримання та зчитування інформації.
  2. Вартість вбудованих датчиків та інших сучасних інформаційних технологій постійно зменшується.
Типи обслуговування
  • Аварійний ремонт обладнання (Run-to-failure (breakdown maintenance)) – оперативне технічне обслуговування є досить просте: ремонт здійснюється одразу після виникнення несправності. Цей метод ефективний для обладнання яке не впливає на роботу в цілому та є низьким за вартістю

  • Плановий ремонт (Preventive (scheduled) maintenance) – цей тип технічного обслуговування передбачає перевірку чи ремонт обладнання у офлайн режимі у попередньо визначені часові інтервали.

  • Профілактичне технічне обслуговування (Predictive maintenance (PdM)) – профілактичне ТО має на меті попередити ймовірні несправності, щоб попередити вихід з ладу обладнання в цілому. Для цього використовується інформація зібрана з датчиків та розумні технології, які попереджають команду обслуговування про ризик несправності.

  • Комплексне обслуговування (Reliability-centered maintenance (RCM)) – це комплексний підхід, який допомагає проаналізувати всі ймовірні несправності кожної окремої деталі та створити кастомізований план обслуговування кожного приладу.

Maintenance strategies

Як машинне навчання допомагає передбачити потребу своєчасного ремонту?

Проблеми з технічним обслуговуванням можуть бути абсолютно різними за своїм походженням, і діагностична інформація, що надходить до модуля PdM повинна розглядатися згідно з конкретною проблемою.

Теоретично існує досить багато різних підходів до PdM, але зараз активно розвиваються методи, які базуються на техніках машинного навчання. Вони поділяються на дві основні групи:

  • контрольовані: коли інформація про типи можливих несправностей присутня моделюючому набору даних. Контрольовані підходи потребують наявності історичного набору даних про поведінку приладу та його несправності під час експлуатації.
  • неконтрольовані: коли доступна інформація щодо процесу, але недоступні дані, пов’язані з технічним обслуговуванням.
Трансферне навчання для prediction maintenance

Трансферне навчання – це застосування даних, отриманих при розв’язанні однієї проблеми, для вирішення іншої, але суміжної, проблеми. Зараз цей підхід є досить популярним, адже пропонує можливість тренувати нейронні мережі порівняно малою кількістю даних. Це є досить корисно та зручно, тому що більшість реальних проблем зазвичай не мають багато зареєстрованих даних, щоб тренувати складні моделі. Насправді це не зовсім техніка машинного навчання. Трансферне навчання може розглядатися як “методологія проєктування” в машинному навчанні. Однак, трансферне навчання стало досить популярним у поєднанні з нейронними мережами, оскільки їх навчання вимагає великої кількості даних та обчислювальної потужності.

На цьому ми поки зробимо зупинку.

У частині другій ми спробуємо сформулювати основну предметну область де використання предиктивного методу буде оптимальним, обговоримо стратегії та типи нейронних мереж які можуть використовуватись для цього.

До зустрічі через тиждень. Не перемикайтесь!

У портфоліо команди GlobalLogic багато різноманітних проєктів, що змінюють життя мільйонів людей. Від автомотів галузі з гігантами авторинку до оскароносної історії зі створення комерційної музики, про які ми вже писали. Сьогоднішній проєкт – особливий, адже він пов’язаний з “грою мільйонів” – футболом! Та не просто з футболом, а з одним з грандів Англійської Прем’єр Ліги, Manchester City. Тому й колонка сьогодні у незвичному форматі – це бесіда. Адже для гри потрібно як мінімум двоє, чи не так? Тож, як кажуть, ball in the game!

  • Як називається і чому присвячений ваш проєкт?

Наш проєкт називається Manchester City Football. Ми створюємо різні продукти для футбольного клубу Manchester City. У тому числі ми розробили з нуля платформу для комунікації та розваги фанів, а ще займаємося перероблюванням головного сайту. Основна сфера – це маркетинг і розваги, а також інформаційна підтримка.

  • Який стек технологій використовуються на проєкті та чим саме оперує команда?

Ми використовуємо .Net Core WebApi і .Net Core MVC для backend, а також Angular і Handlebars для frontend. Все наша екосистема дуже орієнтована на Azure, і ми використовуємо різні компоненти (blob storage, service bus, віртуальні машини, Redis). За базу даних у нас використовується MongoDB. Також, варто відзначити, що ми використовуємо мікросервісну архітектуру і Docker контейнери для хостингу.

  • Проєкт базується у Миколаєві. Розкажи, в чому внесок саме інженерів локації у розвиток сервісу?

Ми ведемо повний процес розробки: створення архітектури за вимогами замовника, імплементація, тестування і підтримка. Вся команда повністю знаходиться у Миколаєві, але ще присутні Product Owner, з якими у нас відбувається регулярне спілкування. В основному вся комунікація проходить в письмовому вигляді через Slack / Email, але періодично трапляються візити або в Київ, або в Манчестер.

  • Розкажи, у чому основні переваги проєкту? Чим він цікавий інженерам, які його “фішки”?

Нам надана повна свобода дій в засобах реалізації, у виборі технологій і підходів. Нам цілком довіряють в технічному плані, тому ми можемо дозволити собі застосовувати все найновіше і цікаве. Варто зазначити, що оскільки проєкт пов’язаний з футболом, то багатьох ця тема цікавить і додає мотивації зробити щось краще, або корисніше, а так само запропонувати будь-які поліпшення. Також, оскільки проєкти створені нами зі старту, то у нас немає такого поняття як legacy code, тому в основному всі наші завдання – це розробка нового функціоналу.

  • А чого б хотілося додати?

Хотілося б збільшити кількість тестів, а також додавати ще більше нових крутих фіч. Проте, наші ресурси обмежені, тому все робиться не так швидко, але поступово – все буде!

  • Якими навичками потрібно володіти, щоб стати частиною команди GlobalLogic у Миколаєві?

Залежно від позиції, необхідно володіти C# та мати досвід в веб розробці для backend позицій, або ж знати HTML + JavaScript + CSS + фреймворки для frontend. Для тестувальників треба мати навички в тестуванні веб-додатків, REST API. Також потрібна англійська рівня Pre-intermediate і вище.

  • Кого ви шукаєте на проєкт? Яким людям ви б рекомендували спробувати себе у вашій команді?

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

  • Які подальші перспективи розвитку проєкту?

У замовника є величезний беклог розвитку всіх проєктів, тому перспективи дуже райдужні. Це, зокрема, розширення функціоналу, підтримка поточної версії, а може бути й ще додаткові нові проєкти. Дивимося у майбутнє з оптимізмом!

 

Автор: Тарас Попів, Team Lead, Engineering, Consultant, GlobalLogic Ukraine

Більшість із вас хоча б раз були в ситуації, коли для покращення якості проєкту потрібно додатково зробити декілька невеликих завдань, але команда партнера з якихось причини не одразу на це готова. З такою ситуацією зіткнулась і наша команда розробників у GlobalLogic. У цій колонці я хочу поділитись вирішенням, яке створили наші інженери та показати шлях для пошуку рішень, який, сподіваюсь, стане у пригоді ентузіастам та розробникам. 

Чому ми вирішили розробити Modular HIL Test Bench

На проєкті для автоматизованого тестування embedded пристрою використовувалась комплексна програмно-апаратна платформа, розроблена третьою стороною, спеціально для потреб замовника. І наче містила вона все необхідне: високошвидкісний контролер, інтегрована FPGA, модельне програмування (так-так, програмування в графічному редакторі під embedded), різні джерела живлення, можливість використання різноманітних інтерфейсів, велика кількість додаткової периферії. Рішення розроблялось для ручного тестування, але надалі почало застосовуватись і для автоматизованого.

Однак, попри значну кількість переваг, були й деякі недоліки:

  • використання різних стеків технологій для програмування пристрою, що тестується, та середовища тестування;
  • значна кількість обладнання вимагала початкової ініціалізації, і хоч зі всього переліку використовувалась одна-дві, а то й жодної периферії, проте неправильно проініціалізовані частини(що не використовувались) могли впливати на результати тестів;
  • хоча основний процесор і був значно потужнішим за процесор пристрою, що тестувався, та, зважаючи на мову високого рівня, інколи його потужностей було замало навіть для звичайної комунікації, а програмування FPGA для таких цілей – доволі часозатратний процес;
  • при використанні великої кількості периферії в системі виникали шуми й “наводки”, які спричиняли помилки в тестуванні;
  • оскільки апаратне рішення виготовлялось третьою стороною, виникали труднощі в додатковій кількості обладнання, що збільшувало час тестування основного продукту.

Та попри всі недоліки, не маючи готової альтернативи, замовник не ризикував вкладати кошти в розробку чогось нового.

Поштовх до змін

Зазвичай, скільки б функцій не було додано до платформи, завжди знайдеться щось, чого не вистачає. От і в нашому випадку не знайшлося функціоналу, який міг би керувати рівнем напруги на контролері, що тестується. Спершу, для розв’язання проблеми була спроба використати наявні на ринку аналоги, та вони не дали бажаного результату. А от розроблений прототип першого модуля успішно вирішив поставлене завдання. 

Його вартість була приблизно вдесятеро меншою за аналоги; процес розробки й виготовлення тривав близько двох тижнів, а головне, це було саме те, чого раніше не вистачало.  Це і стало першим кроком в розробці нашого Modular HIL Test Bench.

Зі збільшенням кількості тестів зростало навантаження на пристрій керування тестовим середовищем, і його ресурс в якийсь момент закінчився.  Замість розділення тестів на частини (для чого необхідно було б не тільки розділити програмну частину, але і створити нові апаратні стенди), було запропоновано використати додатковий контролер, який опрацьовуватиме нові сценарії паралельно з тим, що вже існував. Зважаючи на значну різницю у строках виконання та дешевизну, пропозиція, звісно, «зайшла». Одним із переломних моментів при програмуванні нового контролера було використання того ж програмного стека технологій, що і для основного пристрою. Тепер розробнику не доводилось «перемикатись» зі звичайного «С» на малювання блок схем та оновлення FPGA, що значно прискорило процес розробки та налагодження тестів. А новий контролер, хоч і був слабшим за свого «колегу», та з оптимізованим кодом  виконував значно більшу кількість завдань.  На цьому етапі вдалося використати високошвидкісну комунікацію по SPI інтерфейсу з різними пристроями водночас.

Оскільки нова система працювала стабільно, то  при додаванні чи модифікації чинних тестів, вони додатково переносились на новий контролер. А при необхідності використання нового апаратного функціонала –  розроблявся новий апаратний модуль, керував яким, зрозуміло, новий контролер.


Висновок перший

В наш час вимоги до пристроїв змінюються швидше, ніж час, який потрібен на розробку повного рішення. Припускаю, що після завершення роботи над повним рішенням, воно було б не актуальне. Саме тому, під час нашого процесу розробки ми використали такий підхід коли при появі нової вимоги створюється лише новий максимально простий модуль (а не переробляється вся система), що дозволяє задовольнити дану вимогу з мінімальними фінансовими й часовими витратами.


Переваги рішення 

Приблизно за пів року часу стару систему було поступово замінено на нашу розробку. Кількість апаратних модулів зростала, і створювати зв’язки між ними ставало дедалі важче.  Для розв’язання проблеми модулі та інтерфейси між ними було стандартизовано. Всі вони з’єднувались між собою за допомогою основної плати, на якій були розташовані слоти для розширення. Фактично, саме тоді й з’явився термін «Modular HIL Test Bench», оскільки з основною платою рішення стало модульною системою.

Зважаючи на успіх, нашу систему почали активно використовувати інші команди замовника. Оскільки система модульна – вона підійшла практично всім. Наприклад:

  • Потрібна додаткова периферія? Можна просто створити потрібний модуль;
  • Щось застаріло, чи не підходить? Модуль можна дуже легко змінити, без впливу на систему загалом;
  • Не вистачає ресурсів контролера? Його завжди можна замінити на більш потужний, адже програмна частина теж має модульну структуру і майже не прив’язана до самого MCU.

Попри те, що автоматизоване тестування практично повністю перейшло на нову систему, залишалась необхідність підтримувати старе рішення, адже воно все ще використовувалось для ручного тестування. Фінальним в цій історії стало написання GUI аплікації, що з’єднувалась зі стендом і містила необхідний для ручного тестування функціонал. Додатково GUI дозволяє запускати також автоматичні тести, збирати та аналізувати логи, і на даний час знаходиться в активній розробці.


Висновок другий

Основною перевагою цього рішення є модульність. Вона спрощує впровадження системи в проєкт, надає швидку можливість розширення, є простою у використанні (адже використовуються тільки потрібні модулі), забезпечує можливість заміни старого модуля на новий, що дозволяє легко впроваджувати нові технології. Розширення такої системи є максимально швидким та дешевим – час та вартість розробки нового модуля завжди менші, ніж створення комплексного рішення. Завдяки цим перевагам створена система застосовується для тестування нових «embedded» проєктів. У поточному ж проєкті, завдяки впровадженню даного рішення, вартість затрат на тестування зменшилась приблизно у десять разів. 


 

Автор: Ніна Гаушус, Senior Specialist, People Development, Consultant, GlobalLogic Ukraine

Чи був у вас колись план розвитку, який став для вас тягарем? Скільки ваших сертифікатів, що повинні були допомогти в побудові кар’єри, припадають пилом на поличці? Скільки онлайн-курсів ви так і не закінчили?

Все навколо вимагає розвитку і ми хаотично хапаємося за кожну можливість, проєкт, завдання, але не завжди доводимо їх до кінця. Тому що головне питання — як наші ініціативи пов’язані з нашими кар’єрними цілями. Це саме те питання, над яким часто сміються: «Ким ти себе бачиш через 2, 5, 10 років?». Щодо користі цього питання на інтерв’ю можна дискутувати, але відповісти на нього для себе корисно — це допоможе намітити план розвитку.

Кожен план починається з цілі. Як же зрозуміти, чи правильно сформульована ціль? Як прибрати сумніви? Чи вистачить системи SMART або потрібно ще щось? Ми хочемо поділитися з вами тонкощами, які допоможуть вам перевірити цілі на міцність.

Аналіз ситуації. Перед тим, як приступити до чіткого формування цілі, почніть з аналізу поточної ситуації. Так ви зрозумієте вихідну точку і намічену точку, до якої хочете прийти. Дайте відповідь для себе на такі питання:

  • Як виникла ця ціль?
  • Чому вона важлива саме зараз?
  • Хто ще зацікавлений в досягненні цієї цілі?
  • Проаналізуйте, що зараз відбувається у вас в кар’єрі (дії, бажання, події, гроші, люди, емоції). Що влаштовує, що хочеться залишити, а що хочеться змінити? Як це пов’язано з ціллю, як на неї впливає?
  • Визначте до якого кар’єрного вектору належить ваша ціль. Що ви хочете отримати в результаті? Навіщо це вам?

Існують п’ять основних векторів кар’єри:

  1. грошовий;
  2. статусний;
  3. посадовий;
  4. професійний;
  5. стабільний.

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

  • Відповідальність. Цілі можуть перебувати в трьох зонах:
  • Зона Контролю — зона вашого особистого контролю, 100% відповідальності за результат лежить на вас.
  • Зона Впливу — залучені інші люди, ви залежите від зовнішніх обставин.
  • Зона Невизначеності — майже нічого від вас не залежить.

Часто кар’єрні цілі потрапляють в Зону Впливу, де, наприклад, залучено менеджера. Коли у цілі є умовності «якщо менеджер…», «якщо проєкт…», то ця невизначеність створює напругу і може вести до демотивації та вигорання. Намагайтеся перевести ціль в вашу Зону Контролю, відповідаючи на питання «Що я можу робити?». Наприклад, ви хочете, щоб замовнику сподобалося ваше демо. Ви не можете вплинути на замовника. Відповідаючи на питання «Що я можу зробити?», «Як перевести ціль під свій контроль?», можна переформулювати ціль інакше: «Провести презентацію на вищому рівні». І досягненні цієї цілі вже залежить тільки від вас.

Глобальні й стратегічні цілі. Наскільки далекосяжними повинні бути цілі? Знову повертаємося до питання «Ким ви бачите себе через 5-10 років?». Подобається вам, чи не подобається планувати, але загальний курс все ж бажано визначити. Ви можете коригувати його в процесі, але ви вже будете рухатися визначеною дорогою, а не по бездоріжжю незрозуміло в який бік.

Глобальна ціль дає відповідь на питання: «Навіщо я досягаю поточних цілей?», є своєрідною дороговказною зіркою вашого кар’єрного маршруту.

Кожен день ставте собі питання: «Наскільки важливим є те, що я зараз роблю?» — це допоможе вам прибрати все зайве. Якщо, наприклад, через два роки ви хочете зайняти позицію архітектора, але витрачаєте свій час на курс маркетингу (тому, що на нього наразі діє 90% знижка), можливо, потрібно задати собі питання: «Наскільки важливо те, що я зараз роблю саме для моєї цілі?» і відмовитися від цього.

Кар’єрний план. Запланувати кар’єрний план і визначити стратегічні цілі на шляху досягнення глобальної цілі вам допоможе техніка «План з кінця»:

  • Запишіть свою глобальну ціль (наприклад, стати Engineering Director через п’ять років).
  • Яким буде передостанній крок перед досягненням глобальної цілі (наприклад, стати за два роки до цього Senior Project Manager)?
  • Яким буде крок перед цим (наприклад, отримати позицію Project manager ще за 2 роки до цього)?

І так далі, поки ви не дійдете до сьогоднішнього дня. Це допоможе вам скласти повний кар’єрний маршрут, а також може допомогти в оцінці термінів. Можете не розписувати ретельно віддалені кроки — на дорозі можуть бути розвилки. Головне для вас зараз намітити основний напрямок і основні пункти маршруту. Корисно, що протягом довгого періоду у вас завжди буде відповідь на питання «Яка моя наступна ціль?», «Заради чого я зараз це роблю?» — це теж буде джерелом натхнення. Вас буде надихати не тільки кінцевий результат, а й сам маршрут, щоденні дії.

Після складання довгострокового плану беріть за орієнтир вашу найближчу ціль на рік-півроку та складайте за нею докладний кар’єрний план або Individual Development Plan (IDP). Що таке IDP та як його скласти та вирости від Trainee до Big Boss, читайте в цій статті.

SMART-ER. Для правильного цілепокладання використовуйте модель SMART. Згідно з нею, ціль повинна бути:

  1. Specific (конкретною).
  2. Measurable (вимірною).
  3. Achievable (досяжною).
  4. Relevant (реальною, значимою).
  5. Time-bound (обмеженою в часі).

Але щоб додати до цієї формули мотивацію, пропонуємо користуватися покращеною моделлю — SMART-ER, де E (Exciting), нагадує, що ціль повинна надихати, а R (Rewarding), що вона повинна приносити нагороду. Що саме буде нагородою, визначаєте ви.

Драйв і цінності. Іноді буває, що ми ставимо цілі, які якийсь час нас надихають, але потім все йде на спад і ціль вже не «драйвить», а тисне. Часто це означає, що ціль є помилковою, нав’язаною. Це показник рівня навіть не мотивації, а цінностей. Хоча мотиви в плануванні та досягненні цілі є дуже важливими, але вони більш ситуативні та змінюються від поточних потреб.

Цінності ж є більш постійними та глибинними — саме вони допомагають нам визначитися з нашими справжніми цілями. Наприклад, ви можете вибрати вищу компенсацію (тому що у цей момент у вас буде включений мотив «гроші») при виконанні неприємних для вас завдань, що може призвести до внутрішнього конфлікту особистості або вигорання. Тому кожен раз, коли ви ставите собі цілі або робите вибір, оцінюйте їх згідно з системою ваших цінностей. Якщо ви не можете чітко визначити свій список цінностей, саме час попрацювати над цим. Або хоча б почніть з відповідей на наступні питання:

  • Що для мене важливо отримувати від роботи? Що мені приносить задоволення? Чому? Заради чого я цим займаюся?
  • Якби я розповів про свою ціль іншим, що мені потрібно сказати, щоб переконати, що ціль по-справжньому чогось варта?
  • Чи готовий я на щоденні дії на шляху до своєї цілі? На труднощі, з якими можу зіткнутися? Марк Менсон в книзі «Тонке мистецтво пофігізму» ділився корисною справою, як перевірити цілі. Подумайте, як ви будете страждати на шляху до досягнення результату. Чи готові ви до цих щоденних страждань? Якщо так — це ваша ціль. Це можна порівняти зі спортом, з бажанням мати підтягнуте тіло. Якщо ти готовий щодня тренуватися, страждати від болю у м’язах, переборювати себе — це твоя справжня ціль.
  • Чи готовий я робити ці щоденні дії безкоштовно? А якби у мене було 1 000 000 доларів, продовжував би я йти до цієї цілі? Чому? Для чого я це роблю?

Обмеження. Навіть якщо ваші цілі вас неймовірно мотивують, ви все ж можете їх не досягти, якщо існують серйозні обмеження, ризики. Важливо постаратися максимально повно намалювати можливу картину ризиків і усунути їх або намітити план можливих дій. Як це зробити? Для початку, відповісти собі на питання:

  • Що може перешкоджати досягненню цілі?
  • Що я можу зробити для усунення цих перешкод?
  • Чи можна це зробити самостійно або мені потрібна чиясь допомога, порада?
  • Які перешкоди я створюю собі сам?
  • Що мені потрібно робити по-іншому?
  • Які дії з побудови кар’єри виявилися помилковими в минулому? В чому була помилка? Як цього не повторити?

Опрацювання цих обмежень допоможе перевірити міцність та істинність вашої цілі, чи готові ви працювати з викликами, складнощами, змінити свою поведінку заради неї.

Уявімо. Уявіть, що ваша ціль вже досягнута.

  • Який ви, що ви робите? Як це вплинуло на ваше оточення? На ваші щоденні дії? На ваше життя в цілому?
  • Що у вас змінилося — що ви придбали, що ви втратили з досягненням цілі?
  • Чи подобається вам ця картина?

Якщо так, то згадуйте її частіше. Якщо ні — подумайте ще над ціллю та її істинністю для вас.

Підсумуємо. При формуванні цілі важливо:

    • Проаналізувати ситуацію, в якій вона виникла.
    • Проаналізувати, чи відповідає вона заданому кар’єрному вектору.
    • Перевести ціль в 100% зону вашого контролю, де 100% відповідальності за результат лежить на вас.
    • Проаналізувати свої глобальні та стратегічні цілі, які входять в ваш кар’єрний план на 3, 5, 10 років.
    • Ставити цілі, використовуючи модель SMART-ER.
    • Перевірити, наскільки ціль відповідає вашим цінностям.
    • Проаналізувати ризики та обмеження на шляху досягнення цілі та скласти план щодо їх усунення.
    • Візуалізувати майбутній результат і проаналізувати, як зміниться ваше життя з досягненням поставленої цілі.

Визначилися з цілями? Надихнулися? Тепер саме час приступати до формування плану розвитку!

  • URL copied!