Wstęp PRINCE2 (Projects IN Controlled Environments) Xtreme

Transkrypt

Wstęp PRINCE2 (Projects IN Controlled Environments) Xtreme
Wstęp
Inżynieria oprogramowania – zastosowanie systematycznego,
zdyscyplinowanego, ilościowego podejścia do rozwoju, eksploatacji i
utrzymania oprogramowania.
Siedem nawyków skutecznego działania (Dr Stephen Covey):
• Bądź proaktywny – twoje decyzje lub zaniechania mają bezpośredni
wpływ na życie – czyli to ty współdecydujesz o losach projektu;
• Zaczynaj mając koniec na względzie – jeśli zaczynasz działać, ustal
jasny cel, który chcesz osiągnąć;
• Aby rzeczy pierwsze były pierwsze – istotne jest dobre ustalenie
priorytetów - najpierw spełnienie założonej funkcjonalności;
• Myśl o obopólnej korzyści – myśl w kategoriach win-win – zastanów
się nad oczekiwaniami drugiej strony, aby wypracowane rozwiązanie
było satysfakcjonujące dla obu stron;
• Najpierw staraj się zrozumieć – zanim sam zaczniesz prosić o
zrozumienie. Poznanie potrzeb klienta pozwoli nawiązać z nim lepszy
poziom relacji;
• Dbaj o synergię - razem zdziałamy więcej niż osobno efekt szczerej i
konstruktywnej współpracy opartej na obopólnej korzyści;
• Ostrz piłę – cały czas rozwijaj się, udoskonalaj swoje umiejętności w
oparciu o doświadczenia.
PRINCE2 (Projects IN Controlled Environments)
Kryzys oprogramowania - LOOP
Late (późno), Over budget (przekroczony budżet), Overtime
(nadgodziny), Poor quality (kiepska jakość)
Za dużo papierów, Za dużo zebrań, Problem ze zmiennymi
wymaganiami, Formalne podejście do zmian
Xtreme Programming (XP)
Lekka (lightweight, agile) metodyka rozwoju oprogramowania:
• Najważniejsza komunikacja ustna
• Jedyne artefakty: kod + testy
• Żadnych nadgodzin
• Założenie „on-site customer” (klient zawsze przy tobie)
• Brak spisanej dokumentacji
• Zbyt krótka perspektywa planu (bez problemu oporów przed
zmianami)
Program tworzy się w iteracjach – planuje tylko następn. Efektem każdej
powinna być wersja programu spełniającą założenia dla danej iteracji.
Następnie planuje się co zrobić dalej.
Nie można z góry przewidzieć, jaka architektura będzie najlepsza dla
danego problemu. Dlatego należy ją tworzyć w miarę rozszerzania
programu.
Programiści piszą w parach: jedna osoba jest głównym koderem, druga
obserwuje pierwszą, zgłasza poprawki, zadaje pytania wyjaśniające.
Programiści programujący w parze zamieniają się rolami co kilkadziesiąt
minut. Ta technika umożliwia wyłapanie wielu błędów oraz wzajemną
naukę.
Brak w
nowej wersji
slajdów
XPrince (XP in contolled environments) :
Cykl życia wg PRINCE2:
Przyg. Zał.
Inicj. Proj.
Proj.
Etap3
Etap4
Manifest zwinności:
zwinno
Ludzie i komunikacja > procesy i narzędzia
Działaj
Działające
oprogramowanie > obsz.dokument.
Współpracuj
spółpracujący klient > negocjacja kontraktu
Reagowanie na zmiany > trzymanie się planu
+ Rozwiązane
Rozwi
problemy ważniejsze niż zaawansowane
opr
programowanie
Etap przedprojektowy
Jakie są
s motywacje biznesowe związane z projektem?
Czy warto inwestować
inwestowa w planowanie projektu? (metafora sita
projektów)
Etap powinien być
by możliwie krótki i tani
Wst
Wstępny
przypadek biznesowy:
• Kontekst (kto jest klientem?)
• Problemy i ich konsekwencje (budżet)
• Zarys rozwiązania – wiele podejść
• Ograniczenia biznesowe (np. deadline)
Wydanie 2
Przyrost 2.1
Etap1
Przyrost 2.2
Etap2
Zamk. Proj.
Cykl życia wg XPrince:
Przyg. Zał.
Inicj. Proj.
Architektura
Proj.
Wyd.2 *
Wyd.3 *
Zamk. Proj.
*wydania składają się z przyrostów + wdrożeń = XP
Wyd.1 *
Przygotowanie założeń (etap przedprojektowy)– Zlecający (sponsor),
problem i koncepcja rozwiązania, interfejsy (otoczenie systemu),
preferowane podejście
Inicjowanie projektu (etap rozpoczęcia) – Business Process
Reengineering, wymagania pozafunkcjonalne, role (aktorzy), zarys
wymagań funkcjonalnych, zarys architektury.
o Jakość przypadku testowego = prawdopodobieństwo znalezienia
dotychczas niewykrytego błędu
bł
o Według Rogera Pressmana testowanie pochłania 30-40%
30
ogólnej
pracochłonno projektu informatycznego.
pracochłonności
W przypadku
rzypadku systemów krytycznych (sterowania samolotem, praca
elektrowni jądrowej)
j
70-80%
• Przeglądy
o Przegląd:
Przeglą Ocena artefaktu (kodu) realizowana przez grupę osób
o Inspekcja: ---||--- przeprowadzona przez współpracowników i
kierowana przez moderatora
o Rola przeglądów:
przeg
zapewnienie jakości, przekazywanie informacji
• Refaktoryzacja - zmiana wewnętrznej struktury programu, mająca na
celu zwiększenie
zwię
czytelności kodu oraz zmniejszenie kosztów
dalszych modyfikacji bez zauważalnej
zauwa
zmiany jego działanie
Przykre zapachy:
zapachy długa metoda, duża klasa, powielony kod, długa lista
parametrów, zazdrość
zazdro o kod, zbitki danych, obsesja typów
podstawowych, instrukcja switch, spekulatywna ogólność,
ogólno
klasy danych.
Przykłady refaktoryzacji:
refaktoryzacji zmiana nazwy metody, klasy,
przemieszczenie metody,
metody przemieszczenie pola, wydzielenie klasy,
interfejsu, dodanie(usunięcie)
dodanie(usuni
parametru
Inspekcje zgodne z IEEE 1028
Kryteria jakości:
Terminowo niezawodność, bezpieczeństwo danych, funkcjonalność
Terminowość,
Zarządzanie ryzykiem w e. przedprojektowym
Zarz
• Identyfikacja czynników ryzyka – burza mózgów, gotowa lista
• Ocena – prawdopodobieństwo i wpływ
Planowanie:
Planowanie
Biznesowe czynniki ryzyka (EPIC)
E = business Environment impacting the project,
wpływ środowiska biznesowego na projekt
P = Problem to be solved
I = Investor willing to pay for solving the problem,
inwestor mający płacić za rozwiązanie problemu
C = business Constraints imposed on the project,
ograniczenia biznesowe związane z projektem
Czynniki ryzyka związane
zwi
z programowaniem (ETICS)
E = development Environment,
T = Technology to be applied,
I = Iterativeness of the proposed approach,
iteracyjność proponowanego podejścia
C = Crew (developers) that would solve the problem,
zespół mający rozwiązać problem
S = Subcontractor(s) supporting the developers
zleceniobiorcy wspomagający zespół wykonawczy
Ocenianie 10 – Bardzo prawdopodobne; 7 – Raczej możliwe; 5 –
Ocenianie:
Trudno powiedzieć;
powiedzie 3 – Raczej niemożliwe; 0 – Bardzo
nieprawdopodobne
Wymagania funkcjonalne
Przypadek użycia
u
= opisuje jak aktor (użytkownik lub urządzenie)
współpracuje z systemem aby osiągnąć
osi
dany cel.
Op procesu biznesowego (NIE MA SYSTEMU!) = opisuje jak aktor
Opis
(osoba lub urządzenie)
urz
współpracuje z innymi aktorami (ludźmi lub
urzą
urządzeniami),
aby osiągnąć dany cel.
Wzorce przypadków użycia
u
• Przypadki użycia służą do opisu zachowania, a nie UI
• Opis jasno pokazuje jaki aktor wykonuje akcję i co osiąga
• Przypadek składa się z 3 do 9 kroków
• Zapisuj w sposób neutralny technologicznie = bez szczegółów
technicznych, np. nazw baz danych, języka programowania…
PRINCE2 (zespół zarządzania):
Cykl życia wg XP
Wydanie 1
Przyrost 1.1
Przyrost 1.2
Architektura – najtrudniejsze przypadki użycia, podejścia, opis
Archi
najwa
najważniejszych
elementów ( protokoły, sch. baz danych), przykłady
rozwi
rozwiązań
- fragmenty kodu.
Struktura SRS (IEEE 830) – Software Requirements Specification:
1. Wprowadzenie
1.1 Cel dokumentu
1.2 Zakres produktu
1.3 Definicje, akronimy, skróty
1.4 Odwołania do literatury
1.5 Omówienie dokumentu
2. Ogólny opis produktu
2.1 Kontekst funkcjonowania
2.2 Charakterystyka użytkowników
2.3 Główne funkcje produktu
2.4 Ograniczenia
2.5 Założenia i zależności
3. Wymagania funkcjonalne
4. Wymagania pozafunkcjonalne
4.1 Dokładność
4.2 Bezpieczeństwo
4.3 Tolerowanie uszkodzeń
4.4 Odtwarzalność
4.5 Charakterystyka czasowa
Dodatki
Indek
Indeks
Sekretarz i moderator – może to być 1 osoba
1. Omówienie (cały zespół)
2. Przygotowanie (indywidualnie)
3. Inspekcja (cały zespół) Pełna akceptacja / Akceptacja warunkowa
/Powtórna
Powtórna inspekcja
4. Naprawa
5. Sprawdzenie
Inspekcje Fagana
Specyfikacje zewnętrzne
zewn
(funkcje)
Specyfikacje wewnętrzne
wewn
(moduł) – I0
Specyfikacje logiki przetwarzania – I1 inspekcja proj.
Kodowanie (logika) – I2 – inspekcja kodu
Testowanie jednostkowe
Projekt
KOD
Test funkcji (zewn.), składnika, systemu
TEST
I1 – inspekcje projektu
I2 – inspekcje kodu
Omówienie
500 loc/h
Przygotowanie
100 loc/h
Niepotrzebne
125 loc/h
Inspekcja
130 loc/h
150 loc/h
Naprawa
50 loc/h
60 loc/h
Sprawdzenie
-
-
Spotkanie inspekcyjne <= 2h, 1-2 spotkania dziennie
Lista kontrolna dla inspekcji projektu (Fagana)
• Czy wszystkie stałe są
s zdefiniowane?
• Czy w trakcie manipulacji kolejką
kolejk może wystąpić przerwanie? Jeśli
tak, czy kolejka jest ujęta
uj w region krytyczny?
• Czy rejestry są
s odtwarzane przy wyściu?
• Czy wszystkie liczniki są
s odpowiednio inicjowane?
• Czy sąą literały numeryczne, które powinny by
być zastąpione stałymi
symbolicznymi?
• Czy wszystkie bloki na schemacie są potrzebne?
Słabe strony inspekcji:
inspekcji brak przygotowania, duże koszty.
Z zebranych przez Fagana danych wynika, że wprowadzenie inspekcji
projektu (I1) pozwoliło zaoszczędzić średnio 94 godziny na każdym
tysiącu
cu linii kodu. Inspekcje kodu (I2) dały oszczędności w wysokości
51 godzin na tysiąc
tysi linii kodu. Natomiast inspekcje przeprowadzane po
testach jednostkowych spowodowały dodatkowe obciążenie
obci
w wysokości
20 godzin na tysiąc
tysi linii kodu - nie warto prowadzić inspekcji po
testach jednostkowych.
Szacowanie liczby defektów
Wstrzykiwanie defektów:
Dodano n defektów, test wykrył m+k defektów, z czego k wcześniej
wstrzykniętych. Szacowana liczba defektów to m*n/k
Kontrola jakości
2-krotne
krotne łowienie:
• danych jest dwóch recenzentów (gdy więcej
wi
jako A rozpatrujemy,
tego który znalazł najwięcej
najwi
błędów, jako B sumarycznie resztę
recenzentów)
o A – liczba defektów znaleziona przez pierwszego
o B – ---||----przez drugiego
o C – liczebność
liczebno części wspólnej defektów wykrytych przez obu
recenzentów
o Liczba
iczba defektów (A*B)/C
Anomalia – sytuacja różna od oczekiwanej, wynikającej ze specyfikacji,
standardów, lub czyjegoś
czyjego doświadczenia.
Wymagania pozafunkcjonalne, ISO 9126
Jakość = zgodność z wymaganiami =
Jako
• Zarządzanie konfiguracją
• Testowanie
o Wykonanie programu celem znalezienia błędu
o Udany test wykrywa jeszcze niewykryty błąd
Wymagania pozafunkcjonalne, nie są
s bezpośrednio związane z
funkcjami
unkcjami aplikacji. Opisują
Opisuj własności (cechy, charakterystyki)
oprogramowania takie jak wydajność
wydajno (czas odpowiedzi systemu), czy
niezawodność (czas bezawaryjnej pracy). Wymagania pozafunkcjonalne
mogą również
równie definiować ograniczenia systemu, takie jak przepustowość
urządzeńń sieciowych lub peryferyjnych lub specyfikacja formatu danych
przetwarzan
zanych przez aplikację.
Produkty komercyjne,
komercyjne Przypadki użycia, Scenariusze zmian
Czynniki ryzyka)
ryzyka
• Analiza
o Identyfikacja stosowanych podejść
podej architektonicznych
o Utworzenie drzewa atrybutów jakościowych
jako
o Analiza podejść
podej architektonicznych
• Testowanie
o Burza mózgów nt. scenariuszy
o Powtórna analiza podejść
podej architektonicznych
• Raportowanie
FUNKCJONALNOŚĆ: (czyli zbiór atrybutów opisujących zestaw
funkcji oprogramowania i ich właściwości. Przez funkcje rozumiane są
te, które spełniają wyrażone wprost lub nie wprost potrzeby)
Odpowiedniość (działanie systemu odpowiednie do wyspecyfikowanych
wymagań i dające sensowne wyniki) , dokładność (ISO), Interoperacyjność (zdolność systemu do komunikowania się z innymi
podłączonymi do niego systemami) , bezpieczeństwo(ISO)
(zapobieganie wyciekowi lub utracie ważnych danych i ochrona przed
nieuprawnionym dostępem), zgodność funkcjonalności (trzymanie się
standardów, konwencji i innych przepisów prawnych).
NIEZAWODNOŚĆ (czyli zbiór atrybutów opisujących zdolność
oprogramowania do spełnienia i utrzymania określonych wymagań, co
do jego stabilności działania, przy spełnieniu określonych warunków
oraz w ściśle określonych ramach czasowych)
Dojrzałość, Tolerancja uszkodzeń (ISO), odtwarzalność (ISO).
UŻYTECZNOŚĆ (czyli zbiór atrybutów opisujących nakład pracy
niezbędny do swobodnego posługiwania się oprogramowaniem oraz
indywidualną ocenę posługiwania się oprogramowaniem przez
zdefiniowaną lub wyrażoną nie wprost grupę użytkowników)
Planowanie jakości:
jako
3h, planowanie projektu?, dopracowanie: 3h,
Zdefiniowanie: 2h, Założenie
Zało
2h, Scalenie 4h.
Planowanie wg PRINCE2
Zrozumiałość, łatwość nauczenia się, łatwość operowania, atrakcyjność.
WYDAJNOŚĆ (czyli zbiór atrybutów opisujących powiązania między
poziomem wydajności oprogramowania, a wykorzystywanymi zasobami
przy spełnieniu określonych warunków)
Charakterystyka czasowa (ISO), zużycie zasobów (ISO)
ŁATWOŚĆ UTRZYMANIA (czyli zbiór atrybutów opisujących nakład
pracy niezbędny do wprowadzenia zmian do oprogramowania)
Drzewo użyteczności
użyteczno
Nazwa (Waż
Ważność, Trudność) [L,M,H]
Punkt wrażliwości
wraż
= właściwość o podstawowym znaczeniu dla
atrybutu jakościowego
jako
Punkt kompromisu = punkt wrażliwości dla więcej niż jednego atrybutu
jakościowego
ciowego
Selekcja scenariuszy:
Każdy
dy uczestnik ma N głosów, gdzie N = 30% lliczby scenariuszy. Głosy
przydziela się
si dowolnie (od 0 do N na dany scenariusz, byle suma <= N).
Głosuje się jawnie. Do dalszej analizy przechodzi K pierwszych (np. 5)
scenariuszy w sensie liczby oddanych na nie głosów.
Testy akceptacyjne i odbiór oprogramowania
Testowanie oprogramowania jest wykonaniem kodu dla kombinacji
danych wejściowych
wejś
i stanów w celu wykrycia błędów
Łatwość analizy (ISO), łatwość zmiany (ISO), stabilność, łatwość
testowania
PRZENOŚNOŚĆ (czyli zbiór atrybutów opisujących zdolność
oprogramowania do przenoszenia między różnymi
środowiskami/platformami)
DECYZJE ARCHITEKTONICZNE
Decyzje związane
zwi
z wydajnością:
• Typ zasobu •Szeregowanie zadań
zada • Synchronizacja •Równoważenie
obciążenia • Przydzielone zasoby
Decyzje wpływające
wpływaj
na dostępność:
•Nadmiarowo sprzętowa •Nadmiarowość programowa •Orzekanie
•Nadmiarowość
•Ponawianie •Układ alarmowy
Decyzje dotyczące
dotycz
modyfikowalności:
•Pośredniość
redniość (mediator) •Enkapsulacja (interfejs)
Planowanie w XPrince
Łatwość adaptacji (ISO), łatwość instalacji (ISO), współistnienie (ISO),
łatwość zamiany (ISO).
Szacowanie pracochłonności
Klasyfikacja metod:
• Metody ad-hoc
o Metoda delficka
• Metody oparte na modelach
o Metody ogólne
Metoda wartości rozmytych
Metoda punktów funkcyjnych
Metoda COCOMOII
Metoda punktów przypadków użycia
o Metody szczegółowe
Metoda probe
Architektura oprogramowania
Metoda wartości rozmytych (Putnam ’92). 1. Potrzebujemy oszacowań
rozmiaru, które są dokładne, ale nie koniecznie precyzyjne.
2. Odnieśmy oszacowanie do danych historycznych:
Mając dany najmniejszy (S) i największy (L) rozmiar, znajdź granice
zakresów A,B,C,D takie, że S,A,B,C,D,L tworzą postęp geometryczny:
A/S = B/A = … = L/D = p => L/S = p^5 => p = (L/S)^0,2
(częściowe podobieństwo do metody probe)
Metoda punktów funkcyjnych (Albreht ’79)
Podstawowe funkcje: Wejścia, Wyjścia (raport, ekran, komunikat o
błędzie – pojedyncze dane w raporcie nie są liczone osobno) , Zapytania
(bezpośrednie wejście stuktujące bezpośrednim wyjściem (zapytanie nie
może modyfikować żadnego pliku wewnętrznego (stanu)), Wewn. pliki
danych, Zewn. Interfejsy.
Punkty funkcyjne = Wstępne oszacowanie*Mnożnik złożoności
Mnożnik złożoności 0,65 .. 1,35
Mnożnik złożoności = 0,65 + 0,01* Współczynniki wpływu
14 współczynników wpływu: 0-5 pkt każdy;
Ocena współczynników: 0 – brak wpływu, 1 – Bardzo słaby, 2 – raczej
słaby; 3 – średni; 4 – istotny; 5 – zasadniczy
Współczynniki wpływu:
• Czy jest wymagane przesyłanie danych?
• Czy są funkcje przetwarzania rozproszonego?
• Czy wydajność ma kluczowe znaczenie?
• Czy system ma działać w mocno obciążonym środowisku
operacyjnym?
• Czy system wymaga wprowadzania danych on-line?
• Czy wewnętrzne przetwarzanie jest złożone?
• Czy kod ma być przystosowany do ponownego użycia?
Wpływ wyboru języka programowania na liczbę linii kodu / punkty
funkcyjne (Asm 320, C 128, Cobol 105, Fortran 105, Pascal 90, Ada 70,
Języki obiektowe 30, Arkusze kalkulacyjne 6)
Planowanie projektu
Poziomy: 1. Plan projektu
2. Plan wydania
3. Plan przyrostu
Struktura obejmująca:
obejmuj
Komponenty, widoczne z zewnątrz ich
właś
właściwości
i zależności między tymi komponentami
Style architektoniczne:
architektoniczne
• Architektura warstwowa
• Architektura pierścieniowa
• Klient-serwer
• Rozproszony klient-serwer
• Sekwencje filtrów
• Architektura potokowa
• Hurtownia danych
• Architektura tablicowa (współdzielone dane)
Architektura oprogramowania:
oprogramowania jest środkiem komunikacji między
udziałowcami projektu, prezentuje decyzje projektowe na wstępnych
wst
etapach rozwoju opr., jest abstrakcyjnym opisem systemu, który może
mo
być powtórnie użyty
Perspe
Perspektywy
architektury:
• Logiczna,
• Współbieżności
• Implementacyjna
• Fizyczna
• Przypadków użycia
Model zorientowany na usługi (SOA) i WebServices: powtórne użycie
i interoperacyjność;
interoperacyjno założenie: wszystko jest usługą: łącznie z
logowaniem i transformacją
transformacj danych. zalety krótszy czas dostawy na
rynek, silniejsze zorientowanie biznesu na wzrost, zredukowane
koszty, zredukowane ryzyko biznesowe
Pojęcie SOA obejmuje zestaw metod organizacyjnych i technicznych
Poję
mają na celu lepsze powiązanie biznesowej strony organizacji z jej
mający
zasobami informatycznymi. Mianem usługi określa się tu każdy element
oprogramowania, mogący
mog
działać niezależnie od innych oraz posiadający
zdefiniowany interfejs, za
z pomocą którego udostępnia realizowane
funkcje.
Analiza architektury oprogramowania, ATAM
ATAM=Architectural Trade-offs
Trade
Analysis Method
• Prezentacja
o Metoda ATAM (przedstawienie metody)
o Czynniki biznesowe (Wizja przedsięwzięcia, główni udziałowcy,
Najważniejsze funkcje, Ograniczenia, Kryteria jakości)
o Architektura (Ograniczenia tech. i kontekst, Perspektywy
architektoniczne •• Fizyczna ••Logiczna ••Implementacyjna ••
Współbieżności ••Kodu. Zastosowane podejścia architektoniczne,
Zasady testowania:
• Wszystkie testy powinny być
by powiązane z wymaganiami użytkownika
• Testowanie należy
nale planować na długo przed jego rozpoczęciem
• W przypadku testowania obowiązuje
obowi
zasada Pareto (80/20)
• Testowanie należy
nale przeprowadzać „od dołu do góry”
• Pewne testy powinny zostać
zosta wykonane przez niezależną, trzecią,
stronę
• Testowanie wyczerpujące
wyczerpuj
nie jest możliwe
Testy akceptacyjne:
akceptacyjne
Testy strukturalne – znane są także jako testy białej lub szklanej
skrzynki.. Polegają
Polegaj na testowaniu programu poprzez podawanie na
wejściu
ciu takich danych, aby program przeszedł przez ka
każdą
zaimplementowan ścieżkę. Zasady te są definiowane przez kryteria
zaimplementowaną
pokrycia
krycia wszystkich pętli
p
oraz wszystkich warunków. Testy białej
skrzynki nie są
s w stanie wykazać braku implementacji funkcji, którą
powinien posiadać
posiada system docelowy. Sprawdzają jednak dokładnie
operacje wykonywane w zaimplementowanych metodach.
Testy funkcjonalne
funk
znane są także jako testy czarnej skrzynki,
ponieważż osoba testująca
testuj
nie ma dostępu do informacji na temat budowy
programu, który testuje. Często
Cz
testy takie są wykonywane przez inne
osoby niżż programiści
programi tworzący program. Nierzadko są to osoby nie
posiadające
ące wiedzy z zakresu programowania. Osoba testująca
testuj
program
nie opiera danych testowych na budowie wewnętrznej
wewn
programu, lecz na
założeniach
eniach funkcjonalnych, jakie powinien spełniać
spełnia program zgodnie z
dokumentacj
dokumentacją.
Czynności
ści testowania:
• Zidentyfikuj
Zidentyfik warunki testowania (co testować?) i priorytety
• Zaprojektuj scenariusze testowe (jak testować)
testowa
• Zbuduj przypadki testowe (skrypty, dane)
• Przeprowadź
Przeprowad testy
• Porównaj faktyczne wyniki z oczekiwanymi
Atrybuty przypadków testowych:
• Na ile skuteczny w wykrywaniu testów?
• Na ile reprezentatywny? (im większa
wi
reprezentatywność, tym mniej
przypadków potrzeba)
• Na ile ekonomiczny?
• Na ile modyfikowalny (pielęgnacja)
(piel

Podobne dokumenty