Pri sciaga I-III



Pobieranie 21,38 Kb.
Data08.01.2018
Rozmiar21,38 Kb.

Kohezja (ang. cohesion) oznacza zwartość, spoistość. Terminu tego używa się np. w odniesieniu do komponentu oprogramowania (klasy, modułu, itp.) na oznaczenie wzajemnego zintegrowania jego elementów składowych. Wysoka, duża kohezja (ang. high cohesion) oznacza silną interakcję „wewnątrz” i relatywnie słabszą interakcję z „zewnętrzem”. Komponent powinna cechować duża kohezja, co w praktyce oznacza, że komponent stanowi dobrą, intuicyjną abstrakcję “czegoś”, czyli posiada precyzyjnie określoną semantykę, jest dobrze wyizolowany z kontekstu (maksymalnie od niego niezależny) oraz posiada dobrze zdefiniowany interface.

Skojarzenie (ang. coupling) określa stopień powiązania elementów składowych oprogramowania, np. możemy określić skojarzenie klas w oparciu o poniższe stwierdzenia: jak często obiekty jednej klasy występują razem z obiektami drugiej klasy, jak często obiekty jednej klasy wysyłają komunikaty do obiektów drugiej klasy, itp. Możliwe są skojarzenia silne, słabe czy w ogóle brak skojarzenia. Duża ilość silnych skojarzeń miedzy elementami składowymi (ang. high coupling) jest tym, czego powinno się unikać.

  • Model przypadków użycia: definiuje zarówno zewnętrze systemu (aktorzy ≡ systemy zewnętrzne ≡ kontekst systemu), jak i jego wnętrze (przypadki użycia); służy określeniu zachowań systemu w odpowiedzi na akcje pochodzące z otoczenia systemu.

  • Obiektowy model dziedziny: odwzorowywuje byty świata rzeczywistego (dziedziny problemowej ≡ dziedziny przedmiotowej) w obiekty istniejące w systemie.

  • Obiektowy model analityczny: podzbiór modelu dziedziny (dotyczy konkretnego zastosowania).

  • Model projektowy (logiczny): opisuje założenia przyszłej implementacji.

  • Model implementacyjny (fizyczny): reprezentuje implementację systemu.

  • Model testowania: określa plan testów, specyfikuje procedury, dane testowe, raporty.


Przypadki użycia mogą być konstruowane w dowolnej kolejności, chyba że występują między nimi relacje typu «include» czy «extend».
W obu poniższych diagramach P1, nazywane tu przypadkiem bazowym, zawsze występuje jako pierwsze w kolejności działania.

Przebieg podstawowy (sekwencyjny): P1 zawsze włącza (używa) P2, zwane tu przypadkiem włączanym.
P1 - - - - - - -«include»- - - - - - - ®P2
Przebieg opcjonalny (alternatywny): P1 jest czasami rozszerzane o P2, zwane tu przypadkiem rozszerzającym (inaczej: P2 czasami rozszerza P1). Sformułowanie “czasami” oznacza, że warunek na wywołanie P2 musi być spełniony, aby P2 zostało wywołane z P1. O ile warunek nie został wyspecyfikowany − co jest dopuszczalne − P2 będzie wywołane zawsze.

P1 - - - - - -«extend»- - - - - - - - P2


PODSUMOWANIE

Główne zadanie modelu przypadków użycia to określenie poprawnych wymagań funkcjonalnych na projektowany system, co jest uznawane za jeden z podstawowych problemów w procesie budowy systemu.



Ponadto, model przypadków użycia pozwala na:

  • lepsze zrozumienie możliwych sposobów wykorzystania projektowanego systemu (przypadków użycia), lepsze zrozumienie jego funkcjonalności − co w efekcie oznacza zwiększenie stopnia świadomości uczestników projektu co do celów systemu,

  • umożliwienie interakcji zespołu projektowego z przyszłymi użytkownikami systemu,

  • ustalenie praw dostępu do zasobów,

  • zrozumienie strukturalnych własności systemu, a przez to ustalenie składowych systemu i związanego z nimi planu budowy systemu,

  • dostarczenie podstawy do sporządzenia harmonogramu prac,

  • dostarczenie bazy do budowy planu testów systemu,

  • dostarczenie środków umożliwiających weryfikację poprawności i kompletności projektu.

Przypadki użycia powinny odwzorowywać strukturę systemu tak, jak tę strukturę widzą przyszli użytkownicy systemu.


  • Rational Unified Processprodukt firmy Rational Software, poprzez promowanie zdyscyplinowanego podejścia do rozwoju oprogramowania, ułatwia produkcję oprogramowania wysokiej jakości, w przewidywalnym dla klienta czasie i budżecie.




  • RUP oparty został o zbiór sześciu najlepszych praktyk: iteracyjny rozwój, zarządzanie wymaganiami, architektura oparta o komponenty, modelowanie wizualne, systematyczna weryfikacja jakości i zarządzanie zmianami.

Dlaczego nie model kaskadowy?

- Błędne założenia: (a) wymagania mogą być zamrożone po przeprowadzeniu analizy, (b) projekt implementacji będzie „ od razu” dobry.

- Błędna ocena kontekstu rozwoju oprogramowania.

- Błędna ocena czynnika ludzkiego.

- Błędna ocena możliwości wykorzystania podejścia sekwencyjnego.

- Niedojrzałość inżynierii oprogramowania – zaledwie kilkadziesiąt lat doświadczenia, w przeciwieństwie do tysięcy lat prób i błędów w innych dziedzinach, np. w budowie budynków czy mostów.



Recepta: rozwój iteracyjny

Podejście oparte o realizację kompletnego zbioru funkcjonalności kontra podejście oparte o realizację stopniową (volume-based versus time-based scheduling)

  • “Wszystko czego potrzebujesz, zrobimy w ciągu dziewięciu miesięcy” kontra “w ciągu dwóch pierwszych miesięcy zrobimy trzy pozycje z twojej listy, w kolejnych trzech miesiącach zrobimy to i tamto, itd.”.

  • To pierwsze podejście, typowe dla procesu sekwencyjnego, nie przynosi zbyt wielkich zysków, kiedy brakuje czasu: jak np. decyzja o nie realizowaniu własności X, podjęta w środku implementacji, gdy poświęciliśmy już czas na jej specyfikowanie, projekt implementacji i częściową implementację.

  • Drugi sposób pracy, typowy dla podejścia iteracyjnego, wymusza dzisiejszy rynek: produkt zostaje wypuszczony z pewnym zbiorem własności, a potem tworzona jest następna, ulepszona i/lub rozszerzona wersja.

Korzyści wynikające z wykorzystania podejścia iteracyjnego

  • Braki (błędy) o dużej wadze dla produktu finalnego mogą być wykrywane wcześniej, co umożliwia wcześniejszą reakcję.

  • Łatwiej (bo częściej) można uzyskiwać informacje zwrotne od użytkownika, dzięki czemu wzrastają szanse na prawidłową specyfikację wymagań.

  • Niespójności między wymaganiami, projektem implementacji i kodem mogą być wykrywane wcześniej.

  • Zespół projektowy może poświęcić większą uwagę elementom krytycznym w aktualnej fazie projektu.

  • Praca, wykonywana przez różne grupy członków zespołu projektowego może być bardziej równomiernie rozłożona w czasie.

  • Dzięki iteracyjnemu (ciągłemu i systematycznemu) testowaniu łatwiej szacować statusu projektu. Cały czas są dostępne ” niezbite dowody” ułatwiające to zadanie − ważne dla wszystkich uczestników projektu.

  • Doświadczenia, nabyte w jednym cyklu, można z powodzeniem wykorzystywać w następnych cyklach, czy w ogóle − do ulepszania całości procesu.

Polimorfizm

Z greckiego, polimorfizm − oznacza „wiele form” („wiele postaci”) jednego bytu. Słowo “polimorfizm” też jest polimorficzne, istnieje co najmniej kilka rodzajów polimorfizmu, zgodnie z poniższą specyfikacją:



Polimorfizm metod − (co zostało już wyjaśnione wcześniej w punkcie „Operacja a metoda”) polega na tym, że operacja wywoływana za pośrednictwem komunikatu może być różnie wykonana, w zależności od rodzaju obiektu, do którego ten komunikat został wysłany; innymi słowy może istnieć wiele metod implementujących daną operację.

Polimorfizm typów (z teorii typów) − polimorfizm w tzw. polimorficznych językach programowania − oznacza istnienie funkcji, które mogą zarówno przyjmować wartości wielu typów jako swoje argumenty, jak też i zwracać wartości wielu typów.

Przykładowo, funkcja daj_pierwszy(lista) zwraca pierwszy element dowolnej listy, niezależnie od tego, czy jest to lista liczb całkowitych, czy lista liczb rzeczywistych, czy lista rekordów, czy też inna. Polimorfizm typów jest uważany za podstawę programowania ogólnego (ang. generic). Temat pozostaje jednak w strefie akademickiej, gdyż języki z polimorfizmem typów (a w szczególności ML) uważane są za zbyt wyrafinowane dla przeciętnego programisty.
Obiektowość jest nową ideologią, która zmienia myślenie realizatorów SI z “zorientowanego na maszynę” na “zorientowane na człowieka”.

- Obiektowość jest konsekwencją kryzysu oprogramowania: kosztów związanych z oprogramowaniem, jego zawodnością i trudną do opanowania złożonością.

- Obiektowość przenika wszelkie fazy projektowania, narzędzia i interfejsy.

- Obiektowość dopracowała się własnej kolekcji pojęć i narzędzi.

- Obiektowość jest na początku swojej drogi i musi walczyć z konserwą i spuścizną poprzednich ideologii.

Modelowanie pojęciowe


  • Pojęcia: modelowanie pojęciowe (conceptual modeling) oraz model pojęciowy (conceptual model) odnoszą się do procesów myślowych, do wyobrażeń towarzyszących pracy nad oprogramowaniem.

  • Projektant, programista, itd. muszą dokładnie wyobrazić sobie problem oraz metodę jego rozwiązania. Zasadnicze procesy tworzenia oprogramowania zachodzą więc w ludzkim umyśle i nie są związane z jakimkolwiek językiem programowania czy jakimkolwiek narzędziem w ogóle.

  • Modelowanie pojęciowe może być (i powinno być) wspomagane przez środki wzmacniające ludzką pamięć i wyobraźnię, służące do opisu odwzorowywanej rzeczywistości w postaci: struktur danych, operacji na danych czy zachodzących procesów.

Metodyka (metodologia) – w inżynierii oprogramowania jest zestawem pojęć, oznaczeń, języków, modeli, diagramów, technik i sposobów postępowania wspierających proces konstruowania systemu (realizacji projektu).

Definicja UML podana przez Rational: "The Unified Modeling Language (UML) is a language for specifying, constructing, visualizing, and documenting the artifacts of a software-intensive system."



Stereotypy stanowią pierwszy z trzech mechanizmów rozszerzalności UML. Jak każdy mechanizm rozszerzalności, dają możliwość definiowania nowych elementów, co wspomaga przystosowanie UML do modelowania specyficznych procesów, do specyficznych preferencji użytkownika czy też pozwala na uszczegóławianie semantyki modelu:

  • Stereotypy są wyrażeniami językowymi umożliwiającymi metaklasyfikację elementów modelu.

  • Istnieje lista stereotypów dla każdego rodzaju elementów modelu w UML.

  • Element modelu może mieć co najwyżej jeden stereotyp (?).

  • Są stereotypy predefiniowane, ale użytkownicy mogą też definiować własne stereotypy.

  • Stereotypy mogą mieć implikacje semantyczne (podobnie jak ograniczenia).











©operacji.org 2019
wyślij wiadomość

    Strona główna