Od wymagań do Javy w mgnieniu oka



Podobne dokumenty
Uniwersytet Rzeszowski

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

0.1 Hierarchia klas Diagram Krótkie wyjaśnienie

Aplikacje internetowe i rozproszone - laboratorium

Programowanie obiektowe

Kompozycja i dziedziczenie klas

Systemy Rozproszone. Spis treści. Temat projektu: Regułowy system analizujacy logi. autorzy: Rafał Sadłowski, Sebastian Falkus, Michał Różycki

WSNHiD, Programowanie 2, Lab. 3. Trwałość danych

Analiza systemowa. Andrzej Łachwa Bazy danych 12+/15

JĘZYK UML JAKO NARZĘDZIE MODELOWANIA PROCESU PROJEKTOWO-KONSTRUKCYJNEGO

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

Zagadnienia programowania obiektowego

1 Wprowadzenie. RSL = aktorzy + przypadki użycia + scenariusze + słownik pojęć

Klasy i obiekty cz II

Laboratorium z przedmiotu: Inżynieria Oprogramowania INEK Instrukcja 7

Spis treści 1. Wstęp 2. Projektowanie systemów informatycznych

Mechanizmy refleksji w Javie i C# Autor: Aleksander Nałęczyński

Programowanie obiektowe

Diagram stanów Laboratorium 9


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

Kurs programowania. Wykład 9. Wojciech Macyna. 28 kwiecień 2016

Java: interfejsy i klasy wewnętrzne

Gdzie jest moja tabela?

Tworzenie aplikacji w języku Java

Wzorce logiki dziedziny

Wymiana du ych plików instrukcja dla klientów Grontmij Polska Sp z o. o.

CGI i serwlety. Plan wykładu. Wykład prowadzi Mikołaj Morzy. Przykład: serwlety vs. szablony. Implementacja logiki prezentacji


Projektowanie systemów informacyjnych: język UML

Laboratorium z przedmiotu: Inżynieria Oprogramowania INP

Laboratorium 8 Diagramy aktywności

Stacjonarne Wszystkie Katedra Inżynierii Produkcji dr Sławomir Luściński. Kierunkowy Nieobowiązkowy Polski Semestr trzeci. Semestr zimowy Brak Tak

Politechnika Krakowska im. Tadeusza Kościuszki. Karta przedmiotu. obowiązuje studentów rozpoczynających studia w roku akademickim 2013/2014

Programowanie obiektowe

Diagramy czynności Na podstawie UML 2.0 Tutorial

JAVA Materiały do laboratorium III wersja niezaawansowana Marcin Borkowski WSEiZ czerwiec 2006

PL/SQL. Zaawansowane tematy PL/SQL

Dokumentacja motoryzacyjnego sklepu internetowego

Laboratorium z przedmiotu: Inżynieria Oprogramowania INEK Instrukcja 6

Akademia ETI. Wprowadzenie do programowania w Javie PG Java User Group Przemysław Kulesza

Przykład 1 Iteracja 2 tworzenia oprogramowania Diagramy klas i sekwencji:

Opteamum korzyści. Aktualnie poszukujemy kandydatów na stanowisko: Programista ASP.NET MVC / WCF Nr ref. PROGRAMISTA ASP.NET/DRP/2014.


Budowa prostej aplikacji wielowarstwowej. Laboratorium 1 Programowanie komponentowe Zofia Kruczkiewicz

SFML. (Simple and Fast Multimedia Library)

Od wymagań do Javy w mgnieniu oka: modelowanie oprogramowania w praktyce

Java. język programowania obiektowego. Programowanie w językach wysokiego poziomu. mgr inż. Anna Wawszczak

Metody dostępu do danych

Ćwiczenie 1. Przygotowanie środowiska JAVA

WYMAGANIA EDUKACYJNE I KRYTERIA OCENIANIA Z PRZEDMIOTU PROGRAMOWANIE APLIKACJI INTERNETOWYCH

Laboratorium z przedmiotu: Inżynieria Oprogramowania INP002017_ Laboratorium 11 Testy akceptacyjne z wykorzystaniem narzędzia FitNesse

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

Laboratorium 03: Podstawowe konstrukcje w języku Java [2h]

Instrukcja tworzenia aplikacji EE na bazie aplikacji prezentowanej na zajęciach lab.4 z PIO umożliwiająca przez sieć dostęp wielu użytkownikom.

Wykład 7: Pakiety i Interfejsy

Języki i metody programowania Java Lab1 Zofia Kruczkiewicz

JAVA. Java jest wszechstronnym językiem programowania, zorientowanym. apletów oraz samodzielnych aplikacji.

MVC w praktyce tworzymy system artykułów. cz. 1

PROJEKTOWANIE SYSTEMÓW LOGISTYCZNYCH PROJEKT SYSTEMY LOGISTYCZNE PODSTAWY TEORETYCZNE

Przykład zastosowania notacji UML dla realizacji zastosowania wzorca Mediator (materiały dla studentów na prawach rękopisu)

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

Program sektorowy pn. Program

Politechnika Krakowska im. Tadeusza Kościuszki. Karta przedmiotu. obowiązuje studentów rozpoczynających studia w roku akademickim 2015/16 t

Remote Method Invocation 17 listopada 2010

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

Remote Method Invocation 17 listopada Dariusz Wawrzyniak (IIPP) 1

Podejście obiektowe do budowy systemów rozproszonych

Sposoby tworzenia projektu zawierającego aplet w środowisku NetBeans. Metody zabezpieczenia komputera użytkownika przed działaniem apletu.

Problem Próby rozwiązania Maszyna stanów Inne zastosowania Podsumowanie. Maszyny stanów. Programowanie gier bez Unity, cz. 3.

Code slicing: Droga do lepszego rozumienia kodu źródłowego (część druga)

Zaawansowane Aplikacje Internetowe

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

Konferencja NOWE MEDIA W EDUKACJI

Programowanie Komputerów 3FZ

REGULAMIN II WOJEWÓDZKIEGO KABARETONU OSÓB NIEPEŁNOSPRAWNYCH

I FORUM INNOWACJI TRANSPORTOWYCH - dobre praktyki na rzecz zrównoważonego rozwoju

PARADYGMATY PROGRAMOWANIA Wykład 4

Zaawansowane aplikacje internetowe - laboratorium Architektura Spring.

Zofia Kruczkiewicz, Programowanie obiektowe - java, wykład 2 1

Remote Method Invocation 17 listopada rozproszonych. Dariusz Wawrzyniak (IIPP) 1

EGZAMIN MATURALNY Z INFORMATYKI CZERWIEC 2011 POZIOM ROZSZERZONY WYBRANE: CZĘŚĆ I. Czas pracy: 90 minut. Liczba punktów do uzyskania: 20

Pętle while, for, do while, instrukcje break, continue, switch 1. Pętle

Instrukcja 2 Laboratorium z Podstaw Inżynierii Oprogramowania

Wprowadzenie do technologii JavaServer Faces 2.1 na podstawie

[Android] Podstawy programowania

Laboratorium Programowania Kart Elektronicznych

Materiały oryginalne: ZAWWW-2st1.2-l11.tresc-1.0kolor.pdf. Materiały poprawione

i pakietu programowego PALASM 4

Programowanie obiektowe

Kurs programowania. Wykład 4. Wojciech Macyna. 23 marca 2016

Konfiguracja po czenia pomi dzy serwerem OPC, a sterownikiem PLC dla sieci Profibus

Zobacz to na własne oczy. Przyszłość już tu jest dzięki rozwiązaniu Cisco TelePresence.

Wywoływanie metod zdalnych

Android, wprowadzenie do SDK

Wydział Zarządzania. Poziom i forma studiów. Ścieżka dyplomowania: Kod przedmiotu: Punkty ECTS 1) W - 15 C- 15 L- 0 P- 0 Ps- 0 S- 0

Politechnika Krakowska im. Tadeusza Kościuszki. Karta przedmiotu. obowiązuje studentów rozpoczynających studia w roku akademickim 2013/2014

Wprowadzenie do technologii JavaServer Faces 2.1 na podstawie

Projektowanie Graficznych Interfejsów Użytkownika Robert Szmurło

Transkrypt:

Od wymagań do Javy w mgnieniu oka Michał Śmiałek Politechnika Warszawska RE-Challenge, Warszawa, 15.05.2015 Prelegent Czym się zajmowałem (od ok. 1991 r.) Profesor (informatyka) Politechnika Warszawska; UML, Inżynieria Wymagań, Projektowanie, MDD/MDA, Kierownik grupy SMoG (modelowanie oprogramowania) Kierownik zespołu PW w projekcie REMICS (7PR) Koordynator naukowy konsorcjum projektu ReDSeeDS (6PR): główny współautor języka RSL Trener w wielu szkoleniach dla profesjonalistów (> 200 edycji szkoleń) z zakresu inżynierii oprogramowania Konsultant w firmie Infovide-Matrix Kierownik projektów z zakresu budowy oprogramowania Inżynier procesu (pierwszy w Polsce certyfikat trenera RUP) Analityk wymagań oprogramowania i biznesu Projektant oprogramowania i programista ReDSeeDS 2 1

O czym będziemy mówić? Jakie są marzenia kierownika projektu IT? Jak pisać wymagania precyzyjnie? Jak działa narzędzie ReDSeeDS? Jak wygenerować kod z wymagań? ReDSeeDS 3 Marzenie kierownika projektu IT Wykonawcy Wymagania TEXT Czego potrzebujemy Język specyfikowania wymagań Kod Dobra komunikacja Automatyczna translacja ReDSeeDS 4 2

Od biznesu do kodu - tradycyjnie Specyfikacja wymagań w języku naturalnym specyfikacja projektowa wywiedziona z wymagań kod wywiedziony z modeli projektowych Ręczne przekształcenie Biznes Specyfikacja Wymagań TEXT Dokumentacja Projektowa Kod Analityk Projektant Programista ReDSeeDS 5 Od biznesu do kodu - ReDSeeDS Specyfikacja wymagań przy użyciu precyzyjnych wymagań kod wygenerowany z wymagań Automatyczna generacja Biznes Specyfikacja Wymagań RSL Model Projektowy Kod Analityk Agile Programista ReDSeeDS 6 3

Pisanie dobrych opowiadań a pisanie dobrych wymagań Połączenie opowiadania (sekwencji zdarzeń) i opisów środowiska (ludzie, wnętrza, krajobraz ). ReDSeeDS 7 Rozdzielenie opowiadania od środowiska Zdarzenia a sceny ReDSeeDS 8 4

Jak działa ReDSeeDS? Narzędzie do szybkiego tworzenia działających prototypów oprogramowania z przypadków użycia Wykonawcy ReDSeeDS 9 Zasada działania narzędzia? Wymagania Kompilator MOLA Transformati Program on on program MOLA Java formułowanie Edytor RSL kompilacja Maszyna Transformująca MOLA ReDSeeDS wyjście generacja Edytor UML zapis Model RSL wejście Model UML + kod metod eksport Repozytorium modeli ReDSeeDS 10 5

Formułowanie wymagań ReDSeeDS 11 Pisanie historii ReDSeeDS 12 6

Definiowanie dziedziny ReDSeeDS 13 Generowanie kodu w Javie ReDSeeDS 14 7

Przykład RSL do kodu User Add new «invoke» Add new author «trigger» save button «trigger» add new button 1. User selects add new button 2. System shows add new page 1. User selects add new button invoke Add new author 2. System shows add new page 3. User enters invoke 4. User selects save button invoke 5. System validates 3. User enters cond: valid 6a. 4. System User selects saves save button 5. System validates cond: invalid 6b. System shows invalid message «list» list «frame» add new page * 1 «message» invalid message * * author title : Text hard cover : Boolean issue date : Date ReDSeeDS 15 Generowanie interfejsów «interface» IView User Add new 1. User selects add new button 1. User selects add new button 2. System shows add new page 2. invoke SystemAdd shows new author add new page 3. User invoke enters 4. User invoke selects save button 5. System 3. Uservalidates enters 4. cond: User selects valid save button 6a. System saves 5. System validates cond: invalid user-totrigger sys-toconcept sys-to-frame sys-tomessage + setpresenter(ipresenter) :void + showaddnewauthorpage() :void + showaddnewbookpage() :void + showaddnewpublisherpage() :void + showbooklistpage() :void + showinvalidauthormessage() :void + showinvalidbookmessage() :void + showinvalidpublishermessage() :void «interface» IPresenter + SelectsAddNewAuthorButton() :void + SelectsAddNewBookButton() :void + SelectsAddNewPublisherButton() :void + SelectsAddPublisherButton() :void + SelectsDeleteBookButton() :void + SelectsSaveAuthorButton() :void + SelectsShowBookListButton() :void + SelectsSaveBookButton() :void + setmodel(imodel) :void + setview(iview) :void V P 6b. System shows invalid message «interface» IModel + DeletesBook() :void + FetchesBookList() :void + SavesAuthor() :void + SavesBook() :void + SavesPublisher() :void + ValidatesAuthor() :void + ValidatesBook() :void + ValidatesPublisher() :void M ReDSeeDS 16 8

Generowanie kodu dla scenariuszy 1 3 4 2 User IView User Add new 1. User selects add new button 1. User selects add new button 2. Systemshows add new page 2. invoke Systemshows Addnewadd author new page 3. User invoke enters 4. User invoke selects save button 5. 3. System User enters validates 4. User cond: selects save valid button 6a. 5. System saves validates cond: invalid 6b. System shows invalid message invoke 4 1 public class PresenterImpl implements IPresenter { private IModel model; private IView view; public void SelectsAddNewBookButton() { view.showaddnewbookpage(); } public void SelectsSaveBookButton(){ int res = model.validatesbook(); if ( res == 1 /* valid*/) { model.savesbook(); } else if ( res == 2 /* invalid*/) { view.showinvalidbookmessage(); } } public void SelectsAddNewAuthorButton(){ // code for Add new author use case... } 6a 2 5... IModel ReDSeeDS 17 Generowanie UI User Add new 1. User selects add new button 2. Systemshows add new page 1. invoke User selects Add new add author new button 3. 2. User Systemshows enters add new page 4. Userselects invoke save button 5. System invoke validates 3. User enters cond: valid 4. Userselects save button 6a. 5. System System saves validates cond: invalid 6b. System shows invalid message «frame» list page «list» list «trigger» save button «frame» add new page * «message» invalid message * * author Booklist List Page title : Text hard cover : Boolean issue date : Date Book List Title Issue date Hard cover Author Addnew New Book Page Book Book Title Author Issue date Text Field Select author(s) 2013-04-08 Title Author Issue date Hard cover Text Field Select author(s) 2013-04-08 Inv alid message The entered data is invalid OK Hard cover < Back Save Add new author < Back ReDSeeDS 18 9

Generowanie DTO * * author title : Text hard cover : Boolean issue date : Date name: Text birth year: Number XBook - xbookid :int XAuthor - title :String - issuedate :Date - hashardcover :boolean - xauthorid :int - authorsname :String - birthyear :int Auto-generated getters and setters + getauthorlist() :List<XAuthor> + gethashardcover() :boolean + getid() :int + getissuedate() :Date + gettitle() :String + setauthorlist(list<xauthor>) :void + sethashardcover(boolean) :void + setid(int) :void + setissuedate(date) :void -List * -authorlist + getauthorsname() :String + getbirthyear() :int * + getbooklist() :List<XBook> + getid() :int + setauthorsname(string) :void + setbirthyear(int) :void + setbooklist(list<xbook>) :void + setid(int) :void Auto-generated getters and setters + settitle(string) :void ReDSeeDS 19 Dla kogo jest ReDSeeDS? Sformułowanie wymagań Sprecyzowanie wymagań Zaprojektowanie systemu Oszacowanie pracochłonności Przetestowanie systemu Wykonawcy Zaimplementowanie systemu Organizacje zamawiające oprogramowanie Firmy produkujące oprogramowanie Osoby amatorsko tworzące oprogramowanie ReDSeeDS 20 10

www.redseeds.eu Dziękuję za uwagę! 11