• Nie Znaleziono Wyników

iteracyjno-rozwojowy cykl oprogramowania 1 Strona z materiałami do wykładu

N/A
N/A
Protected

Academic year: 2021

Share "iteracyjno-rozwojowy cykl oprogramowania 1 Strona z materiałami do wykładu "

Copied!
60
0
0

Pełen tekst

(1)

PIO. Autor -Zofia Kruczkiewicz 1

Wprowadzenie

Wstęp do inżynierii oprogramowania.

Cykle rozwoju oprogramowania (część biznesowa aplikacji)

iteracyjno-rozwojowy cykl oprogramowania 1 Strona z materiałami do wykładu

Analiza systemów informatycznych

http://zofia.kruczkiewicz.staff.iiar.pwr.wroc.pl Instalacja aktualnej wersji NetBeans z modułem UML

podana jest na stronie materiałów do wykładu

(2)

PIO. Autor -Zofia Kruczkiewicz 2

Laboratorium 1

Należy:

• wybrać projekt z podanej listy dostępnej za pomocą linku podanego w w laboratorium 1

• sformułować wymagania funkcjonalne i

niefunkcjonalne dla wybranego projektu jako zadanie domowe. Zadanie domowe będzie stanowić podstawę do zaprojektowania przypadków użycia na kolejnych laboratorium.

• Wykonać projekt UML i wykonać prosty program stanowiący realizację projektu zgodnie z materiałem zawartym na slajdach 5-54. Jest to ćwiczenie, które pozwala poznać narzędzie UML w środowisku

NetBeans, wykorzystane w ramach zajęć

laboratoryjnych z przedmiotu Analiza i modelowanie

systemów informatycznych

(3)

PIO. Autor -Zofia Kruczkiewicz 3

Java

język programowania

• obiektowo zorientowany

• wysokiego poziomu

platforma Javy

• z maszyny wirtualnej VM

• API (interfejs programowania aplikacji).

Rodzaje platform Javy:

 Java Platform, Standard Edition (Java SE)

 Java Platform, Enterprise Edition (Java EE)

 Java Platform, Micro Edition (Java ME)

 Java Platform CARD Rezultat

• niezaleŜność od platformy,

• duŜe moŜliwości,

• stabilność,

• łatwość rozwoju,

• bezpieczeństwo

(4)

PIO. Autor -Zofia Kruczkiewicz 4

Warstwy aplikacji (Java EE)

(5)

PIO. Autor -Zofia Kruczkiewicz 5

1) Wykonanie projektu typu aplikacja Javy

(6)

PIO. Autor -Zofia Kruczkiewicz 6

(7)

PIO. Autor -Zofia Kruczkiewicz 7

(8)

PIO. Autor -Zofia Kruczkiewicz 8

(9)

PIO. Autor -Zofia Kruczkiewicz 9

2) Utworzenie projektu UML

(10)

PIO. Autor -Zofia Kruczkiewicz 10

Projekt typu UML należy utworzyć w tym samym katalogu, w

którym znajduje się projekt typu Java Application

(11)

PIO. Autor -Zofia Kruczkiewicz 11

3) Utworzenie diagramu przypadków użycia (use cases)

(12)

PIO. Autor -Zofia Kruczkiewicz 12

Wykonanie diagramu przypadków użycia (use case diagram)

(13)

PIO. Autor -Zofia Kruczkiewicz 13

Otwieranie okna dokumentacji dla wybranego elementu diagramu – wykonanie opisu

biznesowego systemu oraz wymagań funkcjonalnych i niefunkcjonalnych

(14)

PIO. Autor -Zofia Kruczkiewicz 14

4) Otwieranie „niemodalnego” okna dokumentacji

(15)

PIO. Autor -Zofia Kruczkiewicz 15

(16)

PIO. Autor -Zofia Kruczkiewicz 16

(17)

PIO. Autor -Zofia Kruczkiewicz 17

Dodawanie nowego diagramu

(18)

PIO. Autor -Zofia Kruczkiewicz 18

5) Utworzenie diagramu klas

(19)

PIO. Autor -Zofia Kruczkiewicz 19

6) Wstawienie nowej klasy

(20)

PIO. Autor -Zofia Kruczkiewicz 20

7) Wstawienie nowego atrybutu - menu

(21)

PIO. Autor -Zofia Kruczkiewicz 21

8) Edycja atrybutu

(22)

PIO. Autor -Zofia Kruczkiewicz 22

9) Właściwości nowego atrybutu

(23)

PIO. Autor -Zofia Kruczkiewicz 23

10) Generowanie kodu klasy Tytul_ksiazki do projektu Katalog1

(24)

PIO. Autor -Zofia Kruczkiewicz 24

11) Wybór projektu Javy jako miejsca do generowania kodu Uwaga: Należy zawsze zachować projekt typu UML (saveAll)

oraz skompilować (Build) projekt typu Java Application po

wygenerowaniu kodu o nazwie Katalog1

(25)

PIO. Autor -Zofia Kruczkiewicz 25

(26)

PIO. Autor -Zofia Kruczkiewicz 26

12) Wygenerowany kod

(27)

PIO. Autor -Zofia Kruczkiewicz 27

public class Tytul_ksiazki {

private String wydawnictwo;

private String ISBN;

private String tytul;

private String nazwisko;

private String imie;

public Tytul_ksiazki() { }

public String getWydawnictwo() { return wydawnictwo; } public void setWydawnictwo(String val) { this.wydawnictwo = val; } public String getISBN() { return ISBN; }

public void setISBN(String val) { this.ISBN = val; } public String getTytul() { return tytul; } public void setTytul(String val) { this.tytul = val; } public String getNazwisko() { return nazwisko; } public void setNazwisko(String val) { this.nazwisko = val; } public String getImie() { return imie; }

public void setImie(String val) { this.imie = val; }

}

(28)

PIO. Autor -Zofia Kruczkiewicz 28

13) Wstawienie klasy fasadowej Uchwyt – będzie zastosowana do

obsługi wywołań przypadków użycia.

(29)

PIO. Autor -Zofia Kruczkiewicz 29

14) Wstawienie powiązania typu Association

(30)

PIO. Autor -Zofia Kruczkiewicz 30

15) Określenie liczności związku typu Association i– 1 do 1

(31)

PIO. Autor -Zofia Kruczkiewicz 31

(32)

PIO. Autor -Zofia Kruczkiewicz 32

16) Wstawianie nowego diagramu – menu

(33)

PIO. Autor -Zofia Kruczkiewicz 33

17) Wstawianie nowego diagramu typu sekwencji - wybór

(34)

PIO. Autor -Zofia Kruczkiewicz 34

Wstawianie linii życia - Life line (wybór typu obiektu z listy Representing Clasifier)

(35)

PIO. Autor -Zofia Kruczkiewicz 35

Wstawianie linii życia - Life line (wybór typu obiektu z listy Representing Clasifier)

(36)

PIO. Autor -Zofia Kruczkiewicz 36

(37)

PIO. Autor -Zofia Kruczkiewicz 37

18) Wstawienie synchronicznej wiadomości („Synchronous Message”) – metody

klasy Tytul_ksiazki

(38)

PIO. Autor -Zofia Kruczkiewicz 38

19) Nadawanie nazwy nowej metodzie w klasie Tytul_ksiazki (1)

(39)

PIO. Autor -Zofia Kruczkiewicz 39

Nadawanie nazwy nowej metodzie w klasie Tytul_ksiazki (2)

(40)

PIO. Autor -Zofia Kruczkiewicz 40

20) Wstawienie wiadomości typu „Synchronous Message” do jednej linii życia

reprezentującej wywołanie własnej metody przez linię życia – ciało metody toString

(41)

PIO. Autor -Zofia Kruczkiewicz 41

21) Kojarzenie wiadomości z konkretną metodą klasy Tytul_ksiazki

(42)

PIO. Autor -Zofia Kruczkiewicz 42

(43)

PIO. Autor -Zofia Kruczkiewicz 43

22) Pojawienie się nowej metody toString w klasie Tytul_ksiazki – z diagramu

sekwencji

(44)

PIO. Autor -Zofia Kruczkiewicz 44

23) Wygenerowanie nowej metody toString do kodu klasy Tytul_ksiazki

(podobnie jak na slajdzie 23)

(45)

PIO. Autor -Zofia Kruczkiewicz 45

24) Wstawienie ręczne kodu nowej metody toString do klasy Tytul_ksiazki na

podstawie diagramu sekwencji tej metody

(46)

46 public class Tytul_ksiazki

{ private String wydawnictwo;

private String ISBN;

private String tytul;

private String nazwisko;

private String imie;

public Tytul_ksiazki() {} /** @ generated */

public String getWydawnictwo() { return wydawnictwo; } /** @ generated */

public void setWydawnictwo(String val) { wydawnictwo = val; }

public String getISBN() { return ISBN; } /** @ generated */

public void setISBN(String val) { ISBN = val; } /** @ generated */

public String getTytul() { return tytul; } /** @ generated */

public void setTytul(String val) { tytul = val; } /** @ generated */

public String getNazwisko() { return nazwisko; } /** @ generated */

public void setNazwisko(String val) { nazwisko = val; } /** @ generated */

public String getImie() { return imie; } /** @ generated */

public void setImie(String val) { imie = val; } /** @ generated */

public String toString() // your code here

{ String pom="Tytul: "+getTytul();

pom+=" Autor:"+getNazwisko() +" "+getImie();

pom+=" ISBN: "+getISBN();

pom+=" Wydawnictwo:"+getWydawnictwo();

return

pom;

}

}

(47)

PIO. Autor -Zofia Kruczkiewicz 47

25) Wstawienie diagramu sekwencji dla przypadku użycia dodaj_tytul: użycie wiadomości typu („Asynchronous Message” oraz „Create Message” – konstruktor klasy Tytul_ksiazki).

Należy wykonac nową linię życia typu Tytul_ksiazki za pomocą „Create Message”

(48)

PIO. Autor -Zofia Kruczkiewicz 48

25 cd) Wstawienie diagramu sekwencji dla przypadku użycia dodaj_tytul: użycie wiadomości

typu („Asynchronous Message” oraz „Create Message” – konstruktor klasy Tytul_ksiazki)

(49)

PIO. Autor -Zofia Kruczkiewicz 49

26) Wygenerowanie nowej metody dodaj_tytul w klasie fasadowej

Uchwyt z diagramu sekwencji

(50)

PIO. Autor -Zofia Kruczkiewicz 50

27) Transformacja związku między klasą Uchwyt a klasą Tytul_ksiazki - Navigable

1. Należy lewym klawiszem myszy zaznaczyć relację typu Association.

2. Należy ustawić w okienku

Properties dla właściwości

Participant równej

Tytul_ksiazki

właściwość

.avigable

(51)

PIO. Autor -Zofia Kruczkiewicz 51

28) Implementacja związku między klasą Uchwyt a klasą Tytul_ksiazki – w klasie Uchwyt

(52)

PIO. Autor -Zofia Kruczkiewicz 52

29) Generowanie kodu z poziomu wybranej klasy

(53)

PIO. Autor -Zofia Kruczkiewicz 53

(54)

PIO. Autor -Zofia Kruczkiewicz 54

30) Wygenerowanie kodu nowej metody dodaj_tytul w klasie Uchwyt

Referencja do obiektu klasy Tytul_ksiazki reprezentuje relację 1 do 1 po stronie klasy Uchwyt, która jest „właścicielem”

relacji

(55)

PIO. Autor -Zofia Kruczkiewicz 55

31) Wstawienie ręczne kodu nowej metody dodaj_tytul na podstawie diagramu sekwencji tej metody oraz metody main testującej

działanie wykonanego przypadku użycia

(56)

PIO. Autor -Zofia Kruczkiewicz 56

package katalog1;

public class Uchwyt {

private Tytul_ksiazki mTytul_ksiazki;

public Uchwyt() { }

public void dodaj_tytul(String a, String b, String c, String d, String e) // your code here { mTytul_ksiazki=new Tytul_ksiazki();

mTytul_ksiazki.setTytul(a);

mTytul_ksiazki.setNazwisko(b);

mTytul_ksiazki.setImie(c);

mTytul_ksiazki.setISBN(d);

mTytul_ksiazki.setWydawnictwo(e); } public Tytul_ksiazki getTytul_ksiazki()

{ return mTytul_ksiazki; }

public void setTytul_ksiazki(Tytul_ksiazki val) { this.mTytul_ksiazki = val; }

public static void main(String t[]) // your code here { Uchwyt ap=new Uchwyt();

ap.dodaj_tytul("1","1","1","1","1");

String lan=ap.getTytul_ksiazki().toString();

System.out.println(lan); }

}

(57)

PIO. Autor -Zofia Kruczkiewicz 57

32) Uruchomienie programu

(58)

PIO. Autor -Zofia Kruczkiewicz 58

33) Wykonanie dokumentacji UML typu strona HTML

(59)

PIO. Autor -Zofia Kruczkiewicz 59

(60)

PIO. Autor -Zofia Kruczkiewicz 60

Cytaty

Powiązane dokumenty

Message linię życia typu Actor z liną życia typu Uchwyt.. 25) Następnie należy wstawić nową linię życia z podręczej palety linii życia typu Uchwyt za pomocą Create Message..

5) Przechodzi do stanu waitForSearchResults po otrzymaniu komunikatu receive(announce(task,.cost),mgr) od zadania roli mgr:Manager i wysłaniu do niej komunikatu

• Directed chosen message attack: Similar to the generic attack, except that the list of messages to be signed is chosen after C knows A’s public key but before any signatures

If the acknowledgment is not received within the timeout period, the kernel of the client machine retransmits the request message..  When the server finishes processing the

 Określenie celów przedsięwzięcia z punktu widzenia klienta Określenie celów przedsięwzięcia z punktu widzenia klienta.  Określenie zakresu oraz kontekstu

– Inżynierowie oprogramowania pracują w sposób systematyczny i uporządkowany ponieważ jest to najskuteczniejszy sposób tworzenia oprogramowania wysokiej jakości..

*recvbuf, int recvcount, MPI_Datatype recvtype, int source, int recvtag, MPI_Comm comm, MPI_Status *status) sendbuf Bufor danych wysyłanych. sendcount Liczba elementów w

*recvbuf, int recvcount, MPI_Datatype recvtype, int source, int recvtag, MPI_Comm comm, MPI_Status *status) sendbuf Bufor danych wysyłanych. sendcount Liczba elementów w