Prowadzone przez instruktorów kursy szkoleniowe CI/CD (Continuous Integration / Continuous Delivery) na żywo w trybie online lub w siedzibie klienta demonstrują poprzez interaktywne ćwiczenia praktyczne podstawy i zaawansowane koncepcje CI/CD.
Szkolenie CI/CD jest dostępne jako "szkolenie na żywo online" lub "szkolenie na żywo na miejscu". Szkolenie na żywo online (inaczej "zdalne szkolenie na żywo") odbywa się za pośrednictwem interaktywnego, zdalnego pulpitu. Szkolenie na żywo na miejscu może być prowadzone lokalnie w siedzibie klienta w Olsztyn lub w korporacyjnych centrach szkoleniowych NobleProg w Olsztyn.
NobleProg - lokalny dostawca szkoleń
Olsztyn
sale szkoleniowe NobleProg, ul. Gietkowska 6a, Olsztyn, poland, 10-170
Sala o charakterze szkoleniowo – konferencyjnym z pełnym wyposażeniem audio-wizualnym.
Funkcjonalne meble zapewniają możliwość ustawienie ich w układzie konferencyjnym, szkolnym, warsztatowym lub kinowym w zależności od potrzeb Klienta.
To prowadzone przez instruktora szkolenie na żywo w Olsztyn (na miejscu lub zdalnie) jest przeznaczone dla średnio zaawansowanych i zaawansowanych programistów, DevOps specjalistów i architektów, którzy chcą projektować, wdrażać i zarządzać odpornymi aplikacjami przy użyciu mikrousług, kontenerów i potoków ciągłej integracji/ciągłego wdrażania (CI/CD).
Pod koniec tego szkolenia uczestnicy będą mogli
Zrozumieć i wdrożyć architekturę mikrousług.
Wdrażać i zarządzać aplikacjami kontenerowymi za pomocą Docker i Kubernetes.
Konfigurować i optymalizować potoki CI/CD do zautomatyzowanych wdrożeń.
Stosować najlepsze praktyki w zakresie bezpieczeństwa, monitorowania i obserwowalności.
To szkolenie prowadzone przez instruktora w trybie Olsztyn (online lub na miejscu) obejmuje zaawansowane konfiguracje Jenkinsa, techniki bezpieczeństwa i skalowania, i jest skierowane do inżynierów DevOps oraz architektów oprogramowania, którzy chcą zdobyć umiejętności w dostosowywaniu Jenkinsa do skomplikowanych projektów oprogramowania.
Po zakończeniu tego szkolenia uczestnicy będą w stanie:
Optymalizować Jenkinsa dla projektów oprogramowania na poziomie przedsiębiorstwa.
Wdrażać zaawansowane środki bezpieczeństwa.
Budować skomplikowane i skalowalne linię montażową.
Efektywnie diagnozować i utrzymywać instalacje Jenkinsa.
To prowadzone przez instruktora szkolenie na żywo w Olsztyn (online lub na miejscu) jest skierowane do programistów, którzy chcą poznać i zastosować podstawy ciągłej integracji dla Java.
Po zakończeniu tego szkolenia uczestnicy będą w stanie
To szkolenie prowadzone przez instruktora (online lub na miejscu) omawia podstawowe pojęcia i sposób użycia Jenkins, skierowane jest do programistów i inżynierów DevOps, którzy chcą skonfigurować Jenkins, utworzyć i skonfigurować zadania oraz zautomatyzować kluczowe aspekty procesu rozwoju oprogramowania.
Na zakończenie tego szkolenia uczestnicy będą w stanie:
Zrozumieć zasady ciągłej integracji i ciągłego dostarczania (CI/CD).
Zainstalować i skonfigurować Jenkins do automatyzacji oprogramowania.
Tworzyć i zarządzać zadaniami Jenkins do budowania i testowania aplikacji.
Konfigurować i dostosowywać zautomatyzowane linie montażowe do wdrażania oprogramowania.
SonarQube to platforma przeznaczona do ciągłej inspekcji jakości i bezpieczeństwa kodu poprzez statyczną analizę i raportowanie skierowane na programistów.
Ten kurs prowadzony przez instruktora (online lub stacjonarnie) jest skierowany do programistów średniozaawansowanych, inżynierów DevOps oraz specjalistów ds. bezpieczeństwa, którzy chcą wdrożyć statyczną analizę kodu, zintegrować SonarQube z pipeline'ami Azure DevOps oraz wzmocnić praktyki bezpiecznego programowania.
Na koniec tego szkolenia uczestnicy będą mogli:
Wytłumaczyć architekturę SonarQube, główne funkcje oraz zestawy zasad skupione na bezpieczeństwie.
Skonfigurować SonarScanner z popularnymi narzędziami budowy, takimi jak Maven, Gradle i Ant.
Zintegrować SonarQube z pipeline'ami Azure DevOps oraz zaimportować Azure Repos w celu ciągłej analizy.
Zdefiniować i dostosować parametry analizy, dodać niestandardowe zasady za pomocą API SonarQube oraz interpretować raporty bezpieczeństwa.
Zastosować poprawki metodologii bezpiecznego programowania oraz przypisać odpowiedzialności w procesie CI/CD.
Wykonawać analizy ręczne w przykładowych repozytoriach (Java + Quarkus i Angular) oraz rozwiązywać wykryte problemy.
Format kursu
Interaktywne wykłady i dyskusje.
Prowadzone, praktyczne laboratoria z użyciem rzeczywistych repozytoriów.
Żywą konfigurację, testowanie i rozwiązywanie problemów w środowisku Azure DevOps + SonarQube.
Opcje dostosowania kursu
W celu złożenia wniosku o dostosowaną wersję tego szkolenia (inne stosy językowe, głębsza integracja DevOps lub rozszerzone laboratoria), proszę skontaktować się z nami, aby ustalić.
To prowadzone przez instruktora szkolenie na żywo w Olsztyn (online lub na miejscu) jest przeznaczone dla inżynierów, którzy chcą używać Spinnaker do częstego i ciągłego wdrażania oprogramowania w AWS lub Kubernetes.
Po zakończeniu tego szkolenia uczestnicy będą w stanie
Instalacja i konfiguracja Spinnaker dla zaawansowanych operacji.
Integracja Spinnaker z istniejącymi narzędziami do ciągłej integracji, takimi jak Jenkins.
Zrozumieć wewnętrzną architekturę Spinnaker i konstrukcje przepływu pracy wdrażania.
Tworzenie potoków do wdrażania oprogramowania na Kubernetes.
Tworzenie potoków do wdrażania oprogramowania w AWS.
Agile Software Testing to seria praktyk testowania, które zapewniają zwrot opłat za kwestie jakości oprogramowania w sposób terminowy i ciągły, zgodnie z zasadami zwinnego rozwoju.
Ciągła integracja (CI) odnosi się do wszystkich programistów w zespole, którzy łączą swoją pracę kilka razy dziennie.
To prowadzone przez instruktora szkolenie na żywo w Olsztyn (na miejscu lub zdalnie) jest przeznaczone dla administratorów systemów i programistów, którzy chcą używać Argo CD do automatyzacji wdrażania i zarządzania cyklem życia aplikacji.
Pod koniec tego szkolenia uczestnicy będą mogli zautomatyzować, monitorować, audytować i wycofywać swoje Kubernetes systemy za pomocą Argo CD.
To prowadzone przez instruktora szkolenie na żywo w Olsztyn (na miejscu lub zdalnie) jest przeznaczone dla programistów, którzy chcą tworzyć, testować, wdrażać i monitorować oprogramowanie kontenerowe w chmurze, bez konieczności dostarczania infrastruktury lub zarządzania nią.
Po zakończeniu tego szkolenia uczestnicy będą w stanie
Zrozumieć i zastosować podejście konfiguracyjne jako kod do konfigurowania infrastruktury.
Tworzyć niestandardowe skonfigurowane Docker kontenery do wdrażania aplikacji w chmurze.
Wdrażać oprogramowanie w wielu środowiskach.
Monitorować wdrożenia za pomocą Bitbucket Pipelines Deployment Dashboard.
To prowadzone przez instruktora szkolenie na żywo Olsztyn (na miejscu lub zdalnie) jest przeznaczone dla programistów lub DevOps inżynierów, którzy chcą budować potoki automatyzacji przy użyciu praktyk CI/CD z Python.
Pod koniec tego szkolenia uczestnicy będą mogli
Skonfigurować niezbędne środowisko programistyczne, aby rozpocząć budowanie potoków CI/CD z Python.
Budować zautomatyzowane potoki do testowania i publikowania pakietów Python przy użyciu Travis-CI.
Zautomatyzować wdrażanie aplikacji kontenerowych za pomocą Docker i Heroku.
Ciągła integracja (CI) to praktyka programistyczna, w której programiści łączą zmiany w swoim kodzie tak często, jak to możliwe, aby szybko wykrywać i lokalizować błędy.
W tym prowadzonym przez instruktora szkoleniu na żywo uczestnicy poznają podstawy Continuous Integration for JavaScript podczas konfigurowania procesu ciągłej integracji dla projektu JavaScript.
Po zakończeniu tego szkolenia uczestnicy będą w stanie
Zrozumienie podstaw ciągłej integracji
Zbudują własny system ciągłej integracji dla swoich projektów JavaScript
Uczestnicy
Programiści
Specjaliści IT
Inżynierowie DevOps
Menedżerowie biznesowi
Format kursu
Część wykładu, część dyskusji, ćwiczenia i ciężka praktyka praktyczna
To prowadzone przez instruktora szkolenie na żywo w Olsztyn (na miejscu lub zdalnie) jest przeznaczone dla inżynierów, którzy chcą korzystać z narzędzi open source do automatyzacji procesu tworzenia, testowania i wdrażania PHP aplikacji i usług.
Pod koniec tego szkolenia uczestnicy będą mogli
Zainstalować i skonfigurować różne narzędzia open source, aby umożliwić ciągłą integrację, testowanie i wdrażanie.
Zrozumieć zalety i wady korzystania z różnych narzędzi CI typu open source, takich jak Gitlab CI i Jenkins.
Połączyć narzędzia CI z narzędziami open source do testowania jednostkowego, a także testowania integracyjnego aplikacji PHP.
Ten kurs koncentruje się na praktycznej implementacji i narzędziach. Zakłada dobrą znajomość zasad teoretycznych (patrz kurs DEVOPS), ponieważ koncentruje się na najnowszych narzędziach i metodach wdrażania zasad DevOps.
To prowadzone przez instruktora szkolenie na żywo w Olsztyn (online lub na miejscu) jest przeznaczone dla inżynierów DevOp, którzy chcą zoptymalizować i uprościć proces CI/CD za pomocą Docker i Jenkins.
Po zakończeniu tego szkolenia uczestnicy będą w stanie
Automatyzuj dostarczanie kodu i wdrażanie potoków za pomocą Jenkins.
Buduj aplikację przy użyciu Docker i Docker File.
Konfigurowanie opcji uwierzytelniania w celu zwiększenia bezpieczeństwa.
"Szkolenie Wdrożenie procesu Continuous Integration / Continuous Delivery (CI/CD) z użyciem GitLab CI" pozwala zrozumieć i wdrożyć skuteczne procesy CI/CD, usprawniające cykl życia projektu. Uczestnicy zdobędą umiejętności konfiguracji środowiska CI/CD, optymalizując procesy i oszczędzając czas programistów. Bazując na platformie GitLab, kurs obejmuje instalację, konfigurację, tworzenie plików konfiguracyjnych, oraz zaawansowane funkcje, takie jak AutoDevOps czy wykorzystanie klastrów Kubernetes. Praktyczne studium przypadku obejmuje proces CI/CD dla projektu opartego na PHP/Magento, z zerowym downtime podczas deployu.
To prowadzone przez instruktora szkolenie na żywo w Olsztyn (na miejscu lub zdalnie) jest przeznaczone dla DevOps inżynierów, którzy chcą skonfigurować, wdrożyć i zarządzać przepływem pracy wdrażania oprogramowania opartego na Git dla swoich Kubernetes aplikacji.
Pod koniec tego szkolenia uczestnicy będą mogli
Zainstalować i skonfigurować Spinnaker i Terraform.
Zrozumieć korzyści płynące z GitOps w porównaniu z tradycyjnymi CI/CD i Infrastructure-as-Code (IAC).
Odejść od utrzymywania skryptów. Skonfigurować i wykonać dobrze zdefiniowany proces wdrażania.
Stosowanie najlepszych praktyk w zakresie wdrażania, zarządzania i monitorowania rozwiązań natywnych dla chmury.
Odzyskiwanie wdrożeń po częściowych awariach bez ręcznej interwencji.
To prowadzone przez instruktora szkolenie na żywo w Olsztyn obejmuje narzędzia i techniki potrzebne do przeprowadzenia ciągłej integracji projektów oprogramowania w środowisku Agile. Uczestnicy wykonują serię praktycznych ćwiczeń podczas całego kursu, aby zastosować swoją wiedzę w rzeczywistych sytuacjach. Zachęcamy do interakcji między instruktorem a uczestnikami. Omawiane są rzeczywiste przypadki, a konkretne kwestie i pytania są rozwiązywane i rozwiązywane w klasie.
To prowadzone przez instruktora szkolenie na żywo w Olsztyn (online lub na miejscu) jest przeznaczone dla inżynierów, którzy chcą używać Jenkins 2 do tworzenia potoków automatyzujących proces przenoszenia aplikacji z fazy rozwoju do produkcji.
Po zakończeniu tego szkolenia uczestnicy będą w stanie
Instalacja i konfiguracja Jenkins 2.
Zastosowanie podejścia skryptowego do automatyzacji każdego etapu procesu wdrażania oprogramowania.
Automatycznie generuj kompilacje aplikacji, gdy oprogramowanie jest sprawdzane w systemie kontroli wersji.
Automatyczne uruchamianie kompilacji, testowania i pakowania aplikacji.
Szybkie reagowanie na powiadomienia i raporty, gdy coś pójdzie nie tak.
Instalacja dodatkowych wtyczek w celu rozszerzenia Jenkins.
Kiedy programiści kończą pisanie fragmentu kodu, często integrują swój kod z aplikacją, kopiują aplikację do folderu, uruchamiają instalator aplikacji, a następnie inicjalizują aplikację, aby sprawdzić, czy działa zgodnie z oczekiwaniami. To ręczne podejście nie skaluje się zbyt dobrze, jest żmudne, bardzo podatne na błędy i nie oferuje mechanizmu śledzenia zmian w trakcie procesu.
Lepszym podejściem byłoby zautomatyzowanie procesu przy użyciu Continuous Integration. Ciągła integracja odnosi się do procesów, narzędzi i infrastruktury potrzebnych do automatyzacji tworzenia, wdrażania i testowania aplikacji.
W tym prowadzonym przez instruktora szkoleniu na żywo (na miejscu lub zdalnie) uczestnicy dowiedzą się, jak przekształcić tradycyjne, ręczne (lub pół-ręczne) podejście do wdrażania oprogramowania w zwinną, ciągłą integrację (CI) przy użyciu Jenkins. W trakcie kursu uczestnicy wykonują szereg praktycznych ćwiczeń laboratoryjnych na żywo, wykorzystując zdobytą wiedzę do rozwiązywania różnych problemów związanych z tworzeniem i wdrażaniem oprogramowania. Zachęca się do interakcji między prowadzącym a uczestnikami. Omawiane są rzeczywiste przypadki, a konkretne kwestie i pytania są poruszane i rozwiązywane podczas całego szkolenia. Szkolenie jest szczególnie skoncentrowane na rozwoju aplikacji .Net.
Pod koniec tego szkolenia uczestnicy będą w stanie:
Zainstaluj i skonfiguruj Jenkins do tworzenia aplikacji .Net
Użyj Jenkins, aby zautomatyzować proces sprawdzania i scalania kodu źródłowego .Net w repozytorium kodu.
Wykorzystanie Jenkins do automatyzacji procesu pobierania, kompilowania i wdrażania aplikacji na serwerze wydań.
Integracja Jenkins z innymi narzędziami do tworzenia oprogramowania, takimi jak narzędzia do śledzenia zgłoszeń i
Uczestnicy
Programiści .Net
Inżynierowie kompilacji
Inżynierowie QA
Kierownicy projektów
Menedżerowie wydań
Inżynierowie DevOps
Format kursu
Część wykładu, część dyskusji, ćwiczenia i ciężka praktyka praktyczna
Uwaga
Aby zamówić niestandardowe szkolenie dla tego kursu, skontaktuj się z nami.
To prowadzone przez instruktora szkolenie na żywo w Olsztyn (online lub na miejscu) jest przeznaczone dla inżynierów, którzy chcą używać Jenkins X do tworzenia zautomatyzowanych, gotowych do pracy w chmurze potoków CI/CD na Kubernetes.
Po zakończeniu tego szkolenia uczestnicy będą w stanie
Instalacja i konfiguracja Jenkins X.
Kodowanie odpornych potoków CI/CD przy użyciu wszechstronnego języka DSL (Domain Specific Language).
Tworzenie potoków CI/CD wykorzystujących popularne technologie, takie jak GitHub, Kubernetes i kontenery Docker.
Łączenie Jenkins X z innymi popularnymi narzędziami, takimi jak Helm, Prow i Skaffold.
Wdrażaj aplikacje w dowolnym środowisku, zarówno w chmurze, jak i lokalnie.
W tym prowadzonym przez instruktora szkoleniu na żywo w Olsztyn (na miejscu lub zdalnie) uczestnicy dowiedzą się, jak tworzyć, aktualizować i utrzymywać aplikacje za pomocą OpenShift Container Platform.
Pod koniec tego szkolenia uczestnicy będą mogli:
Zrozumieć OCI (Open Containers Initiative) i jego implikacje dla korzystania z silników kontenerowych, takich jak Docker w OpenShift.
Zrozumieć związek między różnymi wersjami OpenShift (OKP, OpenShift Container Platform, Red Hat OpenShift itp.)
Automatyzacja procesu dostarczania oprogramowania.
Stosowanie zasad DevOps w celu ciągłego dostarczania oprogramowania.
Szkolenie jest otwarte zarówno dla programistów, Scrum Masterów, Product Ownerów, jak i niektórych aspektów działu biznesowego. Celem szkolenia jest przybliżenie tematów Quality Assurance and Continuous Integration i ich miejsca w projektach prowadzonych metodykami zwinnymi. Uczestnicy zyskają szerokie spojrzenie na omawiane zagadnienia, a także praktyczną wiedzę na temat narzędzi i procesów wytwarzania oprogramowania w zgodzie z QA/CI. Przedstawiciele biznesu, będą mogli poznać korzyści płynące z wdrożenia tych narzędzi i procesów i przekładające się zarówno na czas jak i koszty wytwarzania oprogramowania. Prezentowane zagadnienia oparte są na PHP lub Java, w zależności od wymagań klienta.
To szkolenie prowadzone przez instruktora (online lub stacjonarnie) jest skierowane do inżynierów DevOps, którzy chcą używać Selenium do uruchamiania testów Selenium w kontenerach Docker.
Po zakończeniu tego szkolenia uczestnicy będą w stanie:
Tworzyć infrastrukturę automatyzacji testów dla testowania na żądanie.
Rozwojować framework automatyzacji testów przy użyciu Java.
Budować pipeline CI/CD od podstaw z Jenkins i Docker.
To prowadzone przez instruktora szkolenie na żywo w Olsztyn (na miejscu lub zdalnie) jest przeznaczone dla DevOps inżynierów i programistów, którzy chcą używać SonarQube do uruchamiania przeglądów kodu, które są w pełni zintegrowane z łańcuchami narzędzi programistycznych, takimi jak Jenkins, GitHub, Azure DevOps itp.
Pod koniec tego szkolenia uczestnicy będą mogli
Skonfigurować niezbędne środowisko programistyczne, aby rozpocząć uruchamianie automatycznych przeglądów kodu.
Zintegrować SonarQube z narzędziami do ciągłej integracji, takimi jak Jenkins, Azure DevOps itp.
Przeprowadzać ciągłe inspekcje kodu w celu wyeliminowania błędów i luk w zabezpieczeniach.
Zbieranie i analizowanie danych w celu wprowadzania ulepszeń w zakresie czyszczenia, konserwacji i bezpieczeństwa kodu.
To prowadzone przez instruktora szkolenie na żywo w Olsztyn (online lub na miejscu) jest przeznaczone dla programistów i DevOps inżynierów, którzy chcą wykorzystać Tekton Pipelines do wspierania złożonych przepływów pracy związanych z tworzeniem oprogramowania i budowania zautomatyzowanych potoków CI/CD.
Po zakończeniu tego szkolenia uczestnicy będą w stanie
Instalowanie i konfigurowanie Tekton Pipelines i innych podstawowych komponentów Tekton.
Projektowanie i tworzenie bloków potoków do tworzenia oprogramowania w Tekton.
Automatyzacja istniejących potoków i procesów rozwoju przy użyciu koncepcji i zasad frameworka Tekton.
Uruchamianie i zarządzanie potokami Tekton dla różnych typów obciążeń na wielu platformach.
Wdrażanie systemów CI/CD opartych na frameworku Tekton w celu usprawnienia przyszłych projektów rozwoju oprogramowania.
Po zakończeniu tego szkolenia uczestnicy będą w stanie:
Zainstalować i skonfigurować Maven.
Automatyzować testy za pomocą Selenium.
Zarządzać GIT.
Integrować ciągłą integrację.
Format kursu
Interaktywne wykłady i dyskusje.
Wiele ćwiczeń i praktyki.
Ręczne wdrażanie w środowisku live-lab.
Opcje dostosowania kursu
Aby zażądać dostosowanego szkolenia dla tego kursu, prosimy o kontakt w celu uzgodnienia.
Więcej...
Ostatnia aktualizacja:
Opinie uczestników (10)
Zachwycający, praktyczny kurs.
Balavignesh Elumalai - Scottish Power
Szkolenie - SonarQube for DevOps
Przetłumaczone przez sztuczną inteligencję
Trener ma dogłębne doświadczenie i jest dobrze wykształcony. Głębokość wiedzy i pasja do nauczania są wysoko cenione.
Anup Kumar - SMR Automotive Mirrors Stuttgart
Szkolenie - Jenkins 2: Building CI/CD Pipelines
Przetłumaczone przez sztuczną inteligencję
Trener ma dużą wiedzę na ten temat i jest w stanie podać przykłady z prawdziwego świata dzięki swojemu doświadczeniu.
Nouf
Szkolenie - Agile Software Testing with Continuous Integration
Przetłumaczone przez sztuczną inteligencję
Kursant był bardzo dobrze zorganizowany. Na początku wyjaśnił wszystkie narzędzia niezbędne do szkolenia. Trener chętnie wyjaśniał wszystkie wątpliwości, a omówiono również praktyczne przypadki użycia.
Vivek Verma - Global Knowledge Network Training Ltd
Szkolenie - DevOps Practical Implementation and Tools
Przetłumaczone przez sztuczną inteligencję
Bardzo szczegółowy, trener znakomicie zna temat i pokrył wiele zagadnień
Gabriel Kelly Navarro - Opswerks
Szkolenie - Advanced Spinnaker
Przetłumaczone przez sztuczną inteligencję
Tematyka dobrze rozłożona w czasie.
Marek Bukowski - Nabywca Ergo Digital IT GMBH/ Beneficjent Ergo Digital IT GMBH Oddzial w Polsce
Szkolenie - Selenium with Jenkins and Docker
Wszystko. Było bardzo zrozumiałe, a jeśli czegoś nie zrozumieliśmy, Adriano to wyjaśnił.
Zsolt Nagy - W.UP Kft
Szkolenie - OpenShift Container Platform for Developers
Przetłumaczone przez sztuczną inteligencję
Czas na wymianę informacji między uczestnikami.
Gabriel Tendera
Szkolenie - Kontrola jakości i ciągła integracja
Łukasz był bardzo wiedzący, cierpliwy i bardzo otwarty na zaspokojenie mojej ciekawości. Na przykład poprosiłem go o wygenerowanie błędów, aby zobaczyć, jak system na nie zareaguje itp. On iść daleko, aby odpowiedzieć na pytania lub demonstrować funkcjonalności, nawet niektóre z moich pytań były poza zakresem zajęć. On dał mi prawdziwe doświadczenie z systemem. Na pewno zapiszę się na inne zajęcia z nim i polecę go jako nauczyciela innym. Dziękuję, Łukasz!
Tina Henderson
Szkolenie - Test Automation with Selenium and Jenkins
Przetłumaczone przez sztuczną inteligencję
Wszystko. Nie mając wcześniej żadnego doświadczenia z Jenkins, trochę martwiłem się o moją zdolność do nadążania. IPad zapewnił odpowiednie wsparcie/korepetycje, kiedy poprosiłem o pomoc, dzięki czemu mógłem śledzić prezentację na poziomie, który mnie zadowolił.
Graham Congdon
Szkolenie - Jenkins: Continuous integration for Agile development