IO-EgzaminBAMBOLEO.doc

(791 KB) Pobierz

1. Jaką grupę wymagań modeluje się za pomocą przypadków użycia?

 

Wymagania użytkownika , wymagania funkcjonalne (jak jedno to nie wiem które)


2. Kim jest aktor? Podaj symbol.

 

Aktor: abstrakcyjny użytkownik systemu, reprezentujący grupę użytkowników używających podobnych funkcji systemu i sposobu z nim komunikacji. Symbol to ludzik ,jak wygląda każdy wie.

                                                                     


3. Co to jest przypadek użycia. Podaj klasyfikacje aktorów ze względu na używaną przez nich funkcję systemu.

 

Przypadek użycia: ciąg interakcji pomiędzy aktorem a systemem, dostarczający aktorowi pożądanych wyników.

Klasyfikacja aktorów:

              - aktor główny: używa podstawowych  funkcji systemu

              - aktor drugorzędny: używa funkcji administracyjnych i pielęgnacyjnych

              - aktor aktywny: inicjuje przypadek użycia

              - aktor pasywny: uczestniczy w przypadku użycia, ale go nie inicjuje


4. Co oznacza relacja "używa"("uses")? Podaj symbol. Jak nazywa się ta relacja w najnowszej wersji języka UML? Relacja „extends”.

 

         Relacja „używa” („uses”)

              - wskazuje na wspólny fragment wielu przypadków użycia, wykorzystanie wspólnego zachowania

         Relacja „rozszerza” („extends”)

              - rozszerzenie przypadku użycia o sytuację wyjątkową

Relacja „uses” w najnowszej wersji jezyka UML nazywana jest „include a jej symbol to               <<include>>


5. Czy możliwa jest komunikacja pomiędzy aktorami na diagramie przypadków użycia? Odpowiedź uzasadnij i skomentuj w kontekście zadań modelu przypadku użycia.

 



Nie wiem dokladnie o co chodzi (bo to takie kurwa wszystko niejasne w tym przedmiocie). Ale jeśli chodzi im o komunikacje bezposrednią (strzalka od razu od jednego aktora do drugiego) to nie jest możliwa taka opcja , jedynie poprzez przypadek uzycia czyli tak jak na tym przykładzie obok albo wymeldowanie z hotelu albo zameldowanie. Glownie w diagramach przypadkow uzycia chodzi o zauważenie interakcji użytkownika z systemem a nie użytkowników miedzy soba, także związku użytkownika z konkretnym przypadkiem uzycia i wynikiem jaki otrzymuje.


6. Opisz ogólny schemat przejścia między stanami.


7. W jaki sposób na diagramie sekwencji oznacza się pewne własności interakcji, np. interakcje wywoływane w pętli?

 

Często zachodzi konieczność wskazania specjalnej własności pewnej części interakcji, np. pętli. Na diagramach sekwencji taką grupę operacji obejmuje się prostokątem, w którego lewym górnym narożniku, w pięciokącie umieszcza się słowo kluczowe lub opis określający znaczenie danego bloku (tzw. operator interakcji), np.:

• alt (od alternative) – określający warunek wykonania bloku operacji, odpowiadający instrukcji if-else; warunek umieszcza się wówczas wewnątrz bloku w nawiasach kwadratowych

              • opt (od optional) – reprezentujący instrukcję if (bez else)

              • par (od parallel) – nakazujący wykonać operacje równolegle

              • critical – oznaczający obszar krytyczny

              • loop – definiujący pętlę typu for (o określonej z góry liczbie iteracji) lub while (wykonywanej dopóki pewien warunek jest prawdziwy)
8. Co to jest wywoływanie asynchroniczne operacji? Jak się je oznacza?

Oznacza powrót z wywołania procedury; może być pomijany.

 

9.symbole początku życia obiektu i końca życia - siakoś tak

 

koło – początek życia

koło z obręczą wokół niego cienką również okrągłą – koniec życia.

W Umbrello wszystko to było koloru czerwonego .

 

10. Największa różnica między diagramem maszyny stanowej a czynności

 

         W odróżnieniu od diagramu maszyny stanowej, diagram czynności może obejmować wiele obiektów na raz, zwykle umieszczanych w odpowiednich torach.

 

11. Coś w tym stylu - dlaczego diagram sekwencji jest doskonały do pokazania programowania obiektowego

 

         Prezentuje kolejność wywołań operacji, przepływ sterowania pomiędzy obiektami oraz szablon realizowanego algorytmu.

 

12. W jaki sposób można oceniać produktywność programisty

 

Produktywność:

-> W procesie tworzenia oprogramowania menedżerowie muszą oceniać produktywność inżynierów. Takie oszacowania mogą być niezbędne przy szacowaniu kosztów przedsięwzięcia i przy ustalaniu, czy ulepszenia procesowe i technologiczne były skuteczne.

-> Problemy z określeniem produktywności:

- W wypadku budowy oprogramowania istnieje wiele różnych rozwiązań o różnych atrybutach.

- Gdy pojawiają się dwa rozwiązania o różnych atrybutach, porównywanie szybkości ich tworzenia nic tak naprawdę nie daje. Jedno rozwiązanie może działać bardziej efektywnie, podczas gdy inne jest bardziej czytelne i łatwiejsze do pielęgnacji.

Rodzaje miar:

         Miary wielkościowe. Są związane z wielkością pewnego wyniku czynności. Najczęściej stosowaną wielkościową miarą produktywności jest liczba wierszy dostarczonego kodu źródłowego.

         Miary funkcyjne. Są związane z ogólną funkcjonalnością dostarczonego oprogramowania. Produktywność wyraża się w kategoriach ilości użytecznej funkcjonalności dostarczonej w pewnym czasie.

Szacowanie kosztu pracy programisty za pomocą liczby wierszy kodu:

         Liczba wierszy kodu na miesiąc pracy programisty to szeroko stosowana miara produktywności.

         Wyznacza się ją przez obliczenie całkowitej liczby dostarczonego kodu źródłowego. Tę liczbę dzieli się następnie przez miesiące pracy programisty, konieczne do ukończenia przedsięwzięcia.

         Ten czas obejmuje zatem czas potrzebny na analizę, projektowanie, kodowanie i dokumentowanie.

Szacowanie kosztu pracy programisty za pomocą punktów funkcyjnych

Inną stosowaną miarą jest liczba punktów funkcyjnych.

Całkowitą liczbę punktów funkcyjnych wyznacza się przez zmierzenie lub oszacowanie następujących elementów programu:

              - zewnętrzne dane wejściowe i wyjściowe,

              - interakcje z użytkownikiem,

              - interfejsy zewnętrzne,

              - pliki używane przez system.

 

Wagi: od 3 (proste dane wejściowe) do 15 (złożone pliki)

 

UFC = ∑ liczba_elementów_danego_typu x waga

 

Punkty funkcyjne są niezależnie od języka, można więc za ich pomocą porównywać produktywność w różnych językach programowania. Produktywność wyraża się jako liczby punktów funkcyjnych utworzonych w czasie miesiąca.

Szacowanie kosztu pracy programisty za pomocą punktów obiektowych:

W przypadku stosowania narzędzi obiektowych, stosujemy miarę w postaci liczby punktów obiektowych - miarę ważoną następujących składników:

 

- liczba różnych wyświetlanych ekranów (prosty ekran to 1 punkt obiektowy, bardzo złożony ekran - 3)

- liczba tworzonych raportów (prosty raport to 2 punkty obiektowe, bardzo złożony - 8 punktów)

- liczba modułów napisanych w językach proceduralnych, które należy opracować w celu uzupełnienia kodu (każdy moduł  liczy się jako 10 punktów obiektowych.

 

13. Wymień cechy i omów:

Architektury wieloprocesorowe

         Najprostszym modelem systemu rozproszonego jest system wieloprocesorowy, składający się z kilku różnych procesów, które mogą (ale nie muszą) działać na oddzielnych procesorach.

         Z logicznego punktu widzenia procesory zajmujące się zbieraniem informacji, podejmowaniem decyzji i sterowaniem efektorami mogłyby działać na jednym procesorze sterowanym przez moduł szeregujący. Użycie wielu procesorów poprawia jednak efektywność i odporność systemu.

         Przydział procesów procesorów może być zadany z góry (tak zwykle jest w systemach krytycznych) albo sterowany przez dyspozytora, który decyduje o przyznaniu procesora procesowi.

 

 

Architektury klient-serwer

         Architektoniczny model klient-serwer jest modelem rozproszonego systemu, w którym dane i przetwarzanie są rozdzielone między zbiór procesorów.

  1. Zbiór samodzielnych serwerów oferujących usługi innym podsystemom. Przykładami są serwery wydruku realizujące usługi drukowania, serwery plików realizujące usługi zarządzania plikami.
  2. Zbiór klientów, którzy korzystają z usług oferowanych przez serwery. Zwykle same w sobie są podsystemami.
  3. Sieć, która daje klientom dostęp do tych usług.

 

         Największa zaleta modelu klient-serwer polega na tym, że jest to architektura rozproszona. Umożliwia to efektowne użycie systemów sieciowych z dużą liczba rozproszonych procesorów. Łatwo jest dostać nowy serwer i zintegrować go z resztą systemu albo przezroczyście aktualizować serwery bez wpływania na inne części systemu.

         Do odniesienia pełnych korzyści z integracji nowego serwera może być jednak konieczne wprowadzenie pewnych zmian w istniejących klientach i serwerach. Nie ma dzielonego modelu danych i podsystemy porządkują zwykle swoje dane na różne sposoby. Oznacza to potrzebę określenia specyficznego modelu danych dla każdego serwera, który umożliwi zoptymalizowanie jego efektywności.

 

 

Architektury obiektów rozproszonych

         Architektury obiektów rozproszonych

        W tym podejściu nie istnieje rozróżnienie między klientami i  serwerami. System jest postrzegany jako zbiór komunikujących się obiektów, których położenie jest nieistotne. Nie ma różnicy między dostawcą i użytkownikiem usług.

 

14. Narysuj przykładowy diagram obiektów. W jakich przypadkach może się on okazać użyteczny?

 

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

 

15. Co to jest obiekt? Podaj definicję i symbol graficzny.

Obiekt jest bytem, który posiada swój stan i zbiór zdefiniowanych operacji działających na tym stanie.

- stan jest reprezentowany jako zbiór atrybutów (ang. attributes) obiektu.

Symbol obiektu=reprezentacja graficzna klasy(patrz nizej)

 

16. Czym są atrybuty? Czy związek między klasami może posiadać atrybuty? jeżeli tak, to podaj przykład i symbol.

 

Atrybuty określają stan obiektu. Tak związki miedzy klasami mogą posiadać atrybuty między innymi:

Tak, zwiazem miedzy klasami może mieć atrybut. Taki związek z atrybutem nazywamy związkiem kwalifikowanym.
 

 

 

18. Omów związki między klasami i podaj ich symbole

 

 

Czyli symbol chyba kreska?

             

Uogólnienie-

         Klasy obiektów można ułożyć w hierarchię uogólnienia, w której widać związek między ogólnymi i bardziej szczegółowymi klasami obiektów.

         Szczegółowa klasa obiektów jest w pełni zgodna z ogólną klasą obiektów, ale zawiera więcej informacji.

         W UML uogólnienie obrazuje się za pomocą obrazów strzałki wskazującej klasę macierzystą.

         W obiektowych językach programowania uogólnienie zwykle implementuje się za pomocą mechanizmu dziedziczenia. Klasa potomna dziedziczy atrybuty i operacje po klasie macierzystej.

Symbol-nie wypełniona strzałka

Agregacja-(ang. aggregation): tworzenie nowej klasy, przy użyciu klas już istniejących. Nowa klasa może być zbudowana z dowolnej liczby obiektów (obiekty te mogą być dowolnych typów) i w dowolnej kombinacji, by uzyskać żądany efekt. Jest to relacja typu "zawiera" np: "samochód zawiera koła i silnik" - gdzie „samochód”, „koło” i „silnik” są klasami. Symbol – linia zakończona rombem.

 

                                                       

Symbol-pusty romb

Kompozycja- (ang. composition): składanie się obiektu z obiektów składowych, które nie mogą istnieć bez obiektu głównego. Kompozycja jest relacją typu "posiada". Dana część może należeć tylko do jednej całości. Część nie może istnieć bez całości, a usunięcie całości powoduje automatyczne usunięcie wszystkich części związanych z nią związkiem kompozycji. Symbol – linia zakończona zaczernionym rombem.


                         Symbol-wypełniony romb

 

Zależność (ang. dependency) - między klasami zachodzi, jeżeli zmiany dokonane w stanie jednego z obiektów danej klasy mogą mieć wpływ na obiekt należący do innej klasy.

Symbol – strzałka z przerywana linią

Związek, tak jak i obiekt, też może posiadać atrybuty

(tzw. związek kwalifikowany).

 

19. Fazy procesu produkcji

 

         idea

         specyfikacja

         projektowanie

         implementacja

         integracja

         testowanie

         wdrożenie

         ewolucja

 

20. Modelowanie procesu tworzenia oprogramowania

 

         Modele ogólne (paradygmaty) tworzenia oprogramowania (z natury uproszczone)             

        model kaskadowy

        model spiralny

        model przyrostowy i tworzenie ewolucyjne

        model prototypowy

        składanie systemu z komponentów ponownego użycia

         Modele szczegółowe

        model przepływu prac

        model przepływu danych (lub model czynności)

 

21. Podział wymagań stawianych oprogramowaniu

         I   Wymagania funkcjonalne

        Stwierdzają, jakie usługi ma oferować system, jak ma reagować na określone dane wejściowe oraz jak ma się zachowywać w określonych sytuacjach. W niektórych wypadkach wymagania funkcjonalne określają, czego system nie powinien robić.

         II   Wymagania niefunkcjonalne (pozafunkcjonalne)

        Określają ograniczenia usług i funkcji systemu. Obejmują ograniczenia czasowe, ograniczenia dotyczące procesu tworzenia, standardy itd.

         III  Wymagania dziedzinowe

        Pochodzą z dziedziny zastosowania systemu odzwierciedlają jej charakterystykę. Mogą być zarówno funkcjonalne jak i niefunkcjonalne.

AD I:
Wymagania funkcjonalne

         Odpowiadają na pytanie: jakie funkcje system ma udostępniać użytkownikom?

...

Zgłoś jeśli naruszono regulamin