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