Pobieranie prezentacji. Proszę czekać

Pobieranie prezentacji. Proszę czekać

Inżynieria Programowania w y k ł a d 1 Inżynieria Programowania zakres i organizacja przedmiotu przedmiotu.

Podobne prezentacje


Prezentacja na temat: "Inżynieria Programowania w y k ł a d 1 Inżynieria Programowania zakres i organizacja przedmiotu przedmiotu."— Zapis prezentacji:

1 Inżynieria Programowania w y k ł a d 1 Inżynieria Programowania zakres i organizacja przedmiotu przedmiotu

2 Inżynieria Programowania Konspekt bieżącego wykładu Wprowadzenie Dziedzina Inżynierii Programowania Oprogramowanie Proces tworzenia oprogramowania Pojęcie metodyki Modele cyklu życiowego oprogramowania

3 Inżynieria Programowania Wprowadzenie Warunki zaliczenia Warunki zaliczenia Sun.iinf.polsl.gliwice.pl/~jszedel/sds/IP-NSM Plan przedmiotu Plan przedmiotu Procesy związane z tworzeniem oprogramowania Wymagania i specyfikacje oprogramowania Analiza i projektowanie Weryfikacja i atestowanie Materiały opracowane dla potrzeb wykładu z przedmiotu Inżynieria Oprogramowania są kompilacją informacji (tekstów i rysunków) zaczerpniętych ze źródeł wymienionych w liście literatury na następnym slajdzie. Autorami kompilacji są: dr inż. Jacek Szedel, dr inż. Michał Kolano, mgr inż. Aleksander Pyszny.

4 Inżynieria Programowania Wprowadzenie Literatura w języku polskim G. Booch, J. Rumbaugh, I. Jacobson: UML. Przewodnik użytkownika, WNT, Warszawa, 2001, 2002 J. Górski (red.): Inżynieria oprogramowania w projekcie informatycznym, wyd. II rozszerzone. Mikom, Warszawa 2000 A. Jaszkiewicz: "Inżynieria oprogramowania", Helion, 1997 P. Szmal (red.): "Inżynieria programowania. Metody i ćwiczenćia laboratoryjne", Skrypt uczelniany Politechniki Śląskiej nr 2120, Gliwice, 1998 R. L. Baber: "O oprogramowaniu inaczej", WNT, Warszawa 2001 M. Kliszewski: Inżyżnieria oprogramowania obiektowego. Część 1: Analiza obiektowa, WKT RESPEKT, Tomaszów Mazowiecki M. Kliszewski: Inżynieria oprogramowania obiektowego. Część 2: Projekt obiektowy, WKT RESPEKT, Tomaszów Mazowiecki

5 Inżynieria Programowania Wprowadzenie Literatura w jęz. polskim (c.d) J. Martin, J.J. Odell: Podstawy metod obiektowych, WNT, Warszawa 1997 E. Yourdon: "Wsp ó łczesna analiza strukturalna", WNT, Warszawa, 1997 P. Fuglewicz, K. Stąpor, A. Trojnar: "CASE dla ludzi", Lupus, Warszawa, 1996 R. Barker, C. Longman: "CASE Method SM. Modelowanie funkcji i proces ó w", WNT, Warszawa, 1996 R. Barker: "CASE Method SM. Modelowanie związk ó w encji", WNT, Warszawa, 1996 P. Coad, E. Yourdon: "Analiza obiektowa", READ ME, Warszawa 1994 P. Coad, E. Yourdon: "Projektowanie obiektowe", READ ME, Warszawa 1994 P. Coad, J. Nicola: "Programowanie obiektowe", READ ME, Warszawa 1993 D. Van Tassel: "Praktyka programowania", wyd.2, WNT, Warszawa 1987

6 Inżynieria Programowania Wstęp (c.d) Literatura w jęz. angielskim I. Sommerville: "Software engineering", Addison- Wesley, Reading, New York 1998 R.S. Pressman: Software engineering. A practitioner s approach, McGraw-Hill Companies, Inc., New York, Toronto 1997 G. Booch: "Object-oriented analysis and design (with applications)", Benjamin/ ­ Cummings, Redwood City 1994

7 Inżynieria Programowania Wprowadzenie Definicje Przedmiot zainteresowania Obszar zastosowania

8 Inżynieria Programowania Inżynieria programowania Inżynieria programowania Inżynieria programowania – to dyscyplina wiedzy inżynierskiej, której celem jest przyczynienie się do produkowania oprogramowania o dobrej jakości, oddawanego na czas, mieszczącego się w budżecie i spełniającego potrzeby użytkowników. Inżynieria programowania Inżynieria programowania - to konsekwentne stosowanie ustalonych przez naukę i zweryfikowanych w praktyce zasad, metod i środków w pracach nad wytwarzaniem i konserwacją oprogramowania oraz ich organizowanie ze względu na cele ekonomiczno-techniczne.

9 Inżynieria Programowania Definicje literaturowe Zastosowanie systematycznego, zdyscyplinowanego, ilościowego podejścia do wykonywania, wykorzystywania i konserwowania oprogramowania [IEEE 93] Zastosowanie metod naukowych i matematycznych, dzięki czemu możliwości sprzętu komputerowego stają się użyteczne dla ludzi dzięki programom, procedurom i odpowiedniej dokumentacji [Boehm-S.E. Economics 1981] Wiedza techniczna dotycząca wszystkich faz cyklu życia oprogramowania, której celem jest uzyskanie wysokiej jakości produktu - oprogramowania [Jaszkiewicz-I.O. 1997] Inżynieria Programowania to:

10 Inżynieria Programowania Przedmiot zainteresowań Różne aspekty tworzenia, rozwijania i eksploatacji oprogramowania Próba racjonalizacji postępowania w celu: uzyskania oprogramowania działającego niezawodnie i efektywnie na rzeczywistym sprzęcie i realizującego zadany cel ograniczenie wysiłku i czasu niezbędnego do uzyskania produktu o pożądanych cechach zapewnienie optymalnego wykorzystania zasobów zachowanie ustalonego budżetu i terminów projektowych

11 Inżynieria Programowania Grupy aspektów Organizacja prac nad oprogramowaniem Metodyki Narzędzia CASE Osoba prawna Osoba fizycznaFirma

12 Inżynieria Programowania Obszar zainteresowania Duże systemy Duże systemy liczba wykonawców: od kilkudziesięciu do kilku tysięcy wyodrębniony zespół kierujący wykonawcy o różnych kwalifikacjach, zespół nie w pełni stabilny Małe systemy Małe systemy metody IP można z powodzeniem stosować w przedsięwzięciach o mniejszej skali, chociaż część problemów zanika (np. ze względu na uproszczoną organizację)

13 Inżynieria Programowania Oprogramowanie Czym jest oprogramowanie Rodzaje programów Charakterystyka oprogramowania Cechy oprogramowania

14 Inżynieria Programowania Czym jest oprogramowanie Oprogramowanie to Oprogramowanie to: kod (program), realizujący określone funkcje struktury danych umożliwiające programowi odpowiednie przetwarzanie danych dokumentacja opisująca mechanizmy działania programu przedstawiająca sposoby korzystania z programu

15 Inżynieria Programowania Rodzaje programów Rodzaje programów: ogólne z półki, (off the shelf) na zamówienie (bespoke) Problemy i metody IP stosowane w obu przypadkach są identyczne. Główna różnica to źródło specyfikacji programu dla ogólnych tworzona wewnętrznie np. przez dział marketingu w systemach na zamówienie określana przez klienta składającego zamówienie

16 Inżynieria Programowania Charakterystyka oprogramowania Oprogramowanie jest tworzone, a nie produkowane w klasycznym sensie Oprogramowanie nie zużywa się z biegiem czasu, ale może się pogarszać na skutek wprowadzanych zmian Oprogramowanie w większości budowane jest od podstaw, rzadziej składane z gotowych elementów (ta sytuacja ulega stopniowej zmianie)

17 Inżynieria Programowania Atrybuty oprogramowania atrybuty Podstawowe atrybuty dobrego oprogramowania uniwersalnośćuniwersalność - możliwość dostosowania oprogramowania do zmieniających się potrzeb pewnośćpewność - niezawodność i bezpieczeństwo, czyli zabezpieczenie przed oddziaływaniem otoczenia (security) oraz pewność pracy (safety) - awaria oprogramowanie nie powinna powodować fizycznych i ekonomicznych szkód wydajnośćwydajność - oprogramowanie nie powinno marnować zasobów systemowych wygoda w użyciuwygoda w użyciu - oprogramowanie powinno mieć właściwy interfejs użytkownika i dokumentację

18 Inżynieria Programowania Kompromisy Jeśli wymagany jest wysoki poziom jednego z atrybutów (np. wydajności) koszty wytworzenia oprogramowania rosną wykładniczo Koszt Wydajność

19 Inżynieria Programowania Inne atrybuty oprogramowania Poprawność Poprawność określa, czy oprogramowanie wypełnia postawione przed nim zadania i czy jest wolne od błędów. Łatwość użycia Łatwość użycia jest miarą stopnia łatwości korzystania z oprogramowania. Czytelność Czytelność pozwala na określenie wysiłku niezbędnego do zrozumienia oprogramowania. Ponowne użycie Ponowne użycie charakteryzuje przydatność oprogramowania, całego lub tylko pewnych fragmentów, do wykorzystania w innych produktach programistycznych. Stopień strukturalizacji Stopień strukturalizacji (modularność) określa, jak łatwo oprogramowanie daje się podzielić na części o dobrze wyrażonej semantyce i dobrze wyspecyfikowanej wzajemnej interakcji.

20 Inżynieria Programowania Efektywność Efektywność opisuje stopień wykorzystania zasobów sprzętowych i programowych stanowiących podstawę działania oprogramowania. Uniwersalność Uniwersalność mówi o łatwości przenoszenia oprogramowania na inne platformy sprzętowe czy programowe. Skalowalność Skalowalność opisuje zachowanie się oprogramowania przy rozroście liczby użytkowników, objętości przetwarzanych danych, dołączaniu nowych składników, itp. Współdziałanie Współdziałanie charakteryzuje zdolność oprogramowania do niezawodnej współpracy z innym niezależnie skonstruowanym oprogramowaniem. Inne atrybuty oprogramowania

21 Inżynieria Programowania Proces tworzenia oprogramowania Zasadnicze czynności Rozkład kosztów Mity o oprogramowaniu Klasyfikacja organizacji procesu tworzenia

22 Inżynieria Programowania Proces ProcesProces to sekwencja czynności wykonanych w określonym celu. Pierwszy krok do sukcesuPierwszy krok do sukcesu – dostrzec, że tworzenie oprogramowania nie jest aktem lecz procesem. początekkoniec sekwencja czynności

23 Inżynieria Programowania Proces tworzenia oprogramowania Proces tworzenia oprogramowaniaProces tworzenia oprogramowania jest to zestaw czynności, metod, praktyk i przekształceń, które stosują ludzie, by opracowywać (tworzyć) i konserwować oprogramowanie i inne pokrewne produkty z nim związane (np. plan przedsięwzięcia, projekt, kod, zestawy testów, podręczniki użytkownika). programowy staje się lepiej zdefiniowany.W miarę jak organizacja (firmy) dojrzewa, proces programowy staje się lepiej zdefiniowany.

24 Inżynieria Programowania Schemat prostego procesu Analiza, Projektowanie Implementacja TestowanieUruchamianie EksploatacjaKonserwacja Bardziej złożone podejścia zostaną omówione na kolejnych wykładach Implementacja zawiera elementy optymalizacji Optymalizacje (pamięciowa i czasowa ) oraz testowanie i uruchamianie będą przedmiotem laboratorium (warsztat programisty)

25 Inżynieria Programowania Zasadnicze czynności Specyfikacja oprogramowaniaSpecyfikacja oprogramowania – określenie funkcji systemu i jego ograniczeń) TworzenieTworzenie (development) WalidacjaWalidacja (atestowanie) – potwierdzenie zgodności ze specyfikacją EwolucjaEwolucja – dostosowanie do zmieniających się potrzeb użytkownika

26 Inżynieria Programowania Organizacja procesu tworzenia Poziom organizacji procesu tworzenia (jak ewoluuje organizacja firmy) Wstępny Nieformalny Zarządzany Zdefiniowany Mierzony Optymalizowany

27 Inżynieria Programowania Organizacja procesu tworzenia (c.d.) Poziom wstępny anarchia w tworzeniu, brak standardów, procedur; jedynym efektem prac jest kod programu Poziom nieformalny wykonuje się takie czynności, jak projektowanie, testowanie, ale bez ich planowania i monitorowania, ich jakość zależy od solidności wykonawcy Poziom zarządzany (zaplanowany i śledzony) proces jest monitorowany, weryfikowany jest poprawność, zgodność z harmonogramem, mają miejsce zaplanowane przeglądy

28 Inżynieria Programowania Organizacja procesu tworzenia (c.d.) Poziom zdefiniowany proces tworzenia i zarządzania opiera się na udokumentowanych procedurach i standardach Poziom mierzony przeprowadzane są szczegółowe pomiary jakości procesu i produktu, możliwe jest przewidywanie wydajności procesu (np. w sytuacji zastosowania określonego narzędzia) Poziom optymalizowany ciągłe ulepszanie organizacji dzięki ilościowemu określeniu efektywności procesu oraz poprzez wprowadzanie nowych idei i technologii

29 Inżynieria Programowania Koncepcja cyklu życiowego oprogramowania

30 Inżynieria Programowania Zasadnicze składowe cyklu wytwórczego oprogramowania Faza strategiczna Faza strategiczna: określenie celów, planowanie i definicja projektu Definiowanie wymagań Definiowanie wymagań: określenie co oprogramowanie ma robić Analiza Analiza: dotyczy dziedziny przedsiębiorczości, wymagań systemowych Projektowanie Projektowanie: projektowanie pojęciowe, projektowanie logiczne Implementacja Implementacja: rozwijanie, testowanie, dokumentacja Testowanie Testowanie: sprawdzenie czy system robi to co powinien Dokumentacja Dokumentacja: przygotowanie materiałów o systemie Instalacja Instalacja: uruchomienie systemu u klienta Wdrożenie Wdrożenie: przygotowanie użytkowników, akceptacja, szkolenie Działanie Działanie: wyłączając wspomaganie tworzenia aplikacji: utrzymanie, konserwacja, pielęgnacja

31 Inżynieria Programowania Definiowanie wymagań Proces ustalania jakie usługi są wymagane oraz jaki jest zakres odpowiedzialności systemu Proces definiowania wymagań zwany też inżynierią wymagań obejmuje: Studium wymagalności Analizę wymagań Specyfikację wymagań Walidację wymagań

32 Inżynieria Programowania Projekt i implementacja oprogramowania Projektowanie Projektowanie to proces konwersji specyfikacji wymagań w projekt działającego systemu Projekt oprogramowania – przygotowanie planu budowy systemu oprogramowania, które zapewni realizację specyfikacji wymagań Implementacja – budowa wykonywalnego program zgodnie z planem projektowym Czynności projektowania i implementacji są ściśle powiązane i mogą się wzajemnie przeplatać

33 Inżynieria Programowania Czynności fazy projektowej Projektowanie architektury Specyfikacja oprogramowania Projekt interfejsu Projektowanie komponentów Projektowanie struktur danych Projektowanie algorytmów

34 Inżynieria Programowania Metodologie projektowania Systematyczne podejście do procesu projektowania Projekt jest zwykle dokumentowany z wykorzystaniem modeli graficznych Niektóre modele Model przepływu danych (data-flow model) Model encja-związak (entity-relation-attribute model) Modele obiektowe (object models)

35 Inżynieria Programowania Cykl życiowy oprogramowania Cykl życiowy oprogramowania (ang. Livecycle) Cykl życiowy oprogramowania (ang. Livecycle) – zależny od organizacji i typu tworzonego oprogramowania zestaw czynności, niezbędnych do jego dostarczenia klientowi w założonym czasie i przy założonym budżecie. Inne określenia Inne określenia – cykl wytwórczy oprogramowania, proces wytwórczy oprogramowania.

36 Inżynieria Programowania Generyczne modele cyklu życia oprogramowania Model kaskadowy (the waterfall model) –separacja i rozróżnienie faz specyfikacji i implementacji Model ewolucyjny (evolutionary development) –specyfikacja i implementacja przeplatają się

37 Inżynieria Programowania Prosty model kaskadowy (wodospadowy) Określenie wymagań Określenie wymagań Projektowanie Implementacja Testowanie Konserwacja Cele i szczegółowe wymagania wobec systemu. Szczegółowy projekt systemu uwzględniający wcześniejsze wymagania. Modyfikacje producenta - usunięcie błędów, zmiany i rozszerzenia. Analiza

38 Inżynieria Programowania Zalety przydatny w harmonogramowaniu i budżetowaniu przedsięwzięcia formalny odbiór rezultatów poszczególnych faz ułatwia monitorowanie postępu projektu przynajmniej teoretyczna możliwość prowadzenia projektów w reżimie potokowym ułatwia prowadzenie rozliczeń finansowych z klientemWady narzuca ścisłą kolejność faz wysoki koszt błędów ponoszonych we wczesnych fazach cyklu długa przerwa w kontaktach z klientem problemy z wprowadzaniem zmian w projekcie Model kaskadowy

39 Inżynieria Programowania Model kaskadowy z iteracjami Określenie wymagań Określenie wymagań Projektowanie Implementacja Testowanie Konserwacja Analiza

40 Inżynieria Programowania Model ewolucyjny Zarys systemu Specyfikacja Rozwój systemu Weryfikacja Wersja początkowa Wersja końcowa Wersje pośrednie czynności przebiegające równolegle

41 Inżynieria Programowania Zalety bardzo dobry dla małych projektów lub części większej całości (np. interfejs użytkownika) dobry dla systemów o krótkim czasie życia (np. migracje danych) projekt może szybko wystartować i to zarówno przy dobrym zrozumieniu potrzeb użytkownika jak i przy słabo zdefiniowanych wymaganiach Wady trudno określić zaawansowanie projektu problemy z budżetowaniem, harmonogramowaniem itp. często wymaga specjalnych narzędzi ułatwiających budowę prototypów wyprodukowane systemy są najczęściej źle ustruktualizowane Model ewolucyjny

42 Inżynieria Programowania Hybrydowe modele cyklu życia oprogramowania W przypadku dużych systemów istną częścią procesu zarządzania projektem jest przeciwdziałanie ryzyku Ponieważ ryzyko wynika głównie z nieodpowiedniej lub niepełnej informacji, aby je wyeliminować należy zdobyć pewne dodatkowe dane. Modele generyczne nie uwzględniają faz związanych z zarządzeniem ryzykiem; w przypadku dobrze zdefiniowanych problemów można wykorzystać model kaskadowy a w przypadku systemów wysokiego ryzyka prototypowanie (cykl ewolucyjny)

43 Inżynieria Programowania Model spiralny - wprowadzenie Planowanie : Ustalenie planu kolejnej fazy Identyfikacja i analiza ryzyka (ew. budowa prototypu) Konstrukcja (model kaskadowy) Atestowanie (w tym przez klienta). Jeżeli ocena nie jest w pełni pozytywna, rozpoczynany jest kolejny cykl. Przegląd : Ustalenie celów, alternatywnych dróg i ograniczeń

44 Inżynieria Programowania Model spiralny Boehma Analiza ryzyka Proto typ 1 Prototyp 2 Prototyp 3Prototyp operacyjny Symulacja, modele, testy wydajności Koncepcja działania Wymagania Walidacja wymagań Projekt produktu Walidacja produktu Obsługa Test akceptacyjny Test scalania Test jednostek Kod Projekt szczegółowy Planowanie scalania i testowania Planowanie tworzenia (rozwijania) Plan cyklu życia i akwizycji wymagań Przegląd Planowanie : Ustalenie planu kolejnej fazy Identyfikacja i analiza ryzyka (ew. budowa prototypu) Konstrukcja (model kaskadowy) Atestowanie (w tym przez klienta). Przegląd : Ustalenie celów, alternatywnych dróg i ograniczeń

45 Inżynieria Programowania Zalety zmniejszenie ryzyka elastyczność – dla każdego z zagadnień można stosować odmienny model rozwoju przeglądy kończące poszczególne fazy ułatwiają szybkie wykrywanie błędów Wady kontrakty często zawierają specyfikację, harmonogram oraz sposób wytwarzania dostarczanych składowych systemu co często ogranicza zastosowanie modelu spiralnego model wymaga ekspertyz z zakresu zarządzania ryzykiem Model spiralny

46 Inżynieria Programowania Model przyrostowy (odmiana modelu spiralnego) Wybierany i realizowany jest podstawowy zestaw funkcji. Po realizacji pewnych funkcji następuje zrealizowanie i dostarczenie kolejnych funkcji. Określenie wymagań Określenie wymagań Ogólny projekt Ogólny projekt Wybór podzbioru funkcji Wybór podzbioru funkcji Szczegółowy projekt, implementacja testy Szczegółowy projekt, implementacja testy Dostarczenie zrealizowanej części systemu Dostarczenie zrealizowanej części systemu Proces realizowany iteracyjnie

47 Inżynieria Programowania Model iteracyjny przyrostowy Rational Unified Approach Źródło: RUP © Rational Software

48 Inżynieria Programowania Iteracje w modelu Rational Unified Approach tradycyjny model kaskadowy Źródło: RUP © Rational Software model iteracyjny

49 Inżynieria Programowania Podsumowanie Dziedzina Inżynierii Oprogramowania Oprogramowanie Proces tworzenia oprogramowania Pojęcie metodyki Modele cyklu życiowego oprogramowania


Pobierz ppt "Inżynieria Programowania w y k ł a d 1 Inżynieria Programowania zakres i organizacja przedmiotu przedmiotu."

Podobne prezentacje


Reklamy Google