WZORCE LOGIKI APLIKACJI Reużywalne składniki wymagań Albert Ambroziewicz, Michał Śmiałek Politechnika Warszawska KKIO 0, SCR 0 27-29.09.200 Treść prezentacji Wprowadzenie powtarzalność rozwiązań w IO Koncepcja Wzorców Logiki Aplikacji (WLA) Język opisu WLA Biblioteka podstawowych WLA Wsparcie narzędziowe Podsumowanie A. Ambroziewicz, Michał Śmiałek
:: WPROWADZENIE - powtarzalność rozwiązań w IO :: Od wymagań do kodu w jeden dzień? Michał Śmiałek Wzorce a Inżynieria oprogramowania Horacy (8 p.n.e.): Bis repetita placent Alexander (977): [Należy] opisywać kluczowe elementy rozwiązań rozważanych zagadnień, w sposób pozwalający używać opisów tych wielokrotnie. A. Ambroziewicz, Michał Śmiałek 2
Leaf + Operation() Component + Operation() + Add() : Component + Remove() : Component + GetChild() : Component..* Composite + Operation() forall g in children g.operation(); + Add() : Component + Remove() : Component + GetChild() : Component -children Wzorce a Inżynieria oprogramowania poziom szczegółowości GUI Use Case Logic Data Actor warstwa abstrakcji Inspiracja Cockburn parametryzowalny przypadek użycia (2000, Writing Effective Use Cases)? Znajdź X Aktor X = książka, użytkownik, płatność, A. Ambroziewicz, Michał Śmiałek 3
Wzorce logiki aplikacji jako narzędzie opanowania złożoności Warstwa dostępowa GUI usługi Logika aplikacji Kontrola przepływu Logika biznesowa Algorytmy Dane Inne określenia logiki aplikacji: logika przepływu ( workflow logic, Fowler 2002) kontroler w MVC (Reenskaug 977) Wzorce logiki aplikacji jako narzędzie opanowania złożoności (2) Logika biznesowa Złożoność zasadnicza (ang. essential) Logika aplikacji # Logika aplikacji #2 Logika aplikacji #3 Złożoność uboczna (ang. accidental) Brooks (995): The Mythical Man-Month A. Ambroziewicz, Michał Śmiałek 4
:: Koncepcja Wzorców Logiki Aplikacji :: Od wymagań do kodu w jeden dzień? Michał Śmiałek Wzorce Logiki Aplikacji Podstawowe założenie: separacja informacji pochodzącej z dziedziny biznesowej problemu od opisu obserwowalnych reakcji systemu. Notion Notion Notion2 Notion5 Notion3 Notion4 Notion6 Notion7 A. Ambroziewicz, Michał Śmiałek 5
Wzorce Logiki Aplikacji - definicja zbiór abstrakcyjnych przypadków użycia systemu abstrakcyjne przypadki użycia zawierają reprezentacje opisujące szczegóły logiki aplikacji reprezentacje opisane są poprzez sekwencje interakcji między abstrakcyjnymi aktorami a systemem, przy wykorzystaniu pojęć abstrakcyjnej dziedziny wzorca, wraz ze specyfikacją warunków, jakie mogą zaistnieć podczas interakcji wzorzec logiki aplikacji podlega ukonkretnieniu poprzez zastąpienie abstrakcyjnej dziedziny problemu przez dziedzinę konkretną :: Język opisu Wzorców Logiki Aplikacji :: Od wymagań do kodu w jeden dzień? Michał Śmiałek A. Ambroziewicz, Michał Śmiałek 6
Język opisu Wzorców Logiki Aplikacji Podstawowe założenia zbliżony, jak to możliwe, do języka naturalnego wykorzystujący popularną notację Język opisu Wzorców Logiki Aplikacji notacja (Actor) Select (Resource) Start «insertion point» () (Actor) wants to select (System) shows (list of resources) (Actor) selects from (list of resources) «insertion point» (2) Stop notacja UML zmodyfikowany model przypadków użycia reprezentacja logiki w postaci diagramów aktywności atomowe aktywności opisane najprostszymi możliwymi zdaniami parametryzowane elementy dziedziny A. Ambroziewicz, Michał Śmiałek 7
Język opisu Wzorców Logiki Aplikacji dodatkowe elementy notacji «insertion point» () «invoke» (Actor) wants to transfer 8_SelectResourcePattern (Actor) specifies (transfer data) «Pre-condition» { selected} (System) transfers according to (transfer data) «insertion point» (2) Start (from 8_SelectResourcePattern) Stop _ResourceTransferPattern [resource] 8_SelectResourcePattern odwołania pomiędzy wzorcami przepływy obiektów lokalne ograniczenia i warunki Język opisu Wzorców Logiki Aplikacji przykład wzorca złożonego Update Create Delete «invokes» «invokes» «invokes» (Actor) Manage «invokes» Read (resource data) 6 Delete (from 6_CRUDPattern) «ispartof» «ispartof» 6_Manage (from 6_CRUDPattern) «ispartof» «ispartof» 6_3_Update 6_4_Create 6_2_Read (resource data) A. Ambroziewicz, Michał Śmiałek 8
Język opisu Wzorców Logiki Aplikacji dziedzina abstrakcyjna i konkretna Abstrakcyjna dziedzina resource list of resources Konkretna dziedzina product list of products actor system customer web store «insertion poi... (Actor) wants to select WLA (System) shows (list of resources) (Actor) selects from (list of resources) Customer wants to select product WebStore shows list of products instancja WLA AbstractDomain AbstractDomainElement Język opisu Wzorców Logiki Aplikacji metamodel Język zdefiniowany poprzez meta-model MOF precyzyjna definicja składni automatyczne przetwarzanie tworzonych w języku modeli * AbstractNotion Package ApplicationLogicPattern RedefinableElement AbstractActor UML:Kernel:: Classifier actor 0..* AbstractLogic AbstractUseCase invoked owner observable Behaviour {redefines target} {redefines source} 0..* Usage..* usecase {redefines target} invokingusecase invoke {redefines source} BasicActivities :: Activity * {redefines include, redefines extend} Activ itydescriptor BehavioredClassifier UML:UseCases::UseCase InvocationRelationship A. Ambroziewicz, Michał Śmiałek 9
:: Biblioteka podstawowych Wzorców Logiki Aplikacji :: Od wymagań do kodu w jeden dzień? Michał Śmiałek Biblioteka WLA sposób organizacji _ResourceTransferPattern [resource] 8_SelectResourcePattern (from _ResourceTransferPattern) [resource] (from 8_SelectResourcePattern) 2_ShareResourcePattern (from 2_ShareResourcePattern) [resource] [resource] [process] [process] 6_3_Update (from 6_CRUDPattern) [process] 3_ResourcePartitionPattern 5_3_Stop (process) 5 Change (process) [resource] (from 3_ResourcePartitionPattern) (from 5_ManageProcessPattern) (from 5_ManageProcessPattern) «ispartof» «ispartof» 4_BindResoucesPattern 5_ManageProcessPattern 9_DataValidationPattern (from 4_BindResoucesPattern) (from 5_ManageProcessPattern) (from 9_DataValidationPattern) A. Ambroziewicz, Michał Śmiałek 0
Biblioteka WLA zawartość Transfer (zasobu) Udostępnienie (zasobu) Podział (zasobu) Związanie (zasobu) Zarządzanie (procesem) Zarządzanie (zasobem) Wyszukiwanie (zasobu) Wybór (zasobu) Walidacja (zasobu) Zarządzanie (kolekcją) :: Wsparcie narzędziowe :: Od wymagań do kodu w jeden dzień? Michał Śmiałek A. Ambroziewicz, Michał Śmiałek
Wsparcie narzędziowe Języki ReDSeeDS Silnik ReDSeeDS Requirements Query Specification Language Language WLA Software Development Specification Language Mapping & Transformation Language Metodyka ReDSeeDS http://redseeds.sourceforge.net/ :: Wzorce logiki aplikacji na żywo :: Od wymagań do kodu w jeden dzień? Michał Śmiałek A. Ambroziewicz, Michał Śmiałek 2
Podsumowanie Zadania na przyszłość rozwój biblioteki WLA rozwój narzędzia (społeczność, open-source) eksperymenty implementacja przemysłowa :: Dziękuję za uwagę :: A. Ambroziewicz, Michał Śmiałek - Wzorce logiki aplikacji - KKIO200 A. Ambroziewicz, Michał Śmiałek 3