Specyfikacja klas. Opis Lista pól Lista metod Ograniczenia. Szacowana lub dokładna liczba obiektów tej klasy Trwałość

Podobne dokumenty
UML a kod. C++, Java i C#

Cele przedsięwzięcia

Określanie wymagań. Cele przedsięwzięcia. Kontekst przedsięwzięcia. Rodzaje wymagań. Diagramy przypadków użycia use case diagrams

UML a kod w C++ i Javie. Przypadki użycia. Diagramy klas. Klasy użytkowników i wykorzystywane funkcje. Związki pomiędzy przypadkami.

Inżynieria oprogramowania

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

Dziedzina problemu. System. Model. Uzytkownik. Przewoznik. Zleceniodawca Wydawanie opinii. Zarzadzanie pojazdami

Modelowanie przypadków użycia. Jarosław Kuchta Projektowanie Aplikacji Internetowych

Klasy abstrakcyjne i interfejsy

Programowanie obiektowe

Instrukcja 2 Laboratorium z Podstaw Inżynierii Oprogramowania

Podstawy projektowania systemów komputerowych

Faza Określania Wymagań

Inżynieria oprogramowania wykład IV Faza określenia wymagań

Podstawy Programowania Obiektowego

Dokumentacja do API Javy.

Podstawy programowania III WYKŁAD 4

Interfejsy i klasy wewnętrzne

Java - tablice, konstruktory, dziedziczenie i hermetyzacja

Laboratorium 6 DIAGRAM KLAS (Class Diagram)

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

Programowanie obiektowe

Informatyka I. Klasy i obiekty. Podstawy programowania obiektowego. dr inż. Andrzej Czerepicki. Politechnika Warszawska Wydział Transportu 2018

LK1: Wprowadzenie do MS Access Zakładanie bazy danych i tworzenie interfejsu użytkownika

Interfejsy. Programowanie obiektowe. Paweł Rogaliński Instytut Informatyki, Automatyki i Robotyki Politechniki Wrocławskiej

Programowanie obiektowe i zdarzeniowe

Dariusz Brzeziński. Politechnika Poznańska, Instytut Informatyki

Kurs WWW. Paweł Rajba.

Aplikacje w środowisku Java

1. Które składowe klasa posiada zawsze, niezależnie od tego czy je zdefiniujemy, czy nie?

UML w Visual Studio. Michał Ciećwierz

TEMAT : KLASY DZIEDZICZENIE

Techniki programowania INP001002Wl rok akademicki 2018/19 semestr letni. Wykład 3. Karol Tarnowski A-1 p.

Zalety projektowania obiektowego

Programowanie obiektowe

Biuro Podróży 0. Stwórz projekt aplikacja konsolowa lub WPF (przemyśl wybór, bo zmiana może być czasochłonna). 1. Stwórz abstrakcyjną klasę

Kurs programowania. Wykład 2. Wojciech Macyna. 17 marca 2016

Biuro Podróży 0. Stwórz projekt aplikacja konsolowa lub WPF (przemyśl wybór, bo zmiana może być czasochłonna). 1. Stwórz abstrakcyjną klasę

Informatyka I. Dziedziczenie. Nadpisanie metod. Klasy abstrakcyjne. Wskaźnik this. Metody i pola statyczne. dr inż. Andrzej Czerepicki

Technologie i usługi internetowe cz. 2


Inżynieria oprogramowania II

Programowanie obiektowe i zdarzeniowe wykład 4 Kompozycja, kolekcje, wiązanie danych

Dariusz Brzeziński. Politechnika Poznańska, Instytut Informatyki

Programowanie obiektowe

Modelowanie obiektowe

Diagramy klas. dr Jarosław Skaruz

JAVA W SUPER EXPRESOWEJ PIGUŁCE

Wykład 5 Okna MDI i SDI, dziedziczenie

PROE wykład 2 operacje na wskaźnikach. dr inż. Jacek Naruniec

Programowanie w Sieci Internet Blok 2 - PHP. Kraków, 09 listopada 2012 mgr Piotr Rytko Wydział Matematyki i Informatyki

Aplikacje w środowisku Java

Podstawy programowania. Wykład Funkcje. Krzysztof Banaś Podstawy programowania 1

Wyjątki. Streszczenie Celem wykładu jest omówienie tematyki wyjątków w Javie. Czas wykładu 45 minut.

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

Programowanie obiektowe

Programowanie współbieżne Wykład 8 Podstawy programowania obiektowego. Iwona Kochaoska

Dziedziczenie jednobazowe, poliformizm

Instrukcja 3 Laboratoria 3, 4 Specyfikacja wymagań funkcjonalnych za pomocą diagramu przypadków użycia

Diagramy czynności Na podstawie UML 2.0 Tutorial

Programowanie obiektowe - 1.

Kurs programowania. Wstęp - wykład 0. Wojciech Macyna. 22 lutego 2016

Zagadnienia (1/3) Data-flow diagramy przepływów danych ERD diagramy związków encji Diagramy obiektowe w UML (ang. Unified Modeling Language)

PHP 5 język obiektowy

APIO. W7 SPECYFIKACJA (UŻYCIA) DOSTĘPU DO DANYCH I SPOSOBU ICH PRZETWARZANIA 1. METODA CRUD 2. LOGIKA FUNKCJI

Programowanie obiektowe zastosowanie języka Java SE

Wzorce Strukturalne. Adapter: opis. Tomasz Borzyszkowski

Rysunek 1: Przykłady graficznej prezentacji klas.

Język JAVA podstawy. Wykład 4, część 1. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna

Dziedziczenie. dr Jarosław Skaruz

Zaawansowane programowanie w C++ (PCP)

Klasy i obiekty cz II

Obszar statyczny dane dostępne w dowolnym momencie podczas pracy programu (wprowadzone słowem kluczowym static),

Wprowadzenie do projektu QualitySpy

RFP. Wymagania dla projektu. sklepu internetowego B2C dla firmy Oplot

Modelowanie i analiza systemów informatycznych Spis treści

Dzisiejszy wykład. Wzorce projektowe. Visitor Client-Server Factory Singleton

Materiały do zajęć VII

Programowanie obiektowe

Marcin Luckner Politechnika Warszawska Wydział Matematyki i Nauk Informacyjnych

C++ - dziedziczenie. C++ - dziedziczenie. C++ - dziedziczenie. C++ - dziedziczenie. C++ - dziedziczenie C++ - DZIEDZICZENIE.

Wykład 7: Pakiety i Interfejsy

Projektowanie systemów informatycznych. Roman Simiński siminskionline.pl. Modelowanie danych Diagramy ERD

Polimorfizm, metody wirtualne i klasy abstrakcyjne

IO - inżynieria oprogramowania. dr inż. M. Żabińska, zabinska@agh.edu.pl

Język JAVA podstawy. wykład 2, część 1. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna

Programowanie obiektowe Wykład 6. Dariusz Wardowski. dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 1/14

Wątek - definicja. Wykorzystanie kilku rdzeni procesora jednocześnie Zrównoleglenie obliczeń Jednoczesna obsługa ekranu i procesu obliczeniowego

Paweł Kurzawa, Delfina Kongo

Zofia Kruczkiewicz - Modelowanie i analiza systemów informatycznych 1

Definiowanie własnych klas

Instrukcja 3 Laboratoria 3, 4 Specyfikacja wymagań funkcjonalnych za pomocą diagramu przypadków użycia

Wykład 8: klasy cz. 4

Diagramy przypadków użycia

Instrukcja 3 Laboratoria 3, 4 Specyfikacja wymagań funkcjonalnych za pomocą diagramu przypadków użycia

Krzysztof Kluza proste ćwiczenia z baz danych

KATEDRA INFORMATYKI STOSOWANEJ PŁ INŻYNIERIA OPROGRAMOWANIA

Metody dostępu do danych

INŻYNIERIA OPROGRAMOWANIA. laboratorium

Transkrypt:

Specyfikacja klas Opis Lista pól Lista metod Ograniczenia Np. Wzrost > 0 Płaca minimalna < Płaca maksymalna Szacowana lub dokładna liczba obiektów tej klasy Trwałość

Specyfikacja metod opis specyfikacja deklaratywna dane wejściowe dane wyjściowe algorytm warunki wstępne warunki końcowe wyjątki złożoność czasowa złożoność pamięciowa

Specyfikacja pól i parametrów typ przechowywanych wartości jednostka miary zakres dopuszczalnych wartości lista możliwych wartości wymagana precyzja wartość domyślna czy pole może być puste ograniczenia metody, które mogą czytać, ustawiać i modyfikować wartości tego pola.

Specyfikacja algorytmów Algorytm klasyfikacji na podstawie reguł decyzyjnych Dane wejściowe Uporządkowana (wg. ważności) lista reguł decyzyjnych w postaci: Jeżeli (A1 =...) i... i (An...) to Decyzja =... Reguła domyślna z pustą częścią warunkową Obiekt do zaklasyfikowania opisany atrybutami A1 do An

Algorytm klasyfikacji na podstawie reguł decyzyjnych powtarzaj od reguły najważniejszej do najmniej ważnej jeżeli obiekt spełnia warunki reguły, to podejmowana jest decyzja wskazywana przez regułę dopóki nie podjęto decyzji lub nie sprawdzono wszystkich reguł jeżeli nie podjęto decyzji, to podejmij decyzję wskazywaną przez regułę domyślną

Budowa statycznego modelu klas Identyfikacja klas Identyfikacja związków klas Identyfikacja pól Identyfikacja metod

Identyfikacja klas Typowe klasy: przedmioty namacalne (np. samochód, czujnik), role pełnione przez osoby (np. pracownik, wykładowca, polityk), zdarzenia, o których system przechowuje informacje (np. lądowanie samolotu, zamówienie, dostawa), interakcje pomiędzy osobami i/lub systemami, o których system przechowuje informacje (np. pożyczka, spotkanie, konferencja), lokalizacje, tj. miejsca przeznaczone dla ludzi lub przedmiotów,

Identyfikacja klas Typowe klasy grupy przedmiotów namacalnych (samochody, czujniki), organizacje (np. firma, wydział, związek), koncepcje (np. miara jakości, zadanie), dokumenty (np. prawo jazdy, faktura), klasy będące interfejsami dla systemów zewnętrznych, klasy będące interfejsami dla urządzeń sprzętowych.

Identyfikacja klas Analiza dziedziny problemu (problem domain analysis) wykorzystanie wiedzy dziedzinowej literatura seminaria prezentacje rysunki inne modele np. modele procesów biznesowych

Analiza opisu w języku naturalnym Rzeczowniki - potencjalne klasy, obiekty lub pola Czasowniki - potencjalne operacje lub związki klas Ma, posiada, obejmuje, składa się, jest częścią, - związki kompozycji Rzeczowniki odczasownikowe związki klas Rzeczowniki mogą oznaczać role pełnione w związkach

Przykład Każdy projekt jest realizowany przez konsorcjum złożone z co najmniej trzech organizacji. Organizacja może być firmą komercyjną, jednostką badawczą lub organizacją publiczną. Organizacja może realizować wiele projektów badawczych. Każdy projekt ma jednego koordynatora.

Przykład

Identyfikacja klas Wykorzystanie związków klas i obiektów Czy klasa ma potencjalne specjalizacje i/lub generalizacje? Czy klasa ma części składowe i/lub jest częścią większej całości? Czy klasa pozostaje w związkach z innymi klasami?

Identyfikacja klas Analiza funkcji Jakie obiekty, jakich klas będą niezbędne do realizacji poszczególnych funkcji

Weryfikacja klas Nieobecność pól i operacji Nieliczne (pojedyncze) pola i operacje Brak związków z innymi klasami Tylko jeden obiekt w klasie Dobrą klasą jest klasa Samochód, złymi Samochód Kowalskiego i Samochód Nowaka.

Identyfikacja krotności związków Analiza przykładowych (rzeczywistych lub wymyślonych) powiązań obiektów

Weryfikacja związków obligatoryjnych np. 1 lub 1..* Czy instytut musi mieć pracowników?

Identyfikacja związków kompozycji Zwroty pojawiające się w słownym opisie systemu jak: zawiera, składa się, obejmuje Klasy posiadające części składowe Klasy będące zbiorami pewnych elementów

Części składowe

Zbiory

Identyfikacja związków generalizacji-specjalizacji Dziedziczenie pól i metod

Identyfikacja związków generalizacji-specjalizacji Nazwy zawierające się w sobie pracownik i pracownik naukowy samochód i samochód osobowy Wspólne części nazw pracownik naukowy i pracownik techniczny -> generalizacja pracownik

Identyfikacja związków generalizacji-specjalizacji Pola, którym nie zawsze można przypisać wartości Metody, które nie zawsze mają sens

Związki, które mogą dotyczyć tylko pewnych obiektów

Pola służące do rozróżniania obiektów

Identyfikacja pól Co jest potrzebne do opisu danej klasy w ramach dziedziny problemu? Jakie dane będą potrzebne operacjom danej klasy do realizacji ich zadań? Jakie pola należy wprowadzić, aby opisać stany w jakich mogą znajdować się obiekty danej klasy? Klasa czy pole?

Przykład

Weryfikacja związków Czy sensownie brzmi zdanie "A jest rodzajem B" (jeżeli klasa A jest specjalizacją klasy B)? Czy sensownie brzmi zdanie "A [czasownik] B" (jeżeli klasy A i B są związane związkiem klas)? Czy sensownie brzmią zdania "A jest częścią B" lub "B składa się (zawiera) A" (jeżeli obiekty klasy A są składowymi obiektów klasy B)?

UML a kod w C++ i Javie Projektowanie oprogramowania Dokumentowanie oprogramowania

Diagramy przypadków użycia

Klasy użytkowników i wykorzystywane funkcje Mogą sugerować podział systemu na odrębne aplikacje, np. aplikacja dla użytkowników systemu aplikacja dla administratora Elementy interfejsu użytkownika, np. różne tryby pracy, np. różne systemy menu oddzielne fragmenty w strukturze menu blokowanie dostępu do pewnych funkcji

Przypadki użycia Funkcje systemu Elementy interfejsu użytkownika menu, podmenu, polecenia w menu dialogi

Związki pomiędzy przypadkami użycia Struktura menu Polecenia dostępne w dialogach, np. wywoływanie innych dialogów Kreatory (creators, wizards)

Diagramy klas Bezpośrednie przełożenie na kod Wiele dodatkowych elementów wykorzystywanych na etapie projektowania

Klasa class Pojazd {... } Nazwy - prefixy, suffixy, zamiana spacji i niedozwolonych znaków class CStudentDzienny {... }

Pola C++ class CPojazd {...... Nazwa;... CenaKilometra;... CenaGodziny; } Na przykład: class CPojazd { protected: char* Nazwa; double CenaKilometra; double CenaGodziny; }

Pola Java, C# class Pojazd {... nazwa;... cenakilometra;... cenagodziny; } Na przykład: class CPojazd { protected String nazwa; protected double cenakilometra; protected double cenagodziny; }

Symbole widoczności pól i operacji + public publiczne # protected zabezpieczone/chronione - private prywatne ~ - w ramach pakietu

class CPojazd { public:... Nazwa; protected:... CenaKilometra; private:... CenaGodziny; } class Pojazd { public... nazwa; protected... cenakilometra; private... cenagodziny; } C++ Java, C#

Typy pól

Operacje i metody C++ class CPojazd {... public:... Koszt (...); };...... CPojazd::Koszt (...) {... }

Operacje i metody Java, C# class Pojazd {... public... koszt (...) {... } }

Nagłówki operacji C++ class CPojazd {... public: double Koszt (double Czas, double Droga); };... double CPojazd::Koszt (double Czas, double Droga) {... }

Nagłówki operacji Java, C# class Pojazd {... public double koszt (double czas, double droga) {... } }

Generalizacja-specjalizacja C++ Java C# class CStudentDzienny : public CStudent {... } class StudentDzienny extends Student {... } class StudentDzienny: Student {... }

Klasy abstrakcyjne Pochyła czcionka Klasy nie posiadające obiektów (bezpośrednio tej klasy)

Klasy abstrakcyjne C++ Brak tworzenia obiektów tej klasy w kodzie Operacje abstrakcyjne muszą być zdefiniowane w każdej ze specjalizacji, której obiekty będą tworzone class CStudent {... virtual CGrupa* PodajGrupe () = 0; }

Klasy abstrakcyjne Java, C# abstract class Student {... } albo abstract class Student {... abstract CGrupa podajgrupe (); }

Interfejsy (interfaces) Zbiór operacji (deklaracji metod) Przypomina klasę zawierającą wyłącznie operacje abstrakcyjne Może zawierać stałe

Interfejsy w C++ Nie wspierane? class CObiektGraficzny { public: virtual void Rysuj () = 0; }

Interfejsy w Javie interface IObiektGraficzny { } void rysuj (); Implementacja interfejsu class Rysunek implements IObiektGraficzny {... } public void rysuj ();

Interfejsy w C# interface IObiektGraficzny { void Rysuj(); } Implementacja interfejsu class Rysunek: IObiektGraficzny {... public void Rysuj(); }

Związki klas Ogólnie dowolny sposób pozwalający na przechowanie informacji o powiązanych obiektach Np. tablica zawierająca pary powiązanych obiektów Kolo naukowe Pracownik K. Informatyki Nowak K. Fizyki Kamiński K. Chemii Zieliński

Związki klas Najczęściej dodatkowe pola przechowujące informacje o powiązanych obiektach Każdy obiekt klasy Pracownik będzie przechowywał informacje o powiązanym obiekcie (dowolnej liczbie) klasy Kolo naukowe Każdy obiekt klasy Kolo naukowe będzie przechowywał informacje o powiązanych obiektach (dokładnie jednym jednym) klasy Pracownik

Sposób przechowywania informacji o powiązanych obiektach Identyfikatory (np. nazwy) Wskaźniki/referencje

Związki w C++ Najczęściej wskaźniki class CPracownik {... protected: vector <CKoloNaukowe*> rkolonaukowe; } class CKoloNaukowe {... protected: CPracownik* rpracownik; }

Związki w C++ Krotność 1 Wskaźnik, który musi wskazywać na powiązany obiekt Krotność 0..1 Wskaźnik, który może mieć wartość NULL Krotność *, 1..* Klasa vector (biblioteka STL) dla 1..* nie może być pusty Tablica wskaźników Inna struktura danych

Związki w Javie Najczęściej referencje i ich kolekcje class Pracownik {... protected Vector rkolonaukowe; // lub protected KoloNaukowe[] rkolonaukowe; } class KoloNaukowe { }... protected Pracownik pracownik;

Związki w Javie Krotność 1 Referencja, która musi wskazywać na powiązany obiekt Krotność 0..1 Referencja, która może mieć wartość NULL Krotność *, 1..* Obiekt klasy z biblioteki standardowych struktur danych Javy dla 1..* nie może być pusty Tablica referencji Inna struktura danych

Związki w C# Najczęściej referencje i ich kolekcje jak w Javie class Pracownik {... protected List<KoloNaukowe> rkolonaukowe; // lub protected KoloNaukowe[] rkolonaukowe; } class KoloNaukowe { }... protected Pracownik pracownik;

Związki w C# Krotność 1 Referencja, która musi wskazywać na powiązany obiekt Krotność 0..1 Referencja, która może mieć wartość NULL Krotność *, 1..* Obiekt klasy z biblioteki standardowych struktur danych.net (ArrayList, List<>) dla 1..* nie może być pusty Tablica referencji Inna struktura danych

Wykorzystanie nazw ról w związkach class CKoloNaukowe {... protected: CPracownik* ropiekun; } class KoloNaukowe {... protected Pracownik opiekun; }

Związki skierowane class CPracownik {... } Brak informacji o powiązanych obiektach klasy Kolo naukowe class CKoloNaukowe {... protected: CPracownik* rpracownik; }

Związek kompozycji (composition) W zasadzie na poziomie implementacji nierozróżnialne od związków zwykłych Często obiekt będący całością jest odpowiedzialny za przechowywanie swoich składowych (dodawanie, usuwanie)

Związek kompozycji (composition) W C++ czasami wykorzystanie obiektów zamiast wskaźników class CWydzial {... protected: vector <CInstytut> rinstytut; }

Diagramy sekwencji Wywoływanie metod w programie Podstawa implementacji metod

Wywołanie metody (call) void CRysunek::Rysuj () { }... olinia.rysuj ();...

Dla powiązanych obiektów w C++ void CRysunek::Rysuj () { }... rlinia->rysuj ();...

Czy wywołanie w pętli? Wnioskowanie z diagramu klas Sequence text, np. * Komentarz Brak nazwy obiektu

Tworzenie i usuwanie obiektów w C++ void CKlient::PobierzDane () { }... opolaczenie = new CPolaczenie ();... opolaczenie->odczytaj (...);... delete opolaczenie;...

Tworzenie i usuwanie obiektów w Javie public class Klient {... void pobierzdane () {... Polaczenie polaczenie = new Polaczenie ();... polaczenie.odczytaj (...);... }... }

Dostęp do pól Operacje: Pobierz dane / Get data Ustaw dane / Set data Pobierz pole / Get field Ustaw pole / Set field Mogą być implementowane jako odczyt/zapis pól

Dostęp do pól i samowywołanie void CRysunek::Rysuj () { }... RysujLinie (rlinia->punkty);... Samowywołanie Pobranie danych

Wywołania pochodzące z zewnątrz Klasa interfejsowa =

Operacje wirtualne (polimorficzne)

Operacje wirtualne W Javie domyślnie W C++ i C# virtual void Rysuj ();

Punkt widzenia klasy Rysunek Czy poprawne w UML dla klasy abstrakcyjnej?

Rzeczywiste wywołania metod dla obiektów

Ilustracja efektu operacji wirtualnej W rzeczywistości ta metoda nie istnieje

Diagramy stanów

Zmiany stanów w metodach void CArtykul::OcenaZakresu (TZakres Zakres) { } if (Stan == _NOWY) { } else if (Zakres == _ZGODNY) else Stan = _ZAAKCEPTOWANY_DO_RECENZJI; Stan = _NIEODPOWIEDNI; // Niepoprawne...

Akcje/operacje -> metody (fragmenty metod)... if (Zakres == _ZGODNY) Stan = _ZAAKCEPTOWANY_DO_RECENZJI; } else { } Stan = _NIEODPOWIEDNI; PowiadomAutora ();

Akcje/operacje -> metody (fragment metody) void CArtykul::Monitoruj () { if (Stan == _U_RECENZENTA) {... } }

Określanie wymagań

Cele przedsięwzięcia Klienta, np. Wzrost efektywności, spadek kosztów, rozszerzenie rynku, unikanie błędów Wykonawcy Biznesowe Techniczne Priorytety!

Kontekst przedsięwzięcia Użytkownicy role Istniejące oprogramowanie Specyficzny sprzęt

Określanie wymagań Współpraca klienta i wykonawcy! Źródła: Wywiady z przedstawicielami klienta Analiza materiałów dostarczonych przez klienta, przepisów prawnych Porównanie z innymi systemami

Rodzaje wymagań Wymagania funkcjonalne funkcje wspomagane przez oprogramowania - przypadki użycia (use cases) Wymagania niefunkcjonalne ograniczenia

Hierarchia wymagań funkcjonalnych Przykład: Ewidencja klientów Dodawanie klienta Edycja danych klienta Usuwanie klienta Wyszukiwanie klientów Wyszukiwanie proste Wyszukiwanie złożone

Sposoby poszukiwania wymagań funkcjonalnych Wykorzystanie hierarchii wymagań Z góry na dół Z dołu do góry Podejście mieszane Wykorzystanie informacji o rolach użytkowników Śledzenie procesów biznesowych Analiza scenariuszy

Z góry na dół

Z dołu do góry

Metoda mieszana

Wykorzystanie informacji o rolach użytkowników

Śledzenie procesów biznesowych Proces zbiór czynności wykonywanych przez różne osoby i działy organizacji scharakteryzowany przez: Wejście Wyjście (wynik) Cele Zadania Proces biznesowy proces, którego wynik ma wartość biznesową

Proces obsługi klienta pół-hurtowego 1.Dział sprzedaży wybór produktów, sformułowanie zamówienia połączone z weryfikacją dostępności produktów 2.Magazyn ponowna weryfikacja, skompletowanie zamówienia 3.Księgowość wystawienie faktury, rozliczenie finansowe 4.Magazyn wydanie towarów

Analiza scenariuszy Scenariusz słowny opis przykładowego sposobu (scenariusza) korzystania z systemu Z reguły obejmuje wiele funkcji

Analiza scenariuszy - przykład Użytkownik podaje podstawowe informacje o planowanym wyjeździe. Chce odwiedzić Polskę, spędzić tam tydzień, wjedzie i wyjedzie od strony Czech. Interesują go ciekawe miasta, wykopaliska archeologiczne i wydarzenia muzyczne (muzyka klasyczna). Określa ograniczenia finansowe. System generuje proponowany plan podróży biorąc pod uwagę podane preferencje i ograniczenia.

Analiza scenariuszy przykład Użytkownik może szczegółowo przeglądać proponowaną trasę korzystając m. in. z prezentacji multimedialnych System proponuje użytkownikowi potencjalne modyfikacje trasy, biorąc pod uwagę położenie geograficzne poszczególnych atrakcji oraz wybory innych użytkowników o podobnych preferencjach

Analiza scenariuszy przykład Użytkownik modyfikuje trasę dodając do niej wizytę w Biskupinie i rezygnując z wizyty w Gnieźnie Użytkownik akceptuje trasę i otrzymuje jej szczegółowy opis (wydruk, plik) Użytkownik wybiera funkcję rezerwacji hoteli. Po dokonaniu niewielkiej opłaty system współpracując z zewnętrznym systemem rezerwacji hotelowej dokonuje odpowiednich rezerwacji

Funkcje wynikające ze scenariusza Definiowanie ograniczeń i preferencji Generowanie planu podróży Przeglądanie trasy Wizualizacja geograficzna Prezentacja harmonogramu trasy Multimedialne prezentacje atrakcji Generowanie i prezentacja proponowanych zmian

Funkcje wynikające ze scenariusza Modyfikowanie trasy Akceptowanie trasy Przygotowanie szczegółowego opisu trasy Rezerwacja hoteli Pobieranie opłaty Rezerwacja hotelu

Analiza scenariuszy Użytkownik wchodzi na naszą stronę i ponieważ korzystał z niej już wcześniej wybiera od razu opcję wyszukiwania. Najpierw określa kraj, który go interesuje Szwajcaria, a następnie miasto Zurich. Użytkownik wybiera rodzaj oferty turystycznej narty. Ponieważ uprawianie narciarstwa w samym Zurichu nie jest możliwe otrzymuje listę kilku pobliskich stacji narciarskich. Użytkownik zapoznaje się z informacjami o kilku stacjach narciarskich trasy, wyciągi, ceny, możliwość wypożyczenia sprzętu oraz aktualne warunki śniegowe. Użytkownik sprawdza możliwość dojazdu z Zurichu do stacji narciarskiej Flumsberg. Sprawdza też możliwości zakwaterowania w (pobliżu) Flumsbergu. Ostatecznie dokonuje rezerwacji biletu rail&ski i pokoju w pensjonacie we Flumsbergu.

Funkcje wynikające ze scenariusza Wybór obszaru zainteresowania Wybór kraju Wybór miasta Wybór rodzaju oferty turystycznej Przeglądanie ofert stacji narciarskich Wyszukiwanie możliwości dojazdu Wyszukiwanie możliwości zakwaterowania Rezerwacja Rezerwacja biletów Rezerwacja miejsc noclegowych

Analiza scenariuszy Do magazynu zgłasza się klient, który złożył zamówienie w dziale sprzedaży. Klient podaje numer zamówienia, lub inną informację identyfikującą klienta. Magazynier odszukuje zamówienie w systemie i weryfikuje czy zamówiony towar został już zablokowany dla potrzeb klienta. Jeżeli tak, to potwierdza przyjęcie zamówienia do realizacji i prosi klienta o przejście do księgowości. Magazynier otrzymuje listę towarów do wydania wraz z ich lokalizacjami. Po skompletowaniu zamówienia potwierdza ten fakt w systemie. Po wydaniu towaru klientowi potwierdza ten fakt w systemie.

Funkcje wynikające ze scenariusza Realizacja zamówienia Identyfikacja zamówienia Weryfikacja zablokowania towaru Potwierdzenie przyjęcia zamówienia do realizacji Potwierdzenie skompletowania zamówienia Potwierdzenie wydania towaru

Specyfikacja wymagań Język naturalny Metody formalne Formularze

Elementy specyfikacji wymagań Nazwa Opis Dane wejściowe i ich źródła Wynik Warunki początkowe i końcowe Efekty uboczne Wyjątki Priorytet Źródło wymagania Wymagania powiązane Uzasadnienie

Wymagania niefunkcjonalne Ograniczenia dotyczące Produktu Procesu Współpracy z systemami zewnętrznymi Problem specyfikacji wymagań niefunkcjonalnych w sposób

Specyfikacja wymagań niefunkcjonalnych w sposób weryfikowalny Wydajność Liczba transakcji obsłużonych w ciągu sekundy Czas odpowiedzi Szybkość odświeżania ekranu Rozmiar Wymagana pamięć RAM Wymagana pamięć dyskowa Łatwość użytkowania Czas niezbędny dla przeszkolenia użytkowników Liczba stron dokumentacji Zgodność ze standardami

Specyfikacja wymagań niefunkcjonalnych w sposób weryfikowalny Niezawodność Prawdopodobieństwo błędnego wykonania podczas realizacji transakcji Częstotliwość występowania błędnych wykonań Średni czas pomiędzy błędnymi wykonaniami Dostępność (procent czasu, w którym system jest dostępny) Odporność (ang. robustness) Czas restartu po awarii systemu Prawdopodobieństwo zniszczenia danych w przypadku awarii

Specyfikacja wymagań niefunkcjonalnych w sposób weryfikowalny Przenośność Procent kodu zależnego od platformy docelowej Liczba platform docelowych Koszt przeniesienia na nową platformę