WYKŁADY Flashcards

IO

1
Q

Pełen opis przedmiotu z usosa

A

Inżynieria oprogramowania jest wiedzą techniczną dotyczącą wszelkich faz cyklu życia oprogramowania. Oprogramowanie traktowane jest jako konkretny produkt spełniający określone wymagania. Ustandaryzowany zbiór procedur i procesów stosowany podczas rozwiązywania problemów wynikłych w trakcie projektowania i wdrażania oprogramowania traktowanego jako nieodłączna część określonego systemu informatycznego nazywany jest metodyką tworzenia oprogramowania. Metodyki abstrahują od merytorycznego kontekstu danego obszaru, a skupiają się na metodach realizacji zadań związanych z zarządzaniem projektem informatycznym. Celem przedmiotu jest prezentacja wybranych metodyk tworzenia oprogramowania, metod analizy i projektowania systemów informatycznych, sposobów przygotowywania dokumentacji technicznej i użytkowej oraz sposobów testowania systemów i szacowania ich niezawodności. Zajęcia koncentrują się także na metodach weryfikacji i walidacji oprogramowania w całym cyklu wytwórczym, w tym na wykonywaniu testów funkcjonalnych i strukturalnych na różnych poziomach(moduł, system). W trakcie zajęć studenci poznają również język UML.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

perspektywa przypadków użycia

A

opisuje zachowanie systemu z punku
widzenia użytkowników, analityków oraz osób wykonujących testy.
Zawiera zarówno elementy statyczne, opisane za pomocą diagramów
przypadków użycia, jak i dynamiczne, opisane za pomocą diagramów
przebiegu, kooperacji, stanów i czynności,

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

perspektywa projektowa

A

– uwzględnia opis klasy, interfejsów, sekwencji i
kooperacji, które razem składają się na opis danego problemu oraz jego
rozwiązanie. Elementy statyczne wyrażane są za pomocą diagramów klas i
obiektów, dynamiczne – za pomocą diagramów interakcji, stanów i
czynności

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

perspektywa procesowa

A

odzwierciedla mechanizm kreowania wątków i
procesów w systemie. Elementy statyczne i dynamiczne wyrażanie są za
pomocą diagramów klas, obiektów, interakcji, stanów i czynności, przy
czym główny nacisk kładzie się na klasy aktywne

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

perspektywa implementacyjna

A

– opisuje komponenty i artefakty, użyte do
scalenia i fizycznego udostępnienia systemu. Wiąże się ona z zarządzaniem
konfiguracją poszczególnych wersji systemu. Elementy statyczne wyrażanie
są za pomocą diagramów komponentów i artefaktów

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

perspektywa wdrożeniowa

A

opisuje węzły modelujące sprzęt, na którym
system będzie uruchomiony. Wiąże się ona głównie z rozmieszczeniem,
dostarczeniem i instalacją części systemu fizycznego. Aspekty statyczne
wyrażane są za pomocą diagramów wdrożenia

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Diagram przypadków użycia

A

W najprostszym ujęciu użytkownik zwany aktorem jest reprezentantem
świata zewnętrznego. Aktor komunikuje się z systemem poprzez zdefiniowane
w jego obrębie przypadki użycia. Przypadek użycia jest dobrze określoną interakcją między użytkownikiem, a systemem komputerowym. Odwzorowuje
wybrane (lub wszystkie) funkcje systemu w sposób jaki będą je widzieć przyszli
użytkownicy.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Dziedziczenie przypadku użycia

A

Na rysunku 1.6 pokazano najprostszy schemat dziedziczenia, w którym
jeden przypadek użycia (p2) dziedziczy zachowanie innego (p1) i może
dodawać lub modyfikować część tego zachowania. Przypadki użycia mogą
pozostawać w relacjach zależności opisujących tzw. przebiegi podstawowe lub/i
opcjonalne.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Przebieg podstawowy

A

W przebiegu podstawowym (sekwencyjnym) p1 jest przypadkiem bazowym i zawsze występuje jako pierwszy w kolejności działania: p1 zawsze włącza (lub używa) p2. Stereotyp «include» wskazuje na wspólny fragment
wielu przypadków użycia wykorzystywanych w przebiegach podstawowych, w
których wszystkie operacje powinny być zawsze wykonywane.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Przebieg opcjonalny

A

W przebiegu opcjonalnym (alternatywnym) przypadek występujący jako
pierwszy w kolejności działania (p1) jest czasami rozszerzany o p2 (inaczej
mówiąc p2 czasami rozszerza p1). Stereotyp «extend» ze strzałką prowadzoną od przypadku użycia, który czasami rozszerza inny przypadek użycia
opisuje operacje nie zawsze wykonywane (opcjonalne).

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Generalizacja

A

Generalizacja jest związkiem między klasą bazową (ang. base class), zwaną
przodkiem, a specyficznym jej rodzajem, zwanym potomkiem lub klasą
potomną lub pochodną (ang. derived class).
Generalizacja jest procesem przejmowania przez jeden obiekt właściwości
innego umożliwiając tym samym klasyfikowania obiektów. W UML opis klasy
najbardziej ogólnej (będącej na szczycie hierarchii generalizacji i niemającej
przodków) często uzupełnia się, dodając pod jej nazwą słowo {root}. Klasy
takie określa się mianem klas-korzeni. Opis klasy, która nie może mieć podklas,
często uzupełnia się słowem {leaf}. Generalizację oznacza
się linią ciągłą zakończoną niewypełnionym grotem skierowanym w kierunku
klasy bazowej (klasy pojęciowo niezależnej).

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

Zależność

A

Zależność jest związkiem strukturalnym wskazującym, że obiekty jednego
typu są funkcyjnie zależne od obiektów innego typu. Ogólnie powiemy, iż z
zależnością klas mamy do czynienia wówczas, gdy:
 na liście argumentów funkcji składowej klasy występuje nazwa innej klasy,
 na liście argumentów funkcji składowej klasy występuje wskaźnik do innej
klasy,
 na liście argumentów funkcji składowej klasy występuje odwołanie (referencja) do innej klasy,
 w ciele funkcji składowej klasy występuje zmienna, typu innej klasy,
 w ciele funkcji składowej klasy występuje wskaźnik do innej klasy,
 w ciele funkcji składowej klasy występuje odwołanie (referencja) do innej
klasy, Zależność między klasami dotyczy scenariusza, w którym jedna z klas w jakiś sposób używa obiektów innej klasy. Z reguły obiekty nie pamiętają o sobie (nie przechowują wzajemnych referencji, jak ma to miejsce w przypadku powiązania), a współpraca odbywa się jedynie na poziomie metod (np. metoda jednej z klas przyjmuje w argumencie referencję na obiekt innej klasy). Zależność oznacza się przerywaną linią z otwartym grotem. Grot powinien znajdować się po stronie klasy niezależnej (tej, której kod nie odwołuje się do drugiej klasy).
 typem powrotnym funkcji składowej klasy jest wskaźnik do innej klasy. Na diagramie UML zależność oznacza się
linią przerywaną zakończoną strzałką zwróconą w kierunku klasy niezależnej,

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

Powiązanie

A

Powiązanie jest związkiem strukturalnym wskazującym, że obiekty jednego
typu są połączone z obiektami innego typu poprzez atrybuty danych klas. Zwykłe powiązanie między dwoma klasami wskazuje, że można przejść z obiektu
jednej z tych klas do obiektu drugiej i na odwrót. Można jednak jawnie wskazać
kierunek nawigacji. W UML powiązanie z kierunkiem oznacza się linią ciągłą
zakończoną otwartym grotem skierowanym w stronę elementu logicznie niezależnego. W UML dostępnych jest sześć podstawowych dodatków do powiązań: nazwa, rola, liczebności przy każdym końcu związku, nawigacja, kwalifikacja oraz
różne rodzaje agregacji, w tym również agregacje z nawigacją. Na poziomie implementacji określa się tak głównie sytuacje, w których jedna z klas zawiera w swoich polach referencję/wskaźnik na obiekt innej klasy. Powiązania mogą być jedno- lub dwustronne. Oznacza się je ciągłą linią z otwartym grotem wskazującym na kierunek powiązania (lub po prostu linią w przypadku powiązania dwustronnego).

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

Agregacja prosta

A

Powiązanie dwóch klas jest związkiem strukturalnym elementów równorzędnych, podkreślającym sytuację, w której powiązane klasy znajdują się na
tym samym poziomie pojęciowym. Czasami jednak zachodzi potrzeba zapisania
związku rodzaju „całość-część”. W takiej relacji jedna klasa reprezentuje większy element stanowiący całość, zaś druga reprezentuje elementy mniejsze, czyli
części, z których składa się całość. Agregacja jest szczególnym rodzajem powiązania. Agregację prostą
oznaczamy za pomocą rombu po stronie całości, Również mówimy tutaj o formie relacji części do całości, jednak na znacznie luźniejszych zasadach. Obiekty obu klas mogą istnieć niezależnie od siebie. W praktyce zwykle wiąże się to z sytuacją, w której jedna z klas zawiera modyfikowalną kolekcję obiektów innej klasy. Agregację oznaczamy ciągłą linią z pustym rombem po stronie całości.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

Agregacja całkowita

A

Agregacja całkowita (kompozycja) to związek charakteryzujący się relacją
wyłącznej własności oraz jednością czasu życia całości i części. Proces konstrukcji całości musi być poprzedzony skonstruowaniem wszystkich jej elementów składowych (części nie mogą powstawać po utworzeniu całości, ale w
momencie gdy destrukcji podlega całość muszą zginąć wszystkie jej części). W
przypadku agregacji prostej część może zależeć od kilku całości, zaś w przypadku kompozycji tylko od jednej. Agregację całkowitą oznaczamy symbolem diamentu (wypełnionym rombem) umieszczonym po stronie całości. Tutaj mówimy o sytuacji, w której jedna z klas stanowi nieodłączną część składową innej. Czas życia obiektów obu klas jest ściśle powiązany - obiekty są tworzone i usuwane w tym samym czasie (stworzenie całości wymaga stworzenia części składowej; usunięcie całości z pamięci pociąga za sobą usunięcie części składowej). Kompozycję oznacza się za pomocą ciągłej linii z zamalowanym grotem w kształcie rombu. Grot znajduje się po stronie klasy reprezentującej całość.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

Liczebności powiązań

A

W praktyce, w trakcie modelowania różnych odmian powiązania zachodzi
potrzeba podania liczebności, czyli liczby (krotności) obiektów jaka może być
przyłączona przez jeden egzemplarz powiązania. W UML liczebność zapisywana jest w postaci wyrażenia, którego wartością jest dobrze określony przedział liczbowy lub pojedyncza liczba. Podając liczebność przy jednym końcu
powiązania wskazujemy ile obiektów jednej klasy powinno być połączonych z
każdym obiektem klasy znajdującej się na drugim końcu powiązania. Liczebność można ustalić poprzez wyszczególnienie żądanej liczby, np.: 5, przedziału
liczbowego 1..5 (jeden lub pięć), dowolnie wiele (0..) albo co najmniej dwa
(2..
)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
17
Q

Struktury i typy wyliczeniowe

A

Częściami składowymi modelu mogą być takie elementy, jak struktury i
typy wyliczeniowe. Elementy te z reguły będą agregować z klasami, do których
przekazują swoją zawartość w postaci parametrów. Na rysunku 1.28 pokazano
możliwe oznaczenia agregującej struktury oraz typu wyliczeniowego. Stereotyp «enumeration»

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
18
Q

Diagram czynności

A

Diagramy czynności wykorzystywane do modelowania operacji są bardzo
podobne do używanych dawniej schematów blokowych. Zawartość diagramów
czynności może być przedstawiona w sposób ogólny lub szczegółowy. Elementami szczegółowego diagramu czynności dla modelowanej operacji są pojedyncze kroki obliczeniowe, instrukcje decyzyjne oraz rozgałęzienia. Na diagramach
czynności wyróżniamy punkt startowy, który jest reprezentowany przez czarne
wypełnione koło oraz punkt końcowy przedstawiany w postaci kółka z czarna
kropką w środku.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
19
Q

Diagram obiektów

A

Obiekty na diagramach mogą tworzyć związki strukturowe, uczestnicząc w
wiązaniach (połączeniach) lub agregacjach. Wiązania są egzemplarzami powiązań i dlatego mogą być charakteryzowane poprzez podanie nazwy, kierunku
działania, roli i właściwego stereotypu. Wiązanie to odpowiednik powiązania
klas, występujący pomiędzy obiektami. Oznaczamy je za pomocą linii ciągłej,

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
20
Q

Diagram stanów

A

Diagramy stanów obrazują sposób, w jaki elementy modelu zmieniają w
czasie swoje własności w odpowiedzi na różnego rodzaju zdarzenia i interakcje.
Podstawowym elementem tego typu diagramów jest ikona stanu, która może być
przedstawiona w sposób uproszczony, poprzez podanie nazwy stanu, lub w sposób szczegółowy, z dodatkowym wyszczególnieniem wartości atrybutów oraz
podstawowych, aktualnie wykonywanych operacji i zdarzeń, Symbol stanu oznaczany jest prostokątem z zaokrąglonymi
narożnikami. Czarne kółko oznacza punkt wejścia do stanu, strzałka jest symbolem przejścia, zaś kółko z czarną kropką (tzw. bycze oko) oznacza punkt wyjścia ze stanu

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
21
Q

Diagramy sekwencji (przebiegu)

A

Diagramy klas są doskonałym narzędziem do prezentowania struktury
logicznej aplikacji. Są głównym elementem modeli opartych na UML, co sprawiło, że są bardzo popularne i powszechnie stosowane. Jednak ze stosowaniem
tego typu diagramów wiążą się poważne problemy:
 diagramy klas nie są wstanie wymodelować dynamicznego zachowania
programu – jego zmian w czasie,
 diagramy klas ilustrują jeden poziom hierarchii elementów składowych
oprogramowania. Dobrze zaprojektowany program powinien poddawać się
dekompozycji hierarchicznej. Klasy i obiekty są podstawą tej dekompozycji.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
22
Q

Operatory interakcji dla diagramu sekwencji

A

 alt (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 (optional) - reprezentujący instrukcję if (bez else),
 par (parallel) - nakazujący wykonać operacje równolegle,
 critical - blok atomowy, oznaczający obszar krytyczny o najwyższym
priorytecie wykonania. Obiekty nie mogą uczestniczyć w innych zadaniach.
 loop - definiujący pętlę typu for (o określonej z góry liczbie iteracji) lub
while (wykonywanej dopóki pewien warunek jest prawdziwy),
 break - wykonanie fragmentu i zakończenie interakcji,
 neg – funkcjonalności nieprawidłowe – wskazuje na wyjątki, które muszą
zostać obsłużone,
 strict – ścisłe uporządkowanie komunikatów,
 seq - słabe uporządkowanie dotyczy komunikatów z kilku lini mogących
wystąpić w dowolnym porządku,
 ignore – komunikaty nie mają istotnego wpływu na całość komunikacji,
 consider – istotność – komunikaty muszą zostać wykonane.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
23
Q

Techniki tworzenia diagramów sekwencji:

A

*ustalenie otoczenia (operacje, przypadki użycia, itp.)
*zidentyfikowanie obiektów biorących udział w operacji (od lewej umieszczane
są obiekty najważniejsze).
*narysowanie linii życia obiektów (jeśli są tworzone i niszczone - dodanie
odpowiednich komunikatów).
*dodanie komunikatu inicjującego, kolejne komunikaty pod nim (dodanie
parametrów do komunikatów (jeżeli jest to wymagane)).
*dodanie aktywacji (ośrodka sterowania).

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
24
Q

Diagramy sekwencji (przebiegu): Wskazówki

A

*nazwy aktorów są spójne z diagramami przypadków użycia.
*nazwy obiektów są spójne z diagramami klas.
*po lewej stronie umieszczaj aktorów zewnętrznych dla systemu.
*po prawej stronie umieszczaj aktorów, którzy są wewnętrzni dla systemu.
*po lewej stronie umieszczaj aktorów, którzy są systemami inicjującymi
interakcją z modelowanym.
*aktor może mieć taką samą nazwę jak klasa.
*jeżeli jest to niezbędne - umieszczaj komunikat niszczenia (destroy) obiektu.
*umieszczaj nazwę obiektu jeżeli występuje odwołanie do niej w komunikacie.

*umieszczaj nazwę obiektu jeżeli istnieje wiele obiektów tej samej klasy.
*jeżeli umieszczono kilka obiektów o tej samej nazwie, muszą pochodzić z
różnych klas.
*przy aktorach i obiektach/klasach umieszczaj stereotypy informujące o
warstwie systemu, w której one działają.
*umieszczaj tylko najważniejsze komunikaty.
*jeżeli komunikat jest wysyłany do obiektu/klasy, który jest implementowany
jako składnik oprogramowania (klasa, interfejs, komponent), nazywaj
komunikat z użyciem składni języka programowania.
*jeżeli komunikat wymaga przekazania parametrów, podaj ich nazwy, a nie
same typy danych.
*komunikaty wychodzące od aktorów, którzy są osobami lub organizacjami,
nazywaj w sposób opisowy (zdaniem).
*komunikaty przesyłane do klas (nie obiektów) implementowane są jako metody
statyczne
*przy włączaniu innych przypadków użycia do aktualnie modelowanego stosuj
komunikaty ze stereotypem «include»
*komunikat tworzący obiekt oznaczaj stereotypem «create»
*aktywacja nie jest obowiązkowym elementem linii życia, ale ułatwia
zrozumienie diagramu - podkreśla czas trwania danej operacji

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
25
Diagramy komunikacji (kooperacji)
Diagramy komunikacji (dawniej współpracy) umożliwiają pokazanie kolejności wysyłania komunikatów. Kolejność ta obrazowana jest poprzez numery umieszczane na początku etykiet zawierających nazwy i ew. listę argumentów (sygnaturę) odpowiedniego komunikatu. Oznaczenia komunikatów są podobne do stosowanych na diagramach sekwencji. Na rysunku 2.30 pokazano zestaw typowych symboli używanych podczas konstruowania diagramów komunikacji. W odróżnieniu od semantycznie bardzo podobnych diagramów przebiegu obrazujących interakcję obiektów w funkcji czasu, diagramy współpracy pokazują otoczenie i ogólną organizację obiektów uczestniczących w konkretnym typie interakcji (np. w wiązaniu). (stos obiektów, jeśli obiekt wielokrotny, można definiować kolejność wysyłania)
26
Diagramy współpracy
Diagramy współpracy pozwalają wymodelować interakcję zachodzącą między obiektami. W odróżnieniu od semantycznie bardzo podobnych diagramów przebiegu obrazujących interakcję obiektów w funkcji czasu, diagramy współpracy pokazują otoczenie i ogólną organizację obiektów uczestniczących w konkretnym typie interakcji (np. w powiązaniu).
27
Pakiety
Pakiety służą do grupowania i systematyzowania składników modelu o podobnym przeznaczeniu we wspólnej przestrzeni nazw. Wszystkie elementy pakietu muszą posiadać unikatowy identyfikator.
28
Diagramy wdrożenia
Diagramy wdrożenia służą do zobrazowania fizycznej architektury projektowanego systemu. Podstawowym elementem diagramu wdrożenia jest węzeł. W zależności od tego, co chcemy przekazać, można używać wielu oznaczeń dla węzłów. W przedstawieniu architektury sprzętowej podstawowymi są <>, który może wykonać kod programu lub komponentu, i urządzenie <>, które jest przyłączone do węzła i współpracuje z programem (np. drukarka). Do oznaczania konkretnego sprzętu stosuje się też takie stereotypy, jak: <>, <> czy <>. W trakcie modelowania architektury programowej podstawowymi stosowanymi stereotypami są <>, <>, <>, <> itp.
29
Diagramy harmonogramowania zadań
Diagramy harmonogramowania doskonale opisują interakcje obiektu stworzonego na bazie klasy w aspekcie czasu trwania sekwencji zmian wartości w czasie (stanu), jaki obiekt może przyjmować.
30
Model dojrzałości - 5 stopni
1. Początkowy - proces jest nieprzewidywalny i słabo kontrolowany. 2. Zarządzany jakościowo (powtarzalny) - organizacja reaguje dopiero, gdy wystąpią problemy (KPAs: zarządzanie wymaganiami, planowanie i śledzenie projektów tworzenia oprogramowania, zarządzanie dostawcami, zapewnienie jakości oprogramowania, zarządzanie konfiguracją). 3. Zdefiniowany - organizacja jest proaktywna (KPAs: organizacja zorientowana procesowo, definicja procesów, program treningów, zarządzanie integracją oprogramowania, inżynieria tworzenia oprogramowania, koordynacja międzygrupowa, przeglądy dokumentacji). 4. Zarządzany ilościowo - proces jest mierzalny i kontrolowany (KPAs: pomiary i analiza procesów, zarządzanie jakością, zapobieganie defektom). 5. Optymalizowany - wysiłki organizacji są ukierunkowane na ciągłe doskonalenie (KPAs: innowacje technologiczne, zarządzanie zmianami procesów).
31
SMD/SDLC
Ustandaryzowany zbiór procedur i procesów stosowany podczas rozwiązywania problemów wynikłych w trakcie projektowania i wdrażania oprogramowania traktowanego jako nieodłączna część określonego systemu informatycznego nazywamy metodyką rozwoju oprogramowania SDM (ang. Software Development Methodology) albo cyklem rozwoju systemów informatycznych SDLC (ang. System Development Life Cycle).
32
Metodyka
jest ustandaryzowanym dla wybranego obszaru wiedzy/nauki podejściem do rozwiązywania właściwych problemów. Metodyki abstrahują od merytorycznego kontekstu danego obszaru, a skupiają się na metodach realizacji zadań związanych z zarządzaniem projektem informatycznym.
33
Składniki metodyki
 formalizmy, modele opisu rzeczywistości (dziedziny problemu), jej statyki i dynamiki;  strukturalizacja procesu (cykl życia);  szczegółowe metody i techniki dokumentowania;  narzędzia;  wymagania merytoryczne wobec poszczególnych twórców;  kryteria oceny jakości projektu i systemu;  zasady planowania i kierowania rozwojem systemu.
34
Proces biznesowy lub metoda biznesowa
Seria powiązanych ze sobą działań lub zadań, które rozwiązują określony problem lub prowadzą do osiągnięcia określonego efektu. Wymagane cechy procesu biznesowego:  Definiowalność: Proces powinien mieć jasno zdefiniowane granice, wejście i wyjście.  Porządek: Proces powinien składać się z działań uporządkowanych według ich usytuowania w czasie i przestrzeni.  Klient: Musi być odbiorca rezultatów procesu.  Zwiększanie wartości: Transformacja w trakcie procesu powinna dawać odbiorcy dodatkową wartość.  Osadzenie: Proces nie może egzystować samodzielnie - musi być wbudowany w strukturę organizacyjną.  Wielofunkcyjność: Proces może, ale niekoniecznie musi, obejmować wiele funkcji.
35
Proces (model) kaskadowy
W opracowywaniu kaskadowym wynik jednego etapu staje się wejściem dla następnego, przy czym nie ma powrotu do poprzedniego etapu, tak jak pokazuje to rysunek 4.3. W procesie opracowywania kaskadowego wymagania są szczegółowo przedstawione a następnie te uzgodnione wymagania są przekazywane projektantowi. Projektant tworzy projekt, po czym przekazuje go programiście do implementacji. Z kolei programista udostępnia kod osobie zajmującej się kontrolą jakości, która sprawdza jego działanie i prezentuje go klientowi. Ścisła interpretacja modelu kaskadowego traktuje poszczególne fazy jako niezależne etapy realizacji przedsięwzięcia. Według tej interpretacji poszczególne etapy nie nakładają się na siebie (ich wykonanie przebiega sekwencyjnie - bez procesów iteracyjnych). W rzeczywistości proces ten ma charakter iteracyjny (w postaci powrotów do wcześniejszych faz modelu w przypadku wykrycia błędów powstałych w tychże fazach) i przyrostowy (w każdej fazie nawrotu następuje wzbogacenie modelu).
36
Proces (model) iteracyjny
Opracowywanie iteracyjne rozpoczyna się od koncepcji (idei) obrazującej system. W miarę poznawania szczegółów ta koncepcja podlega ewolucji – może się rozrastać. Gdy wymagania są już dobrze określone, rozpoczyna się faza projektowania. Pracując nad projektem zaczynamy tworzyć prototyp, a następnie wstępną implementację produktu. Zagadnienia pojawiające się podczas opracowywania programu wpływają na zmiany w projekcie i mogą nawet wpłynąć na zrozumienie wymagań. Co najważniejsze, projektujemy i implementujemy jedynie części pełnego produktu, powtarzając na przemian fazy projektowania i implementacji. Chociaż kroki tego procesu są naprzemiennie powtarzane, jednak bardzo trudno jest opisać je na rysunku w sposób cykliczny. Na diagramach przedstawiane są w sposób uproszczony, sekwencyjny: koncepcja początkowa, analiza, projektowanie, implementacja, testowanie, wdrożenie. W rzeczywistości podczas tworzenia pojedynczego produktu wiele razy przechodzimy przez każdy z tych etapów.
36
Główne etapy testowania
Analiza dokumentacji Testy systemowe Testy integracyjne Testy regresji
37
Prototypowanie - cele
wykrycie nieporozumień pomiędzy klientem a twórcami systemu wykrycie brakujących funkcji systemu wykrycie trudnych do zaimplementowania usług wykrycie braków w specyfikacji wymagań
38
GRAPPLE - 5 części
1. Identyfikacja problemu, zbieranie wymagań — na tym etapie identyfikujemy i opisujemy problem podlegający rozwiązaniu. 2. Analiza — jest procesem dogłębnego zrozumienia i zdefiniowania problemu. W fazie tej określamy środki, które będą potrzebne w celu rozwiązania problemu. Wynikiem fazy analizy jest specyfikacja systemu, zawierająca opis wszystkich (lub większości) jego funkcji. 3. Projektowanie — na tym etapie dopracowujemy szczegóły. Po fazie analizy znane są już wszystkie żądane funkcje systemu, teraz tworzymy szczegółowy projekt każdego rozwiązania, opisujemy zależności między modułami, sposoby wywoływania funkcji. W fazie tej projektujemy też wygląd formularzy, rozmieszczenie elementów sterujących, diagnozujemy możliwe przypadki użycia. 4. Kodowanie — tworzymy kod programu na podstawie wcześniej stworzonych diagramów klas, aktywności, interfejsu użytkownika itp. 5. Wdrożenie — aplikacja jest testowana w odpowiednim środowisku sprzętowo-programowym oraz integrowana ze współpracującymi systemami
39
XP – Programowanie ekstremalne
* Stawianie programisty, a nie analityka systemowego i projektanta, w centrum zainteresowania, * Korzystanie z wzorców architektonicznych, projektowych oraz idiomów, * Uznanie kodu za dokumentację projektu, * Ścisła współpraca programistów z klientem (przyszłym użytkownikiem).
40
XP czteroetapowy model przetwarzania informacji:
1. Określ cel, 2. Wykonaj działanie, 3. Odbierz informacje zwrotna, 4. Skoryguj działanie tak, aby kolejny efekt był bliższy sukcesowi
41
Test-Driven Development
Test-Driven Development jest techniką tworzenia oprogramowania polegającą na stworzeniu w pierwszej kolejności testu jednostkowego, a następnie implementacji kodu.
42
Główne zasady TDD
Najważniejszym aspektem TDD jest okres czasu, który dzielimy na trzy części: W pierwszej kolejności piszemy test, następnie implementujemy kod tak, aby poprawnie przechodził test, a na końcu wykonujemy refaktoryzację. Taki cykl nazywamy cyklem Red-Green-Refactor. Testy jednostkowe powinny by¢ pisane przez osoby implementujące funkcjonalności.
43
Agile
Wiele iteracji cyklu Planowanie-Analiza-Implementacja-Testowanie-Wdrożenie
44
.a. SCRUM
podejście holistyczne w wytwarzaniu innowacyjnych produktów. zestaw praktyk stosowanych w zwinnym zarządzaniu projektami, które kładą nacisk na codzienną komunikację i elastyczną ponowną ocenę planów, które są realizowane w krótkich, iteracyjnych fazach pracy.
45
MDA - cztery warstwy
- Computation-Independent Model (CIM) – `model dziedzinowy`, nie pozostający w ścisłej relacji z technologia informatyczną; model biznesowy – zbiór powiązanych ze sobą działań lub zadań, które rozwiązują określony problem lub prowadzą do osiągnięcia określonego efektu. model biznesowy często jest opisywany diagramami czynności. - Platform-Independent Model (PIM) – abstrakcyjna, niezależna od platformy systemowej i programistycznej specyfikacja systemu wykorzystująca metamodel; - Platform-Specific Model (PSM) – model odwzorowany na konkretne rozwiązania wybranej platformy systemowej i programistycznej; - Code – automatycznie generowany kod niskopoziomowy (np. kod Object Pascala, Javy, C#, C++).
46
Model-View-Controller
 Model (ang. Model) - element odpowiedzialny za obsługę warstwy opisującej dziedzinę problemu.  Widok (ang. View) - element odpowiedzialny za obsługę warstwy prezentacji.  Kontroler (ang. Controller) - element odpowiedzialny za obsługę żądań przychodzących od użytkowników.
47
MVC jako wzorzec złożony
Widok – Kompozyt: umożliwia tworzenie i pracę z zagnieżdżonymi widokami,  Model i Widok – Obserwator: umożliwia powiadamianie widoku przez model o zmianie stanu (aktywny model),  Widok i kontroler – Strategia: widok pozostawia obsługę reakcji na zdarzenia wejściowe w gestii konkretnych implementacji kontrolera.
48
Model-View-Presenter
Model jest modelem danych (z dziedziny problemu) jakie maja być prezentowane.  IView jest interfejsem widoku.  ViewImplementation czyli implementacja Widoku to ogólnie mówiąc jest tym co widzi użytkownik (interfejsem użytkownika).  Presenter jest łącznikiem pomiędzy Widokiem i Modelem. Kiedy zajdzie jakieś zdarzenie w Widoku (np. kliknięcie przycisku) to obsługa zdarzenia jest delegowana do Prezentera. Prezenter wykonuje odpowiednie operacje używając do tego celu danych z Modelu. Następnie odpowiednio uaktualnia Widok. Uogólniając – logika działania GUI (UI) zawiera się w Prezenterze.
49
Model-View-ViewModel
Wzorzec MVVM, jak składa się z 3 elementów:  Model,  View (widok),  ViewModel – model przystosowany do współpracy z widokiem.
50
Metodyki wytwarzania oprogramowania - typowe etapy
-analiza wymagań (- wizja systemu - wymagania funkcjonalne, wymagania wydajnościowe... - przypadki użycia, scenariusze... - FURPS+) - projektowanie (architektura, design) (- podejmowanie kluczowych decyzji - UML, modele, diagramy...) - development / implementacja - testowanie (- testy manualne - testy automatyczne) - wdrożenie / utrzymanie
51
Proces kaskadowy (waterfall)
- dzisiaj w zasadzie już tylko teoria - brzmi dobrze na papierze, nie sprawdza się w praktyce - nacisk na zakończenie jednego etapu przed rozpoczęciem kolejnego
52
Poces iteracyjny / ewolucyjny / przyrostowy
- programowanie zwinne (agile)
53
SCRUM
- małe zespoły - samo-organizacja - zespół musi posiadać wszystkie kompetencje potrzebne do zrealizowania projektu - brak typowego managera - zespół sam organizuje sobie pracę, rozdziela zadania itd. - sprinty (iteracje) - krótkie - tydzień, dwa, max cztery - planowanie sprintu (na początku iteracji) - daily standup (15 minut) - podsumowanie, retrospekcja... - product owner - scrum master - product backlog - sprint backlog
54
Realizacja
Strzałka również ma trójkątny, niezamalowany grot, ale linia jest przerywana. Grot znajduje się po stronie interfejsu.
55
SOLID
- Single Responsibility Priniciple - Open/Closed Principle - Liskov Substitution Principle - Interface Segregation Principle - Dependency Inversion Principle
56
Przypadek testowy
zbiór danych wejściowych, wstępnych warunków wykonania, oczekiwanych rezultatów i końcowych warunków wykonania opracowany w określonym celu lub dla warunku testowego, jak wykonanie pewnej ścieżki programu lub zweryfikowanie zgodności z konkretnym wymaganiem
57
RODZAJE TESTÓW (ze względu na fazę)
1. testy jednostkowe, 2. integracyjne, 3. funkcjonalne, 4. systemowe, 5. akceptacyjne.
58
Testy jednostkowe
są bezpośrednio związane z pisanym kodem – testują jego małe, niepodzielne fragmenty. O określeniu czym są w danym projekcie te moduły decyduje często sam programista, ponieważ to do jego obowiązków należy wykonywanie testów jednostkowych. W większości przypadków są to funkcje lub metody w klasach, rzadziej całe klasy.
59
Testy integracyjne
sprawdzają czy kilka modułów współgra ze sobą w kodzie w prawidłowy sposób i czy interakcje pomiędzy integrowanymi modułami (czasem systemami) nie skutkują nieprzewidzianymi błędami. Testowane są przeważnie interfejsy lub konfiguracja systemu.
60
Testy funkcjonalne
Mają na celu ocenę spełnienia wymagań określonych w trakcie projektowania systemu i poprawności działania poszczególnych funkcjonalności, jeszcze zanim staną się częścią całego systemu. Są one wykonywane w stylu testów czarnej skrzynki, - sprawdzają wyłącznie poprawność wyniku działania danej funkcjonalności; nie jest brany pod uwagę wewnętrzny mechanizm odpowiadający za daną funkcjonalność. Dla funkcjonalności działających jak maszyna stanów buduje się w dokumentacji tablice decyzyjne i na ich podstawie przeprowadza testy. Dla reszty określa się klasy równoważności (zbiory danych, których użycie skutkuje takim samym rezultatem) i wartości brzegowe.
61
Testy systemowe
przeprowadzane są już na kompletnym, w pełni zintegrowanym systemie i sprawdzają zgodność systemu z założeniami. Na tym etapie testuje się powstały system w rzeczywistym środowisku, bez symulatorów.
62
Testy akceptacyjne
to ostatni etap testów, często wykonywany przez klienta, który sprawdza czy produkt końcowy spełnia oczekiwania i wymagania. Na tym etapie wykonywane są scenariusze symulujące wykorzystanie systemu przez użytkownika końcowego. Rozróżniamy wśród nich w szczególności testy alfa i beta (ang. alpha testing, beta testing), gdzie w  testach alfa scenariusze są wykonywane przez testerów, którzy są częścią zespołu tworzącego oprogramowanie, natomiast w fazie  testów beta niezupełnie gotowy produkt jest oddawany w ręce prawdziwych użytkowników, którzy mogą zgłaszać błędy twórcom.
63
RODZAJE TESTÓW (Ze względu na rodzaj)
testy regresji testy wydajnościowe testy statystyczne testy bezpieczeństwa testy białej skrzynki testy czarnej skrzynki testy end-to-end testy dostępności testy eksploracyjne testy dymu testy poczytalności fuzz testing
64
Testy regresji
weryfikacja, czy po nowowprowadzonych do systemu zmianach (refactoring ?), inne jego elementy (do tej pory działające) nie uległy awarii. Skutkiem tych zmian może być błędne działanie innej funkcji programu, która w poprzednich wersjach działała prawidłowo. Wykonywanie testów regresji związane jest z ponownym uruchomieniem zestawu testów, które wcześniej kończyły się poprawnie.
65
testy wydajnościowe
mierzenie wydajności budowanego systemu w różnych kontekstach, obserwuje się między innymi pamięć, procesor, statystyki połączeń,
66
testy statystyczne
badanie niezawodności systemu na podstawie miar takich, jak: prawdopodobieństwo wystąpienia błędu, częstotliwość występowanie błędu, czas dostępności systemu,
67
testy bezpieczeństwa
zwane także testami penetracyjnymi, to symulowane ataki na testowany system,
68
testy białej skrzynk
– sposób testowania, w którym uwzględnia się znajomość wewnętrznego działania komponentów systemu (czasem oznacza to także znajomość kodu),
69
testy czarnej skrzynk
sposób testowania, w którym nie uwzględnia się wiedzy na temat wewnętrznego działania komponentów systemu, a bierze pod uwagę jedynie wynik testowania i stan lub działania początkowe,
70
testy end-to-end
wykonywanie pełnych scenariuszy przypadków użycia od początku do końca,
71
testy dostępności
testy dostępności treści dla osób niepełnosprawnych (przeprowadzane m.in. na aplikacjach webowych),
72
testy eksploracyjne
nieformalne testy oparte na doświadczeniu testera, niezwiązane z dokumentacją dotyczącą planowanych testów,
73
testy dymu
– typ testów regresji, polegający na wstępnych, powierzchownych testach ujawniających niepowodzenia na tyle kluczowe, aby odrzucić testowaną wersję oprogramowania,
74
testy poczytalności
– typ testów regresji, które są bardziej rozbudowane od testów dymu i sprawdzają szerszy zakres funkcjonalności, ale wciąż są płytsze niż typowe testy regresji – mają za zadanie sprawdzić czy warto poświęcać zasoby na dogłębne testowanie (np. przed wyborem wersji kandydującej do wydania),
75
fuzz testing
technika, w której dostarcza się nieprawidłowe lub losowe dane wejściowe i monitoruje pojawianie błędów, testy są zautomatyzowane,