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.