PROJEKTOWANIE. kodowanie implementacja. PROJEKT most pomiędzy specyfikowaniem a kodowaniem

Podobne dokumenty
Testowanie oprogramowania

Testowanie oprogramowania. Piotr Ciskowski

Architektura Systemu. Architektura systemu umożliwia kontrolowanie iteracyjnego i przyrostowego procesu tworzenia systemu.

Maciej Oleksy Zenon Matuszyk

INŻYNIERIA OPROGRAMOWANIA TESTOWANIE INTEGRACYJNE

Etapy życia oprogramowania

Iteracyjno-rozwojowy proces tworzenia oprogramowania Wykład 3 część 1

Etapy życia oprogramowania. Modele cyklu życia projektu. Etapy życia oprogramowania. Etapy życia oprogramowania

Analiza i projektowanie oprogramowania. Analiza i projektowanie oprogramowania 1/32

Kumulowanie się defektów jest możliwe - analiza i potwierdzenie tezy

Błędy procesu tworzenia oprogramowania (Badania firmy Rational Software Corporation)

<Nazwa firmy> <Nazwa projektu> Specyfikacja dodatkowa. Wersja <1.0>

Zofia Kruczkiewicz - Modelowanie i analiza systemów informatycznych 2

REFERAT PRACY DYPLOMOWEJ

Testowanie i walidacja oprogramowania

Rozdział 5: Zarządzanie testowaniem. Pytanie 1

MODELE CYKLU ŻYCIA OPROGRAMOWANIA (1) Model kaskadowy (często stosowany w praktyce do projektów o niewielkiej złożonoś

Kurs programowania. Wykład 12. Wojciech Macyna. 7 czerwca 2017

Konwerter Plan testów. Jakub Rauch Tomasz Gołębiowski Adam Busch Bartosz Franaszek 1 czerwca 2008

Dlaczego testowanie jest ważne?

Kod doskonały : jak tworzyć oprogramowanie pozbawione błędów / Steve McConnell. Gliwice, cop Spis treści. Wstęp 15.

Metodyka projektowania komputerowych systemów sterowania

Zasady organizacji projektów informatycznych

Overlord - Plan testów

Systemy zabezpieczeń

Szkoła programisty PLC : sterowniki przemysłowe / Gilewski Tomasz. Gliwice, cop Spis treści

INŻYNIERIA OPROGRAMOWANIA TESTOWANIE SYSTEMOWE

Jakość w procesie wytwarzania oprogramowania

PRZEWODNIK PO PRZEDMIOCIE

Co to jest jest oprogramowanie? 8. Co to jest inżynieria oprogramowania? 9. Jaka jest różnica pomiędzy inżynierią oprogramowania a informatyką?

Język programowania DELPHI / Andrzej Marciniak. Poznań, Spis treści

Szczegółowy plan szkolenia

Podstawy programowania III WYKŁAD 4

Jarosław Kuchta Dokumentacja i Jakość Oprogramowania. Wymagania jakości w Agile Programming

Myśl w języku Python! : nauka programowania / Allen B. Downey. Gliwice, cop Spis treści

Wykład 8. Testowanie w JEE 5.0 (1) Autor: Zofia Kruczkiewicz. Zofia Kruczkiewicz

Zawód tester, czyli na czym polega testowanie. Katarzyna Łabinska Justyna Sacha - Gawlik

Komputerowe Systemy Przemysłowe: Modelowanie - UML. Arkadiusz Banasik arkadiusz.banasik@polsl.pl

Wykład 1 Inżynieria Oprogramowania

Spis treści. Przedmowa Karolina Zmitrowicz, Adam Roman. Część I. Organizacja i procesy 1

Rubik s Manager - Plan testów

Cykle życia systemu informatycznego

RUP. Rational Unified Process

Projekt dotyczy stworzenia zintegrowanego, modularnego systemu informatycznego wspomagającego zarządzanie pracownikami i projektami w firmie

Algorytmika i pseudoprogramowanie

Projektowanie oprogramowania. Termin zajęć: poniedziałek, a podstawie materiału ze strony.

Zofia Kruczkiewicz - Modelowanie i analiza systemów informatycznych 1

<Nazwa firmy> <Nazwa projektu> Specyfikacja wymagań projektu. Wersja <1.0>

Historia modeli programowania

Priorytetyzacja przypadków testowych za pomocą macierzy

Praktyka Programowania

IO - Plan wdrożenia. M.Jałmużna T.Jurkiewicz P.Kasprzyk M.Robak. 5 czerwca 2006

Laboratorium 5 - Projektowanie programów zorientowanych obiektowo. Indywidualny projekt programistyczny

IO - Plan testów. M.Jałmużna T.Jurkiewicz P.Kasprzyk M.Robak. 5 czerwca 2006

Mechatronika i inteligentne systemy produkcyjne. Modelowanie systemów mechatronicznych Platformy przetwarzania danych

Język programowania PASCAL

Tester oprogramowania 2014/15 Tematy prac dyplomowych

Testowanie oprogramowania. Testowanie oprogramowania 1/34

Charakterystyka oprogramowania obiektowego

Nazwa Projektu. Plan testów. Wersja N.NN

In ż ynieria oprogramowania wykład II Modele i fazy cyklu życia oprogramowania

ZAŁĄCZNIK NR 3 OPIS PRZEDMIOTU ZAMÓWIENIA DOTYCZĄCY WDROŻENIA PLATFORMY ZAKUPOWEJ

TESTOWANIE APLIKACJI KORPORACYJNYCH

Zarządzanie i realizacja projektów systemu Microsoft SharePoint 2010

Szablon Planu Testów Akceptacyjnych

Wykład 7. Projektowanie kodu oprogramowania

Porównanie metod i technik testowania oprogramowania. Damian Ryś Maja Wojnarowska

1. Prace rozwojowe usługi informatyczne w zakresie opracowania prototypu oprogramowania serwisowo-instalatorskiego dla systemu testowego

Wykład VII. Programowanie III - semestr III Kierunek Informatyka. dr inż. Janusz Słupik. Wydział Matematyki Stosowanej Politechniki Śląskiej

Plan Testów Systemu SOS

UPEDU: Implementacja (ang. Implementation discipline)

Wskazówki projektowe. Programowanie Obiektowe Mateusz Cicheński

Waterfall model. (iteracyjny model kaskadowy) Marcin Wilk

Dokument Detaliczny Projektu Temat: Księgarnia On-line Bukstor

Plan testów. Robert Dyczkowski, Piotr Findeisen, Filip Grzdkowski. 4 czerwca 2006

Modelowanie i Programowanie Obiektowe

Przedsięwzięcia Informatyczne w Zarządzaniu

SVN. 10 października Instalacja. Wchodzimy na stronę i pobieramy aplikację. Rysunek 1: Instalacja - krok 1

Dr Katarzyna Grzesiak-Koped

XQTav - reprezentacja diagramów przepływu prac w formacie SCUFL przy pomocy XQuery

ZAPYTANIE OFERTOWE. Zamawiający. Przedmiot zapytania ofertowego. Wrocław, dnia r.

Zespół: Agata Chrobak Kornel Jakubczyk Tomek Klukowski Przemek Kosiak. Projekt SZOP Plan testów

Inżynieria Programowania - Projektowanie architektoniczne

Strategia testów mająca doprowadzić do osiągnięcia pożądanych celów

Wymagania, specyfikacja i projektowanie

WPROWADZENIE DO UML-a

Pakiety są logicznymi zbiorami obiektów takich jak podprogramy, typy, zmienne, kursory, wyjątki.

Zwinna współpraca programistów i testerów z wykorzystaniem BDD i. by Example (JBehave/Spock/SpecFlow)

SPOSOBY POMIARU KĄTÓW W PROGRAMIE AutoCAD

Testujemy dedykowanymi zasobami (ang. agile testers)

Specyfikowanie wymagań przypadki użycia

NAJLEPSZE STRATEGIE SKUTECZNYCH PROGRAMISTÓW. TECHNIKI PRACY Z KODEM KOD: NSKOD

Projektowanie systemów informatycznych. Roman Simiński programowanie.siminskionline.pl. Cykl życia systemu informatycznego

Faza strategiczna. Synteza. Analiza. Instalacja. Faza strategiczna. Dokumentacja. kodowanie implementacja. produkt konserwacja

REFERAT PRACY DYPLOMOWEJ Temat pracy: SUDOKU - Algorytmy tworzenia i rozwiązywania

Nazwa wariantu modułu (opcjonalnie): Laboratorium programowania w języku C++

Spring Framework - wprowadzenie i zagadnienia zaawansowane

PROJEKT Z BAZ DANYCH

WARUNKI GWARANCJI I SERWISU GWARANCYJNEGO

Analiza i projektowanie obiektowe 2016/2017. Wykład 10: Tworzenie projektowego diagramu klas

Transkrypt:

PROJEKTOWANIE określenie wymagań specyfikowanie projektowanie kodowanie implementacja testowanie produkt konserwacja Faza strategiczna Analiza Dokumentacja Instalacja PROJEKT most pomiędzy specyfikowaniem a kodowaniem Cele projektowania (jak program będzie działał) - Algorytm podstawowy ( jak można to zrobić nie ma reguł, łatwy do przekształcenia w efektywny, możliwie bezawaryjny, modyfikowalny program iteracja wokół istoty problemu ) - Dekompozycja ( jak rozwiązania problemu dzieli się na podproblemy... proces twórczy, przekształcanie zalążka koncepcji rozwiązania problemu stopniowe doskonalenie (projektowanie od góry do dołu))

OGÓLNE ZASADY PROJEKTOWANIA PROJEKT most pomiędzy specyfikowaniem a kodowaniem TREŚĆ PROJEKTU algorytmy i struktury rozwiązujące problem Algorytmy + Struktury danych = Programy Nicklaus Wirth (projekt nie widoczny) Podejście iteracyjne (nie próbujemy aż do skutku, lecz wzmacniamy działanie systemu, każdy kolejny projekt (wzmocnienie) powinien móc być zrealizowany i testowany tak jakby był końcowym systemem) Stopniowe doskonalenie (zapis dekompozycji na komponenty z opisem interfejsów i komunikacyjnych struktur danych, gdzie dla każdego komponentu określa się funkcjonalność razem z elementami testów) parafraza strategii dziel i zwyciężaj. Ukrywanie informacji ( Lokalizowanie informacji wykorzystywanych przez wiele modułów w jednym miejscu (np. obsługa urządzeń zewnętrznych poza odwołaniami do drukowania) Uzupełnianie planu testów (każde rozwiązanie sugeruje test!!)

SZTUKA PROJEKTANTA Sztuka projektowania (w praktyce) sztuka przekształcania wymagań lub specyfikacji w kod programu lub coś zbliżonego do kodu. Przejście od wymagań do projektowania - forma wynika z funkcji - należy podejmować jedynie decyzje konieczne Od wymagań do projektu: - rozpoznanie każdego wymagania - wyszukanie w wymaganiach, zbioru wspólnych, koniecznych funkcji niezbędnych dla działania systemu (coś musi być zrobione jeśli warunek to odpowiedź (dobry model na funkcję) potrzebna jednak gdy częste odwołania do warunku) - skatalogowanie głównych, potrzebnych struktur danych (trwał i tymczasowe) - określenie unikatowych lub ważnych wymaganych algorytmów (często na początku proste przetwarzanie wyrasta ze struktur danych i funkcji)

Projektowanie podsystemów Projektowanie wysokiego poziomu - uzupełnienie dekompozycji- wynalezienie głównych podsystemów aplikacji, opisanie interfejsów między nimi oraz do interfejsu pomiędzy systemem a otoczeniem. Projektowanie głównych podsystemów - z których każdy może być miniaturowym systemem następnie udoskonalanym podczas szczegółowego projektowania - jedyna wskazówka dla tworzenia podsystemów doświadczenie w danej dziedzinie oraz z konstrukcji poprzednich systemów Zastosowanie poprzednio zaprojektowanych systemów: - oszczędza ogrom pracy - zabezpiecza przed błędami (były testowane) - jest ich ogromna ilość: podsystemy we-wy i sterowniki urządzeń biblioteki matematyczne, graficzne systemy zarządzania baza danych

Projektowanie podsystemów(2) Macierze śladu - pozwalają na sprawdzenie realizacji wszystkich wymagań poprzez określone podsystemy Wymagania Podsystemy...... [1.5.1] We/wy, Obsługa sesji, Matem [1.5.2] We/wy, Obsługa sesji, Matem, Obsługa błędów [1.5.3] We/wy, Obsługa sesji, Nadzór reaktora, Obsługa błędów...... [2.3.1] File, Obsługa błędów [2.3.2] Matem, Nadzór reaktora... (macierz odwrócona definicja podsystemów) Podsystem nadzoru reaktora Podsystem We/wy [1.5.4] [1.5.1], [1.5.2] [2.3.2] [1.5.3], [1.5.4]

Projektowanie podsystemów (3) Interfejsy podsystemów - komunikacja podsystemów (podsystemy izolowane) Zasady: Jedna wymagana funkcja, jeden interfejs (minimalizacja liczby sposobów wywoływania podsystemu, jasność interfejsu (equivalence)) Ustalenie kto będzie wywoływał podsystem i dlaczego (dane dla podsystemu i zwracane rezultaty Zapisz ograniczenia użycia interfejsu (np. kolejność i zależność danych podsystemu jeżeli to możliwe należy natychmiast uniemożliwić naruszenie tych ograniczeń Utrzymuj złożone, trudne do zmiany struktury danych, poza interfejsami Interfejsy ze środowiskiem - z systemami operacyjnymi i bibliotekami mogą nie być traktowane jako część projektu. Co innego interfejs systemu z użytkownikiem ma swoje wymagania.

Projektowanie szczegółowe Projektowanie szczegółowe - dostarcza informacji dla implementacji, kodowania Projekt szczegółowy identyfikuje i definiuje moduły (jednostki) implementacji programowania na tyle szczegółowe aby mogły być kodowane i testowane. Komponent (moduł) może być definiowany jako porcja kodu - realizowana w postaci jednego podprogramu - spełniająca wymagania logicznej lub funkcjonalnej części podsystemu - niezależna od reszty systemu, z wyjątkiem zdefiniowanych interfejsów

Projektowanie szczegółowe(2) Dekompozycja podsystemów na moduły - podobna do dekompozycji na etapie projektowania wysokiego poziomu. 1. Określenie głównych modułów podsystemu 2. Definicje interfejsów pomiędzy modułami 3. Określenie funkcji do wykonania przez każdy moduł Projektowanie głównych modułów - wykorzystanie odwróconej macierzy śladu. Zasady: niezależność modułów, minimalna liczba modułów, połącz każdy moduł z podsystemem który z kolei jest połączony z wymaganiami [1.8.1] System będzie wyznaczał poziom promieniowania co 200 milisekund. Jeśli poziom promieniowania przekroczy wartość krytyczną, to system uruchomi alarm -Wyznacza poziom promieniowania -Przekracza wartość krytyczną -Uruchamia alarm (kombinacje czasownik-rzeczownik mogą wyznaczać moduły)

Projektowanie szczegółowe(3) Definiowanie interfejsów modułów - określenie danych przekazywanych do i z modułu Określenie funkcji modułu - krótki opis uzupełniony formalna notacja projektową. Obsługa błędów aspekt funkcjonalności każdego modułu nie do zaniedbania: Błędy zakresu danych Błędy systemowe (nie powiodło się wywołanie np. biblioteki) Błędy wewnętrzne uszkodzenie struktury danych Zasada: jeżeli jest cień wątpliwości, czy dla danego modułu jest potrzebna obsługa błędów to jest ona NA PEWNO potrzebna

Projektowanie szczegółowe(4) Dokumentacja modułu - ostatni krok projektowania szczegółowego niezbędna dla realizacji podsystemu przez programistów Dokumentacja modułu powinna zawierać: Nazwę modułu i opis jego parametrów (nagłówek podprogramu) Nazwę pliku zawierającego dany moduł Opis globalnych lub zewnętrznych wejść i wyjść dla modułu, poza jego parametrami Opis funkcjonalny (specyfikacja) modułu, łącznie z obsługą błędów Dodatkowe założenia do sprawdzenia przy wywoływaniu modułu Zasada: Każda firma produkująca oprogramowanie posiada standardy dokumentacji modułów.

TESTOWANIE (optymistycznie) Testowanie oprogramowania ma na celu sprawdzenie, czy oprogramowanie spełnia wymagania. (pesymistycznie) Celem testowania oprogramowania jest znalezienie błędów. Testowanie oprogramowania powinno być realizowane zgodnie z przyjętym planem testów. Dwa aspekty błędów: awaria- oprogramowanie źle realizuje wymagania usterka błąd w kodzie programu powodujący awarię Zasada IEEE: Celem testowania oprogramowania jest takie wyszukiwanie awarii, że gdy oprogramowanie ulegnie awarii podczas testów, usterki odpowiedzialne za te awarie będą mogły być znalezione i poprawione.

TESTOWANIE(2) Testowanie jednostek a testowanie systemu Gdy dany moduł jest zakończony może być testowany na poziomie jednostki przez programistę (cykl test-poprawianie). Moduły są łączone w podsystemy i następnie w cały system który jest testowany na poziomie systemu Testowanie jednostek jest efektem dekompozycji problemu i nie wykrywa błędów w interfejsach pomiędzy nimi. Samodokumentowanie się kodu procedur bez ich funkcjonalnej specyfikacji często prowadzi do błędów (kod jest swoją własną definicją to nie może być oceniany)

TESTOWANIE(3) Testowanie jednostek a testowanie systemu Testowanie jednostek systemu wymaga wprowadzenia tzw. namiastek będącymi pozornymi procedurami uruchamiającymi testowaną jednostkę. Są to oczywiście warunki odmienne od występujących w rzeczywistej pracy systemu. Najczęściej namiastki są interaktywnymi interfejsami pomiędzy testowaną jednostką a testującym ją testerem (człowiekiem). Często stanowią również jednostki tzw. puste nie robiące nic, a jedynie zwracające sterowanie do jednostki testowanej Uprzęże testowe, służą automatyzacji testowania jednostek poprzez automatyczne programy testujące np. typy zmiennych

TESTOWANIE(4) Testowanie jednostek a testowanie systemu Testowanie podsystemów - ukryte informacje w danych wewnętrznych prowadzi do losowego zachowania systemu wprowadzenie dodatkowych funkcji drukowania czytelnej dla testera wersji struktur wewnętrznych (polepszanie testowalności kodu) Testowanie kodu obiektowego metody klasy obiektowej są podprogramami dostępu i również tutaj powstaje problem badania danych ukrytych. Pomaga tutaj dziedziczenie jeżeli metoda nadklasy dziedziczona przez podklasy była testowana jednostkowo to nie ma potrzeby testowania jej w każdej podklasie. Testowanie ciągów wejść do podsystemów generowanie stanów które powinny być obsłużone przez system eliminacja ślepych zaułków.

TESTOWANIE(5) Testowanie systemu Testy systemowe - ich efekt będzie widoczny dla użytkowników. Inne działania testowe nie będą widoczne dla użytkowników. Testowanie integracyjne przyrostowa metoda integracji systemu, dokładanie kolejnych podsystemów. Testowanie z góry i z dołu. Tak naprawdę dopiero w testowaniu systemowym widać spełnianie wymagań i realizację opracowanych specyfikacji. Inspekcja kodu a testowanie jednostki lub podsystemu mają doprowadzić do znalezienia usterki kodzie jednostki.