что такое инженерия и процесс разработки в целом
Кто такой и чем занимается Data QA Engineer
Автор этой статьи в блоге Stack Overflow — Data QA Engineer, то есть инженер обеспечения качества данных. По его словам, у него есть друзья, занятые в сфере технологий и разработки ПО, которые не совсем понимают, что такое тестирование данных, зачем оно нужно и как оно вписывается в мир программирования.
Это вполне объяснимо: наука о данных — совершенно новая область, и даже те, кто работает с данными каждый день, должны оставаться открытыми ко всем изменениям в работе. О профессии Data QA Engineer рассказываем к старту курса по Data Engineering.
Чтобы разобраться с тем, как работает тестирование данных, сначала нужно разобраться с тем, что такое инженерия данных.
Инженерия данных и их анализ
Давайте начнём с того, что такое данные. Данные — это агрегированная информация, которая хранится в инструменте для ведения бизнеса. Будет ли это инструмент в виде электронной таблицы или базы данных, зависит от предприятия, но мы начнём именно с этого места, где данные создаются.
Сырые данные в источнике мало кому полезны. Здесь и приходит на помощь инженерия данных. Инженерией данных мы называем процесс получения сырых данных и их превращения в полезные: это извлечение, преобразование, загрузка, то есть Extract, Transform, Load — ETL.
После извлечения данных из источников их можно преобразовать согласно потребностям бизнеса и загрузить в инструменты бизнес-анализа. После этого бизнес-аналитики и финансовые аналитики смогут воспользоваться наборами данных, чтобы создать отчёты, диаграммы и другие метрики по запросу. Именно метрики информируют людей, которые принимают решения.
Преобразование данных
Преобразование данных — это, пожалуй, самый важный момент в инженерии данных. Возьмём пример — розничный бизнес с несколькими магазинами. В старых магазинах используется устаревшая система точек продаж (POS), а в новых — более современная система.
В каждом типе POS-системы транзакции записываются и хранятся по-разному и в разных базах данных. Если владелец бизнеса хочет видеть еженедельный отчёт о продажах, это потребует агрегирования транзакций из обеих систем.
Иными словами, необходим процесс преобразования, который позволит получить информацию о транзакциях из каждой системы и свести разрозненные системы воедино таким образом, чтобы они обрели смысл. Здесь возникнут вопросы о данных транзакции и о связи этих данных с отчётом продаж. Как в старой и новой системах учитываются возвраты, если сравнивать их с фактической продажей?
Посмотрим внимательнее. Старая POS хранит всё в базе данных, которая несовместима с базой данных новой POS, поэтому нет возможности просто объединить информацию. Прежде чем транзакции можно будет свести воедино, необходим этап преобразования данных. Напомню, что владелец бизнеса просто хочет получать агрегированную информацию о продажах в виде отчёта.
Потребность в отчёте о продажах и объединение разрозненных систем, — вот два важнейших элемента, которые определяют смысл набора данных. В нашем примере мы искали сначала определение «продаж», а позже нам понадобился отчёт по ним. Как вы понимаете, туманное и субъективное определение продаж бизнесом может сильно затруднить тестирование данных.
Измерение качества данных
Определить качество данных без какого-либо эталона измерения невозможно. Как правило, в рамках процессов тестирования эталоном являются отчётные показатели. Возникает вопрос: как найти нечто измеримое, чтобы проверить продукт с точки зрения данных?
Шесть измерений качества данных
Текущий отраслевой стандарт валидации [проверки корректности] данных — тестирование моделей данных при помощи шести измерений качества данных, конвейеров, архитектуры и многого другого. Эти шесть измерений впервые определены в документе «Шесть основных измерений для оценки качества данных». Документ написан британским отделением Ассоциации управления данными (DAMA) в 2013 году.
Шесть измерений — это в основном согласованная серия проверочных показателей. Эти показатели используются для оценки качества любого набора данных и помогают инженерам по качеству данных и Data-инженерам создавать измеримые показатели валидности, которые можно улучшить. Вот эти метрики:
Согласованность. Если данные копируются в несколько баз данных, систем, таблиц и отчётов, они должны оставаться неизменными, что делает их согласованными. Например, текущий почтовый индекс клиента всегда должен состоять из пяти цифр (девяти, если вы используете ZIP+4), независимо от того, где обнаружены данные.
Точность. Возможно, самый туманный показатель качества данных — это то, насколько точно они отражают реальное явление или объект. Пример: в таблице есть столбец, представляющий общую сумму в долларах по всем транзакциям клиента. Другой столбец представляет общую сумму транзакций. Значения этих столбцов должны чётко прослеживаться до источников, где возможно доказать, что итоги соответствуют транзакциям, которые имели место.
Корректность. В любом конкретном поле набора данных, скорее всего, есть требование к типу данных. Вы не ожидаете увидеть числа в поле state, значения которого ограничены двухбуквенными обозначениями штатов США: NY, CA или IL. Целое число в этом поле — некорректные данные.
Уникальность. Для каждой уникальной записи, ожидаемой в базе данных, должно существовать поле, которое уникально идентифицирует каждую запись, например номер счёта клиента в случае базы данных интернет-магазинов. Уникальность номера счёта может иметь решающее значение для идентификации повторяющихся операций по счёту одного клиента.
Полнота. Данные являются неполными, если в них отсутствуют критически важные поля. Например, в записи о финансовой транзакции, возможно, для каждой операции должна быть метка времени. Если её нет, набор данных о транзакциях неполный.
Своевременность. Своевременность данных определяется потребностями бизнеса. Например, если набор данных необходимо обновлять ежедневно, метрика тестирования своевременности набора данных также будет означать «ежедневно».
Тестирование и проверка любого набора данных должны охватывать каждое из этих измерений. Особенно это касается автоматизированных модульных тестов, но об этом позже. Если вы хотите погрузиться в тему, прочитайте эту замечательную статью.
Тестирование данных в процессе инженерии данных
Теперь, когда мы знаем о шести измерениях качества данных, о том, как инженерия данных работает в целом, а также знаем о критической важности бизнес-определений потребности в данных, задача состоит в том, чтобы собрать всё это вместе и составить план тестирования.
Инженеры по качеству данных находятся в самом центре инженерии данных; мы поддерживаем техническую работу инженеров по предоставлению набора данных и проверяем данные вместе с бизнес-аналитиками.
Типы QA-тестов данных
В тестировании ПО есть несколько распространённых типов тестов качества. Эти тесты выявляют ошибки, подтверждают работоспособность компонентов и исследуют ожидаемое поведение программного обеспечения. Такие тесты полезны и в тестировании данных. Если вы хоть немного знакомы с ними, значит, вы уже кое-что понимаете в тестировании данных. Это
Модульные тесты — это небольшие тесты, встроенные в код моделирования данных, чтобы определить небольшие точки останова внутри критических блоков кода, которые необходимы для обеспечения базовой функциональности. К примеру, возможно, есть столбец, в данных которого не должно быть значений NULL. Быстрый модульный тест может проверить поле.
Интеграционные тесты проверяют работу совокупности частей программы или конвейера, а не какой-то одной части. В примере с конвейером данных интеграционные тесты проверяют, что весь процесс ETL успешно выполняется от начала до конца.
Дымовые тесты — это быстрые тесты для проверки наиболее важных и обычных частей конвейера данных на наличие сбоев. Термин возник при тестировании компьютеров, когда первым испытанием было включить машину в сеть и проверить, не идёт ли из неё дым. Как вы понимаете, если появлялся дым, инженеры выключали машину и пробовали снова.
Регрессионные тесты — это серия тестов для проверки основных операций программы. Набор тестов рассматривает стандартные функциональные части кода, которые никогда не должны изменяться, поэтому тесты называют регрессионными. Обычно это основной набор, который выполняют перед выпуском продукта. В смысле данных регрессия обычно охватывает критически важные преобразования.
Тестирование новой функциональности — тесты для проверки новых компонентов («функций»), которые были добавлены в программу поверх её текущих операций. Они добавляются в наборы регрессионных тестов, если новые функции критичны для производственных релизов и должны оставаться неизменными.
Это обычные типы тестов, которые многие команды разработчиков ПО используют регулярно. И они могут применяться в тестировании данных.
Data QA Engineer должен повышать ценность работы инженеров для бизнеса и предоставлять полезную обратную связь. Data QA почти всегда начинается с ручного тестирования, особенно на предприятиях с устаревшими базами и технологиями хранилищ данных.
На ноутбуке инженера по контролю качества данных, скорее всего, будет несколько сотен SQL-скриптов. Но такое ручное тестирование по-прежнему должно проверять шесть аспектов качества данных, не становясь узким местом производственных релизов. При этом автоматизация тестирования данных вполне возможна, особенно когда речь идёт о модульных тестах и ассертах (ассерты — это тесты, которые проверяют предположения).
По моему опыту, одна из важнейших задач инженера по контролю качества данных заключается в распространении информации о модульных тестах, встроенных в конвейер данных.
Модульные тесты, реализованные инженером данных во время разработки преобразования данных, могут выявить ошибки в данных ещё до того, как инженеры по контролю качества данных увидят набор данных.
Data Engineer не привыкли к модульным тестам: это больше практика разработки ПО, но я не единственный, кто считает, что инженерии данных нужно больше модульного тестирования в плане культуры. Популярные фреймворки с открытым исходным кодом, к примеру data build tool (dbt), имеют встроенные модульные тесты, которые могут предотвратить проблемы с полнотой, уникальностью и своевременностью данных. Другие инструменты проверки с открытым исходным кодом, такие как Great Expectations, размещают поверх конвейера данных набор модульных тестов-ассертов.
Автоматизация
Автоматизация в мире качества данных — важнейший аспект. Например, используя сочетание модульного тестирования и тестирования полноты данных, Data QA Engineer могут написать небольшой, быстрый автоматизированный тест, который проверяет наличие любых значений NULL в критически важном поле данных.
Чем больше в вашем конвейере данных автоматизированных тестов, которые различными способами проверяют критические параметры качества данных, тем меньше работы приходится выполнять Data Engineer.
Что, если бы вместо генерации таблицы, просмотра её с помощью SQL каждый раз и подключения к базе данных, инженер по данным имел встроенный набор регрессионных тестов, который выполнял бы ежедневные проверки за него? Такими видами автоматизации и разработки тестов и заняты Data QA Engineer.
Итоги
Тестирование данных — это уникальная область, она развивается и изменяется каждый день. Общепризнанных стандартов качества данных не так много, и даже такие стандарты, как шесть измерений качества данных, вызывают споры. Всё больше областей Data Science, таких как машинное обучение и искусственный интеллект, развиваются и создают новые способы проверки точности, согласованности, полноты и других критериев качества данных.
Качество данных сегодня в значительной степени зависит от субъективного значения набора данных, а также от потребностей людей на том конце конвейера данных. Этот факт затрудняет поиск эталонов тестирования и улучшения качества данных, но можно воспользоваться знаниями о полезных типах тестов, а также знаниями об измерениях качества данных. Чем больше мы будем понимать, как использовать данные, тем активнее будут развиваться метрики качества данных, и тем лучше мы будем понимать тестирование данных.
Продолжить изучение Data Engineering и Data Science вы сможете на наших курсах:
Data Science и Machine Learning
Что такое инженерия? Кто такой инженер?
Что такое инженерия? Кто такой инженер — определение и виды инженерного дела.
Инженерное дело — это приложение науки и математики для решения задач. Пока ученые и изобретатели придумывают инновации, именно инженеры применяют эти открытия в реальном мире.
Инженерное дело является частью технического образования, которое направлено на привлечение студентов к изучению естествознания, технологий, инженерии и математики, однако как дисциплина она практикуется на протяжении тысяч лет.
Смотрите полное видео про инженеров и инженерию на нашем Youtube канале: Возможно, это лушче чем читать данную статью. А тажке ✔️ Подписывайтесь на наш youtube канал.
Вы можете увидеть образцы инженерной мысли в пирамидах Гизы, в Стоунхендже, Парфеноне и других местах. Тем не менее, современные инженеры работают во многих областях, а также в строительных конструкциях.
Инженеры работают над всем, от клеточных мембран до строительства дамб и протезирования зубов и суставов, до повышения эффективности двигателей и транспорта и разработки возобновляемых источников энергии.
Само слово «двигатель» происходит от латинского слова «ingenium» (ок. 1250 г.), что означает «врожденное качество, особенно умственная сила и следовательно, умное изобретение».
Инженерное дело вышло за рамки военных приложений и стало применяться к гражданским сооружениям, таким как мосты и здания, что привело к созданию термина «гражданское строительство», чтобы отличить его от первоначальной области военной инженерии.
Чем занимается инженер?
Инженеры участвуют в проектировании, оценке, разработке, тестировании, модификации, проверке и обслуживании широкого спектра продуктов, конструкций и систем. Это включает в себя все: от рекомендации материалов и процессов, надзора за производственными и строительными процессами и проведения анализа и расследования отказов до предоставления консультационных услуг и обучения инженерии студентам и стажерам.
Виды инженерии
Есть много различных типов инженерии, часто разделенных на области, в которых работает инженер. Например, инженеры, работающие в нефтегазовой отрасли, могут быть инженерами-нефтяниками, а инженеры, работающие в области сельского хозяйства, могут называться сельскохозяйственными инженерами.
Хотя существуют некоторые традиционные области инженерии, такие как машиностроение и гражданское строительство, в других областях инженерии требуется наложение различных специальностей. Так, например, инженеру-строителю также может потребоваться понимание структурной инженерии, или аэрокосмическому инженеру также может потребоваться понимание аспектов электрической или компьютерной инженерии.
Эти типы инженерии широко известны как междисциплинарная инженерия и включают, среди прочего, производственную инженерию, акустическую инженерию, коррозионную инженерию, аэрокосмическую, автомобильную, компьютерную, текстильную, геологическую, материаловедческую и ядерную инженерию. Все эти области инженерии относятся к отраслям инженерии, которые представлены 36 лицензированными организациями-членами Инженерного совета Великобритании.
Вот некоторые из традиционных и наиболее распространенных междисциплинарных инженерных областей:
1. Машиностроение
2. Электротехника
Инженеры-электрики работают над проектированием, испытанием, производством, строительством, контролем, контролем и проверкой электрических и электронных устройств, компонентов, машин и систем. Они варьируются по размеру от мельчайших микрочипов до крупных систем передачи и выработки электроэнергии. Это включает в себя все, от радиовещательной техники до электромагнитных устройств, компьютерных систем, телекоммуникаций и многого другого.
3. Гражданское строительство
Инженеры-строители участвуют в проектировании, строительстве, обслуживании и инспектировании крупных объектов гражданской инфраструктуры, включая дороги, железные дороги, мосты, туннели и плотины.
Работая как над государственными, так и над частными проектами, инженеры-строители традиционно работают в таких суб-дисциплинах, как экологическая инженерия, строительная инженерия или геодезия.
Как упоминалось выше, гражданское строительство изначально создавалось, чтобы отличать его от военного.
4. Аэрокосмическая техника
Как специализированная отрасль машиностроения и электротехники, аэрокосмическая техника занимается проектированием, производством и испытаниями самолетов и космических аппаратов, включая все части и компоненты. Охватывая все, от аэродинамики и эффективности транспортных средств до электрических систем управления и навигации, большая часть опыта также используется для других транспортных средств, таких как автомобили.
Инженеры-ядерщики работают над проектированием, производством, строительством, эксплуатацией и испытаниями оборудования, систем и процессов для производства и управления ядерной энергией. От реакторов атомных электростанций до ускорителей частиц, инженеры-ядерщики также работают над такими факторами, как мониторинг и хранение ядерных отходов, чтобы защитить людей от потенциально опасных ситуаций.
6. Биомедицинская инженерия
Биомедицинские инженеры занимаются проектированием систем, оборудования и устройств для использования в здравоохранении и медицине. Работая с медицинскими специалистами, такими как врачи, терапевты и исследователи, биомедицинские инженеры могут удовлетворить требования профессионалов здравоохранения.
7. Химическая инженерия
Инженеры-химики используют принципы физики, химии, биологии и инженерии для проектирования оборудования, систем и процессов для очистки сырья для смешивания, компаундирования и обработки химикатов для различных продуктов. Осуществляя процессы в промышленных масштабах, инженеры-химики участвуют в различных процессах, от переработки нефти до ферментации и производства биомолекул.
8. Компьютерная инженерия
Компьютерные инженеры проектируют компьютерное оборудование, системы, сети и программное обеспечение. Компьютерная инженерия объединяет другие дисциплины, такие как электротехника и информатика, а также разработку программного обеспечения и дизайн.
9. Промышленное проектирование
Промышленные инженеры проектируют и оптимизируют объекты, оборудование и системы для производства, обработки материалов и других промышленных применений.
10. Экологическая инженерия
Инженеры-экологи заботятся о предотвращении, удалении и устранении источников загрязнения, которые влияют на окружающую среду. Эти инженеры, измеряя уровни загрязнения, определяя источники загрязнения и очищая загрязненные территории, должны работать в соответствии с государственными постановлениями.
11. Морская инженерия
Морская инженерия связана с любыми инженерными задачами на океанах или вблизи них. Это включает в себя проектирование и разработку судоходства, подводных лодок, нефтяных вышек, бортовых судов, гаваней, заводов и многого другого. Эта специализированная область инженерии сочетает в себе другие виды инженерии, включая машиностроение, электротехнику, гражданское строительство и программирование.
Почему важна инженерия
Техника была частью истории человечества в той или иной форме на протяжении тысяч лет. Конечно, по мере того, как наши знания и понимание науки и математики росли, наш инженерный опыт и компетенция также улучшались.
Сегодняшние инженеры используют самые передовые технологии, наряду с установленными научными принципами, чтобы применять передовые решения и инновации для решения реальных мировых проблем.
Трудно переоценить важность инженерии для истории человечества, от проектирования транспортных систем до электроснабжения наших домов, инженерия окружает нас повсюду, вплоть до устройства, которое вы используете, чтобы прочитать это.
Поскольку наши научные знания продолжают развиваться, инженеры найдут способы использовать эту новую информацию и применить ее к миру вокруг нас.
Вывод
Техника окружает нас повсюду и является неотъемлемой частью нашей повседневной жизни. Это то, что многие люди считают само собой разумеющимся, но именно инженерия позволяет вам делать кофе по утрам, обогревать или охладить ваш дом, позволяет путешествовать, общаться с помощью мобильного устройства и многое другое.
Как написал Джеймс А. Миченер в своем романе « Космос » 1983 года : «Ученые мечтают о великих делах. А делают их инженеры».
Раздел Профориентация. Образовательный и карьерный маршрут
Статьи
Инженерия – философия будущего, или путешествие в четвертый мир
Раньше: «Я мыслю, следовательно, я существую» (Декарт, 1634).
Сейчас: «Я создаю и использую вещи, следовательно, я существую» (Ли Боцун, 1993).
Философия инженерии
В конце XX – начале XXI в. возникла наобходимость объяснить результаты технического прогресса, и исследователи из Китая, Европы и Америки выдвинули программу философии инженерии.
Инженерия является созданием новых материальных предметов и имеет существенные отличия от понятий науки и техники. Вопрос о том, может ли человечество творить, создавая вещи, и как именно оно может это делать, составляют основные вопросы философии инженерии.
В философии инженерии ядром является человеческая деятельность по созданию и использованию вещей, а также результаты этой деятельности. Германский инженер, философ, представитель философии инженерных технологий Фридрих Дессауэр (1881–1963) считал необходимым написать книгу, основой которой станет понятие «производства».
Китайский философ Ли Боцун утверждает: «Человеческая деятельность по изготовлению вещей слишком универсальна, философ не может не замечать ее; продукты человеческой производственной деятельности слишком универсальны, философ не может не пользоваться ими. В связи с этим, тема изготовления вещей должна непременно попасть в поле зрения философа и стать главной темой в философском поле.
Подъем «создания вещей» на один уровень с бытием («материей» и «сознанием») становится новым концептуальным прорывом в развитии философии.
К. Поппер разработал теорию трех миров: это мир физических объектов или физических состояний, мир состояний сознания или мыслительных (ментальных) состояний, и мир объективного содержания мышления, прежде всего содержания научных идей, поэтических мыслей и произведений искусства [Поппер 2006]. Хотя, в связи с третьим миром, Поппер упоминает продукты созидательной деятельности людей (например, самолеты), однако по сути он обращает внимание на человеческую деятельность в сфере духовного творчества и упускает из виду материальную созидательную деятельность людей.
Инженерия – это процесс создания новых вещей в соответствии с предварительно установленными целями. Инженерное сообщество может на основании целей инженерной деятельности выбирать и концентрировать технику, внедрять ее в инженерный процесс, а также направлять и ограничивать инженерный процесс. При этом техника – лишь один из многих необходимых факторов, влияющих на инженерную деятельность. Не существует “чисто технической” инженерии. В качестве необходимых компонентов в инженерную деятельность входит не только техника, но также входят необходимые факторы, связанные с управлением, экономикой, политической системой, обществом (включая политические и юридические аспекты), этикой и т.д.
Целью инженерной деятельности является строительство, созидание несуществовавших в природной действительности объектов в процессе проектирования и проведения инженерных работ.
Главные результаты инженерной деятельности – это материальная продукция и материальные объекты, являющиеся прямым воплощением материальных благ.
Главным действующим лицом в инженерии является инженерное сообщество. В рамках одного инженерного проекта формируется инженерное сообщество, состоящее из предпринимателей, конструкторов, инженеров, инвесторов, рабочих и других лиц, играющих различные социальные роли, стремящихся к выгоде за счет реализации инженерного проекта.
Инженерная деятельность проявляется в форме проектов, которые обладают уникальностью.
Технический прогресс и технические революции основаны на непрерывной модификации технологий и на инновациях, и как результат, получение духовного признания в обществе и материального поощрения. Идёт непрерывный процесс отбрасывания или усовершенствования старых и введение новых технологий. Суть инженерной культуры сводится к приложению всех сил для предотвращения неудач, обеспечению конечного успеха и ощутимого результата.
В философии инженерии играют большую роль такие понятия, как строить, использовать, выбирать, конструировать, планировать, проектировать, управлять, эксплуатировать, обслуживать.
Россия активно участвует в инженерном мировом движении. Так, например, в 2016/2017 году состоится чемпионат WorldSkills БРИКС, организация и проведение которого находятся под председательством России в БРИКС. Первым пунктом плана мероприятий требуется определить перечень наиболее востребованных профессий в развивающихся быстрыми темпами экономиках БРИКС. В Деловой программе этого форума планируется обсудить вопросы подготовки квалифицированных инженерно-технических кадров, которые способны осваивать в короткие сроки сложносоставные профессии и интеграционные компетенции. Кроме того, планируется создание собственных новых производств или технологического переоснащения и модернизации уже существующих. |
Категории инженерии
Инженерия – настолько широкая область, что имеет целый ряд категорий, которые объединяет одно общее – в их основе всегда лежит процесс создания человеком чего-то нового.
Кроме привычных технических инженерных категорий по направлениям экономики, например:
Появились инженерные категории в других областях – в бизнесе, психологии, организации и управлении.
Сегодня человек смело внедряется в процесс создания новых или изменения существующих организмов, впоэтому появился целый спектр инженерных биологических категорий.