Pobieranie prezentacji. Proszę czekać

Pobieranie prezentacji. Proszę czekać

Inżynieria Oprogramowania 1. Wstęp Leszek J Chmielewski Wydział Zastosowań Informatyki i Matematyki SGGW www.lchmiel.pl.

Podobne prezentacje


Prezentacja na temat: "Inżynieria Oprogramowania 1. Wstęp Leszek J Chmielewski Wydział Zastosowań Informatyki i Matematyki SGGW www.lchmiel.pl."— Zapis prezentacji:

1 Inżynieria Oprogramowania 1. Wstęp Leszek J Chmielewski Wydział Zastosowań Informatyki i Matematyki SGGW

2 Inżynieria oprogramowania 1. Wstęp 2/51 Plan Inżynieria oprogramowania znaczenie elementy Podstawowe pytania dotyczące inżynierii oprogramowania

3 Inżynieria oprogramowania 1. Wstęp 3/51 Dlaczego? Kryzys oprogramowania Wiek XX: wzrost złożoności oprogramowania Syndrom LOOP: Late Over budget Overtime Poor quality Programiści proponują więcej Klienci też chcą więcej, ale nie tego samego, co jest im oferowane

4 Inżynieria oprogramowania 1. Wstęp 4/51 Kryzys oprogramowania Nie widać jednoznacznego polepszenia

5 Inżynieria oprogramowania 1. Wstęp 5/51 Inżynieria oprogramowania Zastosowanie zdyscyplinowanego systematycznego ilościowego podejścia do rozwoju eksploatacji i utrzymania oprogramowania

6 Inżynieria oprogramowania 1. Wstęp 6/51 Źródła Materiały dra Waldemara Karwowskiego, wykładowcy w poprzednich semestrach Materiały z ważniaka: Ian Sommerville, Inżynieria Oprogramowania, WNT, Warszawa 2003 Ian Sommerville, Software Engineering, Pearson Education Limited, 2001 Włodzimierz Dąbrowski, Kazimierz Subieta, Podstawy inżynierii oprogramowania, Wydawnictwo PJWSTK, Warszawa Inne materiały, osobno cytowane

7 Inżynieria oprogramowania 1. Wstęp 7/51 Inżynieria oprogramowania Gospodarki wszystkich rozwiniętych krajów zależą od oprogramowania Coraz więcej systemów wymaga niezawodnego oprogramowania Inżynieria oprogramowania: teoria, metody i narzędzia związane z wytwarzaniem oprogramowania Jak każda inżynieria

8 Inżynieria oprogramowania 1. Wstęp 8/51 Koszty oprogramowania Koszty oprogramowania są często dominującym składnikiem kosztów całego systemu Zdarza się, że koszt oprogramowania znacznie przekracza samą wartość sprzętu komputerowego, np. komputera osobistego Koszt utrzymania i konserwacji oprogramowania jest większy niż koszt jego wytworzenia Wieloletnia konserwacja oprogramowania może kosztować wielokrotnie więcej niż jego zakup Stąd potrzeba efektywnych metod i dobrych praktyk

9 Inżynieria oprogramowania 1. Wstęp 9/51 Kryzys oprogramowania Uzależnienie organizacji od systemów komputerowych i przyjętych technologii nie są one stabilne w długim horyzoncie czasowym Problemy współdziałania niezależnie zbudowanego oprogramowania szczególnie istotne przy dzisiejszych tendencjach integracyjnych Problemy przystosowania istniejących systemów do nowych wymagań, tendencji i platform sprzętowo- programowych Frustracje informatyków wynikające ze zbyt szybkiego postępu w zakresie narzędzi i metod wytwarzania uciążliwości i długotrwałości procesów produkcji i pielęgnacji oprogramowania znaczące zmiany w przemyśle informatycznym następują co 5-7 miesięcy w porównaniu do 5-7 lat w innych dziedzinach

10 Inżynieria oprogramowania 1. Wstęp 10/51 Kryzys oprogramowania - przyczyny Konflikt pomiędzy odpowiedzialnością, jaka spoczywa na współczesnych SI, a ich zawodnością wynikającą ze złożoności i ciągle niedojrzałych metod tworzenia i weryfikacji oprogramowania Długi i kosztowny cykl tworzenia oprogramowania, wysokie prawdopodobieństwo niepowodzenia Niska kultura ponownego użycia wytworzonych komponentów projektów i oprogramowania (reuse) Niski stopień powtarzalności przedsięwzięć Długi i kosztowny cykl życia SI, wymagający stałych (często globalnych) zmian Eklektyczne, niesystematyczne narzędzia i języki programowania

11 Inżynieria oprogramowania 1. Wstęp 11/51 Źródła złożoności oprogramowania Zespół projektantów podlegający ograniczeniom pamięci, percepcji, wyrażania informacji i komunikacji Dziedzina problemowa, obejmująca ogromną liczbę wzajemnie uzależnionych aspektów i problemów Dziedzina problemowa, obejmująca ogromną liczbę wzajemnie uzależnionych aspektów i problemów Środki i technologie informatyczne: sprzęt, oprogramowanie, sieć, języki, narzędzia, itd. Środki i technologie informatyczne: sprzęt, oprogramowanie, sieć, języki, narzędzia, itd. Oprogramowanie Potencjalni użytkownicy: czynniki psychologiczne, ergonomia, ograniczenia pamięci i percepcji, skłonność do błędów i nadużyć, tajność, prywatność Potencjalni użytkownicy: czynniki psychologiczne, ergonomia, ograniczenia pamięci i percepcji, skłonność do błędów i nadużyć, tajność, prywatność Podstawowym powodem kryzysu oprogramowania jest złożoność produktów informatyki i procesów ich wytwarzania

12 Inżynieria oprogramowania 1. Wstęp 12/51 Pytania o inżynierii oprogramowania Co to jest oprogramowanie? Co to jest inżynieria oprogramowania? Jaka jest różnica pomiędzy inżynierią oprogramowania a informatyką? Jaka jest różnica pomiędzy inżynierią oprogramowania a inżynierią systemów? Co to jest proces tworzenia oprogramowania? Co to jest model procesu tworzenia oprogramowania? Jakie są koszty inżynierii oprogramowania? Jakie właściwości ma dobre oprogramowanie? Jakie są najistotniejsze wyzwania dla inżynierów oprogramowania? Co to jest CASE (Computer-Aided Software Engineering)?

13 Inżynieria oprogramowania 1. Wstęp 13/51 Co to jest oprogramowanie? Są to programy komputerowe, cała związana z nimi dokumentacja i dane konfiguracyjne Rodzaje produktów oprogramowania Powszechne Dostosowane (na zamówienie)

14 Inżynieria oprogramowania 1. Wstęp 14/51 Co to jest inżynieria oprogramowania? Jest to dziedzina inżynierii, która obejmuje wszystkie aspekty tworzenia oprogramowania od fazy początkowej do jego pielęgnacji Inżynierowie oprogramowania pracują w sposób systematyczny i uporządkowany ponieważ jest to najskuteczniejszy sposób tworzenia oprogramowania wysokiej jakości

15 Inżynieria oprogramowania 1. Wstęp 15/51 Jaka jest różnica pomiędzy inżynierią oprogramowania a informatyką? Zasadniczo informatyka obejmuje teorie i podstawowe zasady działania komputerów Inżynieria oprogramowania obejmuje praktyczne problemy związane z tworzeniem oprogramowania Byłoby dobrze, gdyby inżynier programowania znał teorie informatyczne, choć nie zawsze przystają one do rzeczywistości

16 Inżynieria oprogramowania 1. Wstęp 16/51 Jaka jest różnica pomiędzy inżynierią oprogramowania a inżynierią systemów? Inżynieria systemów komputerowych obejmuje wszystkie aspekty tworzenia i ewolucji systemów komputerowych, w których oprogramowanie odgrywa zasadniczą rolę Inżynierowie systemów biorą udział w specyfikacji systemu i definiowania jego ogólnej architektury

17 Inżynieria oprogramowania 1. Wstęp 17/51 Co to jest proces tworzenia oprogramowania? Jest to zbiór czynności i związanych z nimi wyników, które zmierzają do opracowania produktu programowego Przykładowe czynności wspólne dla wszystkich procesów Specyfikacja Projektowanie Budowa Integracja i testowanie

18 Inżynieria oprogramowania 1. Wstęp 18/51 Co to jest model procesu tworzenia oprogramowania? Jest to uproszczona prezentacja procesu tworzenia oprogramowania (model == uproszczenie) Przykłady modeli oprogramowania: Model przepływu prac Model przepływu danych Model rola-akcja Przykłady ogólnych modeli (paradygmatów) tworzenia oprogramowania Model kaskadowy Tworzenie ewolucyjne Formalne przekształcenia Składanie systemu z komponentów ponownego użycia

19 Inżynieria oprogramowania 1. Wstęp 19/51 czas Cykl życiowy oprogramowania Fazy cyklu życiowego oprogramowania: Faza specyfikacji i analizy wymagań modelowanie pojęciowe Faza projektowania projektowanie logiczne Faza konstrukcji (implementacji) projektowanie fizyczne Faza testowania Faza wdrożenia

20 Inżynieria oprogramowania 1. Wstęp 20/51 Modele tworzenia oprogramowania Model kaskadowy najprostszy Model ewolucyjny badawczy dla niezdecydowanego klienta Model spiralny jw., lepiej uwzględnia ryzyko Model przyrostowy lepszy niż kaskadowy, tańszy niż ewolucyjny Model formalny gdy można wszystko formalnie zapisać systemy krytyczne Model z wielokrotnym użyciem komponentów

21 Inżynieria oprogramowania 1. Wstęp 21/51 Model kaskadowy

22 Inżynieria oprogramowania 1. Wstęp 22/51 Model kaskadowy Najpopularniejsze podejście Kolejne etapy następują po sobie: sformułowanie wymagań, zatwierdzenie analiza projektowanie implementacja W czystym modelu kaskadowym każdy etap rozpoczyna się po zakończeniu poprzedniego Wada: brak procesu weryfikacji pomiędzy etapami Zastosowanie w czystej postaci: do projektów krótkich, gdzie wymagania są bardzo dobrze określone, a wątpliwości można wyjaśnić na czas

23 Inżynieria oprogramowania 1. Wstęp 23/51 Model przyrostowy

24 Inżynieria oprogramowania 1. Wstęp 24/51 Model przyrostowy Najpierw określamy wymagania, dokonujemy analizy i określamy ogólną architekturę systemu, zatwierdzenie Następne kroki znane z modelu kaskadowego wykonujemy etapami Pozwala projektować system etapami w przypadku, gdy nie możemy zaprojektować od razu całego systemu nie wiadomo, które funkcje okażą się bardziej istotne zakres przyrostów można zatwierdzić, liczbę niekoniecznie Można lepiej wykorzystać zasoby finansowe oraz zespoły ludzkie Istotna jest faza początkowa, w której należy wyznaczyć zakres całego projektu oraz określić etapy jego realizacji Dla całości systemu, jednokrotnie: kompleksowa analiza architektura projektu Etapowo, przyrostowo jest wykonywana realizacja zgodnie z potrzebami i możliwościami klienta

25 Inżynieria oprogramowania 1. Wstęp 25/51 Model ewolucyjny

26 Inżynieria oprogramowania 1. Wstęp 26/51 Model ewolucyjny Inny rysunek (I. Sommerville): Tworzenie badawcze: celem jest praca z klientem – badanie wymagań i dostarczenie systemu Prototypowanie z porzuceniem: celem jest zrozumienie wymagań klienta – wypracowanie lepszej definicji wymagań Wersja początkowa Tworzenie Specyfikacja Zatwierdzanie Ogólny opis Wersje pośrednie Wersja końcowa

27 Inżynieria oprogramowania 1. Wstęp 27/51 Model ewolucyjny Wdrażamy kolejno coraz bardziej rozbudowane systemy informatyczne Projektowanie nadążne, tzn. że cały czas jesteśmy nastawieni na zmieniający się cel ponieważ wraz z upływem czasu cel ulega zmianie, musimy przez cały czas analizować i kontrolować proces projektowania w ten sposób staramy się zminimalizować straty, spowodowane wadliwym działaniem systemu Kosztem etapowej modyfikacji systemu, uzyskujemy efekt jego aktualności Ważne: mieć końcową wizję projektu i konsekwentnie realizować podzielone na kroki działania wdrożeniowe Problemy: wzrost trudności zarządzania – nie widać procesu nabranie nadmiernego tempa zmian i pojawianie się nowych celów ponad możliwości akceptacji system ma złą strukturę – źle dla dużych systemów specjalne narzędzia do programowania, rzadkie

28 Inżynieria oprogramowania 1. Wstęp 28/51 Model spiralny

29 Inżynieria oprogramowania 1. Wstęp 29/51 Model spiralny Cechą charakterystyczną jest realizacja kolejno poszczególnych zakresów działania systemów System dzieli się na etapy i dla każdego z nich opracowuje się całościowy projekt Zasadą jest, że stawiamy sobie cel i ulepszamy system metodą kolejnych przybliżeń Czas realizacji jest stosunkowo długi, o wiele dłuższy niż w poprzednio opisanych procedurach Stosuje się: dla złożonych i stosunkowo drogich przedsięwzięć, gdzie czas i koszty nie odgrywają istotnej roli, a najważniejsza jest jakość systemu informacyjnego dla projektów, dla których przewidujemy dość długi okres eksploatacji

30 Inżynieria oprogramowania 1. Wstęp 30/51 Model spiralny Ciąg czynności jest następujący, kolejno: planowanie analiza ryzyka konstruowanie weryfikacja Etap konstruowania obejmuje: prototyp, symulację, kodowanie, integrację, testowanie modułów, testowanie całości, wdrożenie Sekwencja ta jest wielokrotnie powtarzana W wyniku realizacji poszczególnych etapów otrzymujemy projekt coraz bardziej doskonały – oczywiście większym kosztem.

31 Inżynieria oprogramowania 1. Wstęp 31/51 Jakie są koszty inżynierii oprogramowania? Koszty wytworzenia oprogramowania można w przybliżeniu określić na 60%, natomiast 40% stanowią koszty testowania Ewolucja oprogramowania może przewyższyć koszty jego wytworzenia Koszty zmian oprogramowania użytkowanego przez długi okres czasu mogą kilkukrotnie przekroczyć koszty jego wytworzenia Koszty zależą od stosowanego modelu

32 Inżynieria oprogramowania 1. Wstęp 32/51 Jakie właściwości ma dobre oprogramowanie? Konkretny zbiór właściwości zależy od zastosowania, niemniej można podać ogólny zbiór właściwości Zdatność do pielęgnacji zdolność do ewolucji zgodnie z potrzebami klientów Niezawodność nie powinno powodować fizycznych lub ekonomicznych katastrof w przypadku awarii Efektywność nie powinno marnotrawić zasobów systemu takich jak pamięć czy czas procesora Użyteczność powinno być użyteczne, bez zbędnego wysiłku ze strony użytkownika (np. interfejsy)

33 Inżynieria oprogramowania 1. Wstęp 33/51 Jakie są najistotniejsze wyzwania dla inżynierów oprogramowania? Wyzwanie dziedzictwa Pielęgnacja i modyfikacji działających dużych systemów, pełniących poważne funkcje gospodarcze Wyzwanie różnorodności Wymóg działania oprogramowania w systemach rozproszonych przy rożnych typach komputerów i systemów wspomagających Wyzwanie doręczenia Wymóg dostarczanie gotowego programowania w skróconym czasie bez utraty jakości

34 Inżynieria oprogramowania 1. Wstęp 34/51 Zadania inżynierii oprogramowania Zadania stojące przed inżynierią oprogramowania w walce z narastającą złożonością oprogramowania: Redukcja tej złożoności Propagowanie wykorzystywania technik i narzędzi ułatwiających pracę nad złożonymi systemami Upowszechnianie metod wspomagających analizę nieznanych problemów oraz ułatwiających wykorzystanie wcześniejszych doświadczeń Usystematyzowanie procesu wytwarzania oprogramowania, tak aby ułatwić jego planowanie i monitorowanie Wytworzenie wśród producentów i nabywców przekonania, że budowa dużego systemu wysokiej jakości jest zadaniem wymagającym profesjonalnego podejścia

35 Inżynieria oprogramowania 1. Wstęp 35/51 Co to są metody inżynierii oprogramowania? Uporządkowane podejście do tworzenia oprogramowania, które obejmuje: Opisy modeli systemu np. Modele obiektów, modele przepływu itp. Reguły ograniczenia, którym podlegają modele systemu Zalecenia heurystyki, które określają dobre zwyczaje projektantów Poradnictwo opisy czynności, które należy wykonać

36 Inżynieria oprogramowania 1. Wstęp 36/51 Modelowanie pojęciowe Modelowanie pojęciowe (conceptual modeling) oraz model pojęciowy (conceptual model) odnoszą się do procesów myślowych, do wyobrażeń towarzyszących pracy nad oprogramowaniem Projektant, programista, itp. muszą dokładnie wyobrazić sobie problem oraz metodę jego rozwiązania. Zasadnicze procesy tworzenia oprogramowania zachodzą więc w ludzkim umyśle i nie są związane z jakimkolwiek językiem programowania czy jakimkolwiek narzędziem w ogóle Modelowanie pojęciowe może (i powinno) być wspomagane przez środki wzmacniające ludzką pamięć i wyobraźnię, służące do opisu odwzorowywanej rzeczywistości w postaci struktur danych, operacji na danych, zachodzących procesów.

37 Inżynieria oprogramowania 1. Wstęp 37/51 Metodyka Metodyka, w inżynierii oprogramowania, jest zestawem pojęć, oznaczeń, języków, modeli, diagramów, technik i sposobów postępowania służących do modelowania dziedziny problemowej stanowiącej przedmiot projektowanego systemu Metodyka jest wykorzystywana zarówno do projektowania pojęciowego, jak i logicznego czy fizycznego Metodyka ustala fazy realizacji projektu, a ponadto dla każdej z faz projektu wyznacza: role uczestników projektu, scenariusze postępowania, reguły przechodzenia do następnej fazy, modele, które powinny być wytworzone, dokumentację, która powinna powstać, notację, której należy używać

38 Inżynieria oprogramowania 1. Wstęp 38/51 Co to jest CASE (Computer-Aided Software Engineering) CASE obejmuje rożne programy wykorzystane do wspomagania czynności procesu tworzenia oprogramowania (np. edytory notacji, generatory kodów) Upper-CASE Związane z początkowymi fazami tworzenia oprogramowania Lower-CASE Wspomagają implementowanie i testowanie

39 Inżynieria oprogramowania 1. Wstęp 39/51 Metody i techniki analizy i projektowania W ramach metodyk wykorzystywane są metody analizy i projektowania oprogramowania Metoda projektowania oprogramowania jest to taki sposób postępowania, który ma na celu otrzymanie projektu systemu Technika jest pojęciem węższym. Technika projektowania jest to szczególny sposób postępowania, który służy konkretnemu rozwiązaniu w projektowaniu systemu informacyjnego Określona technika może służyć jednej lub wielu metodom projektowania Metody i techniki projektowania systemów informacyjnych, podobnie jak metody i techniki analizy podzielić można na grupy: Strukturalne Obiektowe

40 Inżynieria oprogramowania 1. Wstęp 40/51 Podejście strukturalne Opiera się na rozkładzie problemu na części składowe. System ulega hierarchicznej dekompozycji Konsekwentna hierarchiczna struktura projektu (projektowanie od góry do dołu, czyli od ogółu do szczegółu) Podział projektu na moduły (niekiedy jako studium pośrednie występują jednostki funkcjonalne, podsystemy), z których jest jedno wejście i jedno wyjście Zaletą projektowania strukturalnego jest to, że przedsięwzięcie projektowe możemy podzielić na mniejsze części. możliwa jest równoległa, grupowa praca, a więc rozdział zadań pomiędzy mniejsze zespoły Prowadzi to do skrócenia czasu opracowania projektu. Trudności pojawiają się przy powiązaniu i zestrojeniu ze sobą opracowanych oddzielnie modułów

41 Inżynieria oprogramowania 1. Wstęp 41/51 Podejście obiektowe Polega na stopniowym rozszerzaniu modelu opracowanego dla potrzeb analizy o moduły takie, jak: kontakt z użytkownikiem, zarządzanie zadaniami, zarządzanie danymi W czasie projektowania model jest na ogół kontynuacją analizy obiektowej wtedy analiza i projektowanie mogą się wzajemnie przeplatać Wyróżnikiem analizy i projektowania jest to, że analiza obiektowa służy do identyfikowania i definiowania tych klas i obiektów, które w bezpośredni sposób odzwierciedlają zadania systemu, natomiast czynności projektowe przedstawiają realizację wymagań.

42 Inżynieria oprogramowania 1. Wstęp 42/51 Podsumowanie Inżynieria oprogramowania to dziedzina inżynierii, która obejmuje wszystkie aspekty tworzenia oprogramowania Produkty programowe składają się z utworzonych programów oraz związanej z nimi dokumentacji Zasadniczymi atrybutami produktów są zdatność do pielęgnacji, niezawodność, efektywność i użyteczność Głównymi czynnościami podczas produkcji oprogramowania są specyfikacja oprogramowania, tworzenie, zatwierdzenie i ewolucja

43 Inżynieria oprogramowania 1. Wstęp 43/51 Podsumowanie cd. Modele tworzenia oprogramowania to uporządkowane sposoby jego budowy Obejmują sugestie wyboru procesu tworzenia, mutacji, reguły określające, jakie opisy systemu opracować, a także wskazówki projektowe Narzędzia CASE to systemy komputerowe, które są przeznaczone do wspomagania rutynowych czynności procesu tworzenia, takich jak praca nad diagramami projektowymi, sprawdzanie poprawności diagramów oraz śledzenie wykonanych testów UML to najważniejsza obiektowa notacja do specyfikacji, konstruowania, wizualizacji i dokumentowania systemów

44 Inżynieria oprogramowania 1. Wstęp 44/51 Dziękuję


Pobierz ppt "Inżynieria Oprogramowania 1. Wstęp Leszek J Chmielewski Wydział Zastosowań Informatyki i Matematyki SGGW www.lchmiel.pl."

Podobne prezentacje


Reklamy Google