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

Wielkość: px
Rozpocząć pokaz od strony:

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

Transkrypt

1 Od wymagań do Javy w mgnieniu oka: modelowanie oprogramowania w praktyce Michał Śmiałek Politechnika Warszawska Wyzwania Modelowania Inżynierskiego i Biznesowego Warszawa, 5 kwietnia 206 Prelegent Czym się zajmowałem (od ok. 99 r.) Profesor nzw. (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 WMIiB 206 2

2 Treść seminarium Wprowadzenie wymagania i MDD/MDA Modelowanie wymagań i transformacje w mgnieniu oka Programowanie na poziomie wymagań Wyjaśnienie semantyki przypadków użycia Logika aplikacji i logika dziedziny/biznesu Programowanie dla zwykłych ludzi? Od wymagań do kodu Automatyczna transformacja wymagań (scenariuszy przypadków użycia) w kod logiki aplikacji i logiki dziedziny/biznesu Szczegóły transformacji Metamodel języka (Requirements Specification Language) Reguły transformacji z RSL do kodu Podsumowanie WMIiB :: WPROWADZENIE WYMAGANIA I MDD/MDA :: 2

3 Marzenie kierownika projektu IT Deweloper Użytkownik Wymagania TEXT Kod Czego potrzebujemy Język specyfikowania wymagań Dobra komunikacja Automatyczna translacja WMIiB 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 Zamawiający Analityk Projektant Programista WMIiB

4 Od biznesu do kodu sterowane modelami Specyfikacja wymagań z półformalnymi modelami modele projektowe ze śladem od wymagań kod częściowo generowany z modeli projektowych Śledzenie wymagań wsparte narzędziami Projektant transformacji Biznes Specyfikacja Wymagań Dokumentacja Projektowa Kod Zamawiający Analityk Projektant Programista Częściowo automatyczna transformacja WMIiB Od biznesu do kodu języki dziedzinowe Specyfikacja systemu używając języków spec. dla dziedziny (DSL) wygenerowany kod W pełni automatyczna transformacja Znaczące przyrosty produktywności! Biznes Projektant języka Specyfikacja Wymagań DSL Projektant transformacji Kod Domain Specific Language Zamawiający Analityk Ograniczony zakres dziedzin, potrzebne wysokie kwalifikacje w tworzeniu języków, wymagania? WMIiB

5 Programowanie na poziomie wymagań? Specyfikacja wymagań przy użyciu formalnych modeli kod wygenerowany z wymagań W pełni automatyczna transformacja Pstryk! Pomysł: częściowa generacja kodu Biznes Specyfikacja Wymagań RPL Kod Ujednolicony język Zamawiający Analityk Brak technologii! WMIiB Proponowane rozwiązanie Wymagania z częściowo formalnymi modelami kod częściowo generowany z wymagań W pełni automatyczna transformacja Formalne Wymagani Kod Autom. RSL Biznes Półformalne Wymagania Analityk Zamawiający Programista Kod Półautom. RSL Częściowo automatyczna transformacja WMIiB

6 @svo : SVOSentence : SVOSentence {SVOSentences} dobject : NounLink {Phrases} : SVOSentence {SVOSentences} source predicate source cverb : PhraseVerbLink {Phrases} noun {ELSE} predicate source pred : Predicate {SVOSentences} object : NounLink {Phrases} cpred : Predicate {SVOSentences} verb cnph : NounPhrase : Class {Kernel} predicate target noun predicate object source target 2 vph : SimpleVerbPhrase {Phrases} : Operation {Kernel} verbphrase nph : NounPhrase {Phrases} cvph : ComplexVerbPhrase {Phrases} complexverbphrase simpleverbphrase svph : SimpleVerbPhrase source {Phrases} : Operation 4 {Kernel} verb : PhraseVerbLink {Phrases} @ui_op) verbphrase source cnph2 : NounPhrase {Phrases} iobject : NounLink {Phrases} @ui_op) verb verbphrase object noun source Od biznesu do kodu - ReDSeeDS Specyfikacja wymagań przy użyciu precyzyjnych wymagań kod wygenerowany z wymagań Automatyczna generacja Biznes Specyfikacja Wymagań Model Projektowy Kod RSL Zamawiający Analityk Agile Programista WMIiB 206 ReDSeeDS: jak to działa? Model przypadków użycia Reguły transformacji Wykonywalny kod public void SelectsOK(XStudent pstudent){ int res; astudent = pstudent; mstudent.validates(astudent); res = mstudent.getresult(); if (res == 0) { vacknowledgement = new VAcknowledgement(); vacknowledgement.caddstudent = this; vacknowledgement.presents(); } else if (res == ) { verrormessage = new VErrorMessage(); verrormessage.caddstudent = this; verrormessage.shows(); } } Model scenariuszy: RSL Model projektowy: UML + metody w Javie WMIiB

7 :: PROGRAMOWANIE NA POZIOMIE WYMAGAŃ :: Jeszcze wyższy poziom programowania? Tradycyjnie Specyfikacja wymagań Ogólne stwierdzenie problemu Szczegółowe wymagania na oprogramowanie Propozycja Specyfikacja wymagań Ogólne stwierdzenie problemu Program zorientow. na użytkownika Historie (logika aplikacji) Słownik dziedziny (logika biznesu) WMIiB

8 Precyzyjny język naturalny? RSL? Użytkownicy Analitycy Programiści Mniej formalny Bardziej formalny WMIiB Historia i środowisko 4. Tom rides to the old hut. 2. Lord Mark goes to the old hut. 3. Aunt Martha goes to Tom the wise..a. Lord Mark runs to aunt Marta s house. b. He talks with aunt Martha. WMIiB

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

10 Styl pisania opowiadań Najprostsze możliwe zdania Student enters the semester. Teacher accepts the current marks. Subject Verb Objects ( or 2) System assigns the student to the new semester. WMIiB Rozszerzenie opowiadania o środowisko Uwaga: opowiadania nie zawierają definicji pojęć Student enters the semester where the semester is a number between and 0 denoting the level of studies ale gdzieś w innym odległym opowiadaniu: Dean accepts the semester for the new student where the semester is a number denoting the current student s status? WMIiB

11 Oddzielenie pojęć od opowiadań Osobny słownik pojęć, ale spójny z opowiadaniami Student enters the semester where the semester is a number between and 0 denoting the level of studies Semester Dean accepts number the between semester and 0 denoting for the the new level student of studies and where the semester is a number the current student s status. denoting the current student s status WMIiB Pisanie scenariuszy Scenariusz jest sekwencją zdań Dean adds new lecture to a course. Dean selects to add new lecture to course 2. System asks for semester 3. Dean enters the semester 4. System asks for data of the lecture 5. Dean enters the data of the lecture 6. System adds the lecture to the list of lectures WMIiB

12 Budowanie słownika Słownik jest mapą terenu dla użytkownika. Warto, aby mapa miała formę graficzną.. Deanwants to add new lecture to course 2. System asks for semester 3. Dean enters the semester. 4. DeanSystem asks for data of the lecture Dean Dean enters the semester 3. System asks. enters for Dean the data data of enters of the lecture the the semester lecture 6. System 4. Dean enters 2. adds the System the lecture data of the asks to lecture for the datalist of of the lectures lecture 5. System assigns 3. the Dean teacher enters to the the data lecture of the lecture 4. System prints the data of the student Lecture Student Course Teacher List of lectures Semester WMIiB Odgrywanie opowiadań Spójność opowiadań można sprawdzić uzupełniając słownik. Deanwants to add new lecture to course 2. System asks for semester 3. Dean enters the semester 4. System asks for data of the lecture 5. Dean enters the data of the lecture 6. System adds the lecture to the list of lectures add new lecture enter ask for Lecture Student Course Teacher List of lectures Semester WMIiB

13 Mapowanie wymagań na strukturę systemu Opowiadania Warstwa interfejsu GUI presentation view (MVC*) Logika aplikacji workflow logic (Fowler 2002) controller (MVC*) Logika dziedziny data processing algorithms model (MVC*) *Reenskaug 977 Słownik dziedziny WMIiB Koncepcja: program na poziomie wymagań Requirements Specification Language (RSL) Przypadek użycia Logika aplikacji Logika dziedziny Step Step Step Step Step Step Krok Action on a domain element Action on a domain element Action on a domain element Action on a domain element Action on a domain element Action on a domain element Action on a domain element Action on a domain element Akcja na elemencie dziedziny Element dziedziny Akcja(reguła biznesowa) WMIiB

14 Dygresja: wzorce logiki aplikacji enter book data validate book data register book data Library domain Step Step Step Step Book data validate enter sales item validate sales item register sales item E-shop domain Step Step Sales item Step Step Step Step validate WMIiB :: OD WYMAGAŃ DO KODU :: 4

15 Całościowe rozwiązanie Requirements Specification Language: język formalny (DSL) dla specyfikowania typowej logiki aplikacji biznesowych + przetwarzane dane + elementy UI (brak logiki dziedzinowej) Składnia abstrakcyjna oparta na precyzyjnym metamodelu Składnia konkretna: graficzne diagramy + ograniczony język naturalny Elastyczna semantyka czasu wykonania W pełni automatyczna transformacja z języka RSL do kodu dla wybranych technologii Całościowe wsparcie narzędziowe (edytor języka RSL, automatyczna, parametryzowalna transformacja) Bardzo szybkie prototypowanie Całościowa realizacja idei MDD/MDA WMIiB 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 WMIiB

16 AuthorDAO + AuthorDAO(Connection) + delete(int) :int + delete(object) :int + deletelist(list<?>) :int[] + insert(object) :int + insertlist(list<?>) :int[] + read(list<?>) :List<XAuthor> + read(object) :List<XAuthor> + read(int) :XAuthor + update(object, int) :int + updatelist(list<?>) :int[] «interface» IObjectDAO + delete(object) :int + delete(int) :int + deletelist(list<?>) :int[] + insert(object) :int + insertlist(list<?>) :int[] + read(int) :Object + read(list<?>) :List<?> + read(object) :List<?> + update(object, int) :int + updatelist(list<?>) :int[] BookDAO + BookDAO(Connection) + delete(object) :int + delete(int) :int + deletelist(list<?>) :int[] + insert(object) :int + insertlist(list<?>) :int[] + read(list<?>) :List<XBook> + read(int) :XBook + read(object) :List<XBook> + update(object, int) :int + updatelist(list<?>) :int[] util::connectionfactory + getconnection() :Connection + getinstance() :ConnectionFactory util::daomanager # connection :Connection = null {bag} # daoobject :IObjectDAO = null {bag} + executeandclose(daocommand) :Object + getdaoobject(object) :IObjectDAO + getinstance() :DAOManager + transaction(daocommand) :Object + transactionandclose(daocommand) :Object # getconnection() :Connection # gettxconnection() :Connection Wnętrze transformacji RSL metamodel MOLA program UML metamodel meta-level M2 «use» «use» «instanceof» «instanceof» Show course list meta-level M Course manager indexnumber name. Course manager selects courselist button 2. System fetches courselist 3. System showscourselist page => invoke: Add newcourse student savestudent deletstudent MOLA transformation engine Model in RSL Model in UML + methods WMIiB Możliwości transformacji RSL to UML Component architecture model in UML Design model based on Abstracat Factory pattern Code skeleton in an objectoriented language RSL model RSL to code Platformspecific design model in UML Runnable application code RSL to SOA SOA model in SoaML Specific cloud platform model RSL to? * WMIiB

17 ContentPane VAddNewPublisherPage + actionperformed(actionevent) :void + init(ipresenter) :void WindowPane VIncorrectBookMessage + actionperformed(actionevent) :void + init(ipresenter) :void PAddReview + callingpclass :IInvoke {bag} + res :int {bag} + sentence_no :int {bag} + view :IView {bag} + _first(iinvoke) :void + returnfrominvoke(int) :void + SelectsAddReviewButton() :void + SelectsSaveReviewButton() :void ReviewDAO + deletelist(list<?>) :int[] «interface» IModel + DeletesAuthor() :void + DeletesBook() :void + FetchesAuthorList() :void + FetchesBook() :void + FetchesBookList() :void + SavesAuthor() :void + SavesBook() :void + SavesPublisher() :void + SavesReview() :void + ValidatesAuthor() :void + ValidatesBook() :void + ValidatesPublisher() :void ApplicationInstance EchoApp + closecurrentpage() :void + init() :Window + setpresenter(ipresenter) :void + showaddnewauthorpage() :void + showaddnewbookpage() :void + showaddnewpublisherpage() :void + showaddreviewpage() :void + showauthorlistpage() :void + showauthorsbooklistpage() :void + showbookdetailspage() :void + showbooklistpage() :void + showeditbookpage() :void + showhomepage() :void + showincorrectbookmessage() :void + showinvalidauthormessage() :void + showinvalidpublishermessage() :void PEditBook + callingpclass :IInvoke {bag} + res :int {bag} + sentence_no :int {bag} + view :IView {bag} + _first(iinvoke) :void + returnfrominvoke(int) :void + SelectsEditBookButton() :void + SelectsSaveBookButton() :void «interface» IObjectDAO + read(int) :Object + updatelist(list<?>) :int[] PublisherDAO + deletelist(list<?>) :int[] WindowPane VInvalidPublisherMessage + actionperformed(actionevent) :void + init(ipresenter) :void PAddNewPublisher + callingpclass :IInvoke {bag} + res :int {bag} + sentence_no :int {bag} + view :IView{bag} + _first(iinvoke) :void + returnfrominvoke(int) :void + SelectsAddNewPublisherButton() :void + SelectsAddPublisherButton() :void ModelImpl + DeletesAuthor() :void + DeletesBook() :void + FetchesAuthorList() :void + FetchesBook() :void + FetchesBookList() :void + SavesAuthor() :void + SavesBook() :void + SavesPublisher() :void + SavesReview() :void + ValidatesAuthor() :void + ValidatesBook() :void + ValidatesPublisher() :void ContentPane VEditBookPage + actionperformed(actionevent) :void + init(ipresenter) :void BookDAO + delete(int) :int Reguły transformacji i sterowanie Arch = MVP View = Echo JavaFX DL = DAO Transformation Transformation program RSL program to Code UML + method bodies V Course manag er Nonfunctional reqs. Show course list. Course manager selects course list button 2. System fetches courselist 3. System showscourselist page => invoke: Add newcourse input input MOLA transformati on engine output P M indexnumber student savestudent + delete(int) :int + delete(object) :int name deletstudent + deletelist(list<?>) :int[] + insert(object) :int + insertlist(list<?>) :int[] + read(list<?>) :List<?> + read(object) :List<?> + update(object, int) :int Model in RSL + delete(int) :int + delete(object) :int + delete(object) :int + delete(int) :int + BookDAO(Connection) + delete(object) :int + insert(object) :int + insertlist(list<?>) :int[] + insert(object) :int + insertlist(list<?>) :int[] + deletelist(list<?>) :int[] + insert(object) :int + read(int) :XReview + read(object) :List<XReview> + PublisherDAO(Connection) + read(list<?>) :List<XPublisher> + insertlist(list<?>) :int[] + read(int) :XBook + read(list<?>) :List<XReview> + ReviewDAO(Connection) + read(object) :List<XPublisher> + read(int) :XPublisher + read(list<?>) :List<XBook> + read(object) :List<XBook> + update(object, int) :int + updatelist(list<?>) :int[] + update(object, int) :int + updatelist(list<?>) :int[] + update(object, int) :int + updatelist(list<?>) :int[] WMIiB Najpierw: piszemy wymagania add student to course User course add student to course remove student from course save course Developer Zrozumiałe, ale precyzyjne WMIiB

18 Potem: naciskamy guzik public void SelectsOK(XStudent pstudent){ int res; astudent = pstudent; mstudent.validates(astudent); res = mstudent.getresult(); if (res == 0) { vacknowledgement = new VAcknowledgement(); vacknowledgement.caddstudent = this; vacknowledgement.presents(); } else if (res == ) { verrormessage = new VErrorMessage(); verrormessage.caddstudent = this; verrormessage.shows(); } } WMIiB Wygenerowana struktura systemu show() buttonclicked() Interfejs użytkownika Logika aplikacji Przejrzysta struktura logiczna Wybrana technologia save() verify() Logika dziedziny WMIiB

19 Wygenerowany działający kod aplikacji Interfejs użytkownika show() buttonclicked() Logika aplikacji res = mstudent.getresult(); if (res == 0) { vacknowledgement = new VAcknowledgement(); vacknowledgement.caddstudent = this; vacknowledgement.presents(); } else if (res == ) { verrormessage = new VErrorMessage(); verrormessage.caddstudent = this; verrormessage.shows(); } save() verify() Logika dziedziny W pełni działający kod Tylko dodaj logikę dziedziny WMIiB Wymagania + technologia = działający system show() Add new course Show extended course list buttonclicked() res = mstudent.getresult(); if (res == 0) { vacknowledgement = new VAcknowledgement(); vacknowledgement.caddstudent = this; vacknowledgement.presents(); } else if (res == ) { verrormessage = new VErrorMessage(); verrormessage.caddstudent = this; verrormessage.shows(); } Course manager save() verify() Złożoność właściwa Złożoność poboczna WMIiB

20 :: SZCZEGÓŁY TRANSFORMACJI :: RSL metamodel: frazy (Phrase) Phrase NounPhrase object verbphrase VerbPhrase 0.. * * SimpleVerbPhrase ComplexVerbPhrase modifier 0.. Term Modifier noun Term Noun * verb Term Verb * Term Preposition preposition name :String name :String name :String name :String add selected student student to course WMIiB

21 RSL metamodel: pojęcia (Notion) source DomainElement Relationship * target DomainElement Actor * * name source Multiplicity 0.. target Multiplicity 0.. Notion * name NounPhrase DomainElement Multiplicity statement * DomainStatement statement name Phrase 0.. Course Manager course entry form show course entry form course addstudent to course remove student from course save course * 2..2 student modify class class check availability of class WMIiB RSL metamodel: zdania SVO (SVOSentence) ConstrainedLanguageSentence source SVOSentence source subject PhraseHyperlink Subject subject * predicate PhraseHyperlink Predicate predicate * target target NounPhrase object verbphrase 0.. VerbPhrase Course manager System fills course entry form adds student to course WMIiB

22 RSL metamodel: scenariusze +scenariostep * {ordered} ConstrainedLanguageSentence +scenario 0.. ContrainedLanguageScenario SVOSentence ControlSentence +scenarios..* RSLUseCase ConditionSentence InvocationSentence +source +target InvocationRelationship Course manager Browse course details Add new course «invoke». Course manager selects add course option 2. System shows course entry form 3. Course manager fills course entry form 4. Courses manager selects save course option 5. System validates course cond: course valid 6. System saves course invoke: Browse course details WMIiB * Przykład RSL do kodu User Add new book «invoke» Add new author «trigger» save book button «trigger» add new book button. Userselects add new book button 2. System shows add new book page. Userselects add new book button invoke Add new author 2. Systemshowsadd newbook page 3. User enters book invoke 4. User selects save book button invoke 5. System validates book 3. User enters book cond: book valid 6a. 4. System User selects saves book save book button 5. System validates book cond: book invalid 6b. System shows invalid book message «list» book list «frame» addnewbookpage * book «message» invalid book message * * author «attr» title: Text «attr» hardcover: Boolean «attr» issuedate: Date WMIiB

23 Generowanie interfejsów «interface» IView User Addnew book. Userselectsadd newbook button. Userselectsadd newbook button 2. System shows add new book page 2. invoke Systemshowsaddnewbook Add author page 3. User invoke enters book 4. User invoke selects save book button 5. System 3. Uservalidates enters book book 4. cond: User selects book valid save book button 6a. System saves book 5. System validates book cond: book 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 book message «interface» IModel + DeletesBook() :void + FetchesBookList() :void + SavesAuthor() :void + SavesBook() :void + SavesPublisher() :void + ValidatesAuthor() :void + ValidatesBook() :void + ValidatesPublisher() :void M WMIiB Semantyka scenariuszy User IView User Addnew book. Userselectsadd newbookbutton. Userselectsadd newbookbutton 2. Systemshows add new book page 2. invoke Systemshows Addnewadd author new book page 3. User invoke enters book 4. User invoke selects save book button System User enters validatesbook 4. User cond: selects booksave validbook button 6a. 5. System savesbook validatesbook cond: book invalid 6b. System showsinvalid book message invoke 4 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 == /*book valid*/) { model.savesbook(); } else if ( res == 2 /*book invalid*/) { view.showinvalidbookmessage(); } } public void SelectsAddNewAuthorButton(){ // code for Add new author use case... } 6a IModel WMIiB

24 Generowanie UI User Addnew book. Userselectsadd newbookbutton 2. System showsadd new bookpage. invoke Userselectsadd Addnewauthor newbookbutton User System entershowsadd book new bookpage 4. User invoke selects save book button 5. System invoke validatesbook 3. User enters book cond: bookvalid 4. User selects save book button 6a. 5. System System saves validatesbook book cond: bookinvalid 6b. System showsinvalidbook message «frame» booklist page «list» booklist «trigger» savebookbutton «frame» addnewbookpage * book «message» invalidbookmessage * * author Book BookList list Page «attr» title: Text «attr» hardcover: Boolean «attr» issuedate : Date Book List Title Issue date Hard cover Author Addnewbook AddNew BookPage Book Book Title Author Issue date Text Field Select author(s) Title Author Issue date Hard cover Text Field Select author(s) Invalid book message The entered book data is invalid OK Hard cover < Back Save book Add new author < Back WMIiB Generowanie DTO book * * author «attr» title: Text «attr» hardcover: Boolean «attr» issuedate: Date «attr» name: Text «attr» birthyear: Number XBook - xbookid :int - title :String - issuedate :Date - hashardcover :boolean XAuthor - 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 + settitle(string) :void -booklist * -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 WMIiB

25 Generowanie DAO author * * book «interface» IObjectDAO CRUD operations + delete(object) :int + delete(int) :int + deletelist(list<?>) :int[] + insert(object) :int + insertlist(list<?>) :int[] + read(int) :Object + read(list<?>) :List<?> + read(object) :List<?> + update(object, int) :int + updatelist(list<?>) :int[] util::connectionfactory + getconnection() :Connection + getinstance() :ConnectionFactory AuthorDAO BookDAO + AuthorDAO(Connection) + delete(int) :int + delete(object) :int + deletelist(list<?>) :int[] + insert(object) :int + insertlist(list<?>) :int[] + read(list<?>) :List<XAuthor> + read(object) :List<XAuthor> + read(int) :XAuthor + update(object, int) :int + updatelist(list<?>) :int[] + BookDAO(Connection) + delete(object) :int + delete(int) :int + deletelist(list<?>) :int[] + insert(object) :int + insertlist(list<?>) :int[] + read(list<?>) :List<XBook> + read(int) :XBook + read(object) :List<XBook> + update(object, int) :int + updatelist(list<?>) :int[] util::daomanager # connection :Connection = null {bag} # daoobject :IObjectDAO = null {bag} + executeandclose(daocommand) :Object + getdaoobject(object) :IObjectDAO + getinstance() :DAOManager + transaction(daocommand) :Object + transactionandclose(daocommand) :Object # getconnection() :Connection # gettxconnection() :Connection WMIiB :: PODSUMOWANIE :: 25

26 Dla kogo jest ReDSeeDS? Sformułowanie wymagań Sprecyzowanie wymagań Zaprojektowanie systemu Zamawiający Oszacowanie pracochłonności Przetestowanie systemu Zamawiający Wykonawcy Zaimplementowanie systemu Organizacje zamawiające oprogramowanie Firmy produkujące oprogramowanie Osoby amatorsko tworzące oprogramowanie WMIiB Aktualny status Dostepna pełna specyfikacja języka RSL ReDSeeDS Engine ver dostępna on-line Edytor RSL: przypadki użycia, scenariusze, pojęcia dziedzinowe Edytory graficzne Edytory tekstowe Automatyczne tworzenie modelu dziedziny Zintegrowana maszyna transformacji Integracja z Enterprise Architect i Modelio Generacja UML i kodu Java + MVP + Swing Java + MVP + Echo web framework WMIiB

27 Przyszłość Rozszerzenie możliwości generacji kodu Rozszerzenie docelowych technologii UI (JavaFX, Flex, Android SDK, ) Rozszerzenie docelowych modeli architektury i języków Nowe zastosowania: odzyskiwanie i migracja wyeksploatowanych systemów Projekt REMICS ( Odzyskiwanie na podstawie obserwowalnego zachowania (zapisywanie skryptów UI) do RSLa i generacja w nowej technologii Niezależna od pokręconego wnętrza wyeksploatowanego systemu WMIiB Dziękuję za uwagę! 27

Od wymagań do Javy w mgnieniu oka

Od wymagań do Javy w mgnieniu oka 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;

Bardziej szczegółowo

WZORCE LOGIKI APLIKACJI Reużywalne składniki wymagań

WZORCE LOGIKI APLIKACJI Reużywalne składniki wymagań 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

Bardziej szczegółowo

Programowanie obiektowe

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

Bardziej szczegółowo

Zwinna współpraca programistów i testerów z wykorzystaniem BDD i. by Example (JBehave/Spock/SpecFlow)

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

Bardziej szczegółowo

Wzorce logiki dziedziny

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),

Bardziej szczegółowo

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

Diagramy maszyn stanowych, wzorce projektowe Wykład 5 część 1 Diagramy maszyn stanowych, wzorce projektowe Wykład 5 część 1 Zofia Kruczkiewicz Zofia Kruczkiewicz Inżynieria oprogramowania INEK011 1 Składnia elementów na diagramach UML 1. W prezentacji składni diagramów

Bardziej szczegółowo

Kontrola spójności modeli UML za pomocą modelu. Stanisław Jerzy Niepostyn, Ilona Bluemke Instytut Informatyki, Politechnika Warszawska

Kontrola spójności modeli UML za pomocą modelu. Stanisław Jerzy Niepostyn, Ilona Bluemke Instytut Informatyki, Politechnika Warszawska Kontrola spójności modeli UML za pomocą modelu przestrzennego DOD Stanisław Jerzy Niepostyn, Ilona Bluemke Instytut Informatyki, Politechnika Warszawska Wprowadzenie Obecne metody kontroli spójności modeli

Bardziej szczegółowo

Narzędzia CASE dla.net. Łukasz Popiel

Narzędzia CASE dla.net. Łukasz Popiel Narzędzia CASE dla.net Autor: Łukasz Popiel 2 Czym jest CASE? - definicja CASE (ang. Computer-Aided Software/Systems Engineering) g) oprogramowanie używane do komputerowego wspomagania projektowania oprogramowania

Bardziej szczegółowo

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

MVC w praktyce tworzymy system artykułów. cz. 1 MVC w praktyce tworzymy system artykułów. cz. 1 Tworząc różnego rodzaju aplikacje natrafiamy na poważny problem utrzymania dobrej organizacji kodu przejrzystej oraz łatwej w rozbudowie. Z pomocą przychodzą

Bardziej szczegółowo

Programowanie obiektowe

Programowanie obiektowe Programowanie obiektowe Wykład 7 Marcin Młotkowski 8 kwietnia 2015 Plan wykładu Z życia programisty, część 1 1 Z życia programisty, część 1 2 3 Z życia programisty, część 2 Model View Controller MVC w

Bardziej szczegółowo

ZARZĄDZANIE WYMAGANIAMI ARCHITEKTONICZNYMI

ZARZĄDZANIE WYMAGANIAMI ARCHITEKTONICZNYMI ZARZĄDZANIE WYMAGANIAMI ARCHITEKTONICZNYMI XVIII Forum Teleinformatyki mgr inż. Michał BIJATA, doktorant, Wydział Cybernetyki WAT Michal.Bijata@WAT.edu.pl, Michal@Bijata.com 28 września 2012 AGENDA Architektura

Bardziej szczegółowo

Laboratorium 8 Diagramy aktywności

Laboratorium 8 Diagramy aktywności Laboratorium 8 Diagramy aktywności Zofia Kruczkiewicz Zofia Kruczkiewicz Lab_INP002017_8 1 Modelowanie zachowania obiektów za pomocą diagramów aktywności. Modelowanie zachowania obiektów za pomocą diagramów

Bardziej szczegółowo

Programowanie obiektowe

Programowanie obiektowe Programowanie obiektowe Wykład 2: Wstęp do języka Java 3/4/2013 S.Deniziak: Programowanie obiektowe - Java 1 Cechy języka Java Wszystko jest obiektem Nie ma zmiennych globalnych Nie ma funkcji globalnych

Bardziej szczegółowo

Laboratorium modelowania oprogramowania w języku UML. Ćwiczenie 7 Modelowanie klas i stanów, generacja kodu. Materiały dla studentów

Laboratorium modelowania oprogramowania w języku UML. Ćwiczenie 7 Modelowanie klas i stanów, generacja kodu. Materiały dla studentów Zakład Elektrotechniki Teoretycznej i Informatyki Stosowanej Wydział Elektryczny, Politechnika Warszawska Ćwiczenie 7 Modelowanie klas i stanów, generacja kodu Materiały dla studentów Projekt współfinansowany

Bardziej szczegółowo

Cel wykładu. Literatura. Wyższa Szkoła Menedżerska w Legnicy. Modelowanie wymagań Wykład 2

Cel wykładu. Literatura. Wyższa Szkoła Menedżerska w Legnicy. Modelowanie wymagań Wykład 2 Wyższa Szkoła Menedżerska w Legnicy Systemy informatyczne w przedsiębiorstwach Zarządzanie, ZIP, sem. 6 (JG) Modelowanie wymagań Wykład 2 Grzegorz Bazydło Cel wykładu Celem wykładu jest przekazanie wiedzy

Bardziej szczegółowo

Wprowadzenie do technologii JavaServer Faces 2.1 na podstawie http://docs.oracle.com/javaee/6/tutorial/doc/

Wprowadzenie do technologii JavaServer Faces 2.1 na podstawie http://docs.oracle.com/javaee/6/tutorial/doc/ Wprowadzenie do technologii JavaServer Faces 2.1 na podstawie http://docs.oracle.com/javaee/6/tutorial/doc/ Aplikacja internetowa tworzona na podstawie bazy danych. Programowanie komponentowe 2, Zofia

Bardziej szczegółowo

Wykład 1 Inżynieria Oprogramowania

Wykład 1 Inżynieria Oprogramowania Wykład 1 Inżynieria Oprogramowania Wstęp do inżynierii oprogramowania. Cykle rozwoju oprogramowaniaiteracyjno-rozwojowy cykl oprogramowania Autor: Zofia Kruczkiewicz System Informacyjny =Techniczny SI

Bardziej szczegółowo

Konfiguracja modelowania w procesie wytwarzania oprogramowania

Konfiguracja modelowania w procesie wytwarzania oprogramowania Konfiguracja modelowania w procesie wytwarzania oprogramowania Anna Bobkowska Materiały pomocnicze do wykładu z Modelowania i Analizy Systemów na Wydziale ETI PG. Ich lektura nie zastępuje obecności na

Bardziej szczegółowo

Laboratorium z przedmiotu: Inżynieria Oprogramowania INEK Instrukcja 7

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

Bardziej szczegółowo

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

Systemy Rozproszone. Spis treści. Temat projektu: Regułowy system analizujacy logi. autorzy: Rafał Sadłowski, Sebastian Falkus, Michał Różycki Systemy Rozproszone Temat projektu: Regułowy system analizujacy logi Spis treści autorzy: Rafał Sadłowski, Sebastian Falkus, Michał Różycki Cel Projektu...2 Dane aplikacji...2 Technologia...2 Zarządzanie

Bardziej szczegółowo

Laboratorium z przedmiotu: Inżynieria Oprogramowania INP

Laboratorium z przedmiotu: Inżynieria Oprogramowania INP Laboratoria 5-7- część 1 Identyfikacja klas reprezentujących logikę biznesową projektowanego oprogramowania, definicja atrybutów i operacji klas oraz związków między klasami - na podstawie analizy scenariuszy

Bardziej szczegółowo

1. WYMAGANIA WSTĘPNE W ZAKRESIE WIEDZY, UMIEJĘTNOŚCI I INNYCH KOMPETENCJI

1. WYMAGANIA WSTĘPNE W ZAKRESIE WIEDZY, UMIEJĘTNOŚCI I INNYCH KOMPETENCJI KARTA PRZEDMIOTU przedmiotu Stopień studiów i forma Rodzaj przedmiotu Grupa kursów Zaawansowane techniki analizy systemowej oparte na modelowaniu warsztaty Studia podyplomowe Obowiązkowy NIE Wykład Ćwiczenia

Bardziej szczegółowo

Wprowadzenie do technologii JavaServer Faces 2.1 na podstawie http://docs.oracle.com/javaee/6/tutorial/doc/

Wprowadzenie do technologii JavaServer Faces 2.1 na podstawie http://docs.oracle.com/javaee/6/tutorial/doc/ Wprowadzenie do technologii JavaServer Faces 2.1 na podstawie http://docs.oracle.com/javaee/6/tutorial/doc/ Aplikacja internetowa tworzona na podstawie bazy danych. Programowanie komponentowe 2, Zofia

Bardziej szczegółowo

Programowanie obiektowe

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

Bardziej szczegółowo

Analiza biznesowa a metody agile owe

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

Bardziej szczegółowo

Poznaj ASP.NET MVC. Kamil Cieślak Microsoft Student Partner 2013-03-11

Poznaj ASP.NET MVC. Kamil Cieślak Microsoft Student Partner 2013-03-11 Poznaj ASP.NET MVC Kamil Cieślak Microsoft Student Partner 2013-03-11 Agenda Czym jest ASP.NET MVC? Wzorzec MVC ASP.NET MVC vs inne frameworki Bazy danych w ASP.NET MVC Jak zacząć? 2 Czym jest ASP.NET

Bardziej szczegółowo

Karta opisu przedmiotu Zaawansowane techniki analizy systemowej oparte o modelowanie warsztaty

Karta opisu przedmiotu Zaawansowane techniki analizy systemowej oparte o modelowanie warsztaty Karta opisu przedmiotu Zaawansowane techniki analizy systemowej oparte o modelowanie warsztaty przedmiotu Stopień studiów i forma: Rodzaj przedmiotu Kod przedmiotu Grupa kursów Zaawansowane techniki analizy

Bardziej szczegółowo

Instrukcja 2 Laboratorium z Podstaw Inżynierii Oprogramowania

Instrukcja 2 Laboratorium z Podstaw Inżynierii Oprogramowania Instrukcja 2 Laboratorium z Podstaw Inżynierii Oprogramowania Opis biznesowy świata rzeczywistego Wymagania funkcjonalne i niefunkcjonalne aplikacji Diagram przypadków życia Diagramy klas i sekwencji:

Bardziej szczegółowo

Programowanie obiektowe zastosowanie języka Java SE

Programowanie obiektowe zastosowanie języka Java SE Programowanie obiektowe zastosowanie języka Java SE Wstęp do programowania obiektowego w Javie Autor: dr inŝ. 1 Java? Java język programowania obiektowo zorientowany wysokiego poziomu platforma Javy z

Bardziej szczegółowo

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

Dariusz Brzeziński. Politechnika Poznańska, Instytut Informatyki Dariusz Brzeziński Politechnika Poznańska, Instytut Informatyki Problem: Jak zaimplementować stos? Co się stanie gdy dodamy do stosu obiekt typu Czlowiek? Co się stanie, gdy spróbujemy ten obiekt odczytać

Bardziej szczegółowo

Laboratorium Programowania Kart Elektronicznych

Laboratorium Programowania Kart Elektronicznych Laboratorium Programowania Kart Elektronicznych Programowanie JavaCard Marek Gosławski Przygotowanie do zajęć dokumentacja JavaCard i GlobalPlatform środowisko programistyczne karta JavaCard Potrzebne

Bardziej szczegółowo

Gdzie jest moja tabela?

Gdzie jest moja tabela? Gdzie jest moja tabela? Czyli jak sobie radzić w Javie i SQL gdy zmienia się schemat bazy danych. Tomasz Skutnik 21 Listopada 2011 r UWIELBIAM piratów programować. Dziś koduję sklep internetowy. Jak rozmawiać

Bardziej szczegółowo

I.Wojnicki, Tech.Inter.

I.Wojnicki, Tech.Inter. Igor Wojnicki (AGH, KA) Frameworks 28 maja 2012 1 / 31 Frameworks oraz Serwery Aplikacji Igor Wojnicki Katedra Automatyki Akademia Górniczo-Hutnicza w Krakowie 28 maja 2012 Igor Wojnicki (AGH, KA) Frameworks

Bardziej szczegółowo

Automatyczne generowanie testów z modeli. Bogdan Bereza Automatyczne generowanie testów z modeli

Automatyczne generowanie testów z modeli. Bogdan Bereza Automatyczne generowanie testów z modeli Automatyczne generowanie testów z modeli Numer: 1 (33) Rozkmina: Projektowanie testów na podstawie modeli (potem można je wykonywać ręcznie, lub automatycznie zwykle chce się automatycznie) A ja mówię

Bardziej szczegółowo

Zofia Kruczkiewicz - Modelowanie i analiza systemów informatycznych 2

Zofia Kruczkiewicz - Modelowanie i analiza systemów informatycznych 2 Modelowanie i analiza systemów informatycznych 1. Warstwowa budowa systemów informatycznych 2. Model procesu wytwarzania oprogramowania - model cyklu życia oprogramowania 3. Wstęp do modelowania systemów

Bardziej szczegółowo

MeetingHelper. Aplikacja Android ułatwiająca przekazywanie materiałów pomiędzy uczestnikami spotkania. Instrukcja obsługi dla programisty

MeetingHelper. Aplikacja Android ułatwiająca przekazywanie materiałów pomiędzy uczestnikami spotkania. Instrukcja obsługi dla programisty MeetingHelper Aplikacja Android ułatwiająca przekazywanie materiałów pomiędzy uczestnikami spotkania Instrukcja obsługi dla programisty W tej części został zawarty opis uruchamiania projektu programistycznego,

Bardziej szczegółowo

Diagram stanów Laboratorium 9

Diagram stanów Laboratorium 9 Diagram stanów Laboratorium 9 Zofia Kruczkiewicz Zofia Kruczkiewicz lab_inp002017_9 1 Modelowanie zachowania obiektu za pomocą diagramu stanów. Opracowanie diagramu stanów dla obiektu wybranej klasy, reprezentującego

Bardziej szczegółowo

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

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

Bardziej szczegółowo

Receptury - niezbędnik projektanta i architekta

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

Bardziej szczegółowo

Automatyczne generowanie kodu. Marek.Berkan@e-point.pl. 4Developers, 26 marca 2010

Automatyczne generowanie kodu. Marek.Berkan@e-point.pl. 4Developers, 26 marca 2010 4Developers, 26 marca 2010 Zakres wykładu O czym zamierzam opowiedzieć: Przyspieszenie tworzenia aplikacji Ułatwienie utrzymania aplikacji Budowanie kontraktów pomiędzy developerami a innymi uczestnikami

Bardziej szczegółowo

DSL w środowisku Eclipse. Grzegorz Białek Architekt techniczny, Sygnity S.A.

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

Bardziej szczegółowo

Laboratorium z przedmiotu: Inżynieria Oprogramowania INEK Instrukcja 6

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

Bardziej szczegółowo

STANOWISKA JĘZYKOWE DO BUDOWY SERWISÓW INFORMACYJNYCH

STANOWISKA JĘZYKOWE DO BUDOWY SERWISÓW INFORMACYJNYCH OPROGRAMOWANIA - KRAKÓW 2012 Włodzimierz DĄBROWSKI Agata KOSIOR Andrzej STASIAK STANOWISKA JĘZYKOWE DO BUDOWY SERWISÓW INFORMACYJNYCH AGENDA Problem projektowy (geneza metody KSM) Stanowisko językowe (SJ)?

Bardziej szczegółowo

Produktywne tworzenie aplikacji webowych z wykorzystaniem Groovy i

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

Bardziej szczegółowo

INŻYNIERIA OPROGRAMOWANIA

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

Bardziej szczegółowo

Jarosław Żeliński analityk biznesowy, projektant systemów

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

Bardziej szczegółowo

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

Sposoby tworzenia projektu zawierającego aplet w środowisku NetBeans. Metody zabezpieczenia komputera użytkownika przed działaniem apletu. Sposoby tworzenia projektu zawierającego aplet w środowisku NetBeans. Metody zabezpieczenia komputera użytkownika przed działaniem apletu. Dr inż. Zofia Kruczkiewicz Dwa sposoby tworzenia apletów Dwa sposoby

Bardziej szczegółowo

PRZEWODNIK PO PRZEDMIOCIE

PRZEWODNIK PO PRZEDMIOCIE Nazwa przedmiotu: PROJEKTOWANIE SYSTEMÓW INFORMATYCZNYCH I KARTA PRZEDMIOTU CEL PRZEDMIOTU PRZEWODNIK PO PRZEDMIOCIE C1. Podniesienie poziomu wiedzy studentów z inżynierii oprogramowania w zakresie C.

Bardziej szczegółowo

Laboratorium modelowania oprogramowania w języku UML. Ćwiczenie 2 Ćwiczenia w narzędziu CASE diagram klas. Materiały dla nauczyciela

Laboratorium modelowania oprogramowania w języku UML. Ćwiczenie 2 Ćwiczenia w narzędziu CASE diagram klas. Materiały dla nauczyciela Zakład Elektrotechniki Teoretycznej i Informatyki Stosowanej Wydział Elektryczny, Politechnika Warszawska Laboratorium modelowania oprogramowania w języku UML Ćwiczenie 2 Ćwiczenia w narzędziu CASE diagram

Bardziej szczegółowo

Android, wprowadzenie do SDK

Android, wprowadzenie do SDK Android, wprowadzenie do SDK Wprowadzenie, konfguracja środowiska, narzędzia, pierwsze aplikacje. prowadzący: Piotr Szymański, student 3 roku informatyki Paweł Rejkowicz, student 1 roku Informatyki 1 Android

Bardziej szczegółowo

Całościowe podejście do testowania automatycznego dla programistów. (TDD, BDD, Spec. by Example, wzorce, narzędzia)

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:

Bardziej szczegółowo

Analiza i projektowanie aplikacji Java

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

Bardziej szczegółowo

Ewolucyjna architektura

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

Bardziej szczegółowo

Diagramy czynności Na podstawie UML 2.0 Tutorial

Diagramy czynności Na podstawie UML 2.0 Tutorial Diagramy czynności Na podstawie UML 2.0 Tutorial http://sparxsystems.com.au/resources/uml2_tutorial/ Zofia Kruczkiewicz 1 Diagramy czynności 1. Diagramy czyności UML http://sparxsystems.com.au/resources/uml2_tutorial/

Bardziej szczegółowo

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 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

Bardziej szczegółowo

Programowanie Obiektowe GUI

Programowanie Obiektowe GUI Programowanie Obiektowe GUI Swing Celem ćwiczenia jest ilustracja wizualnego tworzenia graficznego interfejsu użytkownika opartego o bibliotekę Swing w środowisku NetBeans. Ponadto, ćwiczenie ma na celu

Bardziej szczegółowo

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.

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. 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. Projektowanie i wdrażanie systemów informatycznych Przekształcenie

Bardziej szczegółowo

Programowanie w języku Java WYKŁAD

Programowanie w języku Java WYKŁAD Programowanie w języku Java WYKŁAD dr inż. Piotr Zabawa Certyfikowany Konsultant IBM/Rational e-mail: pzabawa@pk.edu.pl www: http://www.pk.edu.pl/~pzabawa 26.05.2014 WYKŁAD 13 Refleksja Data Access Object

Bardziej szczegółowo

Metryki oprogramowania. Marian Jureczko

Metryki oprogramowania. Marian Jureczko Metryki oprogramowania Marian Jureczko Plan wykładu Metryki wyliczane z kodu źródłowego CK Metrics (1994) Złożoność cyklomatyczna McCabe'a (1976) Metryki wyliczane z diagramów (2002) Narzędzia do wyliczania

Bardziej szczegółowo

Praktyczne aspekty stosowania metody punktów funkcyjnych COSMIC. Jarosław Świerczek

Praktyczne aspekty stosowania metody punktów funkcyjnych COSMIC. Jarosław Świerczek Praktyczne aspekty stosowania metody punktów funkcyjnych COSMIC Jarosław Świerczek Punkty funkcyjne Punkt funkcyjny to metryka złożoności oprogramowania wyznaczana w oparciu o określające to oprogramowanie

Bardziej szczegółowo

WICKET VS. DJANGO. Leszek Gawron vs. Michał Leszczyński

WICKET VS. DJANGO. Leszek Gawron vs. Michał Leszczyński WICKET VS. DJANGO Leszek Gawron vs. Michał Leszczyński 0. Główne ficze 1. Środowisko developerskie AGENDA 2. Uruchomienie projektów 3. Warstwa DAO/serwisów 4. Tworzenie UI 5. Templating 7. i18n 8. Reusability

Bardziej szczegółowo

MODELOWANIE OBIEKTOWE

MODELOWANIE OBIEKTOWE (Wykład na podstawie literatury: M.Śmiałek Zrozumieć UML 2.0, Helion 2005) UML Unified Modeling Language (język do specyfikowania, wizualizowania, konstruowania i dokumentacji tzw. artefactów oraz czynności

Bardziej szczegółowo

Java - wprowadzenie. Programowanie Obiektowe Mateusz Cicheński

Java - wprowadzenie. Programowanie Obiektowe Mateusz Cicheński Java - wprowadzenie Programowanie Obiektowe Mateusz Cicheński O języku Czym jest Java Cechy charakterystyczne języka Przykładowe zastosowania Składnia języka Podstawowe typy Wybrane słowa kluczowe Plan

Bardziej szczegółowo

Rok akademicki: 2012/2013 Kod: ZIE-1-306-s Punkty ECTS: 3. Poziom studiów: Studia I stopnia Forma i tryb studiów: -

Rok akademicki: 2012/2013 Kod: ZIE-1-306-s Punkty ECTS: 3. Poziom studiów: Studia I stopnia Forma i tryb studiów: - Nazwa modułu: Programowanie obiektowe Rok akademicki: 2012/2013 Kod: ZIE-1-306-s Punkty ECTS: 3 Wydział: Zarządzania Kierunek: Informatyka i Ekonometria Specjalność: - Poziom studiów: Studia I stopnia

Bardziej szczegółowo

Scala - programowanie obiektowo-funkcyjne

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

Bardziej szczegółowo

Wymiana opisu procesów biznesowych pomiędzy środowiskiem Eclipse i EMC Documentum

Wymiana opisu procesów biznesowych pomiędzy środowiskiem Eclipse i EMC Documentum Wymiana opisu procesów biznesowych pomiędzy środowiskiem Eclipse i EMC Documentum Stanisław Jerzy Niepostyn, Ilona Bluemke Instytut Informatyki, Politechnika Warszawska Wprowadzenie Systemy CMS (Content

Bardziej szczegółowo

Metody dostępu do danych

Metody dostępu do danych Metody dostępu do danych dr inż. Grzegorz Michalski Na podstawie materiałów dra inż. Juliusza Mikody Jak działa JDO Podstawowym zadaniem JDO jest umożliwienie aplikacjom Javy transparentnego umieszczenia

Bardziej szczegółowo

Laboratorium modelowania oprogramowania w języku UML. Ćwiczenie 5 Ćwiczenia w narzędziu CASE diagram przypadków uŝycia. Materiały dla nauczyciela

Laboratorium modelowania oprogramowania w języku UML. Ćwiczenie 5 Ćwiczenia w narzędziu CASE diagram przypadków uŝycia. Materiały dla nauczyciela Zakład Elektrotechniki Teoretycznej i Informatyki Stosowanej Wydział Elektryczny, Politechnika Warszawska Ćwiczenie 5 Ćwiczenia w narzędziu CASE diagram przypadków uŝycia Materiały dla nauczyciela Projekt

Bardziej szczegółowo

Aplikacje WWW - laboratorium

Aplikacje WWW - laboratorium Aplikacje WWW - laboratorium JavaServer Faces Celem ćwiczenia jest przygotowanie aplikacji internetowej z wykorzystaniem technologii JSF. Prezentowane ćwiczenia zostały wykonane w środowisku Oracle JDeveloper

Bardziej szczegółowo

Programowanie obiektowe. Literatura: Autor: dr inŝ. Zofia Kruczkiewicz

Programowanie obiektowe. Literatura: Autor: dr inŝ. Zofia Kruczkiewicz Programowanie obiektowe Literatura: Autor: dr inŝ. Zofia Kruczkiewicz Java P. L. Lemay, Naughton R. Cadenhead Java Podręcznik 2 dla kaŝdego Języka Programowania Java Linki Krzysztof Boone oprogramowania

Bardziej szczegółowo

Narzędzia i aplikacje Java EE. Usługi sieciowe Paweł Czarnul pczarnul@eti.pg.gda.pl

Narzędzia i aplikacje Java EE. Usługi sieciowe Paweł Czarnul pczarnul@eti.pg.gda.pl Narzędzia i aplikacje Java EE Usługi sieciowe Paweł Czarnul pczarnul@eti.pg.gda.pl Niniejsze opracowanie wprowadza w technologię usług sieciowych i implementację usługi na platformie Java EE (JAX-WS) z

Bardziej szczegółowo

REQB POZIOM PODSTAWOWY PRZYKŁADOWY EGZAMIN

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

Bardziej szczegółowo

Krótka Historia. Co to jest NetBeans? Historia. NetBeans Platform NetBeans IDE NetBeans Mobility Pack Zintegrowane moduły. Paczki do NetBeans.

Krótka Historia. Co to jest NetBeans? Historia. NetBeans Platform NetBeans IDE NetBeans Mobility Pack Zintegrowane moduły. Paczki do NetBeans. GRZEGORZ FURDYNA Krótka Historia Co to jest NetBeans? Historia Wersje NetBeans Platform NetBeans IDE NetBeans Mobility Pack Zintegrowane moduły NetBeans Profiler Narzędzie do projektowania GUI Edytor NetBeans

Bardziej szczegółowo

Systemy operacyjne na platformach mobilnych

Systemy operacyjne na platformach mobilnych Systemy operacyjne na platformach mobilnych Wykład 3 Grzegorz Jabłoński, Piotr Perek Katedra Mikroelektroniki i Technik Informatycznych Zagadnienia wykładu Menu opcji ListActivity własny widok własny adapter

Bardziej szczegółowo

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

Projektowanie Graficznych Interfejsów Użytkownika Robert Szmurło Projektowanie Graficznych Interfejsów Użytkownika Robert Szmurło LATO 2007 Projektowanie Graficznych Interfejsów Użytkownika 1 Wzorce Projektowe Nie ma złotego środka spełniającego wszystkie wymagania.

Bardziej szczegółowo

PRZEWODNIK PO PRZEDMIOCIE

PRZEWODNIK PO PRZEDMIOCIE Nazwa przedmiotu: Kierunek: Informatyka Rodzaj przedmiotu: obowiązkowy w ramach specjalności: Programowanie aplikacji internetowych Rodzaj zajęć: laboratorium PRZEWODNIK PO PRZEDMIOCIE I KARTA PRZEDMIOTU

Bardziej szczegółowo

Część I - Załącznik nr 7 do SIWZ. Warszawa. 2011r. (dane Wykonawcy) WYKAZ OSÓB, KTÓRYMI BĘDZIE DYSPONOWAŁ WYKONAWCA DO REALIZACJI ZAMÓWIENIA

Część I - Załącznik nr 7 do SIWZ. Warszawa. 2011r. (dane Wykonawcy) WYKAZ OSÓB, KTÓRYMI BĘDZIE DYSPONOWAŁ WYKONAWCA DO REALIZACJI ZAMÓWIENIA CSIOZ-WZP.65.48.20 Część I - Załącznik nr 7 do SIWZ Warszawa. 20r. (dane Wykonawcy) WYKAZ OSÓB, KTÓRYMI BĘDZIE DYSPONOWAŁ WYKONAWCA DO REALIZACJI ZAMÓWIENIA Wykonawca oświadcza, że do realizacji zamówienia

Bardziej szczegółowo

Testowanie według modelu (MBT) Stowarzyszenie Inżynierii Wymagań wymagania.org.pl

Testowanie według modelu (MBT) Stowarzyszenie Inżynierii Wymagań wymagania.org.pl Testowanie według modelu (MBT) Bogdan Bereza, Victo MBT testowanie z modelu wersja 2.1 A 1 (48) Pozdrawiam Best regards Med vänliga hälsningar Bogdan Bereza bogdan.bereza@victo.eu +48 519 152 106 Skype:

Bardziej szczegółowo

Model przestrzenny Diagramu Obiegu Dokumentów. Stanisław Niepostyn, Ilona Bluemke Instytut Informatyki, Politechnika Warszawska

Model przestrzenny Diagramu Obiegu Dokumentów. Stanisław Niepostyn, Ilona Bluemke Instytut Informatyki, Politechnika Warszawska Model przestrzenny Diagramu Obiegu Dokumentów Stanisław Niepostyn, Ilona Bluemke Instytut Informatyki, Politechnika Warszawska Wprowadzenie Sposoby weryfikacji architektury oprogramowania: - badanie prototypu

Bardziej szczegółowo

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

Bardziej szczegółowo

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

Grupy pytań na egzamin magisterski na kierunku Informatyka (dla studentów niestacjonarnych studiów II stopnia) Grupy pytań na egzamin magisterski na kierunku Informatyka (dla studentów niestacjonarnych studiów II stopnia) WERSJA WSTĘPNA, BRAK PRZYKŁADOWYCH PYTAŃ DLA NIEKTÓRYCH PRZEDMIOTÓW Należy wybrać trzy dowolne

Bardziej szczegółowo

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

JAVA Materiały do laboratorium III wersja niezaawansowana Marcin Borkowski WSEiZ czerwiec 2006 1 Najprostszy program okienkowy 1.1 Kod: JAVA Materiały do laboratorium III wersja niezaawansowana Marcin Borkowski WSEiZ czerwiec 2006 public class okno1 extends Frame public okno1() ); okno1 o = new

Bardziej szczegółowo

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

Wstęp - Prosta aplikacja internetowa w technologii Java EE 5. Programowanie komponentowe 1 Wstęp - Prosta aplikacja internetowa w technologii Java EE 5 Programowanie komponentowe 1 Przykład 1- Wykonanie prostej aplikacji internetowej w technologii JavaEE w środowisku Netbeans 5.5 z wykorzystaniem

Bardziej szczegółowo

BEAN VALIDATION. Waldemar Korłub. Narzędzia i aplikacje Java EE KASK ETI Politechnika Gdańska

BEAN VALIDATION. Waldemar Korłub. Narzędzia i aplikacje Java EE KASK ETI Politechnika Gdańska BEAN VALIDATION Waldemar Korłub Narzędzia i aplikacje Java EE KASK ETI Politechnika Gdańska Bean Validation Uniwersalny mechanizm walidacji danych we wszystkich warstwach aplikacji Warstwa interfejsu,

Bardziej szczegółowo

Budowanie aplikacji biznesowych przy użyciu. Presentation Foundation i wzorca MVVM

Budowanie aplikacji biznesowych przy użyciu. Presentation Foundation i wzorca MVVM Budowanie aplikacji biznesowych przy użyciu Windows Presentation Foundation i wzorca MVVM Raffaele Garofalo Przekład: Jakub Niedźwiedź APN Promise Warszawa 2011 Spis treści Wstęp................................................................

Bardziej szczegółowo

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

Uniwersytet Łódzki Wydział Matematyki i Informatyki, Katedra Analizy Nieliniowej. Wstęp. Programowanie w Javie 2. mgr inż. Uniwersytet Łódzki Wydział Matematyki i Informatyki, Katedra Analizy Nieliniowej Wstęp Programowanie w Javie 2 mgr inż. Michał Misiak Agenda Założenia do wykładu Zasady zaliczeń Ramowy program wykładu

Bardziej szczegółowo

Na przykładzie języków Java, C# i odrobiny C++ Dariusz Brzeziński. Politechnika Poznańska, Instytut Informatyki

Na przykładzie języków Java, C# i odrobiny C++ Dariusz Brzeziński. Politechnika Poznańska, Instytut Informatyki Na przykładzie języków Java, C# i odrobiny C++ Dariusz Brzeziński Politechnika Poznańska, Instytut Informatyki Refleksja Typy anonimowe Wyrażenia lambda Extension methods *LINQ Java jest językiem dynamicznym

Bardziej szczegółowo

Projektowanie oprogramowania

Projektowanie oprogramowania Wrocław, 27.09.2010 1. Warunki wstępne Projektowanie oprogramowania Warunkiem uczestnictwa w zajęciach jest zaliczenie przedmiotu: Podstawy inżynierii oprogramowania (ćwiczenia) Zajęcia składają się z

Bardziej szczegółowo

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

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

Bardziej szczegółowo

Języki i paradygmaty programowania - 1

Języki i paradygmaty programowania - 1 doc. dr inż. Tadeusz Jeleniewski e-mail: t.jeleniewski@neostrada.pl tadeusz.jeleniewski@pwr.edu.pl http://www.tjeleniewski.wstt.edu.pl Cele przedmiotu Umiejętność zastosowania i oceny przydatności paradygmatów

Bardziej szczegółowo

UML w Visual Studio. Michał Ciećwierz

UML w Visual Studio. Michał Ciećwierz UML w Visual Studio Michał Ciećwierz UNIFIED MODELING LANGUAGE (Zunifikowany język modelowania) Pozwala tworzyć wiele systemów (np. informatycznych) Pozwala obrazować, specyfikować, tworzyć i dokumentować

Bardziej szczegółowo

Tutorial prowadzi przez kolejne etapy tworzenia projektu począwszy od zdefiniowania przypadków użycia, a skończywszy na konfiguracji i uruchomieniu.

Tutorial prowadzi przez kolejne etapy tworzenia projektu począwszy od zdefiniowania przypadków użycia, a skończywszy na konfiguracji i uruchomieniu. AGH, EAIE, Informatyka Winda - tutorial Systemy czasu rzeczywistego Mirosław Jedynak, Adam Łączyński Spis treści 1 Wstęp... 2 2 Przypadki użycia (Use Case)... 2 3 Diagramy modelu (Object Model Diagram)...

Bardziej szczegółowo

Przygotowanie do nowoczesnego programowania po stronie przeglądarki. (HTML5, CSS3, JS, wzorce, architektura, narzędzia)

Przygotowanie do nowoczesnego programowania po stronie przeglądarki. (HTML5, CSS3, JS, wzorce, architektura, narzędzia) Program szkolenia: Przygotowanie do nowoczesnego programowania po stronie przeglądarki (HTML5, CSS3, JS, wzorce, architektura, narzędzia) Informacje: Nazwa: Kod: Kategoria: Grupa docelowa: Czas trwania:

Bardziej szczegółowo

XQTav - reprezentacja diagramów przepływu prac w formacie SCUFL przy pomocy XQuery

XQTav - reprezentacja diagramów przepływu prac w formacie SCUFL przy pomocy XQuery http://xqtav.sourceforge.net XQTav - reprezentacja diagramów przepływu prac w formacie SCUFL przy pomocy XQuery dr hab. Jerzy Tyszkiewicz dr Andrzej Kierzek mgr Jacek Sroka Grzegorz Kaczor praca mgr pod

Bardziej szczegółowo

Nowocześnie zaprojektowana e-usługa - studium przypadku

Nowocześnie zaprojektowana e-usługa - studium przypadku 2012 Nowocześnie zaprojektowana e-usługa - studium przypadku Piotr Kocjan Wyzwania w projektowaniu i programowaniu e-usługi Poznań, 11 października 2012 Problem Wyzwania w projektowaniu i programowaniu

Bardziej szczegółowo

Całościowe podejście do testowania automatycznego dla programistów. /C#/PHP (TDD, BDD, Spec. by Example, wzorce, narzędzia)

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

Bardziej szczegółowo

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

Laboratorium z przedmiotu: Inżynieria Oprogramowania INP002017_ Laboratorium 11 Testy akceptacyjne z wykorzystaniem narzędzia FitNesse Laboratorium 11 Testy akceptacyjne z wykorzystaniem narzędzia FitNesse 1 Cel laboratorium: Nabycie umiejętności przygotowywania testów akceptacyjnych za pomocą narzędzia FitNesse 1. Wg wskazówek podanych

Bardziej szczegółowo

STUDIA STACJONARNE I STOPNIA Przedmioty kierunkowe

STUDIA STACJONARNE I STOPNIA Przedmioty kierunkowe STUDIA STACJONARNE I STOPNIA Przedmioty kierunkowe Technologie informacyjne Prof. dr hab. Zdzisław Szyjewski 1. Rola i zadania systemu operacyjnego 2. Zarządzanie pamięcią komputera 3. Zarządzanie danymi

Bardziej szczegółowo

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

Przykład zastosowania notacji UML dla realizacji zastosowania wzorca Mediator (materiały dla studentów na prawach rękopisu) Dr inż. Wojciech Koziński maj 2007 ZS ISEP WE PW Przykład zastosowania notacji UML dla realizacji zastosowania wzorca Mediator (materiały dla studentów na prawach rękopisu) Opis systemu (wzorca Mediator):

Bardziej szczegółowo