Inżynieria Oprogramowania
Transkrypt
Inżynieria Oprogramowania
Inżynieria Oprogramowania Inżynieria Oprogramowania Anna Bobkowska Maciej Piechówka Katedra Inżynierii Oprogramowania rii z Inżynie u d ła k y w nicze do c TI PG. o E m o le p ia z ły d ia y Mater ykładzie. nia na W w a w a o n i m c a ś r o Oprog uje obecn m celu oraz ich p ę t s a z a nie inny . Ich lektur nie materiałów w bronione a a t z s t y s z r je o Wy k echnianie z s w o p z ro 1. Wprowadzenie 2. Motywacje i zakres inżynierii oprogramowania 3. Klasyczny cykl życia © KIO Inżynieria Oprogramowania Wprowadzenie do przedmiotu Cel: przegląd wiedzy dotyczącej metodycznego oprogramowania o wysokiej jakości. Wykład „Przegląd tematyki IO” • Przedmiot inżynierii oprogramowania; cykl życia systemu; • Model kaskadowy • Faza przedprojektowa • Inżynieria wymagań i wybrane techniki modelowania systemów • UML • Analiza wymagań; analiza obiektowa • Projektowanie systemu; projektowanie obiektowe • Implementacja; • Testowanie i walidacja systemu; inspekcje • Wdrażanie i utrzymanie systemu • Narzędzia CASE • Inne podejścia i metodyki © KIO wytwarzania Laboratorium „UML” • Przygotowanie wizji systemu • Modelowanie za pomocą przypadków użycia • Modelowanie obiektowe • Modelowanie zachowania • Elementy projektowania Zaliczenie: 50% laboratorium 50% egzamin Inżynieria Oprogramowania Literatura UML • Booch G., Rumbaugh J., Jacobson I.: UML przewodnik użytkownika, WNT, 2001 Inżynieria Oprogramowania • Górski J. (red.) Inżynieria oprogramowania w projekcie informatycznym, MIKOM, 2000 • Pressman R., Ince D., Software Engineering: a Practitioner’s Approach. McGraw-Hill, 2000 • Sommerville I., Inżynieria Oprogramowania, 2003 • Szejko S.(red.), Metody wytwarzania oprogramowania, MIKOM, 2002 © KIO Inżynieria Oprogramowania Motywacje: Ważność i złożoność zagadnienia (1) • System - zbiór wzajemnie powiązanych elementów, wyodrębnionych z otoczenia, współdziałających dla realizacji wspólnego celu Sprzęt Oprogramowanie Ludzie Reguły użycia • Materia (tworzywo) • Środowisko – rozproszenie elementów systemu © KIO Środowisko Inżynieria Oprogramowania Motywacje: Ważność i złożoność zagadnienia (2) • Rewolucja informacyjna - zastosowania informatyki: – transport, produkcja, obsługa pieniądza, ochrona zdrowia, administracja, rozrywka, telekomunikacja, ... • Oczekiwania (głównie jakościowe): – – – – – – – © KIO wysoce niezawodne użyteczne łatwe w użyciu trudne do użycia w sposób niewłaściwy bezpieczne tanie dostępne . . . Inżynieria Oprogramowania Specyfika oprogramowania (1) • zdominowane przez proces projektowania – pomijalne nakłady na produkcję, większość wysiłku skierowana na projektowanie; niedojrzała technologia, kompetencje ? • trudności w wizualizacji – oprogramowanie to “niematerialny wytwór intelektu”; trudności w obserwacji wcześniejszych form (specyfikacji wymagań, projektu,...); dążenie do jak najwcześniejszej implementacji obniżające szansę na sukces • nie zużywa się – nie zużywa się; wadliwe działanie wynika z niedopasowania do środowiska, z błędów konstrukcji, często ujawniających się bardzo późno • duża złożoność – trudno znaleźć standardy projektowe, trudno prześledzić wszystkie sytuacje, wypuścić produkt pozbawiony błędów © KIO Inżynieria Oprogramowania Specyfika oprogramowania (2) • dowolność struktury – zwykle niewielkie ograniczenia i duże pole do popisu projektantów złożoność, nieregularność, niezrozumiałość struktury - trudności modyfikacji i pielęgnacji • zależność elementów – niejawne zależności pomiędzy elementami prowadzą do trudności konstrukcyjnych, błędnych ocen poprawności oprogramowania, stwarzają problemy modyfikacji i pielęgnacji • brak ograniczeń (np. prawami fizyki) – nieznaczna zmiana może spowodować duże odchylenie; „mała modyfikacja”? „przybliżona analiza”? • łatwość zmian – łatwość dokonywania zmian prowadzi do chaosu, błędów i bylejakości • trudność testowania – niematerialność software’u, równoległość działań, skomplikowanie, zakres możliwych danych istotnie utrudniają eliminacjędefektów © KIO Inżynieria Oprogramowania Specyfika oprogramowania (3) Zdecydowana większość użytecznego oprogramowania powstaje w układzie klient-wykonawca oczekiwania DZIEDZINA PROBLEMOWA © KIO oprogramowanie KLIENT technologia WYKONAWCA DZIEDZINA INFORMATYCZNA Inżynieria Oprogramowania Krzywe ilości uszkodzeń ujawniających się w czasie a) w przypadku sprzętu © KIO b) w przypadku oprogramowania Inżynieria Oprogramowania Procentowy rozkład błędów popełnianych przy konstrukcji systemów S fo rmuło wa-nie wymag ań 56% Ko ns truk c ja 26% Ko do wani e 7% Inne błę dy 11% © KIO Inżynieria Oprogramowania Rozkład kosztów wytworzenia i utrzymania oprogramowania 100% utrzymanie 80% 60% 40% 20% wytworzenie 0% 1975 © KIO 1980 1985 1990 1995 Inżynieria Oprogramowania Zauważalne problemy i tendencje • wzrost wymagań użytkowników: wiarygodność czy efektywność; • skomplikowanie systemów, nietrywialne zastosowania, wysoko specjalizowane zadania • niska produktywność procesu wytwarzania • brak ‘rzemiosła’ i jednostkowość procesu wytwarzania powoduje wysokie narzuty i koszty procesu produkcji • błędy • wzrost znaczenia fazy analizy i udziału użytkownika • koszt utrzymania i wzrost znaczenia właściwej dokumentacji systemu © KIO użytkowość, poprawność, Inżynieria Oprogramowania Inżynieria Oprogramowania • Oprogramowanie (software) - zbiór programów, procedur postępowania i związanej z nimi dokumentacji, w ramach danego systemu (komputerowego). • Inżynieria (engineering) - polega na takim zastosowaniu nauk ścisłych, przyrodniczych i humanistycznych, poprzez które materia i źródła energii naturalnej stają się użyteczne dla człowieka. Inżynieria oprogramowania polega na takim zastosowaniu nauk (ścisłych, przyrodniczych, humanistycznych), poprzez które własności i możliwości sprzętu komputerowego stają się, za pośrednictwem oprogramowania, użyteczne dla człowieka. © KIO Inżynieria Oprogramowania Podobieństwa inżynierii oprogramowania do tradycyjnej inżynierii techniki rozwiązywania problemów • • • • • • • identyfikacja potrzeb planowanie działań zarządzanie projektem systematyczna analiza kontrola jakości procesu ocena jakości produktu bieżąca eksploatacja © KIO notacje metodyki narzędzia Inżynieria Oprogramowania Podstawowe różnice pomiędzy inżynierią oprogramowania a inżynierią tradycyjną © KIO Brak praw fizyki Program to “czysta” informacja Statyczny obraz programu Obserwacja pośrednia Nie zużywa się Inżynieria Oprogramowania Drogi rozwiązania  Systematyczne wytwarzanie, zgodnie z przyjętym cyklem  Rozwój notacji modelujących i wspomaganie uznanych cykli rozwoju oprogramowania, głównie klasycznego  Definiowanie nowych cykli wytwórczych, często posiłkujących się nowymi metodologiami  Rozwijanie nowych metodologii systematycznej konstrukcji oprogramowania, bazujących na istniejących bądź nowych notacjach; najwięcej prac dotyczy metodologii obiektowych  Środowiska i narzędzia wspomagające  Wspomaganie zarządzania projektem informatycznym, planowania, zarządzania ludźmi, minimalizacji ryzyka, zapewniania jakości © KIO Inżynieria Oprogramowania Podejścia i metodyki Czym jest metodyka konstrukcji systemu ? - © KIO Jest zbiorem procedur, metod, narzędzi i środków wspomagających dokumentowanie Składa się z faz, które same składają się z kolejnych faz Stanowi 'przewodnik' dla konstruktorów systemu Stanowi metodę systematycznej budowy systemów Bazuje na pewnym widzeniu świata, nazywanym podejściem (ang.: approach) Inżynieria Oprogramowania Podejścia • Modularyzacja • Podejście strukturalne ¨ • Wykorzystanie metod formalnej specyfikacji • Podejście obiektowe ¨ © KIO Inżynieria Oprogramowania Popularne metody modelowania systemów Modelowanie danych Modelowanie przetwarzania Modelowanie funkcji Modelowanie zachowania Modelowanie struktury statycznej i dynamicznej © KIO model relacyjny, diagramy związków encji model obiektowy słowniki danych abstrakcyjne typy danych (ADT) diagramy przepływu danych języki opisu, jak Structured English czy Program Description Language tablice decyzyjne, drzewa decyzji diagramy akcji, diagramy przepływu diagramy przepływu pracy hierarchie funkcji i macierze powiązań przypadki użycia (use cases) abstrakcyjne typy danych modele grafowe, sieci Petriego FSMs, automaty, diagramy przejść stanu diagramy interakcji, diagramy komunikacji (MSC) drzewa zdarzeń, drzewa błędów VDM, Z diagramy struktury modele obiektowe modele komunikujących się procesów, CCS , CSP , języki formalnej specyfikacji Inżynieria Oprogramowania Środowiska wspomagajace 9 specyfikację wymagań, najcześciej za pomocą notacji graficznych, 9 walidację dokonanej specyfikacji (modelu logicznego), ocenę jej spójności i kompletności, 9 przekształcenie utworzonego modelu w projekt, 9 weryfikację zgodności projektu z wymaganiami i jego logiczną walidację, często poprzez prototypowanie lub symulację działania przyjętej konstrukcji, 9 szkieletową lub pełniejsza generację kodu, 9 testowanie, animację i pomiary utworzonej aplikacji, 9 tworzenie dokumentacji, na różnych poziomach i w różnych przekrojach, 9 zarządzanie projektem, od planowania i harmonogramowania po kontrolę realizacji, 9 analizę zamierzonych zmian i wspomaganie ich dokonania, 9 prace zapewniające re-development, zarządzanie konfiguracją lub przeniesienie aplikacji do nowego środowiska 9 reverse - engineering, czyli pozyskiwanie specyfikacji projektowej oraz analitycznej na podstawie istniejącego kodu i wiedzy konstruktora, 9 powtórne wykorzystanie wcześniejszych rozwiązań w konstrukcji nowych projektów 9 wersjonowanie projektu oraz zespołową pracę nad nim © KIO Inżynieria Oprogramowania Cykl życia systemu Struktura obrazująca podstawowe etapy rozwoju i eksploatacji systemu wraz z ich produktami, wzajemnymi relacjami pomiędzy tymi etapami oraz ich zależnościami w czasie © KIO Inżynieria Oprogramowania Cykl życia i cykl wytwarzania systemu  Cykl życia oprogramowania reprezentuje powtarzającą się w czasie całość działań prowadzonych od ujawnienia potrzeby budowy systemu po zakończenia jego wykorzystania. Obrazowane są kolejne etapy rozwoju i eksploatacji systemu, wraz z ich kontekstem, produktami, wzajemnymi relacjami i zależnościami w czasie.  Cykl wytwarzania oprogramowania - ta część cyklu życia, która obejmuje etapy wytwórcze. © KIO Inżynieria Oprogramowania Cykl życia systemu Studium potrzeb i możliwości ? Utrzymanie Nie Analiza wymagań Specyfikacja “Klasyczny cykl życia systemu” to całość działań prowadzonych od ujawnienia potrzeby jego budowy, poprzez analizę stawianych wymagań, projektowanie i implementację oprogramowania, Projektowanie Implementacja © KIO jego konserwację, do zakończenia wykorzystania oprogramowania Inżynieria Oprogramowania Model klasyczny (kaskadowy) Faza Faza przedprojektowa przedprojektowa (Planowanie) (Planowanie) Analiza Analiza Projektowanie Projektowanie Implementacja Implementacja Testowanie Testowanie Wdrożenie Wdrożenie i ipielęgnacja pielęgnacja © KIO Inżynieria Oprogramowania Klasyczny cykl życia - produkty (wg ESA) UR UR/R SR SR/R AD AD/R DD/R DD TR OM FAZY ELEMENTY DEFINIOWANIE WYMAGAŃ UŻYTKOWNIKA DEFINIOWANIE WYMAGAŃ SOFTWARE'OWYCH PROJEKT KONSTRUKCYJNY PROJEKT SZCZEGÓŁOWY I WYTWARZANIE PRZEKAZANIE UŻYTKOWANI E I UTRZYMANIE GŁÓWNE DZIAŁANIA • ustalenie środowiska użytkwania • identyfikacja wymagań użytkownika • konstrukcja modelu logicznego • identyfikacja wymagań software'owych • konstrukcja modelu fizycznego • zdefiniowanie podstawowych komponentów • instalacja • testy wstępnego odbioru • testy ostatecznego odbioru • użytkowanie • utrzymanie kodu i dokumentacji PRODUKTY Dokument Wymagań Użytkownika Dokument Wymagań Software'owych Dokument Projektu Konstrukcyjnego • projektowanie modułów • kodowanie • testy segmentów • testy integracyjne • testy systemowe Dokument Szczegółowego Projektu Dokument Przekazania Software'u Dokument Historii Projektu URD → SRD → ADD → DDD Kod → → → STD → PHD SUM Podręcznik Użytkownika Oprogramowani a PRZEGLĄDY GŁÓWNE ETAPY AD;ADD;AD/R DD;DDD;DD/R PHD SR;SRD;SR/R STD SUM UR/D/R © KIO przeglądy techniczne Zatwierdzenie URD przeglądy kontrole przeglądy techniczne Zatwierdzenie SRD Architectural Design/Document/Review Detailed Design and production/Document/Review Project History Document Software Requirements/Document/Review Software Transfer Document Software User Manual User Requirements/Document/Review przeglądy kontrole przeglady techniczne Zatwierdzenie ADD przeglądy kontrole przeglądy techniczn e Zatwierdzenie Kodu/ADD/ SUM Projekt Konstrukcyjny/Dokument /Przegląd Szczegółowy Projekt i Wytwarzanie/Dokument /Przegląd Dokument Historii Projektu Wymagania Software'owe/Dokument /Przegląd Dokument Przekazania Oprogramowania Podręcznik Użytkownika Oprogramowania Wymagania Użytkownika/Dokument/Przegląd Powstanie STD Wstępny odbiór Powstanie PHD Ostateczny odb. Inżynieria Oprogramowania Faza przedprojektowa • • • • • © KIO Identyfikacja problemu Studium wykonalności Decyzja o realizacji projektu Inicjalizacja projektu + ustalenia Plan projektu Inżynieria Oprogramowania Zdefiniowanie problemu • Opis nieformalny • Opis ustrukturalizowany: Założenia wstępne √ √ √ √ zadania systemu cele biznesowe wizja systemu: zakres i zadania, użytkownicy, perspektywiczność, podstawowe założenia, parametry jakościowe i techniczne, zgodność ze standardami, organizacja działania systemu uwarunkowania: ograniczenia zasobowe, powiązane projekty, wymagania i ograniczenia prawne, inne uwarunkowania • Soft Systems Methodology (SSM) © KIO Inżynieria Oprogramowania Wizja systemu 1. Cele systemu 2. Kontekst systemu Użytkownicy i ich specyfika Inne systemy i ich interfejsy 3. Zakres funkcjonalności Opis, jakie usługi system ma udostępniać. 4. Ograniczenia Ograniczenia, które mają wpływ na kształt systemu: - dotyczące zasobów projektowych: czasowe, ludzkie, sprzętowe, oprogramowanie; - dotyczące produktu: interfejsów, dotyczące działania w specyficznych warunkach, dokumentacji, specyficzne wymagania użytkownika. 5. Wymagania jakościowe Wymagania dotyczące ochrony, bezpieczeństwa, przenośności, elastyczności, konfigurowalności, niezawodności, wydajności itp. © KIO Inżynieria Oprogramowania Analiza wykonalności • Studium wykonalności rozwiązania problemów i opcji wskazanych w założeniach projektu • Dyskusja wariantów rozwiązania • Podstawy podjęcia decyzji o kontynuacji (lub nie) projektu © KIO • • • • wykonalność techniczna wykonalność ekonomiczna wykonalność organizacyjna aspekty prawne Inżynieria Oprogramowania Raport studium wykonalności © KIO • Cel, zakres i uwarunkowania • Istniejący system • Wymagania użytkownika • Opis proponowanego systemu • Strategia i harmonogram prowadzenia prac • Rozwiązania alternatywne • Koszty i korzyści • Analiza ryzyka • Ramy prawne Inżynieria Oprogramowania Plan projektu • Cel projektu • Zakres projektu • Strategia, priorytety, infrastruktura, role ... • Wybór sposobu wytwarzania • Opis poszczególnych etapów • Harmonogram © KIO Inżynieria Oprogramowania Analiza wymagań (co?) • identyfikacja i specyfikacja wymagań użytkowych • specyfikacja wymagań oprogramowania modelu logicznego -Inżynieria Wymagań -Modelowanie, np. UML © KIO dotyczących konstrukcja Inżynieria Oprogramowania Poziomy specyfikacji wymagań Wymagania systemowe (użytkowe) Modele koceptualne Wymagania względem oprogramowania © KIO Inżynieria Oprogramowania Diagram przypadków użycia Biblioteczka domowa [J. Uścinowicz] Modyfikowanie danych o książce Dodawanie danych o książce extends extends Przeglądanie danych o książce uses Ewidencja książek Usuwanie danych o książce © KIO Użytkownik extends Inżynieria Oprogramowania Model obiektowy Biblioteczka domowa [J. Uścinowicz] © KIO Inżynieria Oprogramowania Diagram interakcji Biblioteczka domowa [J. Uścinowicz] • Modyfikacja danych dotyczących książki «user» Wlasciciel «business» Ksiazka Description Zmiana informacji dotyczacych danej ksiazki Sprawdzenie poprawnosci wprowadzonych danych Wprowadzenie danych Komunikatu o blednych danych Sprawdzenie poprawnosci danych If dane bledne Zapisanie rekordu ze zmodyfikowanymi danymi do bazy danych. © KIO Zapisanie zmodyfikowanego rekordu Inżynieria Oprogramowania Projektowanie • projekt wysokiego poziomu • projekt szczegółowy © KIO (jak?) Inżynieria Oprogramowania Usytuowanie Projektowania w cyklu wytwarzania Model funkcji Model danych Model zachowania Projekt danych Projektowanie Inne wymagania Projekt architektury Ograniczenia Implementacja Projekt procedur Kod programu Testowanie Zintegrowane, po walidacji, oprogramowanie © KIO Inżynieria Oprogramowania Przedmiot Fazy projektowania [Presmann] © KIO Inżynieria Oprogramowania Implementacja • kodowanie • testowanie (modułów) © KIO Inżynieria Oprogramowania Testowanie i walidacja • integracja i testy integracyjne • walidacja i testy systemowe • testowanie akceptacyjne © KIO Inżynieria Oprogramowania Testowanie i walidacja user requirements acceptance tests validation tests logical design system testing system architecture integration testing detail design unit testing coding © KIO Inżynieria Oprogramowania Model V WYMAGANIA PROJEKT SYSTEMU PROJEKT SZCZEGÓŁOWY PLANOWANIE TESTU SYSTEMU PLANOWANIE TESTU INTEGRACYJNEGO PLANOWANIE TESTÓW MODUŁÓW KODOWANIE © KIO TEST SYSTEMU INSTALACJA TEST INTEGRACYJNY TEST MODUŁÓW PIELĘGNACJA Inżynieria Oprogramowania Sterowanie jakością - model V Project planning Q Requirements analysis Q Design Q Implementation © KIO Q User requirements Documen tation Software requirements (software models) Design proposal Acceptance test specification Systen architecture specification Module (object) specification Integration and module test plans Acceptance testing Test reports Integration tests Test reports Module tests Test reports Documentation Code, forms, prototypes,... Finalising Q Testing Q Implementation Inżynieria Oprogramowania Wdrożenie systemu • Złożoność problemu • Kulminacja błędów i odpowiedzialności © KIO Inżynieria Oprogramowania Fazy wdrożenia          © KIO Planowanie wdrożenia Przygotowanie Instalacja Szkolenie Reorganizacja przedsiębiorstwa Zmiana systemu Ocena / audyt Dostosowanie Eksploatacja Inżynieria Oprogramowania Utrzymanie (pielęgnacja, konserwacja) pielęgnacja naprawcza (ang. corrective maintenance) obejmuje diagnostykę i usuwanie błędów, adaptacja (ang. adaptive maintenance), dostosowuje oprogramowanie do zmian środowiska jego pracy, ulepszanie (ang. perfective maintenance) ma na celu poprawę funkcjonalności i jakości oprogramowania, np. dostosowanie oprogramowania do nowych wymagań użytkowników, zwiększenie wydajności wybranych funkcji systemu, zmianę interfejsu użytkownika utrzymanie zapobiegawcze (ang. preventive maintenance) przygotowuje istniejące oprogramowanie do zwiększenia jego pielęgnowalności, w tym głównie do wykrycia i poprawienia defektów zanim one wystąpią. © KIO Inżynieria Oprogramowania Zalety modelu kaskadowego • • • • • • © KIO obejmuje cały cykl życia wprowadza systematykę sprawdzony, zweryfikowany praktycznie dobra strukturalizacja (etapy, czynności) uwypukla analizę i projektowanie, ze szczególnym uwzględnieniem aspektów technicznych rozwiązania pozwala na dobrą dekompozycję pracy Inżynieria Oprogramowania Problemy • • • • • • • © KIO założenie: a priori wiadomo ‘co’ proces silnie zależy od stabilności wymagań, która w praktyce jest bardzo trudna do uzyskania oderwanie od użytkownika walidacja produktu następuje dopiero w końcowych krokach poprawa bądź konieczność dopasowania produktu do rzeczywistych potrzeb użytkownika prowadzi do wzrostu kosztów (reguła 1:10) niska produktywność błędy powodujące znaczne koszty utrzymania Inżynieria Oprogramowania Inne cykle rozwoju systemów informatycznych ¾ Klasyczny (kaskadowy) ¾ ¾ ¾ ¾ ¾ © KIO Prototypowanie Rozwój ewolucyjny i przyrostowo-ewolucyjny Przekształcenia formalne Wielokrotne użycie oprogramowania (reuse) Ponowna inżynieria (re-engineering) Inżynieria Oprogramowania Podsumowanie © KIO