INŻYNIERIA OPROGRAMOWANIA LAB 1

Podobne dokumenty
Jarosław Kuchta Dokumentacja i Jakość Oprogramowania. Wymagania jakości w Agile Programming

Programowanie zespołowe

Metodyki zwinne wytwarzania oprogramowania

The Agile Way Thomson Reuters case study. Małgorzata Kusyk, PMP Managing Partner, AgilePMO Senior Project Manager, Thomson Reuters

Główne założenia XP. Prostota (Simplicity) Komunikacja (Communication) Sprzężenie zwrotne (Feedback) Odwaga (Agressiveness)

Programowanie zwinne

Feature Driven Development

LEKKIE METODOLOGIE WYTWARZANIA OPROGRAMOWANIA

SYSTEMY INFORMATYCZNE ćwiczenia praktyczne

Zasady organizacji projektów informatycznych

Marcin Kucięba Agile Development

Programowanie zwinne - wprowadzenie. Programowanie ekstremalne. Wstęp Reguły i praktyki SCRUM. Wprowadzenie Role Zdarzenia Artefakty

Egzamin / zaliczenie na ocenę*

Etapy życia oprogramowania

Etapy życia oprogramowania. Modele cyklu życia projektu. Etapy życia oprogramowania. Etapy życia oprogramowania

Podejście tradycyjne. plan wykonanie sekwencyjna natura wykonywanych zadań

Metody wytwarzania oprogramowania. Metody wytwarzania oprogramowania 1/31

Podstawy modelowania programów Kod przedmiotu

Inżynieria oprogramowania (Software Engineering)

Programowanie Zespołowe

MODELE CYKLU ŻYCIA OPROGRAMOWANIA (1) Model kaskadowy (często stosowany w praktyce do projektów o niewielkiej złożonoś

Szybkość w biznesie. Zwinne testowanie oprogramowania (Agile) Mateusz Morawski (mateusz.morawski@hp.com) 14 kwietnia 2015

PRZEWODNIK PO PRZEDMIOCIE

INICJATYWA STUDENCKA. Gdańsk,

Nazwa przedmiotu: MODELOWANIE I ANALIZA SYSTEMÓW INFORMATYCZNYCH. Modeling and analysis of computer systems Forma studiów: Stacjonarne

Wykład VII. Programowanie III - semestr III Kierunek Informatyka. dr inż. Janusz Słupik. Wydział Matematyki Stosowanej Politechniki Śląskiej

PRZEWODNIK PO PRZEDMIOCIE

Wykład 1 Inżynieria Oprogramowania

Planowanie i realizacja zadań w zespole Scrum

Opis metodyki i procesu produkcji oprogramowania

Lekkie metodyki. tworzenia oprogramowania

Organizacja procesu projektowania, rozwoju i serwisowania systemu wspomagającego zarzadzanie uczelnią

Tworzenie gier na urządzenia mobilne

E-ID1S-08-s5. Informatyka. I stopień (I stopień / II stopień) ogólnoakademicki (ogólno akademicki / praktyczny)

PRZEWODNIK PO PRZEDMIOCIE

INICJATYWA STUDENCKA. Gdańsk,

PRZEWODNIK PO PRZEDMIOCIE

Zakres wykładu. Podstawy InŜynierii Oprogramowania

KARTA MODUŁU KSZTAŁCENIA

SYLABUS DOTYCZY CYKLU KSZTAŁCENIA realizacja w roku akademickim 2016/17

SCRUM niełatwe wdrażanie metodyki w praktyce. Adam Krosny

Prowadzenie projektu programistycznego. Modele tworzenia oprogramowania. Programowanie kaskadowe i zwinne. Wykład 9

E-1IZ3-06-s6. Inżynieria Programowania. Informatyka. I stopień (I stopień / II stopień) ogólnoakademicki (ogólno akademicki / praktyczny)

Agile Project Management

Programowanie Zespołowe

Część I - Załącznik nr 7 do SIWZ. Warszawa. 2011r. (dane Wykonawcy) WYKAZ OSÓB, KTÓRYMI BĘDZIE DYSPONOWAŁ WYKONAWCA DO REALIZACJI ZAMÓWIENIA

SYLABUS DOTYCZY CYKLU KSZTAŁCENIA realizacja w roku akademickim 2016/17

Projekt Kompetencyjny - założenia

Jak być agile w projekcie utrzymaniowym? JOANNA SIEMIŃSKA

Agile vs PRINCE /2015 I rok st. magisterskie Informatyka

Jakość w procesie wytwarzania oprogramowania

Studia podyplomowe PROGRAM NAUCZANIA PLAN STUDIÓW

Gry społecznościowe. wykład 0. Joanna Kołodziejczyk. 24 lutego Joanna Kołodziejczyk Gry społecznościowe 24 lutego / 11

NOWE METODYKI PROWADZENIA PROJEKTU

Testowanie w procesie Scrum

Waterfall model. (iteracyjny model kaskadowy) Marcin Wilk

PRZEWODNIK PO PRZEDMIOCIE

REQB POZIOM PODSTAWOWY PRZYKŁADOWY EGZAMIN

Cykle życia systemu informatycznego

Wskazówki projektowe. Programowanie Obiektowe Mateusz Cicheński

Metodyki programowania. Tomasz Kaszuba 2015

Projektowanie zwinne

Iteracyjno-rozwojowy proces tworzenia oprogramowania Wykład 3 część 1

Wprowadzenie do metodologii modelowania systemów informacyjnych. Strategia (1) Strategia (2) Etapy Ŝycia systemu informacyjnego

Błędy procesu tworzenia oprogramowania (Badania firmy Rational Software Corporation)

Akademia ADB Wykład I Praca w grupie i jakość kodu

Zwinne podejście do projektu i produktu Kto? Co? i Jak? Małgorzata Kusyk, PMP, PRINCE2P

Jak opisać wymagania zamawiającego wybrane elementy

Zwinna współpraca programistów i testerów z wykorzystaniem BDD i. by Example (JBehave/Spock/SpecFlow)

INŻYNIERIA OPROGRAMOWANIA

Narzędzia CASE dla.net. Łukasz Popiel

Programowanie zespołowe

WPROWADZENIE DO UML-a

12) Wadą modelu kaskadowego jest: Zagadnienia obowiązujące na egzaminie z inżynierii oprogramowania: 13) Wadą modelu opartego na prototypowaniu jest:

SVN. 10 października Instalacja. Wchodzimy na stronę i pobieramy aplikację. Rysunek 1: Instalacja - krok 1

Zwinne tworzenie aplikacji internetowych typu RIA w środowisku Ruby on Rails

Wstęp do zarządzania projektami

Testujemy dedykowanymi zasobami (ang. agile testers)

KARTA PRZEDMIOTU. 1. Informacje ogólne. 2. Ogólna charakterystyka przedmiotu. Inżynieria oprogramowania, C12

Grupy pytań na egzamin magisterski na kierunku Informatyka (dla studentów niestacjonarnych studiów II stopnia)

Uniwersytet w Białymstoku Wydział Ekonomiczno-Informatyczny w Wilnie SYLLABUS na rok akademicki 2012/2013

Zarządzanie projektami. Porównanie podstawowych metodyk

Usługa: Audyt kodu źródłowego

Projektowanie systemów informatycznych. wykład 6

Co to jest jest oprogramowanie? 8. Co to jest inżynieria oprogramowania? 9. Jaka jest różnica pomiędzy inżynierią oprogramowania a informatyką?

Wstęp do zarządzania projektami

Inżynieria Oprogramowania w Praktyce

mint software Business Solutions Development Team

Testowanie systemów informatycznych Kod przedmiotu

Testowanie oprogramowania

Inżynieria oprogramowania - opis przedmiotu

Główne składowe przedsiębiorstwa: procesy,technologia, ludzie, organizacja.

Inżynieria oprogramowania (Software Engineering)

Podstawy programowania III WYKŁAD 4

LEKKIE METODOLOGIE WYTWARZANIA OPROGRAMOWANIA

Zarządzanie testowaniem wspierane narzędziem HP Quality Center

Ogólne określenie wymagań. Ogólny projekt. Budowa systemu. Ocena systemu. Nie. Tak. System poprawny. Wdrożenie. Określenie.

Inżynieria oprogramowania (Software Engineering) Wykład 1

Projektowanie systemów informatycznych. Roman Simiński programowanie.siminskionline.pl. Cykl życia systemu informatycznego

Transkrypt:

INŻYNIERIA OPROGRAMOWANIA LAB 1 MODELE TWORZENIA OPROGRAMOWANIA dr inż. Joanna Świebocka-Więk

O mnie Kogo szukać? dr inż. Joanna Świebocka-Więk Gdzie szukać: Pokój 216, budynek D10 Zespół Technik Informacyjnych i Biometrii Katedra Informatyki Stosowanej i Fizyki Komputerowej Kiedy szukać? Konsultacje: czwartek 10:20-14:40 (lub inny obopólnie ustalony termin) Gdzie pisać: E-mail: jsw@agh.edu.pl E-mail do przesyłania sprawozdań i projektów: jswprojekty@gmail.com

Czego od Państwa oczekuje? Podziału na zespoły liczące 6-7 osób które w przeciągu semestru wykonają 1 wspólny projekt (80 pkt) Wykonania przez każdego z osobna krótkiej prezentacji na wybrany z listy temat. Lista pojawi się w trakcie semestru. Obecności na każdych zajęciach Systematycznej pracy, która może być weryfikowana np. w postaci krótkiego kolokwium z tematyki poprzednich zajęć

Kim będę w zespole? 1. Kierownik projektu (Team Leader) 2. Inżynier systemowy (może być kilku) 3. Programista (może być kilku) 4. Tester (może być kilku) 5. Inne (po zatwierdzeniu przez Prowadzącego)

Tematyka zajęć 1. Modele tworzenia oprogramowania. 2. Tworzenie harmonogramu pracy 3. Analiza i specyfikacja wymagań 4. Diagramy UML: Część I 5. Diagramy UML: Część II 6. Diagramy UML: Część III 7. Konsultacje i podsumowanie dotychczasowej pracy 8. Implementacja kodu 9. Testy jednostkowe 10.Testy integracyjne. Walidacja a weryfikacja. 11.Testy akceptacyjne i systemowe. Pielęgnacja i konserwacja oprogramowania. 12.Prezentacje studentów: Kierownicy projektu i inżynierowie systemowi. 13.Prezentacje studentów: Programiści. 14.Prezentacje studentów: Testerzy.

INŻYNIERIA OPROGRAMOWANIA TO METODOLOGIA TWORZENIA, OPTYMALIZACJI I DOKUMENTOWANIA OPROGRAMOWANIA

Po co jest Inżynieria Oprogramowania Ryzyko budowy domu a ryzyko projektu informatycznego. Jakie mamy w tym względzie doświadczenie (luka poznawcza)? Kryzys informatyczny w USA i badania Standish Group: obecnie 175 tys. projektów informatycznych/rok (250 mld $), 31% jest przerywanych na etapie pośrednim 52% projektów przekracza pierwotny budżet (typowy system jest droższy od założeń o 89%!) zaledwie 16% projektów kończonych jest terminowo, bez przekraczania budżetu i zmniejszania funkcjonalności

Fakt 60 % funkcjonalności oprogramowania używanych jest rzadko albo wcale

Po co jest Inżynieria Oprogramowania Określenie i charakterystyka podstawowych etapów tworzenia i funkcjonowania oprogramowania Wybór modelu, gwarantującego OPTYMALNY przebieg tych etapów Tworzenie dokumentacji projektów Podstawowe czynności związane z tworzeniem oprogramowania: Określanie wymagań i specyfikacji Projektowanie Implementacja Testowanie - walidacja i weryfikacja Wdrożenie Eksploatacja i konserwacja (pielęgnacja)

1. Inicjalizacja systemu, wstępne planowanie: Określenie obszaru zastosowania systemu informatycznego (wspomaganie, zastąpienie dotychczasowego systemu), studium wykonalności 2. Określenie wymagań, ich analiza i specyfikacja Jakie zagadnienia system ma rozwiązywać? Określenie właściwości systemu, jego wydajności, zasobów sprzętowych, oczekiwań Klienta, niezbędnych do eksploatacji systemu 3. Specyfikacja funkcjonalna (systemowa). Zdefiniowanie obiektów składowych, ich atrybutów i rodzajów przekształceń 4. Dekompozycja problemu. W oparciu o specyfikację i wymagania system dzielony jest na podsystemy (komponenty). Analiza pod kątem zastosowania istniejących rozwiązań informatycznych (samodzielne wykonanie a zakup technologii) 5. Architektura projektu, specyfikacja konfiguracji Zdefiniowanie zależności między komponentami i modułami, z uwzględnieniem ich budowy i specyfikacji wymagań 6. Projektowanie szczegółowe, specyfikacja komponentów Opracowanie metod przetwarzania danych w poszczególnych komponentach 7. Implementacja komponentów i testy jednostkowe Etap tworzenia kodu źródłowego komponentów, testowanie ich podstawowych funkcji 8. Integracja systemu, testy integracyjne i systemowe Sprawdzenie kompletności i zgodności ze specyfikacją komponentów, weryfikacja wydajności 9. Dokumentacja projektu. Opracowanie i uporządkowanie dokumentacji (powstałej w trakcie tworzenia projektu) i dostarczenie systemu 10. Instalacja systemu (procedury instalacyjne, dokumentacja instalacyjna) 11. Szkolenia dla użytkowników (możliwości i ograniczenia systemu) 12. Eksploatacja i konserwacja systemu (testy akceptacyjne usuwanie błędów dostrzeżonych w trakcie użytkowania, rozbudowa systemu, poprawa wydajności)

Nakład pracy przy tworzeniu oprogramowania [%] 7 6 5 15 67 Ekploatacja Testowanie Kodowanie Specyfkacja potrzeb Projektowanie

Źródła błędów w cyklu tworzenia oprogramowania [%] 10 7 27 56 analiza potrzeb projektowanie inne kodowanie

Koszt naprawy błędów [%] 13 1 4 82 analiza potrzeb projektowanie inne kodowanie

Waterfall Wierzę w ten koncept, ale implementacja opisana powyżej jest ryzykowana i naraża się na porażkę. Dr. Winstone W. Royce, Preceedings, IEE WESCON, sierpień 1970

Waterfall Czytelny i przejrzysty, ale niepraktyczny w realizacji Dopóki wszystko nie będzie gotowe, nic nie jest gotowe Konstrukcja i testowanie odbywa się na podstawie NIEZMIENNYCH WYMAGAŃ Poszczególne etapy wykonuje się TYLKO RAZ (każda iteracja znacząco zwiększa koszty całego projektu) poprawność funkcjonalna pojedynczego modułu nie oznacza, iż będzie on współdziałał poprawnie z resztą modułów. Testowanie odbywa się pod koniec projektu

Waterfall - cechy proces fazowy, sekwencyjny; ¼ czasu spędzona na planowaniu; na początku nad projektem pracują eksperci, a następnie szeregowi deweloperzy; z góry przewidziany rezultat końcowy; projekt odnosi sukces, gdy: wszystkie wymagania zostaną zaspokojone, zakończy się w przewidzianym terminie, budżet nie zostanie przekroczony, otrzymany zostanie produkt o ustalonej wcześniej jakości.

Waterfall możliwe problemy niejasne wymagania; rosnący koszt wprowadzania zmian; zawiedzione oczekiwania klientów; brak czasu na testowanie; postęp pracy trudny do określenia w danym momencie; brak możliwości ciągłego zapewnienia jakości; późna integracja modułów oznaczająca późne pojawianie się błędów.

Waterfall-statystyka 52% wymagań zostało zaimplementowanych; 64% powstałych funkcjonalności jest używane rzadko; 34% projektów zakończone sukcesem.

Waterfall kiedy to ma sens? zakres projektu i wymagania się nie zmieniają; zespół doskonale zna technologię; zespół dobrze rozumie wymagania; zespół dobrze oszacował zakres prac do wykonania; nic nie wpłynie na zmianę planu.

Widoczność postępu pracy w tradycyjnym projekcie.

Model V precyzyjnie pokazuje zależności, jakie powinny łączyć kolejne etapy projektu. Każdy etap projektowania kończy się stworzeniem danych wejściowych dla następnej fazy oraz do korespondującej z nim fazy weryfikacji. zachęca do jak najwcześniejszego rozpoczęcia procesu tworzenia planów testów, specyfikacji testowej i samego testowania. dzięki analizie grafu możemy łatwo zidentyfikować obszary, gdzie stworzona dokumentacja powinna być sprawdzona.

Model spiralny

Model spiralny wersja win-win

Agile manifest (2001) Poprzez wytwarzanie oprogramowania oraz pomaganie innym w tym zakresie odkrywamy lepsze sposoby wykonywania tej pracy. W wyniku tych doświadczeń zaczęliśmy przedkładać: Ludzi i ich interakcje nad procedury i narzędzia. Działające oprogramowanie nad wyczerpującą dokumentację. Współpracę z klientem nad negocjację umów. Reagowanie na zmiany nad realizowanie planu. Chociaż doceniamy elementy wymienione po prawej stronie, to jednak bardziej cenimy pozycje po lewej. Kent Beck, Mike Beedle, Arie van Bennekum, Alistair Cockburn, Ward Cunningham, Martin Fowler, James Grenning, Jim Highsmith, Andrew Hunt, Ron Jeffries, Jon Kern, Brian Marick, Robert C. Martin, Steve Mellor, Ken Schwaber, Jeff Sutherland, Dave Thomas

12 zasad (Principles behind the Agile Manifesto) 1. Naszym najwyższym priorytetem jest zadowolenie klienta osiągane przez wczesne i ciągłe dostarczanie wartościowego oprogramowania. 2. Zmiany w wymaganiach są mile widziane nawet na późnych etapach projektu. Proces Agile wykorzystuje zmianę do osiągnięcia przewagi we współzawodnictwie na korzyść klienta. 3. Dostarczaj oprogramowanie często, w odstępach czasu od kilku tygodni do kilku miesięcy, preferując mniejsze odstępy czasowe. 4. Ludzie biznesu i deweloperzy muszą pracować razem codziennie przez cały czas trwania projektu. 5. Projekty powierzaj zmotywowanym jednostkom. Daj im środowisko i wsparcie, którego potrzebują i zaufaj im, że praca zostanie wykonana. 6. Najskuteczniejszą i najwydajniejszą metodą przekazywania informacji w zespole deweloperów jest rozmowa w cztery oczy. 7. Działające oprogramowanie jest podstawową miarą postępu. 8. Procesy Agile promują zrównoważony rozwój. Sponsorzy, deweloperzy i użytkownicy powinni być w stanie utrzymać stałe tempo. 9. Ciągła koncentracja na technicznej doskonałości i dobrym projekcie poprawia zwinność 10. Prostota sztuka zwiększania ilości pracy niewykonanej jest niezbędna. 11. Najlepsze architektury, wymagania i projekty wyłaniają się z samoorganizujących się zespołów. 12. W regularnych odstępach czasu zespół zastanawia się, jak zwiększyć wydajność, a następnie odpowiednio dopasowuje swoje zachowanie.

Metodyki zwinne Metodyka Crystal (Crystal family), Projektowanie zorientowane na właściwości (Feature Driven Development), Modelowanie zwinne (Agile Modeling), Programowanie ekstremalne (Extreme Programming), Adaptacyjny rozwój oprogramowania (Adaptive Software Development), Metodyka scrum (Scrum development), Prototypowanie (Prototyping methodology), Szybkie programowanie internetowe (Internet Speed Development), Pragmatyczne programowanie (Pragmatic Programming).

Ale czy Agile jest dla Ciebie? 1. Przystosowanie do zmian 2. Krótki cykle/częste dostarczanie 3. Prosty projekt 4. Programowanie w parach 5. Refaktoryzacja 6. Retrospektywa 7. Wiedza ukryta 8. Rozwój sterowany testami 9. Dobry kontakt z Klientem 10. Wykwalifikowany zespół który się doskonali

Zadanie domowe Podzielić się na zespoły projektowe. Podział winien być poparty listą nazwisk wraz z przyporządkowanymi funkcjami w zespole. Wybór metodyki tworzenia oprogramowania W przeciągu 4 dni roboczych należy dostarczyć wizję 5 projektów, wraz z opisem na około połowę strony A4. Spośród zgłoszonych tematów Prowadzący wybierze 1 temat do realizacji. W przypadku przekroczenia terminu, Prowadzący zleci wykonanie projektu na zadany przez siebie temat.

V. Satir

Projektant wie, że osiągnął doskonałość, nie wtedy, kiedy nie można nic dodać, ale wtedy, kiedy nie można nic ująć. Antoine De Saint-Exupery