Receptury projektowe niezbędnik początkującego architekta
|
|
- Karol Kania
- 9 lat temu
- Przeglądów:
Transkrypt
1 Receptury projektowe niezbędnik początkującego architekta Część III: Zarządzenie złożonością przez trójpodział logiki Open/closed principle w praktyce W modelu złożonego problemu zwykle możemy wydzielić strukturę wyższego rzędu charakteryzującą się różną podatnością kodu źródłowego na zmiany. W niniejszym artykule zostanie przedstawiony meta-model, którym możemy posiłkować się w zmaganiach ze złożoną logiką biznesową. Meta-model będzie praktyczną realizacją drugiej zasady SOLID: Open/closed principle, która pozwala tworzyć rozwiązania otwarte na rozbudowę (rozbudowa to nie to samo co zmiana). SOLIDNE PROGRAMOWANIE I PROJEKTOWANIE Zasady SOLID (zobacz ramkę W sieci ) dostarczają nam ogólnych wytycznych w zakresie projektowania obiektowego. Ich ogólność pozwala na interpretację na różnych poziomach, zarówno na poziomie Object Oriented Design, jak i wyżej na poziomie architektury aplikacyjnej i systemowej. Jednak jak to przy takiej ogólności bywa, pojawia się pytanie: jak w praktyce podążać za tymi wytycznymi? OPEN/CLOSED PRINCIPLE ALE JAK TO ZAIMPLEME NTOWAĆ? W niniejszym artykule zajmiemy się jedną z zasad SOLID: Open/closed principle, która brzmi: kod/projekt powinien być otwarty na rozbudowę, ale zamknięty na zmiany. Zmiana to modyfikacja istniejącego kodu źródłowego, a co za tym idzie konieczność przeprowadzenia (jeżeli nie istnieją automatyczne) testów oraz konieczność przeprowadzenia przeglądu kodu (no, chyba że przeglądy nie należą do procesu produkcji:). Rozbudowa polega natomiast na dodaniu nowych klas bez modyfikacji istniejących. W językach obiektowych chodzi oczywiście o wpinanie nowej implementacji interfejsu (na zasadzie pluginu). Początkujący projektanci, widząc takie rozwiązania, komentują go zwykle w ten sposób: tak, technicznie to łatwe, ale jak mamy wpaść na pomysł takiego designu. Starsi koledzy robią wówczas minę mędrca i odpowiadają metaforycznie: kod powinien być otwarty na rozbudowę niczym kwiat lotosu o świcie i zamknięty na zmiany niczym kwiat lotosu o zmierzchu. My jednak podejdziemy do problemu metodycznie, stosując niemal mechaniczną procedurę tworzenia tego typu designu. META-MODEL TRZY RODZAJE LOGIKI Analizę złożonych domen warto zacząć od wydzielania w modelu części charakteryzujących się różną podatnością na zmiany zmiany w sensie zmian w kodzie źródłowym, a nie w sensie zmian wartości (np. w bazie danych). W wielu problemach można wydzielić trzy osobne sfery logiki: logikę stabilną, domknięcia stabilnej logiki oraz wybór domknięcia. Pomocna O serii Receptury projektowe Intencją serii Receptury projektowe jest dostarczenie usystematyzowanej wiedzy bazowej początkującym projektantom i architektom. Przez projektanta lub architekta rozumiem tutaj rolę pełnioną w projekcie. Rolę taką może grać np. starszy programista lub lider techniczny, gdyż bycie architektem to raczej stan umysłu niż formalne stanowisko w organizacji. Wychodzę z założenia, że jedną z najważniejszych cech projektanta/ architekta jest umiejętność klasyfikowania problemów oraz dobieranie klasy rozwiązania do klasy problemu. Dlatego artykuły będą skupiały się na rzetelnej wiedzy bazowej i sprawdzonych recepturach pozwalających na radzenie sobie z wyzwaniami niezależnymi od konkretnej technologii, wraz z pełną świadomością konsekwencji płynących z podejmowanych decyzji projektowych. na tym etapie może być prosta wizualizacja modelu: dzielimy diagram na 3 części (Rysunek 2) i zastanawiamy się, w której części umieścić kolejne odpowiedzialności. Logika Stabilna Logika stabilna relatywnie rzadko podlega zmianom. Są to główne operacje klasy wyższego rzędu lub po prostu główne serwisy (procedury) w podejściu proceduralnym (duża część kodu stworzonego w językach obiektowych charakteryzuje się proceduralną naturą). Natomiast zmienność przykrywamy stabilnym interfejsem i delegujemy na zewnątrz stabilnych struktur. Dzięki temu chronimy stabilny kod przed zmianami wynikającymi ze zmian wymagań w miejscach niestabilnych. Przykładem może być klasa BookKeeper z Listingu 1 (patrz sekcja Przykłady), która modeluje ogólny algorytm księgowania; specyfika obliczania podatków (charakterystyczna dla danego kraju) została wyniesiona poza interfejs TaxPolicy. Wyzwaniem podczas projektowania stabilnej logiki jest strategiczne opracowanie punktów rozszerzeń, które będą pozwalać na rozbudowę (a nie zmianę) podczas kolejnych zmian wymagań. Typowe Building Blocks DDD będące kandydatami do zawierania stabilnej logiki: Agregaty Serwisy Domenowe Serwisy Aplikacyjne 44 / (12) /
2 TYTUŁ Domknięcia logiki Implementacje interfejsów możemy potraktować jako domknięcia logiki nadrzędnej. W przykładzie z Listingu 1 mamy główny (nadrzędny) algorytm księgowania, natomiast implementacje interfejsu TaxPolicy pozwalają na domknięcie całości o szczegóły (szczegóły z punktu widzenia logiki nadrzędnej, bo obliczanie podatku nie jest problemem trywialnym). Wyzwaniem podczas projektowania domknięć jest opracowanie stabilnego interfejsu czyli takiego, który będzie na tyle ogólny, aby przetrwać kolejne zmiany wymagań, ale jednocześnie nie będzie łamał czwartej zasady SOLID: Interface Segregation. Typowe Building Blocks DDD będące kandydatami do zawierania logiki domknięć: Polityki Specyfikacje Wybór domknięcia STRUKTURA A TREŚĆ Do tej pory omawialiśmy strukturę problemu podział na 3 rodzaje logiki pod względem podatności na zmiany. Jest to swego rodzaju meta-model, który może być stosowany jako framework mentalny. Framework mentalny, czyli narzędzie, które będzie nam służyło do porządkowania myśli. Możemy wyobrazić go sobie jako foremki, do których wsypujemy mokry piasek, aby nadać mu kształt. Im więcej foremek mamy w swojej skrzynce z narzędziami, tym więcej możliwości mamy w fazie projektowania. Przykładowo projektant, który zna jedynie dwie foremki: serwis i encja, albo jedną: hashmapa hashmap, potrafi każdy problem zamodelować przy pomocy tych foremek. Przeprowadzając analizę danego problemu uzbrojeni w framework możemy zacząć zadawać pytania: co jest stabilne, co relatywnie rzadko podlega zmianom, czym jest core? co się zmienia, jaki jest stabilny kontrakt tych zmian? jak podjąć decyzję o wyborze domknięcia, jakie reguły tym rządzą? Mamy zatem sytuację, w której rozdzieliśmy logikę na stabilny (w sensie zmian kodu) core oraz wiele możliwych domknięć tej logiki. Pojawia się pytanie: jak wybrać odpowiednie domknięcie? Być może jest to prosty problem, który możemy rozwiązać na kilka sposobów: wybór domknięcia na GUI przez użytkownika pobranie domknięcia z konfiguracji wstrzyknięcie domknięcia przy pomocy kontenera Inversion of Control i techniki Dependency Injection Jeżeli jednak wybór domknięcia sam w sobie wymaga stworzenia modelu i zaprogramowania algorytmu wyboru, wówczas może pojawić się trzeci rodzaj logiki: wybór domknięć. Logikę tę hermetyzujemy w Fabrykach. W naszym przykładzie mamy księgowego, który jest domknięty sposobem obliczania podatku. Jeżeli tworzymy system, który nie jest jedynie magazynem i prostym transformatorem danych, a zarządza on również autonomicznym podejmowaniem decyzji, to może pojawić się wymaganie: jeżeli klienci prowadzą działalność w różnych krajach, to system powinien dobrać politykę obliczania podatku tak, aby było to najbardziej korzystne dla klienta. Generalnie jeżeli pojawi się trzeci rodzaj logiki biznesowej wybór domknięcia to warto odseparować go od pozostałych rodzajów logiki i hermetyzować w serwisach/fabrykach. Logika tego rodzaju podlega osobnym zmianom niż logika główna i logika domknięć. Być może nie uda się nam stworzyć generycznego modelu parametryzowanej fabryki i będziemy zmuszeni dokonywać zmian w kodzie źródłowym fabryki. Ale przynajmniej będą to zmiany ograniczone do konkretnego miejsca, bez potrzeby brudzenia zmianami (testowanie i przeglądy) kodu pozostałych dwóch rodzajów logiki. Typowe Building Blocks DDD będące kandydatami do zawierania logiki wyboru domknięcia: Serwisy Domenowe Fabryki Repozytoria Co fabrykować? Możemy fabrykować obiekty stabilne, które będą miały już odpowiednio ustawione zależności do wynikających z logiki domknięć. Czyli w naszym przypadku możemy produkować w fabryce księgowego, z odpowiednią polityką obliczania podatków. Dzięki temu wyższe warstwy nie muszą znać takich szczegółów jak istnienie domknięć. Innym podejściem jest produkowanie w fabrykach jednie domknięć. Daje nam to możliwość zdecydowania w wyższych warstwach czy będziemy korzystać z fabryk, czy może otworzymy możliwość wyboru domknięcia np. poprzez GUI. Oba podejścia zostały zilustrowane na Listingu 1. Zatem struktura zamiast wyłaniać się przypadkowo z chaosu może być nałożona na wstępie, aby destylować design w momencie analizy problemu. Oczywiście przyjęcie nieodpowiedniego frameworka mentalnego na wstępie może być pomyłką. Jednak framework mentalny prezentowany w tym artykule jest na tyle ogólny, że pomyłka nie będzie trudna do odwrócenia ani nawet szkodliwa. W kolejnym rozdziale przedstawię metafory wizualne, które pomagają zarządzać strukturą. Następny rozdział będzie zawierał trzy przykłady, których treść wpasowuje się w przedstawioną strukturę. METAFORY (WIZUALNE) W ciągu roku pracuję średnio z 30 zespołami, co daje mi w sumie obraz kilkuset różnych podejść do komunikowania pomysłów i rozwiązań. Jeden z wniosków, jaki się wyłania z moich obserwacji, jest następujący: brak komunikacji jest przyczyną wieli problemów; a próby opisowego komunikowania złożonych koncepcji są, delikatnie mówiąc, nieefektywne. Ciekawe są również obserwacje strategii komunikacji wizualnej i jej niedopasowania pomiędzy poszczególnymi członkami zespołu. Z uwagi na różne wewnętrzne modele reprezentowania złożonych struktury w niniejszym tekście przedstawię trzy przykładowe sposoby wizualizowania omawianego frameworka mentalnego. Technikom zwinnego dokumentowania architektury poświęciłem artykuł w poprzednim numerze (do pobrania, patrz ramka W sieci ), natomiast w tym miejscu skupimy się tylko na wizualizacji meta-modelu trzech rodzajów logiki. Metafora linearna W artykule Zaawansowane modelowanie DDD techniki strategiczne: konteksty i architektura zdarzeniowa (do pobrania, patrz ramka W sieci ) przedstawiłem linearną (w sensie układania rodzajów logiki na stosie) wersję opisywanego frameworka mentalnego. W tym miejscu jedynie przypomnę ogólne założenia. Model domenowy możemy podzielić na 4 poziomy (od dołu do góry): decission support mechanizmy analityczne, rodzaj inteligencji policy domknięcia operacji, model reguł i ograniczeń operations konkretne operacje zbudowane capability bazowy model, ogólny potencjał biznesu Mamy tutaj do czynienia z: klasami capability i operations, które są relatywnie stabilne interfejsami policy, które są domknięciami operacji fabrykami mogącymi zawierać inteligencję (np. sugerowanie kraju do opodatkowania) rezydującymi na poziomie decission support / / 45
3 Metafora 2D Podejście linearne może być ograniczające dla strategii wyobrażeniowych konkretnych osób, dlatego warto posłużyć się płaszczyzną, na której mamy trzy obszary logiki (zob. Rysunek 2). Metafora 3D Część osób wyobraża sobie modele programistyczne jako trójwymiarowe przestrzenie zawierające trójwymiarowe wizualizacje obiektów (czasem są to ruchome maszyny ). Tego typu rysunki są bardziej pracochłonne, ale dla złożonych problemów mogą zaowocować efektem Acha! (zob. Rysunek 3). Rysunek 1. Meta-model trzech rodzajów logiki podejście linearne Rysunek 2. Metamodel trzech rodzajów logiki podejście dwuwymiarowe 46 / (12) /
4 TYTUŁ Listing 1. Logika stabilna: BookKeeper, domknięcia: TaxPolicy public class BookKeeper private TaxPolicy taxpolicy; public Invoice issuance(order order){ Invoice invoice = new Invoice(order.getClient()); for (OrderedProduct product : order.getorderedproducts()){ Money net = product.geteffectivecost(); Tax tax = taxpolicy.calculatetax(product.gettype(), net); InvoiceLine invoiceline = new InvoiceLine(product, product.getquantity(), net, tax); invoice.additem(invoiceline); return invoice; Rysunek 3. Metamodel trzech rodzajów logiki podejście trójwymiarowe Podejście funkcyjne Programiści używający języków funkcyjnych zapewne od razu skojarzyli nasz framework mentalny z pojęciami takimi jak higher order functions i closures. Po raz kolejny sprawdza się powiedzenie język, jakim mówisz, determinuje sposób, w jaki myślisz. a w podejściu obiektowym Natomiast dla programistów obiektowych mogę zasugerować pewną sztuczkę mentalną. Często programowanie obiektowe jest nauczane w naiwny (i błędny) sposób jako separację rzeczowników (klasy) i czasowników (metody). W opisywanym podejściu czynność (obliczenie podatku Listing 1, obliczenie rabatu Listing 2, obliczenie odpowiedniego przełożenia dla skrzyni biegów Listing 3) urosła do rangi first class citizen w języku obiektowym, czyli do rangi obiektu. Warianty wykonania czynności zostały zamknięta do obiektów implementujących wspólny interfejs (emulowanie funkcji). Spoglądając z innej strony, jest to klasyczny wzorzec: Strategy Design Pattern. Strategie możemy następnie dekorować (Decorator Design Pattern), nadawać im strukturę łańcucha (Chain of Responsibility Design Pattern), drzewa (Specification Design Pattern) etc. PRZYKŁADY Spójrzmy na kilka przykładów, które wypełniają treścią strukturę naszego meta-modelu. Przypomnę, że w każdym z nich dyskusyjne jest, czy chcemy fabrykować gotowe do pracy obiekty stabilne (z wstrzykniętymi domknięciami) czy jedynie domknięcia (pozwalając wyższej warstwie na orkiestrację całości i ew. użycie innych domknięć np. przekazanych za pomocą GUI). Podatki Przykład opracowany na potrzeby serii artykułów poświęconych DDD. Projekt i artykuły dostępne w ramce W sieci. Struktura: stabilna: klasa BookKeeper odpowiedzialna za wystawienie faktury (Invoice) na podstawie zamówienia (Order) domknięcie: punktem rozszerzenia jest wywołanie po interfejsie polityki obliczania podatku (TaxPolicy), która jest charakterystyczna dla danego kraju wybór domknięcia: BookKeeperFactory decyduje o tym, wg zasad jakiego kraju naliczyć podatek; zwraca BookKeeper gotowego do pracy (z wstrzykniętą polityką) public interface TaxPolicy { public Tax calculatetax(producttype producttype, Money net); public class BookKeeperFactory { public BookKeeper create(...){... Rabaty Struktura stabilna: model Rezerwacji (Reservation) produktów, która odpowiada za wyliczenie planu cenowego (PricingPlan) domknięcie: strategia obliczania rabatów (DiscountStrategy), będąca parametrem metody obliczającej plan cenowy wybór domknięcia: w tym modelu Rezerwacja nie zawiera strategii rabatowej, jest ona parametrem przekazywanym przez wyższą warstwę; aczkolwiek wciąż możemy korzystać z Fabryki rabatów, która zawiera logikę budowania rabatów najmniej korzystnych dla klienta Listing 2. Logika stabilna: Reservation, domknięcia: DiscountStrategy public class Reservation { private List<Product> products; public PricingPlan generatepricingplan(discountstrategy discountstrategy){ PricingPlan pricingplan = new PricingPlan(client); for (Product product : products){ pricingplan.additem(product, discountstrategy.calculate(product)); return invoice; public interface DiscountStrategy { public Discount calculate(product product); public class DiscountFactory { public DiscountStrategy create(...){... Moment obrotowy Przykład przygotowany na potrzeby artykułu Mock czy Stub? Command- -query Separation prawdę ci powie (do pobrania, patrz ramka W sieci ). Struktura: stabilna: model sterownika automatycznej skrzyni biegów domknięcie: strategia wyliczania odpowiedniego biegu wybór strategii: ustawienie sterownika w jeden z trybów: eco/comfort/ sport/sport+ / / 47
5 Listing 3. Logika stabilna: AutomaticTransmissionControler, domknięcia: GearCalculator public class AutomaticTransmissionController { public enum DrivingMode { ECO, COMFORT, SPORT, SPORT_PLUS private AutomaticGearBox gearbox; private EngineMonitoringSystem enginemonitoringsystem; private DrivingMode drivingmode; public void changemode(drivingmode drivingmode){ this.drivingmode = drivingmode; handlechange(0, 0); public void handlegas(double throttle){ handlechange(throttle, 0); public void handlebreaks(double breakingforce){ handlechange(0, breakingforce); /** * maintains gear that is proper for current: * driving mode, engine's RPM * and given gas throttle and breaking force * throttle gas throttle <0,1> breakingforce breaking force <0,1> */ private void handlechange(double throttle, double breakingforce){ GearCalculator calculator = creategearcalculator(drivingmode) int gear = calculator.calculate(egineminitoringsystem. getcurrentrpm(), throttle, breakingforce); if(gear!= gearbox.getgear()){ this.gearbox.changegear(gear); public interface GearCalculator { public int calculate(int currentrpm, double throttle, double breakingforce); WPŁYW NA TESTABILITY Wprowadzenie struktury tego meta-modelu pozwala na drastyczne zwiększenie testability czyli podatności kodu na testowanie automatyczne. Każdy z trzech rodzajów logiki pokrywamy osobnymi testami: logika stabilna testy jednostkowe operują na Mockach naszych domknięć domknięcia osobne testy jednostkowe fabryki mogą być kłopotliwe w testowaniu automatycznym z uwagi na ilość zależności (jednak pozostałe części kodu są dzięki temu relatywnie łatwe w testowaniu) Takie podejście redukuje ilość przypadków testowych. Załóżmy, że przykładowa klasa BookKeeper wymaga 100 testów hipotez biznesowych, polityka obliczania podatku wg reguł polskich kolejnych 100 testów i polityka obliczania podatku wg reguł niemieckich również 100 testów. W sumie 300 przypadków testowych. Gdyby jednak cały nasz kod miał strukturę monstrualnego ośmiotysięcznika (jedna klasa, setki instrukcji IF, 8kloc), wówczas mielibyśmy scenariusze księgowania z polskimi regułami: 100 * 100 oraz scenariusze księgowania z niemiecki regułami: również 100 * 100 w sumie przypadków testowych. PODSUMOWANIE Celem artykułu było przedstawienie syntezy kilku podejść i technik: Zasady Open/closed principle (SOLID) Projektowania architektury otwartej na plugin Zwiększenia testability Wykorzystania kontenera Inversion of Control Wizualizowania designu w różnych formach przestrzennych Stosowania meta-modelu w fazie analizy jako frameworka mentalnego dostarczającego nowych foremek dla złożonej treści Mam nadzieję, że całościowe spojrzenie na projektowanie obiektowe z różnych perspektyw przyczyni się do rozwoju Twojej kariery:) W sieci Zasady SOLID: Poprzednie artykuły, do których odnoszę się w tekście: Przykładowy projekt, z którego zaczerpnięto przykłady: Meta-model trzech rodzajów logiki Logika stabilna Domknięcia logiki Wybór domknięcia Charakterystyka kod źródłowy nie wymaga (częstych) zmian, zawiera punkty rozszerzeń kod źródłowy jest rozbudowywany o nowe implementacje kontraktu domknięcia (interfejsu) realizowany np. w Fabrykach, wymaga zmian, ew. może być oparty o generyczny mechanizm konfiguracji Building Blocks DDD Agregat Serwis Domenowy Serwis Aplikacyjny Polityka Specyfikacja Fabryka Repozytorium Serwis Domenowy Kontener Inversion of Control (Dependency Injection na podstawie: XML, adnotacje, metody fabrykujące działające w runtime) Sławomir Sobótka slawomir.sobotka@bottega.com.pl Programujący architekt aplikacji specjalizujący się w technologiach Java i efektywnym wykorzystaniu zdobyczy inżynierii oprogramowania. Trener i doradca w firmie Bottega IT Solutions. W wolnych chwilach działa w community jako: prezes Stowarzyszenia Software Engineering Professionals Polska ( publicysta w prasie branżowej i blogger ( 48 / (12) /
Receptury - niezbędnik projektanta i architekta
Program szkolenia: Receptury - niezbędnik projektanta i architekta Informacje ogólne Nazwa: Kod: Kategoria: Grupa docelowa: Czas trwania: Forma: Receptury - niezbędnik projektanta i architekta Craft-Receptury
Program szkolenia: Wprowadzenie do Domain Driven Design dla biznesu (część 0)
Program szkolenia: Wprowadzenie do Domain Driven Design dla biznesu (część 0) Informacje: Nazwa: Wprowadzenie do Domain Driven Design dla biznesu (część 0) Kod: Kategoria: Grupa docelowa: Czas trwania:
Testowanie aplikacji mobilnych na platformie Android - architektura, wzorce, praktyki i narzędzia
Program szkolenia: Testowanie aplikacji mobilnych na platformie Android - architektura, wzorce, Informacje: Nazwa: Kod: Kategoria: Grupa docelowa: Czas trwania: Forma: Testowanie aplikacji mobilnych na
Program szkolenia: Wzorce projektowe w C++
Program szkolenia: Wzorce projektowe w C++ Informacje: Nazwa: Wzorce projektowe w C++ Kod: CCPP-craft-C++ Patterns Kategoria: Craftsmanship dla programistów C i C ++ Grupa docelowa: developerzy Czas trwania:
Spring Framework - wprowadzenie i zagadnienia zaawansowane
Program szkolenia: Spring Framework - wprowadzenie i zagadnienia zaawansowane Informacje ogólne Nazwa: Kod: Kategoria: Grupa docelowa: Czas trwania: Forma: Spring Framework - wprowadzenie i zagadnienia
Zwinna współpraca programistów i testerów z wykorzystaniem BDD i. by Example (JBehave/Spock/SpecFlow)
Program szkolenia: Zwinna współpraca programistów i testerów z wykorzystaniem BDD i Spec Informacje: Nazwa: Kod: Kategoria: Grupa docelowa: Czas trwania: Forma: Zwinna współpraca programistów i testerów
Program szkolenia: Architektura aplikacji i systemów - Wzorce architektoniczne dla projektantów
Program szkolenia: Architektura aplikacji i systemów - Wzorce architektoniczne dla Informacje: Nazwa: Kod: Kategoria: Grupa docelowa: Czas trwania: Forma: Architektura aplikacji i systemów - Wzorce architektoniczne
Program szkolenia: Receptury testowania automatycznego - problemy, strategie, taktyki, techniki, narzędzia
Program szkolenia: Receptury testowania automatycznego - problemy, strategie, taktyki, techniki, narzędzia Informacje: Nazwa: Kod: Kategoria: Grupa docelowa: Czas trwania: Forma: Receptury testowania automatycznego
Całościowe podejście do testowania automatycznego dla programistów. (TDD, BDD, Spec. by Example, wzorce, narzędzia)
Program szkolenia: Całościowe podejście do testowania automatycznego dla programistów Ruby (TDD, BDD, Spec. by Example, wzorce, narzędzia) Informacje: Nazwa: Kod: Kategoria: Grupa docelowa: Czas trwania:
Domain Driven Design - projektowanie modeli złożonych domen (część
Program szkolenia: Domain Driven Design - projektowanie modeli złożonych domen (część 1) Informacje ogólne Nazwa: Kod: Kategoria: Grupa docelowa: Domain Driven Design - projektowanie modeli złożonych domen
Domain Driven Design - projektowanie modeli złożonych domen (część
Program szkolenia: Domain Driven Design - projektowanie modeli złożonych domen (część 1) Informacje: Nazwa: Kod: Kategoria: Grupa docelowa: Czas trwania: Forma: Domain Driven Design - projektowanie modeli
Pod dwóch wprowadzających w koncepcję DDD częściach,
INŻYNIERIA OPROGRAMOWANIA Sławomir Sobótka Domain Driven Design krok po kroku Część III: Szczegóły implementacji aplikacji wykorzystującej DDD na platformie Java Spring Framework i Hibernate Artykuł ma
Wzorce projektowe i architektura dla platformy Java EE
Program szkolenia: Wzorce projektowe i architektura dla platformy Java EE Informacje: Nazwa: Kod: Kategoria: Grupa docelowa: Czas trwania: Forma: Wzorce projektowe i architektura dla platformy Java EE
Program szkolenia: Wzorce projektowe i architektoniczne oraz efektywne techniki Object Oriented Design dla projektantów systemów
Program szkolenia: Wzorce projektowe i architektoniczne oraz efektywne techniki Object Oriented Design dla projektantów systemów Informacje: Nazwa: Kod: Kategoria: Grupa docelowa: Czas trwania: Forma:
Dariusz Brzeziński. Politechnika Poznańska, Instytut Informatyki
Dariusz Brzeziński Politechnika Poznańska, Instytut Informatyki Object-oriented programming Najpopularniejszy obecnie styl (paradygmat) programowania Rozwinięcie koncepcji programowania strukturalnego
Całościowe podejście do testowania automatycznego dla programistów. /C#/PHP (TDD, BDD, Spec. by Example, wzorce, narzędzia)
Program szkolenia: Całościowe podejście do testowania automatycznego dla programistów Java /C#/PHP (TDD, BDD, Spec. by Example, wzorce, narzędzia) Informacje: Nazwa: Kod: Kategoria: Grupa docelowa: Czas
Projektowanie obiektowe oprogramowania Wzorce architektury aplikacji (3) Wykład 11 Repository, Unit of Work Wiktor Zychla 2016
Projektowanie obiektowe oprogramowania Wzorce architektury aplikacji (3) Wykład 11 Repository, Unit of Work Wiktor Zychla 2016 Repository dodatkowa warstwa abstrakcji na obiektową warstwę dostępu do danych.
Plik pobrano z Tytuł: Wzorce projektowe, cz. 2 Strategy Ostatnia aktualizacja:
Wzorce projektowe, cz. 2 Strategy Druga część z serii wpisów o wzorcach projektowych. Dziś omówię wzorzec Strategii (Strategy). Wstęp Strategia jest wzorcem projektowym, który definiuje rodzinę wymiennych
Projektowanie obiektowe oprogramowania Wykład 4 wzorce projektowe cz.i. wzorce podstawowe i kreacyjne Wiktor Zychla 2017
Projektowanie obiektowe oprogramowania Wykład 4 wzorce projektowe cz.i. wzorce podstawowe i kreacyjne Wiktor Zychla 2017 1 Wzorce podstawowe 1.1 Interface vs Abstract class class InterfaceAbstractClass
Implementacja Domain Driven Design - wzorce architektoniczne (część
Program szkolenia: Implementacja Domain Driven Design - wzorce architektoniczne (część 2) Informacje ogólne Nazwa: Kod: Kategoria: Grupa docelowa: Czas trwania: Forma: Implementacja Domain Driven Design
Program szkolenia: Wzorce projektowe i ich implementacja w C# oraz testowanie automatyczne
Program szkolenia: Wzorce projektowe i ich implementacja w C# oraz testowanie automatyczne Informacje ogólne Nazwa: Kod: Kategoria: Grupa docelowa: Czas trwania: Forma: Wzorce projektowe i ich implementacja
Projektowanie obiektowe oprogramowania Wzorce architektury aplikacji (2) Wykład 10 Inversion of Control Wiktor Zychla 2013
Projektowanie obiektowe oprogramowania Wzorce architektury aplikacji (2) Wykład 10 Inversion of Control Wiktor Zychla 2013 1 Dependency Injection Dependency Injection = zestaw technik pozwalających tworzyć
REQB POZIOM PODSTAWOWY PRZYKŁADOWY EGZAMIN
REQB POZIOM PODSTAWOWY PRZYKŁADOWY EGZAMIN Podziękowania REQB Poziom Podstawowy Przykładowy Egzamin Dokument ten został stworzony przez główny zespół Grupy Roboczej REQB dla Poziomu Podstawowego. Tłumaczenie
Java Persistence API - zagadnienia zaawansowane
Program szkolenia: Java Persistence API - zagadnienia zaawansowane Informacje: Nazwa: Kod: Kategoria: Grupa docelowa: Czas trwania: Forma: Java Persistence API - zagadnienia zaawansowane Java-EE-jpa-pro
Projektowanie obiektowe. Roman Simiński Wzorce projektowe Wybrane wzorce strukturalne
Projektowanie obiektowe Roman Simiński roman.siminski@us.edu.pl www.siminskionline.pl Wzorce projektowe Wybrane wzorce strukturalne Fasada Facade Pattern 2 Wzorzec Fasada Facade Pattern koncepcja 3 Wzorzec
Domain Driven Design krok po kroku
INŻYNIERIA OPROGRAMOWANIA Sławomir Sobótka Domain Driven Design krok po kroku Część II: Zaawansowane modelowanie DDD techniki strategiczne: konteksty i architektura zdarzeniowa Modele nietrywialnych domen
Analiza biznesowa a metody agile owe
Analiza biznesowa a metody agile owe P6S_WG01 ma wiedzę w zakresie metodyk zwinnych P6S_WG02 ma wiedzę w zakresie zwinnego gromadzenia i zarządzania wymaganiami P6S_WG03 zna i rozumie proces wytwarzania
Wzorce Strukturalne. Adapter: opis. Tomasz Borzyszkowski
Adapter: opis Wzorce Strukturalne Tomasz Borzyszkowski Alternatywna nazwa: Wrapper (opakowanie) Rola obiektu Adapter: pełni wobec Klienta rolę otoczki, która umożliwia przetłumaczenie jego żądań na protokół
Programowanie Zespołowe
Programowanie Zespołowe Dobre Praktyki dr Rafał Skinderowicz mgr inż. Michał Maliszewski Parafrazując klasyka: Jeśli piszesz w Javie pisz w Javie - Rafał Ciepiela Principal Software Developer Cadence Design
Projektowanie logiki aplikacji
Jarosław Kuchta Projektowanie Aplikacji Internetowych Projektowanie logiki aplikacji Zagadnienia Rozproszone przetwarzanie obiektowe (DOC) Model klas w projektowaniu logiki aplikacji Klasy encyjne a klasy
Produktywne tworzenie aplikacji webowych z wykorzystaniem Groovy i
Program szkolenia: Produktywne tworzenie aplikacji webowych z wykorzystaniem Groovy i Informacje: Nazwa: Kod: Kategoria: Grupa docelowa: Czas trwania: Forma: Produktywne tworzenie aplikacji webowych z
Platformy programistyczne:.net i Java L ABORATORIUM 7,8: HACKATHON - JTTT
Platformy programistyczne:.net i Java L ABORATORIUM 7,8: HACKATHON - JTTT O co chodzi? - Przypomnienie Hackathon - http://en.wikipedia.org/wiki/hackathon A hackathon is an event in which computer programmers
Metodyki zwinne wytwarzania oprogramowania
Metodyki zwinne wytwarzania oprogramowania Wykład 7 Marcin Młotkowski 25 listopada 2014 Plan wykładu 1 Zasada pojedynczej odpowiedzialności 2 Marcin Młotkowski Metodyki zwinne wytwarzania oprogramowania
Wykład 4. Projektowanie. MIS n Inżynieria oprogramowania Październik 2014
Wykład 4 MIS-1-505-n Inżynieria oprogramowania Październik 2014 Metody Kazimierz Michalik Akademia Górniczo-Hutnicza im. S. Staszica w Krakowie 4.1 Agenda 1 2 3 Metody Metody 4 5 4.2 Implementacja Metody
Analiza i projektowanie obiektowe 2016/2017. Wykład 10: Tworzenie projektowego diagramu klas
Analiza i projektowanie obiektowe 2016/2017 Wykład 10: Tworzenie projektowego diagramu klas Jacek Marciniak Wydział Matematyki i Informatyki Uniwersytet im. Adama Mickiewicza 1 Plan wykładu 1. Projektowy
Szkolenie wycofane z oferty. Program szkolenia: Enterprise Java Beans 3.0/3.1
Szkolenie wycofane z oferty Program szkolenia: Enterprise Java Beans 3.0/3.1 Informacje: Nazwa: Enterprise Java Beans 3.0/3.1 Kod: Java-EE-EJB Kategoria: Java EE Grupa docelowa: developerzy Czas trwania:
Szablony funkcji i klas (templates)
Instrukcja laboratoryjna nr 3 Programowanie w języku C 2 (C++ poziom zaawansowany) Szablony funkcji i klas (templates) dr inż. Jacek Wilk-Jakubowski mgr inż. Maciej Lasota dr inż. Tomasz Kaczmarek Wstęp
Czym są właściwości. Poprawne projektowanie klas
Z akcesorów get i set korzysta każdy kto programuje w C#. Stanowią one duże udogodnienie w programowaniu obiektowym. Zapewniają wygodę, bezpieczeństwo i znacząco skracają kod. Akcesory są ściśle związane
Technologie obiektowe
WYKŁAD dr inż. Paweł Jarosz Instytut Informatyki Politechnika Krakowska mail: pjarosz@pk.edu.pl LABORATORIUM dr inż. Paweł Jarosz (3 grupy) mgr inż. Piotr Szuster (3 grupy) warunki zaliczenia Obecność
Iteracyjno-rozwojowy proces tworzenia oprogramowania Wykład 3 część 1
Iteracyjno-rozwojowy proces tworzenia oprogramowania Wykład 3 część 1 Zofia Kruczkiewicz 1 Zunifikowany iteracyjno- przyrostowy proces tworzenia oprogramowania kiedy? Przepływ działań Modelowanie przedsiębiorstwa
Modelowanie i Programowanie Obiektowe
Modelowanie i Programowanie Obiektowe Wykład I: Wstęp 20 październik 2012 Programowanie obiektowe Metodyka wytwarzania oprogramowania Metodyka Metodyka ustandaryzowane dla wybranego obszaru podejście do
Receptury projektowe niezbędnik początkującego architekta
TYTUŁ Receptury projektowe niezbędnik początkującego architekta Część I: Cztery smaki odwracania (i utraty) kontroli: Dependency Injection, Events, Aspect Oriented Programming, Framework Paradygmat Inversion
Wprowadzenie do programowania aplikacji mobilnych
Wprowadzenie do programowania aplikacji mobilnych dr Przemysław Juszczuk dr Przemysław Juszczuk Trochę historii Idea wzorców projektowych wywodzi się jeszcze z wczesnych lat osiemdziesiątych ubiegłego
Pytania i wyjaśnienia treści Specyfikacji Istotnych Warunków Zamówienia
Warszawa, 11 kwietnia 2013 r. Dotyczy: postępowania prowadzonego w trybie przetargu nieograniczonego na Usługi wsparcia technicznego, utrzymania oraz rozwoju systemu Soprano, Phoenix oraz Register Plus
Dokument Detaliczny Projektu Temat: Księgarnia On-line Bukstor
Koszalin, 15.06.2012 r. Dokument Detaliczny Projektu Temat: Księgarnia On-line Bukstor Zespół projektowy: Daniel Czyczyn-Egird Wojciech Gołuchowski Michał Durkowski Kamil Gawroński Prowadzący: Dr inż.
Rysunkowy tutorial Możesz swobodnie dystrybuować ten plik jeśli pozostawisz go w nietkniętym stanie. Możesz także cytować jego fragmenty umieszczając w tekście odnośnik http://mbartyzel.blogspot.com Jak
Wzorce projektowe i refaktoryzacja
Wzorce projektowe i refaktoryzacja Paweł Kozioł p.koziol@students.mimuw.edu.pl 18.01.2005 Moja praca magisterska Narzędzie dla środowiska Eclipse wspierające stosowanie wzorców projektowych J2EE Prowadzący:
Program szkolenia: Architektura aplikacji i systemów - Wzorce architektoniczne dla projektantów
Program szkolenia: Architektura aplikacji i systemów - Wzorce architektoniczne dla projektantów Informacje ogólne Nazwa: Kod: Kategoria: Grupa docelowa: Czas trwania: Forma: Architektura aplikacji i systemów
Analiza i projektowanie aplikacji Java
Analiza i projektowanie aplikacji Java Modele analityczne a projektowe Modele analityczne (konceptualne) pokazują dziedzinę problemu. Modele projektowe (fizyczne) pokazują system informatyczny. Utrzymanie
Metodyki zwinne wytwarzania oprogramowania
Metodyki zwinne wytwarzania oprogramowania Wykład 7 Marcin Młotkowski 23 listopada 2016 Plan wykładu 1 2 3 Kilka negatywnych przykładów Marcin Młotkowski Metodyki zwinne wytwarzania oprogramowania 2 /
Wprowadzenie niektórych zagadnień OOP oraz wzorce operacyjne
Wprowadzenie niektórych zagadnień OOP oraz wzorce operacyjne ŁUKASZ KIEŁCZYKOWSKI 1 1. Wprowadzenie Wyobraźmy sobie, że jesteśmy firmą tworzącą oprogramowanie i dostaliśmy właśnie zlecenie na stworzenie
Dzisiejszy wykład. Wzorce projektowe. Visitor Client-Server Factory Singleton
Dzisiejszy wykład Wzorce projektowe Visitor Client-Server Factory Singleton 1 Wzorzec projektowy Wzorzec nazwana generalizacja opisująca elementy i relacje rozwiązania powszechnie występującego problemu
Wstęp [2/2] Wbrew częstemu przekonaniu, nie są one gotowymi rozwiązaniami, to tylko półprodukty rozwiązania.
Adrian Skalczuk Szymon Kosarzycki Spis Treści Wstęp [1/2] Wzorce projektowe są nieodłącznym przyjacielem programisty pozwalają pisać czystszy kod, łatwiejszy do zrozumienia przez innych i zapewniają pewien
Wzorce logiki dziedziny
Wzorce logiki dziedziny 1. Wzorce logiki dziedziny skrypt transakcji (Transaction Script), brama tabeli (Table Data Gateway), model dziedziny (Domain model), strategia (Strategy), moduł tabeli (Table Module),
Projektowanie obiektowe Wzorce projektowe
Projektowanie obiektowe Wzorce projektowe Gang of Four Kreacyjne wzorce projektowe (wzorce konstrukcyjne) 1 Roadmap Memento Factory Method Abstract Factory Prototype Builder 2 Wzorce konstrukcyjne wzorce
Ewolucyjna architektura
Ewolucyjna architektura www.sxc.hu/photo/850368 Na początek Michał Bartyzel konsultant, trener BNS IT procesy zwinne i nie tylko architektura czysty kod software crafstmanship strategie skutecznych programistów
DSL w środowisku Eclipse. Grzegorz Białek Architekt techniczny, Sygnity S.A.
DSL w środowisku Eclipse Grzegorz Białek Architekt techniczny, Sygnity S.A. Agenda Wstęp do tematu (10 min) Sens tworzenia języków biznesowych UML jako język biznesu? Zintegrowane środowisko deweloperskie
Projekt architektury systemów informatycznych Uniwersytetu Warszawskiego w oparciu o metodykę TOGAF. Tomasz Turski 26.05.2011
Projekt architektury systemów informatycznych Uniwersytetu Warszawskiego w oparciu o metodykę TOGAF Tomasz Turski 26.05.2011 Plan prezentacji Architektura korporacyjna Frameworki Pryncypia Metodyka TOGAF
Projektowanie obiektowe Wzorce projektowe. Gang of Four Strukturalne wzorce projektowe (Wzorce interfejsów)
Projektowanie obiektowe Wzorce projektowe Gang of Four Strukturalne wzorce projektowe (Wzorce interfejsów) 1 Roadmap Adapter Bridge Composite Facade 2 Pojęcia obiekt interfejs typ klasa 3 Co to jest delegacja?
Laboratorium z przedmiotu: Inżynieria Oprogramowania INEK Instrukcja 6
Instrukcja 6 Laboratorium 8 Opracowanie diagramów sekwencji dla wybranych przypadków użycia reprezentujących usługi oprogramowania wynikających również z wykonanych diagramów czynności; definicja operacji
Zaawansowane programowanie obiektowe - wykład 5
Zaawansowane programowanie obiektowe - wykład 5 dr Piotr Jastrzębski (czynnościowe) opisują zachowanie obiektów, komunikację pomiędzy nimi i ich odpowiedzialność. Interpreter Iterator (kursor) Łańcuch
Szablony funkcji i szablony klas
Bogdan Kreczmer bogdan.kreczmer@pwr.wroc.pl Zakład Podstaw Cybernetyki i Robotyki Instytut Informatyki, Automatyki i Robotyki Politechnika Wrocławska Kurs: Copyright c 2011 Bogdan Kreczmer Niniejszy dokument
Programowanie obiektowe
Programowanie obiektowe Laboratorium 11 - przegląd wybranych wzorców mgr inż. Krzysztof Szwarc krzysztof@szwarc.net.pl Sosnowiec, 24 maja 2017 1 / 38 mgr inż. Krzysztof Szwarc Programowanie obiektowe Wzorce
Techniki efektywnego testowania kodu dla programistów Java (Spock
Program szkolenia: Techniki efektywnego testowania kodu dla programistów Java (Spock/JUnit) Informacje: Nazwa: Kod: Kategoria: Grupa docelowa: Czas trwania: Forma: Techniki efektywnego testowania kodu
Receptury projektowe niezbędnik początkującego architekta
LABORATORIUM Receptury projektowe niezbędnik początkującego architekta Część VI: Wzorce analityczne modeli biznesowych na przykładzie Party odkrywanie krok po kroku kolejnych rozwiązań. Autor Techniki
Architektura korporacyjna jako narzędzie koordynacji wdrażania przetwarzania w chmurze
Architektura korporacyjna jako narzędzie koordynacji wdrażania przetwarzania w chmurze Prof. SGH, dr hab. Andrzej Sobczak, Kierownik Zakładu Systemów Informacyjnych, Katedra Informatyki Gospodarczej SGH
MVVM Light Toolkit. Julita Borkowska
MVVM Light Toolkit Julita Borkowska Czym jest MVVM Light Toolkit? MVVM Light Toolkit został stworzony w 2009 roku przez Laurenta Bugnion. Jest to biblioteka dostarczająca zestaw komponentów pomocnych podczas
INŻYNIERIA OPROGRAMOWANIA
INSTYTUT INFORMATYKI STOSOWANEJ 2013 INŻYNIERIA OPROGRAMOWANIA Inżynieria Oprogramowania Proces ukierunkowany na wytworzenie oprogramowania Jak? Kto? Kiedy? Co? W jaki sposób? Metodyka Zespół Narzędzia
Zarządzanie i realizacja projektów systemu Microsoft SharePoint 2010
Zarządzanie i realizacja projektów systemu Microsoft SharePoint 2010 Geoff Evelyn Przekład: Natalia Chounlamany APN Promise Warszawa 2011 Spis treści Podziękowania......................................................
Diagram wdrożenia. Rys. 5.1 Diagram wdrożenia.
Diagram wdrożenia Zaprojektowana przez nas aplikacja bazuje na architekturze client-server. W tej architekturze w komunikacji aplikacji klienckiej z bazą danych pośredniczy serwer aplikacji, który udostępnia
NAJLEPSZE STRATEGIE SKUTECZNYCH PROGRAMISTÓW. TECHNIKI PRACY Z KODEM KOD: NSKOD
NAJLEPSZE STRATEGIE SKUTECZNYCH PROGRAMISTÓW. TECHNIKI PRACY Z KODEM KOD: NSKOD OPIS Praca programisty oprócz umiejętności i wiedzy technicznej, wymaga również doskonałej pracy z kodem. Umiejętności te
Projektowanie Zorientowane na Dziedzinę. ang. Domain Driven Design
Projektowanie Zorientowane na Dziedzinę ang. Domain Driven Design 2 Projektowanie Stan posiadania Przypadki użycia Model dziedziny Operacje systemowe Kontrakty dla operacji systemowych Problemy do rozwiązania
Scala - programowanie obiektowo-funkcyjne
Program szkolenia: Scala - programowanie obiektowofunkcyjne Informacje: Nazwa: Kod: Kategoria: Grupa docelowa: Czas trwania: Forma: Scala - programowanie obiektowo-funkcyjne Scala-Scala Scala developerzy
Jarosław Żeliński analityk biznesowy, projektant systemów
Trendy w architekturze oprogramowania zarządzającego procesami biznesowymi i przepływem pracy - dedykowane czy standardowe? Jarosław Żeliński analityk biznesowy, projektant systemów O mnie Od 1991 roku
Podczas dziedziczenia obiekt klasy pochodnej może być wskazywany przez wskaźnik typu klasy bazowej.
Polimorfizm jest filarem programowania obiektowego, nie tylko jeżeli chodzi o język C++. Daje on programiście dużą elastyczność podczas pisania programu. Polimorfizm jest ściśle związany z metodami wirtualnymi.
Wstęp do JUNG. Omówione elementy wykorzystane w Edge Color Project
JUNG Java Universal Network/Graph Framework JUNG jest to biblioteka służąca do modelowania, analizy i wizualizacji danych reprezentowanych w postaci grafów lub sieci. Architektura JUNGa wspiera różnorodność
Projektowanie obiektowe oprogramowania Wzorce architektury aplikacji (3) Wykład 11 Repository, Unit of Work Wiktor Zychla 2017
Projektowanie obiektowe oprogramowania Wzorce architektury aplikacji (3) Wykład 11 Repository, Unit of Work Wiktor Zychla 2017 Repository dodatkowa warstwa abstrakcji na obiektową warstwę dostępu do danych.
Zofia Kruczkiewicz - Modelowanie i analiza systemów informatycznych 1
Charakterystyka oprogramowania obiektowego 1. Definicja systemu informatycznego 2. Model procesu wytwarzania oprogramowania - model cyklu życia oprogramowania 3. Wymagania 4. Problemy z podejściem nieobiektowym
Paradygmaty programowania
Paradygmaty programowania Jacek Michałowski, Piotr Latanowicz 15 kwietnia 2014 Jacek Michałowski, Piotr Latanowicz () Paradygmaty programowania 15 kwietnia 2014 1 / 12 Zadanie 1 Zadanie 1 Rachunek predykatów
Podstawy Programowania Obiektowego
Podstawy Programowania Obiektowego Wprowadzenie do programowania obiektowego. Pojęcie struktury i klasy. Spotkanie 03 Dr inż. Dariusz JĘDRZEJCZYK Tematyka wykładu Idea programowania obiektowego Definicja
Programowanie obiektowe
Programowanie obiektowe Podstawowe cechy i możliwości języka Scala mgr inż. Krzysztof Szwarc krzysztof@szwarc.net.pl Sosnowiec, 2017 1 / 32 mgr inż. Krzysztof Szwarc Programowanie obiektowe Informacje
Wzorce projektowe ArrayList. Aplikacja i zdarzenia. Paweł Chodkiewicz
Wzorce projektowe ArrayList DataGridView Aplikacja i zdarzenia Paweł Chodkiewicz Wzorzec uniwersalne rozwiązanie często powtarzających się problemów. Wzorzec opisuje problem, który powtarza się wielokrotnie
Informacje ogólne. Karol Trybulec p-programowanie.pl 1. 2 // cialo klasy. class osoba { string imie; string nazwisko; int wiek; int wzrost;
Klasy w C++ są bardzo ważnym narzędziem w rękach programisty. Klasy są fundamentem programowania obiektowego. Z pomocą klas będziesz mógł tworzyć lepszy kod, a co najważniejsze będzie on bardzo dobrze
Program szkolenia: Zaawansowane programowanie w C++
Program szkolenia: Zaawansowane programowanie w C++ Informacje: Nazwa: Kod: Kategoria: Grupa docelowa: Czas trwania: Forma: Zaawansowane programowanie w C++ ccpp-c++ Advanced C i C++ developerzy 3 dni
Komputerowe Systemy Przemysłowe: Modelowanie - UML. Arkadiusz Banasik arkadiusz.banasik@polsl.pl
Komputerowe Systemy Przemysłowe: Modelowanie - UML Arkadiusz Banasik arkadiusz.banasik@polsl.pl Plan prezentacji Wprowadzenie UML Diagram przypadków użycia Diagram klas Podsumowanie Wprowadzenie Języki
Analiza i projektowanie oprogramowania. Analiza i projektowanie oprogramowania 1/32
Analiza i projektowanie oprogramowania Analiza i projektowanie oprogramowania 1/32 Analiza i projektowanie oprogramowania 2/32 Cel analizy Celem fazy określania wymagań jest udzielenie odpowiedzi na pytanie:
Szkolenie wycofane z oferty
Szkolenie wycofane z oferty Program szkolenia: Java Server Faces 2 Informacje: Nazwa: Java Server Faces 2 Kod: Java-EE-JSF 2 Kategoria: Java EE Grupa docelowa: developerzy Czas trwania: 3 dni Forma: 50%
Metody Metody, parametry, zwracanie wartości
Materiał pomocniczy do kursu Podstawy programowania Autor: Grzegorz Góralski ggoralski.com Metody Metody, parametry, zwracanie wartości Metody - co to jest i po co? Metoda to wydzielona część klasy, mająca
Egzamin / zaliczenie na ocenę*
WYDZIAŁ PODSTAWOWYCH PROBLEMÓW TECHNIKI Zał. nr 4 do ZW33/01 KARTA PRZEDMIOTU Nazwa w języku polskim : INŻYNIERIA OPROGRAMOWANIA Nazwa w języku angielskim: SOFTWARE ENGINEERING Kierunek studiów (jeśli
Zaawansowane programowanie w C++ (PCP)
Zaawansowane programowanie w C++ (PCP) Wykład 4 - wzorce projektowe. dr inż. Robert Nowak - p. 1/18 Powtórzenie klasy autonomiczne tworzenie nowych typów: dziedziczenie i agregacja dziedziczenie: przedefiniowywanie
Laboratorium z przedmiotu: Inżynieria Oprogramowania INEK Instrukcja 7
Instrukcja 7 Laboratoria 9, 10 Opracowanie diagramów sekwencji dla wybranych przypadków użycia reprezentujących usługi oprogramowania wynikających również z wykonanych diagramów czynności; definicja operacji
X-DRIVEN DESIGN, Y-DRIVEN DEVELOPMENT NICZEGO NIE ZMIENIĄ
Michał Bartyzel X-DRIVEN DESIGN, Y-DRIVEN DEVELOPMENT NICZEGO NIE ZMIENIĄ mbartyzel.blogspot.com @MichalBartyzel Lepszy framework Zwiększamy efektywność zespołów projektowych 2 Refleksja: Kolejny framework
SCENARIUSZ LEKCJI. Streszczenie. Czas realizacji. Podstawa programowa
Autorzy scenariusza: SCENARIUSZ LEKCJI OPRACOWANY W RAMACH PROJEKTU: INFORMATYKA MÓJ SPOSÓB NA POZNANIE I OPISANIE ŚWIATA. PROGRAM NAUCZANIA INFORMATYKI Z ELEMENTAMI PRZEDMIOTÓW MATEMATYCZNO-PRZYRODNICZYCH
Aplikacje w środowisku Java
Aplikacje w środowisku Java Materiały do zajęć laboratoryjnych Klasy i obiekty - dziedziczenie mgr inż. Kamil Zieliński Katolicki Uniwersytet Lubelski Jana Pawła II 2018/2019 W ramach poprzedniego laboratorium
Feature Driven Development
Feature Driven Development lekka metodyka tworzenia oprogramowania Kasprzyk Andrzej IS II Wstęp Feature Driven Development (FDD) to metodyka tworzenia oprogramowania, która wspomaga zarządzanie fazami
Wprowadzenie do Behaviordriven
Wprowadzenie do Behaviordriven development Jakub Kosiński Email: ja@ghandal.net Czym jest BDD? praktyka, powstała na podstawie TDD, wykorzystywana w zwinnych metodykach stworzona przez Dana Northa w 2003
Język programowania. Andrzej Bobyk http://www.alfabeta.lublin.pl. www.alfabeta.lublin.pl/jp/
Język programowania Andrzej Bobyk http://www.alfabeta.lublin.pl www.alfabeta.lublin.pl/jp/ Literatura K. Reisdorph: Delphi 6 dla każdego. Helion, Gliwice 2001 A. Grażyński, Z. Zarzycki: Delphi 7 dla każdego.