Z. SroczyńskiInżynieria programowania Modele cyklu życia oprogramowania Zdzisław Sroczyński Zdzisław Sroczyński Politechnika Śląska Instytut Matematyki Inżynieria programowania Modele cyklu życia oprogramowania
Z. SroczyńskiInżynieria programowania Modele cyklu życia oprogramowania Inżynieria oprogramowania - definicja Inżynieria (o)programowania – dziedzina informatyki, opisująca wszystkie fazy cyklu życia (produkcji) oprogramowania Dążenie do uzyskania wysokiej jakości produktu – oprogramowania Powiązania z innymi dziedzinami: ekonomia, zarządzanie, nauki społeczne
Z. SroczyńskiInżynieria programowania Modele cyklu życia oprogramowania Katastrofa mostu w Tacoma ( r)
Z. SroczyńskiInżynieria programowania Modele cyklu życia oprogramowania Awaria sondy kosmicznej Mariner I ( ) Najdroższy myślnik w historii ;)
Z. SroczyńskiInżynieria programowania Modele cyklu życia oprogramowania „kryzys oprogramowania” Lata 60 XXw Przekraczanie czasu i budżetu projektów IT Akceptowanie błędów Przyczyny: – złożoność – unikalność – trudność oceny stopnia zaawansowania – brak skalowalności Trwa do dziś (?)
Z. SroczyńskiInżynieria programowania Modele cyklu życia oprogramowania Jakość oprogramowania Spełnienie wymagań użytkownika Niezawodność Ergonomia Efektywność Łatwość konserwacji Efektowność (?)
Z. SroczyńskiInżynieria programowania Modele cyklu życia oprogramowania Przykład: ergonomia pośrednictwa graficznego
Z. SroczyńskiInżynieria programowania Modele cyklu życia oprogramowania Podział inżynierii oprogramowania Nurt formalny – Metody formalne: języki specyfikacji, transformacje, dowody poprawności Nurt praktyczny – Notacje graficzne, wiedza i doświadczenie programisty W 2005r. ponad połowa projektów IT w USA była prowadzona w oparciu o techniki strukturalne (formalnie przestarzałe)!
Z. SroczyńskiInżynieria programowania Modele cyklu życia oprogramowania Zadania inżynierii oprogramowania Organizacja przedsięwzięć informatycznych – planowanie, harmonogramowanie, wycena, monitoring, ocena Analiza i projektowanie systemów IT Zwiększanie niezawodności oprogramowania Testowanie systemów IT Przygotowanie dokumentacji technicznej i użytkowej Kontrola jakości Redukcja kosztów konserwacji Praca zespołowa, praca zdalna/uwarunkowania
Z. SroczyńskiInżynieria programowania Modele cyklu życia oprogramowania Zagrożenia Nowe metodyki – poprawa jakości i efektywności w ograniczonym zakresie Konieczność używania specjalistycznych narzędzi CASE (Computer Aided/Assisted Software Engineering) – Upper-CASE (modelowanie i projekt) – Lower-CASE (implementacja, generacja kodu) Istotny narzut czasu potrzebnego na sporządzenie dokumentacji, diagramów i raportów
Z. SroczyńskiInżynieria programowania Modele cyklu życia oprogramowania Model kaskadowy (ang. waterfall) Analogia do innych dziedzin inżynierii Liniowość, ścisła kolejność Wysoki koszt błędów popełnianych na etapach początkowych Brak interakcji z klientem/użytkownikiem
Z. SroczyńskiInżynieria programowania Modele cyklu życia oprogramowania Plan wykładu – cz.1 1. Modele cyklu życia oprogramowania 2. Koncepcje tworzenia złożonego oprogramowania - podejście strukturalne/ podejście obiektowe/RAD, wykorzystanie bibliotek i frameworków 3. Uruchamianie oprogramowania (rodzaje i przyczyny błędów, debugger, refaktoring, praca krokowa, breakpointy, obserwacja zmiennych, wydruki kontrolne)
Z. SroczyńskiInżynieria programowania Modele cyklu życia oprogramowania Plan wykładu – cz.2 4. Testowanie oprogramowania (modele testowania względem specyfikacji/kodu, testowanie GUI) 5. Zarządzanie projektem informatycznym (Narzędzia pracy grupowej-groupware, wersjonowanie, API, zarządzanie projektami) 6. Dokumentacja procesu tworzenia oprogramowania oraz dokumentacja użytkowa 7. Optymalizacja czasowa i pamięciowa programów
Z. SroczyńskiInżynieria programowania Modele cyklu życia oprogramowania Plan wykładu – cz.3 8. Komunikacja program-użytkownik 9. Wdrożenie, utrzymanie i konserwacja oprogramowania (systemy zgłaszania błędów, programy instalacyjne) 10. Ocena jakości oprogramowania (kryteria, metryki) 11. Projektowanie niezawodnego oprogramowania (czynniki, techniki zwiększające odporność na defekty, programowanie zwinne (agile) oraz ekstremalne, wzorce projektowe)
Z. SroczyńskiInżynieria programowania Modele cyklu życia oprogramowania Plan laboratorium 1.Testowanie i uruchamianie 2.Ocena i poprawa efektywności oprogramowania 3.Komunikacja programów z użytkownikiem 4.Zarządzanie projektem informatycznym, notacje wspomagające modelowanie 5.Przygotowywanie programów instalacyjnych 6.Tworzenie dokumentacji użytkowej oprogramowania
Z. SroczyńskiInżynieria programowania Modele cyklu życia oprogramowania Warunki zaliczenia Kolokwium zaliczeniowe na wykładzie – max. 48 pkt + 2pkt aktywność Sprawozdania z lab. oddane w terminie – 6 ćwiczeń lab. w semestrze – Ocena 0-8pkt. – max. 8pkt <1tydz. od zakończenia ćwiczenia – max. 7pkt <2tyg. Od zakończenia ćwiczenia – Łącznie max. 48 pkt + 2pkt aktywność Obecność na laboratorium obowiązkowa
Z. SroczyńskiInżynieria programowania Modele cyklu życia oprogramowania Model kaskadowy z iteracjami Problem dogmatycznej interpretacji Wprowadzenie iteracji – rozluźnienie założeń
Z. SroczyńskiInżynieria programowania Modele cyklu życia oprogramowania Pozostałe modele Model kierowany dokumentami (document-driven) – kosztowny, czasochłonny Prototypowanie (prototyping) Programowanie odkrywcze, zwinne, ekstremalne (exploratory, agile, extreme) Metoda przyrostowa (incremental) Model komponentowy (component-based) Model spiralny (spiral) Transformacje formalne (formal)
Z. SroczyńskiInżynieria programowania Modele cyklu życia oprogramowania Prototypowanie Budowa prototypu przed realizacją pełnej wersji systemu (metodą kaskadową) Można zaoferować nowe funkcjonalności, nieobecne w dotychczasowym modelu działania klienta Wykrycie braków i nieporozumień w specyfikacji wymagań, identyfikacja brakujących usług Szybka demonstracja, szkolenia przed wdrożeniem Koszt budowy prototypu, niezadowolenie klienta Wykorzystanie gotowych komponentów, generatorów GUI, wersja quick-and-dirty
Z. SroczyńskiInżynieria programowania Modele cyklu życia oprogramowania Programowanie odkrywcze, zwinne, ekstremalne (exploratory, agile, extreme) Gdy trudne określenie wymagań klienta Iteracje: – realizacja projektu – weryfikacja przez klienta Utrata sensownej struktury programu (?) Bezpośredni udział klienta Amatorski sposób tworzenia oprogramowania (ocena z 1997r) Nowatorski sposób tworzenia oprogramowania (ocena z 2010r) – Zawsze istnieje działająca wersja oprogramowania
Z. SroczyńskiInżynieria programowania Modele cyklu życia oprogramowania Programowanie odkrywcze, zwinne, ekstremalne - rys
Z. SroczyńskiInżynieria programowania Modele cyklu życia oprogramowania Metoda przyrostowa Dla dużych projektów (?) Wstępny projekt całości systemu Realizacja poszczególnych modułów z odbiorem przez klienta Skraca przerwy w kontaktach z klientem Umożliwia szybkie korzystanie z (części) systemu Reakcja na opóźnienia Konieczność zapewnienia podziału systemu na moduły, zbudowania substytutów jeszcze nie zrealizowanych modułów
Z. SroczyńskiInżynieria programowania Modele cyklu życia oprogramowania Metoda przyrostowa - rys
Z. SroczyńskiInżynieria programowania Modele cyklu życia oprogramowania Model komponentowy (component-based) Biblioteki Języki 4GL (SQL, Oracle Forms) Zewnętrzne aplikacje (przeglądarki plików) SOA (Service-Oriented Architecture) Komponenty etapu projektowania Źródło: zakup, opracowanie własnych fragmentów kodu Zalety: niezawodność, standaryzacja, wykorzystanie zasobów ludzkich, redukcja kosztów Wady: uzależnienie od dostawcy
Z. SroczyńskiInżynieria programowania Modele cyklu życia oprogramowania Model komponentowy (component-based)
Z. SroczyńskiInżynieria programowania Modele cyklu życia oprogramowania Model spiralny (spiral ) Analiza ryzyka – czy warto opracować nową wersję systemu? Konstrukcja – nowa wersja powstaje np. zgodnie z modelem kaskadowym Atestowanie – nowa wersja jest oceniana przez klienta/użytkownika Planowanie – wnioski i cele produkcji dla kolejnej wersji Model ogólny - kolejne rynkowe wersje oprogramowania
Z. SroczyńskiInżynieria programowania Modele cyklu życia oprogramowania Model spiralny - rys
Z. SroczyńskiInżynieria programowania Modele cyklu życia oprogramowania Transformacje formalne (formal transformations) Przejście od formalnej specyfikacji wymagań w pewnym języku deklaratywnym... poprzez n postaci pośrednich... Do kodu wynikowego Powiązania: algorytmika, dowodzenie poprawności i warunku stop dla algorytmu Wysoka niezawodność (teoretycznie) Formalna specyfikacja wymagań = program w języku (bardzo) wysokiego poziomu Mała efektywność Najczęściej rozwiązania mało uniwersalne
Z. SroczyńskiInżynieria programowania Modele cyklu życia oprogramowania Podsumowanie Modeli nie należy traktować dogmatycznie Wiele z modeli jest podobnych lub (częściowo) równoważnych Ocena modeli zmienia się wraz z modą/ upływem czasu Warto dobrać model do wielkości i charakteru prowadzonego projektu
Z. SroczyńskiInżynieria programowania Modele cyklu życia oprogramowania Podsumowanie – jakość oprogramowania
Z. SroczyńskiInżynieria programowania Modele cyklu życia oprogramowania Dziękuję za uwagę Następny temat: wirtualizacja