ITA-111 Programowanie zespołowe Opis kursu Niniejszy kurs
Transkrypt
ITA-111 Programowanie zespołowe Opis kursu Niniejszy kurs
ITA-111 Programowanie zespołowe Opis kursu Niniejszy kurs stanowi wprowadzenie w problematykę wytwarzania oprogramowania w zespołach programistycznych. Zawartość merytoryczną kursu stanowią zarówno elementy teorii z zakresu inżynierii oprogramowania, zarządzania projektami jak i ćwiczenia praktyczne pokazujące jak efektywnie wykorzystywać współczesny narzędzie wspierające pracę grupową. W ramach kursu wykorzystywane są narzędzia firmy Microsoft, w tym głównie Microsoft Project, Visual Studio 2010 oraz Team Foundation Server 2010. W oparciu o te narzędzia Autor stara się pokazać w jaki sposób można efektywnie wspomagać tworzenie aplikacji w grupach programistów wykorzystując przede wszystkim lekką metodykę kierowania projektami SCRUM. Cel kursu Celem kursu jest zapoznanie z problematyką tworzenia aplikacji w zespołach programistycznych, w tym wskazanie narzędzi i technik wspomagających taką pracę. Geneza Jeśli obecnie zapytamy kogokolwiek, co to jest "programowanie", to z pewnością otrzymamy odpowiedzi tak różne, jak wiedza i doświadczenie naszych respondentów. Większości laików - osób nie związanych bezpośrednio z informatyką - powie, że programowanie to taka "magiczna czynność" zastrzeżona dla niewielkiej grupy specjalistów komputerowych. Osoby z większym doświadczeniem wymienią wiele języków programowania, być może zaczną nawet ferować wyroki, który z nich jest lepszy. Osoby, który zajmują się programowaniem zawodowo i na dużą skalę zauważą, że programowanie to nie tylko "programowanie", ale również inżynieria oprogramowania, zarządzanie projektami informatycznymi, projektowanie architektury złożonych systemów informatycznych, projektowanie bezpieczeństwa i wiele, wiele innych. Prawdą jest, że programowanie od momentu "kryzysu inżynierii oprogramowania" (przełom lat 50 i 60-ty ubiegłego wieku) ulegało wielokrotnym transformacją, rzadko były to zmiany kosmetyczne, znacznie częściej przełomowe. Zaczynając od zmiany paradygmatu programowania, a skończywszy na sposobach wytwarzania oprogramowania (takich jak model kaskadowy, czy obecnie popularne metodyki zwinne) - we wszystkich tych obszarach, zmiany były bardzo duże i zawsze wynikające z potrzeb otoczenia. Gdyby szukać przyczyn tego zjawiska można wymienić właściwie te który były zidentyfikowane właśnie już w momencie wspomnianego "kryzysu", czyli: rosnąca złożoność projektów informatycznych, coraz większa presja na szybkość wytwarzania oraz rosnące oczekiwania jakościowe. Wszystko to spowodowało konkretne następstwa, które można ułożyć w pewien ciąg przyczynowo-skutkowy: projekty muszą być pisane w zespołach programistycznych, zespoły nie są, i być nie mogą, jednorodne pod kontem kompetencji - mamy zatem programistów, projektantów, testerów ..., zespoły programistyczne muszą posługiwać się wyspecjalizowanymi narzędziami wspomagającymi tworzenie oprogramowania - mamy więc zintegrowane środowiska programistyczne, narzędzie wspomagające testowanie, pracę w grupie czy tworzenie harmonogramów i rozliczanie czasu i efektów pracy. Podsumowując, obecnie nie ma mowy o tworzenie choćby średniej wielkości projektu w jedną osobę - samotnego strzelca, który robi w projekcie absolutnie wszystko. Piszemy oprogramowanie w grupach, często dużych kilkudziesięcio czy kilkuset osobowych. Pojawia się zatem wiele pytań. Jak ogarnąć złożoność takich projektów? jak przygotować pracownika do pracy i uczestnictwa w takim zespole? Czy musi on znać wszystkie narzędzie jakie stosujemy? Jak nauczyć go myślenia w kategoriach grupy? Jak kontrolować to co robi? Jak utrzymać jakość takich projektów? W ramach przedmiotu "Programowanie zespołowe" chcielibyśmy przekazać wiedzę o możliwości wykorzystania współczesnych narzędzi firmy Microsoft wspomagających pracę zespołu programistycznego. Będą to narzędzie z różnych obszarów pracy takiego zespołu, poniżej wymieniamy je pokrótce. Narzędzia wspomagające prace "biurowe" W każdym projekcie znajdziemy mnóstwo dokumentów, począwszy od analizy przedwdrożeniowej, umowy z kontrahentem poprzez analizę, projekt, czy wreszcie skończywszy na dokumentacji dla klienta. Nie trzeba wymieniać podstawowych narzędzi wspomagających takie prace, jednak warto zwrócić uwagę na te, które ułatwiają choćby procesy modelowania np. Visio. Narzędzia wspomagające kierowanie projektem Właściwie zwykle w tym miejscu kojarzymy jedno narzędzie - Microsoft Project. Zauważmy jednak, że właściwą wydajność otrzymujemy dopiero poprzez integrację tego narzędzia z Project Server czy środowiskiem Visual Studio. Narzędzia programistyczne Nie można wyobrazić sobie wydajnej pracy programisty bez zintegrowane środowiska programistycznego (IDE), ale czy możliwa jest wydajna i spójna praca zespołu bez systemu kontroli wersji? Wszystkie te cechy i wiele innych spełnia Visual Studio 2010. To właśnie to narzędzie będzie w centrum naszych zainteresowań wraz z TFS 2010 - które dostarcza doskonałej platformy do pracy grupowej. Narzędzia do analizy kodu i testowania Obecnie bardzo ważnym aspektem w procesie testowania systemów informatycznych są narzędzia do przeprowadzania zautomatyzowanych testów (czy to jednostkowych, czy modułowych lub innych). W tym miejscu wskażemy jak ten proces jest wspierany przez VS 2010 i TFS 2010. Podobnie pokażemy jak narzędzia te pomagają analizować kod pod kontem różnych parametrów w tym jakościowych.