Modelowanie i analiza. warstwy biznesowej aplikacji



Podobne dokumenty
Literatura. J. Nilsson: Applying Domain-Driven Design and Patterns,With Examples in C# and.net, Addison-Wesley Professional, 2006

Warstwa integracji. wg. D.Alur, J.Crupi, D. Malks, Core J2EE. Wzorce projektowe.

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

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

Wykład 1 Inżynieria Oprogramowania

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

Tworzenie systemów informatycznych. Inżynieria oprogramowania Zofia Kruczkiewicz

Tworzenie modelu przypadków użycia część 1 Diagramy przypadków użycia Wykład2

Diagramy przypadków użycia Wykład2

Model przypadków użycia - rola diagramów przypadków użycia Część 1 Wykładowca Dr inż. Zofia Kruczkiewicz

Tworzenie warstwy prezentacji w wielowarstwowej aplikacji Przykład w środowisku Visual Web JSP

Zofia Kruczkiewicz - Modelowanie i analiza systemów informatycznych 2

Programowanie komponentowe 5

Diagramy czynności tworzenie modelu przypadków użycia Wykład 2

Wybrane aspekty projektowania - budowa wielowarstwowego modelu implementacji, zastosowanie wzorców projektowych Wykład 7 część 2

Projektowanie interfejsów graficznych aplikacji (GUI)

Laboratorium z przedmiotu: Inżynieria Oprogramowania INEK Instrukcja 6

Laboratorium z przedmiotu: Inżynieria Oprogramowania INEK Instrukcja 7

Model przypadków użycia - rola diagramów aktywności Część 2 Wykładowca Dr inż. Zofia Kruczkiewicz

Podstawowe informacje o technologii Java EE 7

Warstwa prezentacji. wg. D.Alur, J.Crupi, D. Malks, Core J2EE. Wzorce projektowe.

Informacje wstępne Autor Zofia Kruczkiewicz Wzorce oprogramowania 4

Tworzenie warstwy prezentacji drugi etap Przykład z laboratorium5_6. Autor Zofia Kruczkiewicz Wzorce oprogramowania laboratorium7_8

Laboratorium z przedmiotu: Inżynieria Oprogramowania INP

Zofia Kruczkiewicz - Modelowanie i analiza systemów informatycznych 1

Zagadnienia projektowania aplikacji J2EE

Diagramy czynności Na podstawie UML 2.0 Tutorial

Wprowadzenie do technologii JavaServer Faces 2.1 na podstawie

Wstęp - Prosta aplikacja internetowa w technologii Java EE 5. Programowanie komponentowe 1

Wprowadzenie do technologii JavaServer Faces 2.1 na podstawie

Diagramy maszyn stanowych, wzorce projektowe Wykład 5 część 1

Diagramy maszyn stanowych, wzorce projektowe Wykład 5 część 1

Projekt INP Instrukcja 1. Autor Dr inż. Zofia Kruczkiewicz

Podstawy programowania III WYKŁAD 4

Laboratorium 8 Diagramy aktywności

EJB 3.0 (Enterprise JavaBeans 3.0)

Laboratorium z przedmiotu: Inżynieria Oprogramowania INEK Instrukcja 5

Zasady generowania kluczy głównych Język Java Persistence Podstawowa architektura wielowarstwowych aplikacji w oparciu o wzorce oprogramowania

Implementacja modelu obiektowego

Przykład 1 Iteracja 1 tworzenia oprogramowania

Diagramy stanów tworzenie modeli analizy i projektowania Na podstawie UML 2.0 Tutorial

Koncepcja, projekt i implementacja wielowarstwowego systemu informatycznego Inżynieria oprogramowania Zofia Kruczkiewicz

Uniwersytet Łódzki Wydział Matematyki i Informatyki, Katedra Analizy Nieliniowej. Wstęp. Programowanie w Javie 2. mgr inż.

Szczególne problemy projektowania aplikacji internetowych. Jarosław Kuchta Projektowanie Aplikacji Internetowych

1 Wprowadzenie do J2EE

Wzorce oprogramowania zastosowane w modelu obiektowym (wg Alan Shalloway, James R.Trott)

Szkolenie wycofane z oferty. Program szkolenia: Enterprise Java Beans 3.0/3.1

Charakterystyka oprogramowania obiektowego

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

problem w określonym kontekście siły istotę jego rozwiązania

Wykład 7. Refaktoryzacja oprogramowania. autor: Zofia Kruczkiewicz

Wprowadzenie, podstawowe pojęcia, projekt a produkt Wykład1

Instrukcja 2 Laboratorium z Podstaw Inżynierii Oprogramowania

Tworzenie warstwy zasobów projektowanie metodą strukturalną

Laboratorium z przedmiotu: Inżynieria Oprogramowania INEK Instrukcja 5

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

Projektowanie oprogramowania. Warstwa integracji z bazą danych oparta na technologii ORM Platforma Java EE Autor: Zofia Kruczkiewicz

Tworzenie komponentów logiki biznesowej i warstwy dostępu do danych w oparciu o EJB3.0/JPA lub EJB 3.1/JPA2

Analiza i projektowanie aplikacji Java

Programowanie komponentowe. Przykład 1 Bezpieczeństwo wg The Java EE 5 Tutorial Autor: Zofia Kruczkiewicz

Budowa prostej aplikacji wielowarstwowej. Laboratorium 1 Programowanie komponentowe Zofia Kruczkiewicz

Tworzenie modelu konceptualnego systemu informatycznego część 1

Enterprise JavaBeans

Podyplomowe Studium Informatyki w Bizniesie Wydział Matematyki i Informatyki, Uniwersytet Łódzki specjalność: Tworzenie aplikacji w środowisku Oracle

Podrozdziały te powinny zawierać informacje istotne z punktu widzenia przyjętego celu pracy

Tworzenie systemów informatycznych. Inżynieria oprogramowania Zofia Kruczkiewicz

Język Java i technologie Web - opis przedmiotu

Wprowadzenie, podstawowe pojęcia, projekt a produkt Wykład1

Grupy pytań na egzamin magisterski na kierunku Informatyka (dla studentów dziennych studiów II stopnia)

Języki i metody programowania Java INF302W Wykład 2 (część 1)

Przykłady tworzenia aplikacji komponentowych w technologii JavaServer Faces 2.1 na podstawie

Dziedziczenie jednobazowe, poliformizm, tablice wskaźników na obiekty

Laboratorium z przedmiotu: Inżynieria Oprogramowania INEK Instrukcja 2

Plan prezentacji. Budowa aplikacji w technologii Enterprise JavaBeans. Przegląd architektur: CORBA. Cele budowy aplikacji rozproszonych

Budowa aplikacji w technologii. Enterprise JavaBeans. Maciej Zakrzewicz PLOUG

Dziedziczenie wielobazoweuzupełnienie

Specyfikowanie wymagań przypadki użycia

Programowanie w języku Java. Wykład 13: Java Platform, Enterprise Edition (Java EE)

Laboratorium 2_3_4 Wzorce oprogramowania zastosowane w modelu obiektowym (wg Alan Shalloway, James R.Trott)

Grupy pytań na egzamin magisterski na kierunku Informatyka (dla studentów niestacjonarnych studiów II stopnia)

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

Wzorce projektowe. dr inż. Marcin Pietroo

Wybrane działy Informatyki Stosowanej

Java Enterprise Edition spotkanie nr 1. Sprawy organizacyjne, wprowadzenie

Laboratorium 1. Wzorce oprogramowania lab1, Zofia Kruczkiewicz

Projektowanie Zorientowane na Dziedzinę. ang. Domain Driven Design

Projektowanie logiki aplikacji

forma cząstkowy grupy Dane Dane grupy Dane grupy

Wykład 3 Inżynieria oprogramowania. Przykład 1 Bezpieczeństwo(2) wg The Java EE 5 Tutorial Autor: Zofia Kruczkiewicz

Projektowanie obiektowe Wzorce projektowe. Gang of Four Strukturalne wzorce projektowe (Wzorce interfejsów)

12) Wadą modelu kaskadowego jest: Zagadnienia obowiązujące na egzaminie z inżynierii oprogramowania: 13) Wadą modelu opartego na prototypowaniu jest:

Spring Framework - wprowadzenie i zagadnienia zaawansowane

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

Wzorce logiki dziedziny

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

Technologie dla aplikacji klasy enterprise. Wprowadzenie. Marek Wojciechowski

Instrukcja 10 Laboratorium 13 Testy akceptacyjne z wykorzystaniem narzędzia FitNesse

Programowanie sieciowe Network programming PRZEWODNIK PO PRZEDMIOCIE

KARTA PRZEDMIOTU. 1) Nazwa przedmiotu: INŻYNIERIA SYSTEMÓW I ANALIZA SYSTEMOWA. 2) Kod przedmiotu: ROZ-L3-20

Transkrypt:

Modelowanie i analiza warstwy biznesowej aplikacji 1. Warstwa biznesowa aplikacji, refaktoryzacja warstwy biznesowej, refaktoryzacja systemu informatycznego 2. Przykład tworzenia warstwy biznesowej systemu informatycznego 1

Modelowanie i analiza warstwy biznesowej aplikacji 1. Warstwa biznesowa aplikacji, refaktoryzacja warstwy biznesowej, refaktoryzacja systemu informatycznego 2

Refaktoryzacja Refaktoryzacja polega ona na modyfikacji oprogramowania w celu poprawy jego struktury zachowując podstawowe funkcje oprogramowania. W praktyce poprawę struktury oprogramowania uzyskuje się za pomocą: podziału oprogramowania na warstwy wzorców oprogramowania, zastosowanych do budowy każdej warstwy na wybranym poziomie abstrakcji Rodzaje wzorców: Wzorce projektowe Wzorce architektury Wzorce analizy Wzorce konstrukcyjne Wzorce strukturalne Wzorce czynnościowe 3

Pięciowarstwowy model logicznego rozdzielania zadań (wg. D.Alur, J.Crupi, D. Malks, Core J2EE. Wzorce projektowe.) Warstwa klienta Klienci aplikacji, aplety, aplikacje i inne elementy z graficznym interfejsem użytkownika Interakcja z użytkownikiem, urządzenia i prezentacja interfejsu użytkownika Warstwa prezentacji Strony JSP, serwlety i inne elementy interfejsu użytkownika Warstwa biznesowa Komponenty EJB i inne obiekty biznesowe Logowanie, zarządzanie sesją, tworzenie zawartości, formatowania i dostarczanie Logika biznesowa, transakcje, dane i usługi Warstwa integracji JMS, JDBC, konektory i połączenia z systemami zewnetrznymi Adaptery zasobów, systemy zewnętrzne, mechanizmy zasobów, przepływ sterowania Warstwa zasobów Bazy danych, systemy zewnętrzne i pozostałe zasoby Zasoby, dane i usługi zewnętrzne 4

Refaktoryzacja warstwy biznesowej 1 Obiekty danych typu Entity (obiekty biznesowe) z warstwy biznesowej są udostępniane klientom w innych warstwach za pomocą fasadowych komponentów sesyjnych typu Control (komponent typu fasada - hermetyzujący dostęp do usług biznesowych) Klient Logika biznesowa Logika transakcyjna Warstwa prezentacji lub klienta Obiekty Entity A Obiekty Entity B Obiekty Entity C Warstwa biznesowa Klient Warstwa prezentacji lub klienta Komponent sesyjny typu fasada Logika biznesowa Logika transakcyjna zarządzająca przez obiekty typu entity lub zarządzana przez kontener lub zarządzana przez specjalizowane komponenty Warstwa biznesowa Obiekty Entity A Obiekty Entity B Obiekty Entity C 5

Refaktoryzacja warstwy biznesowej 2 Komponenty sesyjne typu Control (pośredniczące w dostępie do obiektów danych typu Entity ) z warstwy biznesowej są udostępniane klientom w innych warstwach za pomocą obiektów fasadowych typu Control (hermetyzujących dostęp do warstwy biznesowej- komponentów Business Delegate) Komponent sesyjny 1 Obiekty Entity 1 Business Delegate 1 Komponent sesyjny 1 Obiekty Entity 1 Klient Komponent sesyjny 2 Obiekty Entity 2 Klient Business Delegate 1 Komponent sesyjny 2 Obiekty Entity 2 Komponent sesyjny 3 Obiekty Entity 3 Business Delegate 1 Komponent sesyjny 3 Obiekty Entity 3 Warstwa prezentacji lub klienta Warstwa biznesowa Warstwa prezentacji lub klienta Warstwa biznesowa 6

Refaktoryzacja warstwy biznesowej 3 Sesyjne komponenty fasadowe typu Control (każdy komponent jako odrębna usługa biznesowa), hermetyzujące obiekty danych typu Entity z warstwy biznesowej są udostępniane klientom w innych warstwach. Zwykłe obiekty sesyjne są jedynie pośrednikami obiektów Entity, natomiast nie hermetyzują całych usług, które wymagają odwołania do wielu zwykłych komponentów sesyjnych. Klient 1 Komponent sesyjny 1 Obiekty Entity 1 Klient 1 Komponent Sesyjny typu fasada A Obiekty Entity 1 Klient 2 Komponent sesyjny 2 Obiekty Entity 2 Klient 2 Obiekty Entity 2 Klient 3 Komponent sesyjny 3 Obiekty Entity 3 Klient 3 Komponent sesyjny typu fasada B Obiekty Entity 3 Warstwa prezentacji lub klienta Warstwa prezentacji Warstwa biznesowa Zofia Kruczkiewicz, Modelowanie lub klienta i Warstwa biznesowa 7

Refaktoryzacja architektury wielowarstwowej 1 Należy przenieść kod dostępu do danych logicznie lub fizycznie bliżej rzeczywistego źródła danych, a logikę przetwarzania z klienta i warstwy prezentacji do warstwy biznesowej zawierającej fasadowe komponenty sesyjne typu Control. Komponenty Business Delegate typu Control hermetyzują dostęp do warstwy biznesowej z warstwy prezentacji stanowią przedłużenie warstwy biznesowej. S ervlety lu b JS P zaw ierają lo g ikę b izn esow ą i p rezentacyjn ą K lie n t S ervlety lu b JS P K o d d o stęp u d o d an ych B a z a d a n y ch W a rs tw a k lie n ta W a rs tw a p re z e n ta cji W a rs tw a z a s o b ó w S ervlety lu b JS P zaw ierają log ikę p rezentacyjn ą oraz fasad ę ro zd zielającą w arstw y K om p on en t sesyjn y zaw iera log ikę b izn esow ą Log ika d ostęp u d o d anych K lie n t S ervlety, JS P B u sin e ss D eleg ate 1 K om p onen t sesyjn y typu fasad a K od d ostęp u d o d anych B a z a d a n y ch W a rs tw a k lie n ta W a rs tw a p re z e n ta cji W a rs tw a b iz n e s o w a W a rstw a in te g ra cji W a rs tw a z a s o b ó w 8

Refaktoryzacja architektury wielowarstwowej 2 Należy przenieść kod dostępu do danych logicznie lub fizycznie bliżej rzeczywistego źródła danych, a złożoną logikę przetwarzania z klienta i warstwy prezentacji typu do warstwy biznesowej zawierającą obiekty danych typu Entity i hermetyzujace dostep do tych komponentów fasadowe komponenty sesyjne typu Control. Komponenty Business Delegate typu Control hermetyzują dostęp do warstwy biznesowej z warstwy prezentacji. Servlety lub JSP zawierają logikę prezentacyjną oraz fasadę rozdzielającą warstwy Kom ponent sesyjny zawiera logikę biznesową Logika dostępu do danych Klient Servlety, JSP Business Delegate 1 Kom ponent sesyjny typu fasada Kod dostępu do danych Baza danych W arstw a klienta W arstw a prezentacji W arstw a biznesow a W arstw a integracji W arstw a zasobów Servlety lub JSP zawierają logikę prezentacyjną oraz fasadę rozdzielającą warstwy Komponent sesyjny zawiera logikę biznesow ą, kom ponenty Entity stanowią model trwałych danych Logika dostępu do danych Klient Servlety, JSP Business Delegate 1 Komponent sesyjny typu fasada O biekty Entity Kod dostępu do danych Baza danych W arstw a klienta W arstw a prezentacji Zofia Kruczkiewicz, W arstw a biznesow Modelowanie a i W arstw a integracji W arstw a zasobów 9

Architektura aplikacji pięciowarstwowej Java EE 5.0 Visual Web Java Server Faces (linie przerywane oznaczają powiązania nie wykorzystane w aplikacji Baza danych Warstwa zasobów katalog Warstwa integrująca (EntityManager, ) Technologia TopLink Wzorce: Domain Store Transfer Object fasady (XXXController) fabryki obiektów Warstwa integrująca (EntityManager, ) Technologia TopLink Wzorce: Domain Store Transfer Object fasady (XXXController) fabryki obiektów Warstwa integrująca (EntityManager, ) Technologia TopLink Wzorce: Domain Store Transfer Object fasady (XXXController) fabryki obiektów Warstwa integracji Obiektowy model danych Wzorce: fasady TAplikacja fabryki obiektów strategii Obiektowy model danych Wzorce: fasady TAplikacja fabryki obiektów strategii Obiektowy model danych Wzorce: fasady TAplikacja fabryki obiektów strategii Warstwa biznesowa ApplicationBean1 Wzorzec fasady usług SessionBean1 Wzorzec fasady sesji SessionBean1 Wzorzec fasady sesji SessionBean1 Wzorzec fasady sesji Strony JSF Strony JSF Strony JSF Warstwa prezentacji Klient1 Zofia Kruczkiewicz, Klient2 Modelowanie i Klient3 Warstwa 10 klienta

Architektura aplikacji pięciowarstwowej Java EE 5.0 Visual Web Java Server Faces - linie przerywane oznaczają powiązania nie wykorzystane w aplikacji Baza danych katalog Warstwa integrująca (EntityManager, ) Technologia TopLink Wzorce: Domain Store Transfer Object fasady (XXXController) fabryki obiektów Warstwa zasobów Warstwa integracji ApplicationBean1 Wzorzec fasady usług Obiektowy model danych Wzorce: fasady TAplikacja fabryki obiektów strategii Warstwa biznesowa SessionBean1 Wzorzec fasady sesji SessionBean1 Wzorzec fasady sesji SessionBean1 Wzorzec fasady sesji Strony JSF Strony JSF Strony JSF Warstwa prezentacji Klient1 Klient2 Klient3 Warstwa klienta 11

Modelowanie i analiza warstwy biznesowej aplikacji 1. Warstwa biznesowa aplikacji, refaktoryzacja warstwy biznesowej, refaktoryzacja systemu informatycznego 2. Przykład tworzenia warstwy biznesowej systemu informatycznego 12

System sporządzania rachunków 2.1. Sformułowanie wymagań funkcjonalnych i niefunkcjonalnych systemu 2.2. Model analizy całego systemu oparty na diagramie przypadków użycia 2.3. Model projektowy warstwy biznesowej oparty na diagramie klas i diagramie sekwencji tworzony metodą iteracyjno-rozwojową sterowany realizacją przypadków użycia 2.4. Implementacja warstwy biznesowej tworzona w cyklu iteracyjno-rozwojowym sterowana rozwojem modelu projektowego 4 13

Przykład: System sporządzania rachunków Lista wymagań funkcjonalnych 1. System zawiera katalog produktów 2. Można zakupić trzy typy produktów różniące się sposobem obliczania ceny detalicznej: netto, z podatkiem, z promocją, 3. Można wprowadzić wiele rachunków 4. Pozycje rachunku muszą zawierać produkty różne w sensie nazwy, ceny, podatku i promocji 5. Każda pozycja rachunku powinna podać swoją wartość brutto oraz dane produktu oraz ilość zakupionego produktu. 6. Na rachunku powinna znajdować się wartość łączna wszystkich zakupów oraz wartości zakupów należących do wybranych kategorii Lista wymagań niefunkcjonalnych 1. Wstawianie produktów może odbywać się tylko przez uprawnione osoby 2. Wstawianie nowych rachunków oraz wstawianie nowych zakupów jest dokonywane przez klientów 3. Zakupy mogą być dokonane przez Internet przez aplikację uruchamianą przez przeglądarkę lub bez jej pośrednictwa 14

<<include>> 15

AKTOR Klient Sprzedawca OPIS Klient może dokonywać zakupów wybranych produktów przez Internet korzystając z przeglądarki lub z aplikacji Sprzedawca może dodatkowo dodawać nowe produkty PRZYPADKI UŻYCIA Wstawianie nowego rachunku powiązane przez <<include>> z PU Szukanie rachunku Obliczanie wartosci rachunku powiązane przez <<include>> z PU Szukanie rachunku Wstawianie nowego zakupu powiązane przez <<include>> z PU Szukanie rachunku oraz powiązane przez <<include>> z PU Szukanie produktu Wstawianie nowego rachunku powiązane przez <<include>> z PU Szukanie rachunku Obliczanie wartosci rachunku powiązane przez <<include>> z PU Szukanie rachunku Wstawianie nowego zakupu powiązane przez <<include>> z PU Szukanie rachunku oraz powiązane przez <<include>> z PU Szukanie produktu Wstawianie nowego produktu powiązane 16 przez <<include>> z PU Szukanie produktu

PU Szukanie produktu OPIS CEL: Poszukiwanie produktu WS (warunki wstępne): inicjalizacja przez uruchomienie programu (np. otwarcie strony WWW, start aplikacji) WK (warunki końcowe): podanie produktu o podanych atrybutach obowiązkowych: nazwa i cena oraz jeśli jest to wymagane: z podatkiem i promocją lub komunikat o braku produktu PRZEBIEG: 1. Szukanie produktu przebiega wedlug atrybutow: nazwy i ceny (obowiazkowo) oraz podatku i promocji (jeśli jest to wymagane) zgodnie z danymi podanymi do przypadku uzycia 2. Jesli istnieje produkt o podanych atrybutach, zwracany jest produkt, w przeciwnym wypadku zwracana jest informacja o braku produktu. PU Wstawianie nowego produktu OPIS CEL: Wstawienie nowego produktu WS (warunki wstępne): inicjalizacja przez uruchomienie programu (np. otwarcie strony WWW, start aplikacji) WK (warunki końcowe): dodanie produktu o podanych atrybutach obowiązkowych: nazwa i cena oraz jeśli jest to wymagane: z podatkiem i promocją, jeśli nie było takiego produktu PRZEBIEG: 1. Nalezy podac atrybuty produktu: nazwe, cene jako obowiazkowe dane oraz podatek i cene detaliczna, jeśli jest to wymagane 2. Należy wywolac PU Szukanie produktu. Nalezy sprawdzic, czy produkt o podanych atrybutach juz istnieje. Jesli tak, nalezy zakonczyc Zofia Kruczkiewicz, PU, w przeciwnym Modelowanie wypadku i nalezy wstawic nowy 17 produkt.

PU Szukanie rachunku OPIS CEL: Poszukiwanie rachunku WS (warunki wstępne): inicjalizacja przez uruchomienie programu (np. otwarcie strony WWW, start aplikacji) WK (warunki końcowe): podanie rachunku o podanym numerze lub komunikat o braku rachunku PRZEBIEG: 1. Szukanie rachunku przebiega wedlug numeru podanego do przypadku uzycia 2. Jesli istnieje rachunek o podanym numerze, zwracany jest rachunek, w przeciwnym wypadku zwracana jest informacja o braku rachunku. PU Wstawianie nowego rachunku OPIS CEL: Wstawienie nowego rachunku WS (warunki wstępne): inicjalizacja przez uruchomienie programu (np. otwarcie strony WWW, start aplikacji) WK (warunki końcowe): dodanie rachunku o podanym numerze, jeśli jest to unikatowy numer PRZEBIEG: 1. Nalezy podac numer rachunku, ktory powinien byc niepowtarzalny, poniewaz sluzy do identyfikacji rachunku 2. Nalezy wywolac PU Szukanie rachunku w celu sprawdzenia, czy numer rachunku sie powtarza. 3. Jesli zwrocony wynik oznacza brak rachunku o podanym numerze, mozna wstawic nowy rachunek i zakonczyc PU, w przeciwnym wypadku nalezy zakonczyc PU bez wstawiania nowego rachunku. 18

PU Obliczanie wartosci rachunku OPIS CEL: Obliczanie wartosci rachunku wg podanego podatku WS (warunki wstępne): inicjalizacja przez uruchomienie programu (np. otwarcie strony WWW, start aplikacji) WK (warunki końcowe): podanie wartości całego rachunku o podanym numerze i parametrze wejściowym równym -2 lub wartości zakupionych towarów wg podanej kategorii podatku lub komunikat o braku rachunku PRZEBIEG: 1. Nalezy podac numer rachunku, ktory powinien byc niepowtarzalny, poniewaz sluzy do identyfikacji rachunku oraz wartość podatku lub wartosc -2 2. Nalezy wywolac PU Szukanie rachunku w celu sprawdzenia, czy rachunek o podanym numerze istnieje. 3. Jesli zwrocony wynik oznacza brak rachunku o podanym numerze, nie mozna obliczyc wartosci wybranego rachunku i nalezy zakonczyc PU, w przeciwnym wypadku nalezy obliczyc wartosc rachunku 4. Nalezy uruchomic petle, w ktorej sumowane sa wartosci zakupu obliczane jako iloczyn ceny jednostkowej zakupionego produktu i ilosci zakupu. Jesli zachodzi potrzeba sumowania wartosci zakupu zalezna od wysokosci podatku, nalezy podac wartosc podatku i sumowac jedynie zakupy o podanym podatku, w przeciwnym wypadku sumowane sa wszystkie zakupy (gdy zamiast podatku zostanie przekazana wartosc -2). 19

PU Wstawianie nowego zakupu OPIS CEL: Wstawianie nowego zakupu WS (warunki wstępne): inicjalizacja przez uruchomienie programu (np. otwarcie strony WWW, start aplikacji) WK (warunki końcowe): podanie nowego zakupu o podanych atrybutach lub zwiekszenie ilosci zakupionego produktu, jeśli już taki produkt zakupiono lub komunikat o braku rachunku PRZEBIEG: 1. Nalezy podac numer rachunku, ktory powinien byc niepowtarzalny, poniewaz sluzy do identyfikacji rachunku 2. Nalezy wywolac PU Szukanie rachunku w celu sprawdzenia, czy istnieje rachunek o podanym numerze. 3. Jesli zwrocony wynik oznacza brak rachunku o podanym numerze, nie mozna wstawic nowego zakupu do rachunku i nalezy zakonczyc PU, w przeciwnym wypadku nalezy wstawic nowy zakup 4. Nalezy wybrac produkt oraz ilosc zakupionego produktu. 5. Należy wywolac PU Szukanie produktu. Jeśli wybrany produkt nie istnieje, należy zakonczyc PU. W przeciwnym przypadku nalezy wstawic nowy zakup do rachunku, przegladajac, czy istnieje juz zakup z takim samym produktem. Jesli istnieje, nie tworzy sie nowego zakupu, tylko powieksza się ilosc zakupu istniejacego o ilosc nowego zakupu, w przeciwnym przypadku wstawia sie nowy zakup. 20

Analiza wspólności i zmieności (wykład 2) Wykryto trzy główne klasy typu Entity ze względu na odpowiedzialność: TRachunek (wstawia zakupy, oblicza wartość), TZakup (oblicza wartość zakupu) oraz TProdukt1 (posiada nazwę oraz oblicza cenę detaliczną) Wykryto dziedziczenie w właściwościach produktów, które podają cenę jednostkową podawaną jako cenę netto, jeśli produkt nie posiada atrybutu podatek lub cenę brutto, jeśli posiada atrybut podatek (klasa TProdukt2 typu Entity, która dziedziczy od klasy TProdukt1) oraz strategię zmniejszania ceny jednostkowej wynikającej z promocji powiązaną z produktem zarówno z podatkiem, jak bez podatku. Ponieważ jednak promocja nie musi dotyczyć każdego produktu, jest w związku powiązania z bazowym (głównym) produktem typu 0..* do 1. Klasa TPromocja typu Entity jest dziedziczona przez pozostałe typy produktu. Stad produkt powinien podawać uogólnioną cenę detaliczną: bez podatku, z podatkiem oraz w razie potrzeby z uwzględnieniem scenariusza dodawania promocji do ceny detalicznej produktu dla dwóch pierwszych przypadków (cztery typy ceny detalicznej). Wykryto związki silnej agregacji między rachunkiem i zakupami (rachunek posiada kolekcję zakupów) oraz słabej agregacji między zakupem a produktem (zakup składa się z produktu bazowego lub jego następców), oraz związek typu powiązanie między promocją a produktem bazowym dziedziczony przez produkty potomne. Zastosowano klasę fasadową TAplikacja typu Control do oddzielenia obiektów typu Entity od pozostałej Zofia części Kruczkiewicz, systemu Modelowanie oraz klasęi typu Control jako fabrykę 21 obiektów (TFabryka) do tworzenia analiza systemów różnych informatycznych typów produktów 5

Diagram klas koncepcja klas typu Entity oraz Controller 22

public TZakup( ) public TProdukt1 gettprodukt( ) public void settprodukt1(tprodukt1 val) public TProdukt1( ) public TPromocja gettpromocja( ) public void settpromocja(tpromocja val) 23

Wzorzec fasady Wzorzec fabryki obiektów Wzorzec strategii 0..1 1..* public TPromocja gettpromocja( ) public public TPromocja void settpromocja(tpromocja gettpromocja( ) val) public void settpromocja(tpromocja val) Metody przypadków użycia Implementacja powiązań Decyzja projektowa 4 24

Projekt przypadku użycia Szukanie produktu za pomocą diagramu sekwencji i diagramu klas. Diagram klas jest uzupełniany metodami zidentyfikowanymi podczas projektowania scenariusza przypadku użycia za pomocą diagramu sekwencji. 4 25

(1) Szukanie produktu (TProdukt1 TAplikacja::Szukaj_produkt(TProdukt1 produkt)) 7 26

(7) boolean TProdukt1::equals(Object atprodukt) 8 oraz 9 lub 10 4 27

0..1 1..* public TPromocja gettpromocja( ) public void settpromocja(tpromocja val) 4 28

(8) float TProdukt1::Podaj_cene() (9) float TProdukt1::Czesc_brutto() 9 lub 10 (10) float TProdukt2::Czesc_brutto() 4 29

0..1 1..* public TPromocja gettpromocja( ) public void settpromocja(tpromocja val) 4 30

Projekt przypadku użycia Wstawianie nowego produktu za pomocą diagramu sekwencji i diagramu klas. Diagram klas jest uzupełniany metodami zidentyfikowanymi podczas projektowania scenariusza przypadku użycia za pomocą diagramu sekwencji. 4 31

(2) Wstawianie nowego produktu (void TAplikacja::Dodaj_produkt(String [] dane)) 17 1 4 32

(17) TProdukt1 TFabryka::Podaj_produkt(String dane[]) 4 33

Projekt przypadku użycia Szukanie rachunku za pomocą diagramu sekwencji i diagramu klas. Diagram klas jest uzupełniany metodami zidentyfikowanymi podczas projektowania scenariusza przypadku użycia za pomocą diagramu sekwencji. 4 34

(3) Szukanie rachunku (TRachunek TAplikacja::Szukaj_rachunek(int nr)) 11 35

(11) boolean TRachunek::equals(Object rachunek) 4 36

1..* 0..1 public TPromocja gettpromocja( ) public void settpromocja(tpromocja val) 4 37

Projekt przypadku użycia Wstawianie nowego rachunku za pomocą diagramu sekwencji i diagramu klas. Diagram klas jest uzupełniany metodami zidentyfikowanymi podczas projektowania scenariusza przypadku użycia za pomocą diagramu sekwencji. 4 38

(4) Wstawianie nowego rachunku (void TAplikacja::Wstaw_rachunek(int nr)) 3 39

Projekt przypadku użycia Wstawianie nowego zakupu za pomocą diagramu sekwencji i diagramu klas. Diagram klas jest uzupełniany metodami zidentyfikowanymi podczas projektowania scenariusza przypadku użycia za pomocą diagramu sekwencji. 4 40

(5) Wstawianie nowego zakupu (void TAplikacja::Wstaw_zakup (int nr, int ailosc, String dane[])) 3 1 4 12 41

1..* 0..1 public TPromocja gettpromocja( ) public void settpromocja(tpromocja val) 4 42

(12) void TRachunek::Dodaj zakup(tzakup atzakup) 13 43

1..* 0..1 public TPromocja gettpromocja( ) public void settpromocja(tpromocja val) 4 44

(13) TZakup TRachunek::Szukaj_zakup(TZakup atzakup) 14 45

(14) boolean TZakup::equals(Object zakup) 7 4 46

1..* 0..1 public TPromocja gettpromocja( ) public void settpromocja(tpromocja val) 4 47

0..1 1..* public TPromocja gettpromocja( ) public void settpromocja(tpromocja val) 4 48

Projekt przypadku użycia Obliczanie wartości rachunku za pomocą diagramu sekwencji i diagramu klas. Diagram klas jest uzupełniany metodami zidentyfikowanymi podczas projektowania scenariusza przypadku użycia za pomocą diagramu sekwencji. 4 49

(6) Obliczanie wartosci rachunku (float TAplikacja::Podaj_wartosc(int nr, int podatek_)) 3 15 50

1..* 0..1 public TPromocja gettpromocja( ) public void settpromocja(tpromocja val) 4 51

(9) float TRachunek::Podaj_wartosc(int podatek_) 16 52

(10) float TZakup::Podaj_wartosc(int podatek_) 8 oraz 9 lub 10 53

1..* 0..1 public TPromocja gettpromocja( ) public void settpromocja(tpromocja val) 4 54