1 Z. SroczyńskiInżynieria programowania Modele cyklu życia oprogramowania Zdzisław Sroczyński www.sroczynski.pl [email protected] [email protected] 512 491 610 Zdzisław Sroczyński Politechnika Śląska Instytut Matematyki Inżynieria programowania Modele cyklu życia oprogramowania
2 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
3 Z. SroczyńskiInżynieria programowania Modele cyklu życia oprogramowania Katastrofa mostu w Tacoma (7.11.1940 r)
4 Z. SroczyńskiInżynieria programowania Modele cyklu życia oprogramowania Awaria sondy kosmicznej Mariner I (28.07. 1962) Najdroższy myślnik w historii ;)
5 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ś (?)
6 Z. SroczyńskiInżynieria programowania Modele cyklu życia oprogramowania Jakość oprogramowania Spełnienie wymagań użytkownika Niezawodność Ergonomia Efektywność Łatwość konserwacji Efektowność (?)
7 Z. SroczyńskiInżynieria programowania Modele cyklu życia oprogramowania Przykład: ergonomia pośrednictwa graficznego
8 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)!
9 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
10 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
11 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
12 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)
13 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
14 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)
15 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
16 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
17 Z. SroczyńskiInżynieria programowania Modele cyklu życia oprogramowania Model kaskadowy z iteracjami Problem dogmatycznej interpretacji Wprowadzenie iteracji – rozluźnienie założeń
18 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)
19 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
20 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
21 Z. SroczyńskiInżynieria programowania Modele cyklu życia oprogramowania Programowanie odkrywcze, zwinne, ekstremalne - rys
22 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
23 Z. SroczyńskiInżynieria programowania Modele cyklu życia oprogramowania Metoda przyrostowa - rys
24 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
25 Z. SroczyńskiInżynieria programowania Modele cyklu życia oprogramowania Model komponentowy (component-based)
26 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
27 Z. SroczyńskiInżynieria programowania Modele cyklu życia oprogramowania Model spiralny - rys
28 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
29 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
30 Z. SroczyńskiInżynieria programowania Modele cyklu życia oprogramowania Podsumowanie – jakość oprogramowania
31 Z. SroczyńskiInżynieria programowania Modele cyklu życia oprogramowania Dziękuję za uwagę Następny temat: wirtualizacja