IN YNIERIA OPROGRAMOWANIA
Transkrypt
IN YNIERIA OPROGRAMOWANIA
INŻYNIERIA OPROGRAMOWANIA dr inż. Jerzy Sas e-mail: [email protected] Wykład 1 (1) Inżynieria oprogramowania Wprowadzenie: pojęcia podstawowe, cele zarządzania w PI Inżynieria oprogramowania to zastosowanie • systematycznego, • zdyscypliniowanego • ilościowego podejścia do prowadzenia projektu informatycznego Obszary inżynierii oprogramowania: • Organizacja procesów wytwarzania i utrzymania oprogramowania • Zarządzanie projektem informatycznym • Analiza wymagań • Projektowanie • Zapewnienie jakości i niezawodność oprogramowania • Problemy utrzymania i ewolucji oprogramowania 1 Wykład 1 (2) Inżynieria oprogramowania Wprowadzenie: pojęcia podstawowe, cele zarządzania w PI Projekt informatyczny – przedsięwzięcie wymagające zaangażowania określonych zasobów ludzkich, którego celem jest przygotowanie do użycia produktu programistycznego • Realizacja i uruchomienie ogólnokrajowej sieci teleinformatycznej, • Implementacja, uruchomienie i wdrożenie ogólnokrajowego systemu zbierania, przetwarzania i udostępniania danych (np. dla ZUS, służby granicznej, innych służb publicznych), • Implementacja i wdrożenie kompleksowego systemu zarządzania przedsiębiorstwem, • Implementacja i wdrożenie systemu informatycznego obsługującego wybrany obszar działalności przedsiębiorstwa (np.. system kadrowo-płacowy, finansowo-księgowy, magazynowy, zarządzania kontaktami z klientami). • Zaprojektowanie, implementacja i wprowadzenie na rynek programu dla masowego odbiorcy indywidualnego (np. programu do wypełniania zeznań podatkowych) • Wykonanie biblioteki na użytek innego przedsięwzięcia programistycznego. • Rozszerzenie funkcjonującego oprogramowania o nową funkcjonalność Wykład 1 (3) Inżynieria oprogramowania Wprowadzenie: pojęcia podstawowe, cele zarządzania w PI Różnice w specyfice zarządzania PI a zarządzaniem w innych dziedzinach inżynierii: Krótki okres rozwoju inżynierii oprogramowania, Abstrakcyjny charakter materii Brak sprawdzonych wzorców postępowania dla różnych kategorii projektów, Mała powtarzalność wykonywanych działań (duży indywidualizm projektów), Znacznie większy stopień złożoności logicznej projektowanych i wytwarzanych produktów Brak wyraźnego podziału na fazę projektową i wykonawczą, Brak ustalonych norm zużycia zasobów (w szczególności czasu pracy) dla wykonania elementów projektu o określonych miarach wielkości i złożoności, W konsekwencji powyższego: Trudności w szacowaniu czasu i kosztów realizacji projektu Częste opóźnienia w dostarczaniu produktu, Niska jakość dostarczanych produktów. 2 Wykład 1 (3) Inżynieria oprogramowania Wprowadzenie: pojęcia podstawowe, cele zarządzania w PI Celem inżynierii oprogramowania jest opracowanie i analiza metod stosowanych na wszystkich etapach procesu tworzenia produktu informatycznego, pozwalających rozwiązywać specyficzne problemy występujące w tym procesie przy uwzględnieniu specyfiki projektu informatycznego gdzie: Proces tworzenia produktu informatycznego - zbiór czynności i związanych z nimi wyników, które prowadzą do wytworzenia produktu Wykład 1 (4) Inżynieria oprogramowania Wprowadzenie: pojęcia podstawowe, cele zarządzania w PI Program: Wstęp, pojęcia podstawowe, procesy w przedsięwzięciu informatycznym, fazy realizacji projektu informatycznego, zakresy i produkty realizacji faz, działania i role w kolejnych fazach, cele zarządzania w projekcie informatycznym, cykle życia projektów informatycznych, Przykładowe metodyki prowadzenia projektów informatycznych (USDP, Extreme Programming) Elementy zarządzania wymaganiami, Ocena złożoności projektu, szacowanie zapotrzebowania na zasoby Zapewnienie jakości w projekcie informatycznym (atrybuty jakości, podstawowe działania i techniki z zakresu zapewnienia jakości, role w procesie zapewnienia jakości ) Znaczenie oraz sposób organizacji przeglądów, inspekcji i audytów w różnych fazach realizacji PI Metody i techniki testowania oprogramowania Ocena procesu zarządzania projektem informatycznym – SEI Capability Maturity Model Certyfikat jakości ISO 9001:2000 w zakresie wytwarzania oprogramowania Organizacja pracy działu wytwarzania oprogramowania – podejście procesowe Kolokwium 3 Wykład 1 (5) Inżynieria oprogramowania Wprowadzenie: pojęcia podstawowe, cele zarządzania w PI Literatura: Sommerville I., Inżynieria oprogramowania, WNT, W-wa, 2003 Górski J., Inżynieria oprogramowania w projekcie informatycznym, wyd. II, MIKOM, Wwa, 2001, Beck K., Wydajne programowanie, Extreme Programming, Wydawnictwo MIKOM, 2001 Astels D., Miller G., Novak M., eXtreme Programming, Helion, 2002 Patton R., Testowanie oprogramowania, MIKOM, 2002 Jaszkiewicz A., Inżynieria oprogramowania, Helion, 1997 Hunt A., Thomas D., Pragmatyczny programista, WNT, 2002 Maguire S., Niezawodność oprogramowania, Helion, 2002 Szyjewski Z., Zarządzanie projektami informatycznymi, metodyka tworzenia systemów informatycznych, Agencja wydawnicza Placet, W-wa, 2001 Flasiński M., Zarządzanie projektami informatycznymi, PWN, W-wa, 2006 Sas J., Industrial Software Quality. Draft Course Materials. Raport SPR 12/1998, Wydziałowy Zakład Informatyki, Politechnika Wrocławska, 1998 Wykład 1 (6) Inżynieria oprogramowania Wprowadzenie: pojęcia podstawowe, cele zarządzania w PI Literatura (c.d.): Wiśniewska M., Droga przedsiębiorstwa do uzyskania certyfikatu ISO 9000, ODDK Gdańsk, 2001 Wiśniewska M., Normy ISO serii 9000:2000, wymagania, analiza, wdrażanie, ODDK, Gdańsk, 2001, Brooks F.P., Mityczny osobomiesiąc, eseje o inżynierii oprogramowania, WNT, 2000 Yourdon E., Marsz ku klęsce, poradnik dla projektanta systemów, WNT, 2000 Ciekawe miejsca w sieci: http://www.sei.cmu.edu - Software Engineering Institute http://www-306.ibm.com/software/rational/sw-library/ - baza artykułów dotyczących IO oraz narzędzi CASE http://www.ipipan.waw.pl/~subieta/BYT/BYT.html - materiały do wykładów z ZPI/PSI K. Subiety http://wazniak.mimuw.edu.pl/ - materiały dodaktyczne do nauczania informatyki 4 Inżynieria oprogramowania Wprowadzenie: pojęcia podstawowe, cele zarządzania w PI Wykład 1 (7) Fazy realizacji projektu informatycznego: Fazy realizacji projektu informatycznego: Analiza wymagań, Analiza, Projektowanie, Wykonanie, Analiza wykonalności, analiza ryzyka, analiza zasobów Projekt zewnętrzny, Projekt strukturalny, Projekt szczegółowy, Projekt testów, Implementacja, Testowanie, Dokumentowanie, Wdrożenie, Utrzymanie Inżynieria oprogramowania Wprowadzenie: pojęcia podstawowe, cele zarządzania w PI Wykład 1 (6) Zlecenie (zapotrzebowanie) Realizacja Analiza możliwości wykonania, ocena ryzyka Planowanie Akceptacja Przydział zasobów Utrzymanie i ewolucja Cele zarządzania w projekcie informatycznym: Szacowanie kosztów przedsięwzięcia i opracowanie planów realizacji, Przydział zasobów ( ludzie, czas, sprzęt, oprogramowanie, środki finansowe), Organizacja działań sprawdzających i kontrolnych, Ciągły nadzór nad realizacją przedsięwzięcia, Zapewnienie wysokiego poziomu jakości produktu – zarządzanie zorientowane na jakość Reagowanie na odstępstwa od planu (zmiany założeń, zmiany projektowe, zmiany dostępności zasobów, opóźnienia) 5 Wykład 1 (8) Inżynieria oprogramowania Wprowadzenie: pojęcia podstawowe, cele zarządzania w PI Analiza wymagań: Cele: • Ustalenie zakresu przedsięwzięcia (np. jakie działy przedsiębiorstwa będą wykorzystywały produkt), • Zidentyfikowanie celów strategicznych jakie pragnie osiągnąć klient z wykorzystaniem produktu (np. obniżenie kosztów produkcji, zmniejszenie liczby zatrudnionych osób, przyspieszenie obsługi klienta, przyspieszenie rejestracji pacjenta, umożliwienie stałej kontroli nad stanem magazynu ) • Ustalenie obszaru informacyjnego modelowanego w systemie - określenie fragmentu procesów informacyjnych zachodzących w organizacji, które będą objęte przedsięwzięciem • Ustalenie kontekstu przedsięwzięcia (systemy, organizacje, użytkownicy zewnętrzni, z którymi tworzony system ma współpracować) • Określenie funkcji realizowanych lub wspomaganych przez produkt, • Określenie wymagań o charakterze pozafunkcjonalnym do spełnienia przez produkt (np.. wymaganie współpracy i wymiany danych z istniejącym oprogramowaniem, zachowanie odpowiedniego stylu interfejsu, maksymalny czas oczekiwania na reakcję systemu) Wykład 1 (9) Inżynieria oprogramowania Wprowadzenie: pojęcia podstawowe, cele zarządzania w PI Cele – cd: • Ustalenie ograniczeń ze strony klienta (np. dostępny sprzęt, kwalifikacje personelu przewidzianego do obsługi produktu, możliwość przeprowadzenie szkoleń w odpowiednim wymiarze osobowym i czasowym, analiza cech osobowych klienta mogących mieć wpływ na przebieg dalszej współpracy i wdrożenia) Rezultat: Dokument zawierający: • wyszczególnienie zidentyfikowanych celów klienta • opis wymagań funkcjonalnych i pozafunkcjonalnych • wyrażonych w języku zrozumiałym dla klienta • potwierdzony przez klienta, • wykazujący związek pomiędzy zidentyfikowanymi celami klienta a wyszczególnionymi wymaganiami funkcjonalnymi i pozafunkcjonalnymi 6 Wykład 1 (10) Inżynieria oprogramowania Wprowadzenie: pojęcia podstawowe, cele zarządzania w PI Analiza wykonalności, analiza ryzyka Cele: • Określenie metod osiągnięcia celów zamawiającego wyrażonych w fazie analizy wymagań – wskazane opracowanie wariantów rozwiązań, • Stwierdzenie czy osiągnięcie tych celów jest technicznie możliwe przy dostępnym stanie zasobów, • Wstępne oszacowanie kosztów realizacji przedsięwzięcia, • Ustalenie wielkości wymaganych zasobów, w tym składu zespołu realizującego, • Określenie ram czasowych realizacji przedsięwzięcia, • Określenie standardów, zgodnie z którymi realizowane będzie przedsięwzięcie, • Uzgodnienie wybranego wariantu rozwiązania z klientem, • Ustalenie miary niepewności czynników decydujących o powodzeniu przedsięwzięcia (np. prawdopodobieństwo zmiany wymagań, stopień niepewności określenia kosztów, przewidywane problemy wdrożeniowe, niewypłacalność ) Wykład 1 (11) Inżynieria oprogramowania Wprowadzenie: pojęcia podstawowe, cele zarządzania w PI Rezultat: Dokument określający dla każdego proponowanego wariantu: • Metody i algorytmy zapewniające spełnienie oczekiwań klienta, • Zestawienie wymaganych zasobów, • Kosztorys wstępny, • Wstępny plan realizacji przedsięwzięcia, • Standardy będące podstawą proponowanych rozwiązań (np. technologia baz danych, architektura sieci, protokoły komunikacyjne, standard interfejsu użytkownika, standardy formatów wymiany danych [np.. XML]) • Porównanie proponowanych wariantów wg przyjętych kryteriów (np.. czas realizacji, koszt, efektywność, niezawodność, możliwość ponownego użycia) • Klauzulę akceptacji wybranego rozwiązania przez klienta Wyniki analizy ryzyka zwykle umieszcza się w osobnym dokumencie 7 Wykład 1 (12) Inżynieria oprogramowania Wprowadzenie: pojęcia podstawowe, cele zarządzania w PI Projekt zewnętrzny: Cel: Określenie postaci produktu postrzegalnej przez klienta i inne współpracujące systemy a w szczególności: Zdefiniowanie interfejsu użytkownika, Wskazanie w jaki sposób (operacyjnie) będą realizowane wyszczególnione w fazie analizy wymagań wymagania funkcjonalne, Określenie postaci i zawartości wydruków Precyzyjne określenie interfejsów programowych (standardy i protokoły wymiany danych z innymi systemami), Określenie zmian w strukturach danych współdzielonych z innymi systemami (np. w bazach danych), Specyfikacja funkcji i metod w przypadku produktu typu API. Wykład 1 (13) Inżynieria oprogramowania Wprowadzenie: pojęcia podstawowe, cele zarządzania w PI Rezultat: Dokument zawierający opis elementów określonych w ramach fazy Zarys instrukcji użytkownika z podaniem scenariuszy realizacji operacji związanych z wyszczególnionymi wymaganiami funkcjonalnymi. Projekt strukturalny: Cele: • Określenie: architektury systemu, postaci wewnętrznej informacji, przepływ informacji, metod i algorytmów przetwarzania w taki sposób aby zapewnić spełnienie wszelkich wymagań określonych we wcześniejszych fazach 8 Wykład 1 (14) Inżynieria oprogramowania Wprowadzenie: pojęcia podstawowe, cele zarządzania w PI Cele - cd: • Dokonanie dekompozycji zadania na części przeznaczone do wykonania przez niezależne zespoły lub indywidualnych programistów. • Wyspecyfikowanie poszczególnych zadania na tyle szczegółowo, aby ich realizacja i walidacja mogły przebiegać niezależnie i nie wymagały dalszych działań ze strony projektanta. Rezultaty: • Schemat blokowy pokazujący podział systemu na moduły I przepływ informacji pomiędzy nimi w wybranej konwencji zapisu (np. W UML) • Dokładna specyfikacja wymienianych pomiędzy modułami struktur danych • Specyfikacja wewnętrznych protokołów wymiany danych • Specyfikacja interfejsu modułów • Podział pracy pomiędzy podzespoły Wykład 1 (15) Inżynieria oprogramowania Wprowadzenie: pojęcia podstawowe, cele zarządzania w PI Projekt szczegółowy (może być pominięty przy wystarczająco wysokim poziomie kompetencji członków zespołu): Cele: • Szczegółowe zdefiniowanie zadań dla programistów szeregowych, a w szczególności, • Podanie wszystkich algorytmów przetwarzania, • Zdefiniowanie interfejsów wewnątrzmodułowych, • Zdefiniowanie danych lokalnych, • Określenie typowych schematów współpracy wydzielonych jednostek modularyzacji (procedur, funkcji, obiektów). Rezultaty: Opis w/w elementów w postaci nadającej się do późniejszego wykorzystania w dokumentacji technicznej 9 Wykład 1 (16) Inżynieria oprogramowania Wprowadzenie: pojęcia podstawowe, cele zarządzania w PI Projekt testów: Cel – przygotowanie testów akceptacji: • Określenie typowych warunków eksploatacji systemu oraz typowych zestawów danych • Przygotowanie kompletnego zestawu scenariuszy testów gwarantującego: • sprawdzenie poprawności realizacji wszystkich wymagań funkcjonalnych i pozafunkcjonalnych w typowych warunkach i dla typowych danych, • sprawdzenie poprawności działania systemu dla wyszczególnionych w fazie specyfikacji zewnętrznej scenariuszy użycia, • ewentualne spełnienie innych kryteriów pokrycia testami (np. pokrycia kodu, pokrycia elementów interfejsu, pokrycia zapytań do bazy danych,pokrycia wydawnictw itp..) • Ewentualne przygotowanie dodatkowych programów i procedur testujących Wykład 1 (17) Inżynieria oprogramowania Wprowadzenie: pojęcia podstawowe, cele zarządzania w PI Rezultat: • Przygotowane zestawy danych do testowania, • Przygotowane typowe stany środowiska do przeprowadzenia testów (np. początkowego stanu baz danych) lub programy do uzyskania takich warunków • Przygotowane programy testujące. • Zestawienie scenariuszy testów ze wskazaniem wymagań które są w nich testowane. • Lista wszelkich sformułowanych w fazie analizy wymagań ze wskazaniem symboli testów je sprawdzających 10 Wykład 1 (18) Inżynieria oprogramowania Wprowadzenie: pojęcia podstawowe, cele zarządzania w PI Implementacja Cel: • wykonanie, uruchomienie i wstępne przetestowanie zaprojektowanego produktu Rezultaty: • Kod i zasoby (formatki wydruków, obrazy, pliki konfiguracyjne) dla zaimplementowanego produktu Testowanie: Cel: • wykonanie zaprojektowanych testów akceptacyjnych, • Usunięcie usterek wykrytych w trakcie wykonania testów • Dostarczenie dokumentacji testowania zwiększającej poziom zaufania do produktu Rezultat – dokumentacja testowania Wykład 1 (19) Inżynieria oprogramowania Wprowadzenie: pojęcia podstawowe, cele zarządzania w PI Dokumentowanie Cel: • Przygotowanie ostatecznej instrukcji dla użytkownika, • Utworzenie specyfikacji funkcjonalnej uzyskanej ze specyfikacji wymagań • Ewentualna korekta projektu strukturalnego i utworzenie z niego dokumentacji strukturalnej • Utworzenie dokumentacji technicznej Wdrożenie: Cel: • Doprowadzenie produktu do stanu faktycznej używalności u klienta, w tym: • Zainstalowanie i skonfigurowanie produktu, • Wprowadzenie podstawowych danych, • Przetestowanie u klienta, 11 Wykład 1 (20) Inżynieria oprogramowania Wprowadzenie: pojęcia podstawowe, cele zarządzania w PI Modele cykli życia produktu programowego: Kaskadowy – kolejne fazy realizacji projektu wykonywane są w określonej kolejności, jednokrotnie, ale w przypadku wykrycia błędów istnieje możliwość nawrotu do poprzedniej fazy Spiralny – produkt powstaje przyrostowo, w kolejnych wersjach, począwszy od działającego prototypu, dla każdej wersji wykonuje się kolejno wszystkie przewidziane fazy realizacji projektu zakończone wydaniem wersji Ewolucyjny – podobny do spiralnego, ale w kolejnych cyklach stopniowa nieplanowana ewolucja systemu we współpracy z użytkownikeim Przyrostowy – pełna funkcjonalność dostarczana w postaci szeregu kolejnych zamkniętych funkcjonalnie elementów Z prototypowaniem – na etapie analizy wymagań przygotowywany jest prototyp Wykład 1 (21) Inżynieria oprogramowania Wprowadzenie: pojęcia podstawowe, cele zarządzania w PI Określenie wymagań Projektowanie Implementacja Wdrożenie Utrzymanie i ewolucja Model kaskadowy 12 Wykład 1 (21) Inżynieria oprogramowania Wprowadzenie: pojęcia podstawowe, cele zarządzania w PI Fazy rezlizacji Zakres funkcjonalności Model spiralny Wykład 1 (21) Inżynieria oprogramowania Wprowadzenie: pojęcia podstawowe, cele zarządzania w PI Określenie zakresu Opis ogólny Implementacja Prezentacja Ocena Model ewolucyjny 13 Wykład 1 (21) Opis ogólny Inżynieria oprogramowania Wprowadzenie: pojęcia podstawowe, cele zarządzania w PI Plan dostawy Realizacja przyrostu Model przyrostowy 14