08 technologia programowaniaid 7522


Technologia
programowania
Wojciech Sobieski
Olsztyn 2007-2012
Technologia programowania
Technologia programowania - nauka o procesach wytwarzania
systemów informatycznych (programów komputerowych).
Technologia programowania
W zakres technologii programowania wchodzą:

sposoby prowadzenia projektów informatycznych,

metody analizy i projektowania systemów,

techniki planowania, szacowania kosztów,

harmonogramowania i monitorowania projektów informatycznych,

techniki zwiększania niezawodności oprogramowania,

sposoby testowania systemów i szacowania niezawodności,

sposoby przygotowania dokumentacji technicznej i użytkowej,

procedury kontroli jakości,

metody redukcji kosztów konserwacji,

techniki pracy zespołowej.
Technologia programowania
Program komputerowy - ciąg instrukcji do wykonania dla komputera.
Można też powiedzieć, że program to algorytm zapisany w języku
programowania. Program może występować w dwóch postaciach: jako
program wykonywalny (czyli zapisany w języku maszynowym) albo jako
kod zródłowy, czyli postać zrozumiała dla programisty.
Fazy powstawania programów
Fazy powstawania programu komputerowego:
1. Określanie wymagań (specyfikacja),
2. Wybór języka programowania,
3. Tworzenie algorytmu,
4. Projektowanie systemu,
5. Implementacja,
6. Scalanie systemu,
7. Testy końcowe,
8. Tworzenie dokumentacji użytkowej,
9. Konserwacja systemu.
Fazy powstawania programów
1. Określanie wymagań  służy do sprecyzowania potrzeb. Na tym
etapie formułuje się wyobrażenia o programie i jego działaniu oraz
precyzuje wymagania. Na podstawie wymagań tworzona jest tzw.
specyfikacja projektu, czyli zakres czynności, jaki dany program ma
wykonywać. Jeżeli program jest tworzony na zamówienie, należy w
pewnym momencie zażądać zamrożenia specyfikacji  w przeciwnym
razie klient może zażądać zmian (nawet po napisaniu programu), a
wykonawca będzie to musiał zrobić nieodpłatnie. Czasami nawet mała
zmiana wymagań może w decydujący sposób wpłynąć na sposób
realizacji zamówienia, co może nawet doprowadzić do konieczności
rozpoczęcia praktycznie od nowa.
Fazy powstawania programów
Tworzenie wymagań możliwe jest to na kilka sposobów:

wywiad strukturalny  polega na zadawaniu wcześniej

opracowanej listy pytań,

wywiad swobodny  polega na zadawaniu dowolnych

pytań i notowaniu odpowiedzi,

ankieta wysyłana do dużej liczby potencjalnych klientów,

analiza formularzy i innych dokumentów klienta,

analiza cyklu pracy i wykonywanych czynności,

analiza scenariuszy używania systemu,

konstrukcja prototypu.
Fazy powstawania programów
Dokumentacja fazy określania wymagań powinna zawierać:

wprowadzenie: zakres systemu, cele i konteksty jego używania,

opis ewolucji systemu: przewidywane zmiany w systemie,

specyfikację wymagań funkcjonalnych: jakie czynności i operacje
system powinien wykonywać,

specyfikację wymagań niefunkcjonalnych: przy jakich
ograniczeniach system powinien powstać i działać.

opis modelu systemu lub jego prototypu,

opis wymagań sprzętowych,

słownik zawierający wyjaśnienia używanych
w dokumentacji pojęć fachowych i informatycznych.
Fazy powstawania programów
Jeżeli program komputerowy powstaje na użytek programisty, faza
określania wymagań może zostać skrócona do minimum.
Nie powinno się jednak pomijać fazy dokumentacji  powinna oba być
prowadzona przynajmniej w zakresie podstawowym, umożliwiającym
rozwój i modyfikację programu nawet po wielu latach.
Fazy powstawania programów
2. Wybór języka programowania  zależy głównie od przeznaczenia
aplikacji. Przeważnie istnieje przynajmniej kilka języków
programowania nadających się budowy systemu spełniającego
wymagania.
Wybór języka programowania może być dokonany przed lub po
stworzeniu algorytmu. W pierwszym przypadku dobór języka może w
znaczny sposób wpłynąć na tok rozumowania i zdeterminować
budowę algorytmu.
Fazy powstawania programów
Wybór języka programowania może być:

narzucony przez zamawiającego,

pozostawiony woli wykonawcy  musi on wówczas uwzględnić:
"
dziedzinę aplikacji,
"
doświadczenie zespołu programistów,
"
posiadane narzędzia,
"
dostępność gotowych
modułów i bibliotek,
"
potrzeby innych prowadzonych
równolegle prac.
Fazy powstawania programów
3. Tworzenie algorytmu - jest to jeden z najważniejszych etapów
projektowania, wymaga on od programisty (bądz projektanta)
starannego przemyślenia i przygotowania. Nie należy przystępować do
pisania programu nie mając wyobrażenia o jego budowie. Takie
postępowanie wydłuży zapewne czas realizacji projektu, zwiększy
prawdopodobieństwo wystąpienia błędów oraz nie daje gwarancji
optymalności rozwiązań. Dużych i rozbudowanych programów
praktycznie nie da się napisać bez odpowiednich przygotowań. Jeżeli to
jest tylko możliwe należy korzystać z istniejących i sprawdzonych
algorytmów.
Fazy powstawania programów
4. Projektowanie systemu  służy do stworzenia szkieletu kodu
zródłowego (systemu).
Techniki projektowania:

projektowanie strukturalne:
"
zorientowane na akcję,
"
zorientowane na dane,

projektowanie obiektowe.
Fazy powstawania programów
Faza projektowania składa się z następujących etapów:

projektowanie architektury systemu,

organizacja danych i ich nazewnictwa,

szczegółowe projektowanie modułów,

weryfikacja i testowanie.
Fazy powstawania programów
5. Implementacja  jest to właściwa faza budowy programu. Małe
systemy informatyczne mogą być realizowane przez jednego
programistę. Systemy większe wymagają utworzenia zespołu bądz też
grupy zespołów programistycznych.
Fazy powstawania programów
6. Scalanie systemu  w przypadku tworzenia aplikacji przez zespół
programistów należy połączyć wszystkie moduły w jedną całość.
Rozróżnia się trzy podstawowe techniki integracji systemu
informatycznego:

metoda zstępująca  najpierw integrowane są moduły sterujące, a
pózniej moduły wykonawcze,

metoda wstępująca  najpierw integrowane są moduły wykonawcze
a pózniej sterujące,

metoda mieszana  moduły sterujące
integrowane są metodą zstępującą,
a wykonawcze  wstępującą.
Fazy powstawania programów
Model Zalety Wady
Brak izolacji błędów.
Integracja całości - Poważne błędy projektowe
wykrywane są bardzo pózno.
Izolacja błędów.
Moduły, które mogą być powtórnie
Metoda zstępująca Poważne błędy projektowe są
użyte nie są w pełni przetestowane.
wykrywane bardzo wcześnie.
Izolacja błędów.
Poważne błędy projektowe są
Metoda wstępująca Moduły, które mogą być powtórnie
wykrywane bardzo pózno.
użyte są dobrze przetestowane.
Izolacja błędów.
Poważne błędy projektowe są
Metoda mieszana wykrywane bardzo wcześnie. -
Moduły, które mogą być powtórnie
użyte są dobrze przetestowane.
Porównanie metod integracji systemu.
Fazy powstawania programów
7. Testy końcowe  służą do ostatecznego potwierdzenia
poprawności systemu. Rozróżnia się następujące etapy testów:

testowanie przez Dział Kontroli Jakości,

alfa-testy przez wybraną (najczęściej małą) grupę użytkowników,

beta-testy przez wybraną (większą) grupę użytkowników,

testy akceptacji (na rzeczywistych danych), wykonywane przez
odbiorcę.
Fazy powstawania programów
Kryteria wykonywania testów:

użyteczność aplikacji (łatwość użycia, użyteczność oferowanych
funkcji, opłacalność),

solidność (częstość krytycznych awarii systemu, czas podniesienia
systemu po awarii, czas odbudowy systemu po awarii),

odporność (na zmieniające się warunki otoczenia, błędne dane,
nieoczekiwane reakcje użytkowników),

efektywność (szybkość, czas reakcji, zajętość pamięci),

poprawność (zgodność ze specyfikacją).
Fazy powstawania programów
Metody wykonywania testów:

test  czarnej skrzynki - odbywa się na poziomie interfejsu,

test  szklanej skrzynki - odbywa się na poziomie kodu
zródłowego.
Fazy powstawania programów
8. Dokumentacja użytkowa  powinna zawierać następujące
elementy:

opis funkcjonalny  opis przeznaczenia oraz głównych możliwości
programu,

podręcznik użytkownika  opis przeznaczony dla typowych
użytkowników, powinien zawierać:
"
sposoby uruchamiania oraz kończenia pracy z systemem,
"
sposoby realizacji podstawowych funkcji systemu,
"
metody obsługi błędnych sytuacji,
"
sposoby korzystania z systemu pomocy,
"
kompletny przykład korzystania z systemu.
Fazy powstawania programów

kompletny opis systemu  część przeznaczona dla doświadczonych
użytkowników, powinien zawierać:
"
szczegółowy opis wszystkich funkcji systemu,
"
informacje o sposobach wywoływania tych funkcji,
"
opisy formatu danych,
"
opisy błędów, które mogą pojawić się w trakcie pracy z
systemem,
"
informacje o wszelkich ograniczeniach dotyczących np. zakresu
danych.
Fazy powstawania programów

opis instalacji  przeznaczony dla administratorów systemu.
Powinien zawierać opis procedury instalacyjnej i konfiguracji
programu,

podręcznik administratora systemu  zawierający opis możliwości
modyfikacji ustawień systemu oraz sposoby udostępniania go
użytkownikom końcowych.
Fazy powstawania programów
Na jakość dokumentacji mają wpływ następujące czynniki:

struktura podręcznika,

zachowanie standardów,

sposób pisania
(stosowanie formy aktywnej, poprawność gramatyczna i
ortograficzna, krótkie zdania, oszczędność sów, precyzyjna
definicja używanych terminów, powtarzanie trudnych
opisów, stosowanie tytułów i podtytułów sekcji, wyliczeń i
wyróżnień, zrozumiałe odwołania do innych rozdziałów).
Fazy powstawania programów
9. Konserwacja systemu  zawiera zespół czynności, dokonywanych
po stworzeniu aplikacji, obejmujących:

poprawianie błędów,

udoskonalanie produktu,

dostosowywanie do nowych warunków.
Fazy powstawania programów
Koszty konserwacji są często bardzo duże  do 2/3 nakładów
finansowych na aplikacje. Wynika to z następujących przyczyn:

poprawki mogą być przyczyną nowych błędów,

udoskonalenie wymaga przejścia przez wszystkie fazy produkcji i
dokonania zmian w specyfikacji, projekcie i dokumentacji,

poprawione powinny być wszystkie dokumenty, w których znajdują
się informacje dotyczące zmienionych fragmentów produktu.
Fazy powstawania programów
Zarządzanie fazą konserwacji:

raport o błędzie  formalna metoda dokumentacji wykrytych przez
użytkowników błędów systemu  musi zawierać informacje
wystarczające do odtworzenia błędu,

błędy krytyczne muszą być poprawiane natychmiast, dla
pozostałych powinny zostać opisane przyczyny błędu i ewentualne
metody ich obejścia,

opisane raporty o błędach wraz z datą ich poprawienia powinny być
udostępniane wszystkim użytkownikom,

błędy niekrytyczne powinny być poprawiane paczkami  obniża to
koszty testowania i modyfikacji dokumentacji,

zmodyfikowany produkt powinien być sprawdzony przez niezależny
zespół kontroli.
Modele tworzenia programów
Zbuduj pierwszą wersję
Poprawiaj aż klient
będzie zadowolony
Użytkowanie
Model
Zbuduj i Poprawiaj
Koniec
Budowanie
Konserwacja
Modele tworzenia programów
Określenie wymagań
Zmiana wymagań
Sprawdzenie
Sprawdzenie
Specyfikacja
Sprawdzenie
Projektowanie
Sprawdzenie
Implementacja
Sprawdzenie
Model
Integracja
kaskadowy
Sprawdzenie
Użytkowanie
Budowanie
Konserwacja
Koniec
Modele tworzenia programów
Szybki prototyp
Zmiana wymagań
Sprawdzenie
Sprawdzenie
Specyfikacja
Sprawdzenie
Projektowanie
Sprawdzenie
Implementacja
Sprawdzenie
Integracja
Prototypowanie
Sprawdzenie
Użytkowanie
Budowanie
Konserwacja
Koniec
Modele tworzenia programów
Określenie wymagań
Sprawdzenie
Specyfikacja
Sprawdzenie
Projekt architektury
Sprawdzenie
Dla każdej składowej:
" zaprojektuj
Realizacja
" zaimplementuj
" zintegruj
przyrostowa
" przetestuj
Użytkowanie
" dostarcz do klienta
Budowanie
Konserwacja
Koniec
Modele tworzenia programów
Implementacja Dostarczenie
Specyfikacja Projektowanie
Integracja Klientowi
Implementacja Dostarczenie
Specyfikacja Projektowanie
Integracja Klientowi
Implementacja Dostarczenie
Specyfikacja Projektowanie
Integracja Klientowi
Ryzykowna
Grupa projektująca
Grupa specyfikująca
realizacja
Grupa Implementująca
przyrostowa
Składowa 1
Składowa 2
Składowa n
Modele tworzenia programów
Analiza ryzyka Analiza ryzyka
Szybki prototyp Zmiana wymagań
Sprawdzenie Sprawdzenie
Analiza ryzyka
Specyfikacje
Sprawdzenie
Analiza ryzyka
Projektowanie
Sprawdzenie
Analiza ryzyka
Uproszczony
Implementacja
model spiralny
Sprawdzenie
Analiza ryzyka
Budowanie
Użytkowanie
Integracja
Konserwacja
Koniec
Sprawdzenie
Modele tworzenia programów
Konserwacja Użytkowanie - Dalszy rozwój
Integracja
Implementacja
Projektowanie obiektowe
Analiza obiektowa
Obiektowy
model fontanny
Określenie wymagań
Budowanie
Konserwacja
Modele tworzenia programów
Model Zalety Wady
Nadaje się dla małych programów, Nie nadaje się dla
Zbuduj i poprawiaj
które nie wymagają konserwacji. nietrywialnych programów.
Systematyczne podejście Dostarczony produkt może nie
Model kaskadowy
i sterowanie dokumentami. spełniać oczekiwań zamawiającego.
Zapewnia, że produkt będzie
Prototypowanie Koszt budowy prototypu.
spełniał oczekiwania zamawiającego.
Wymaga otwartej architektury.
Szybki zwrot inwestycji
Realizacja przyrostowa Grożba degradacji do modelu
i łatwość konserwacji.
Zbuduj i Poprawiaj
Zawiera wszystkie cechy Tylko dla bardzo dużych projektów.
Model spiralny
powyższych modeli. Potrzebna wiedza o analizie ryzyka.
Pozwalają na integrację w fazach.
Modele obiektowe -
Pozwalają na równoległość faz.
Porównanie modeli tworzenia oprogramowania.
Struktury zespołów
2
1 3
Rys. Ścieżki komunikacji pomiędzy trzema informatykami.
Struktury zespołów
3
2 4
1 5
6
Rys. Ścieżki komunikacji pomiędzy sześcioma informatykami.
Struktury zespołów
Sekretarz Główny programista Zastępca GP
zespołu
Programista Programista Programista
Rys. Klasyczny zespół głównego programisty.
Struktury zespołów
Manager Lider
zespołu zespołu
Programista Programista Programista
Rys. Współczesny zespół programistyczny.
Struktury zespołów
Kierownik projektu
Lider Lider Lider
zespołu zespołu zespołu
Programiści Programiści Programiści
Rys. Struktura zarządzania technicznego w dużym projekcie.
Struktury zespołów
Kierownik projektu
Lider Lider Lider
zespołu zespołu zespołu
Programiści Programiści Programiści
Rys. Podejmowanie decyzji w dużym projekcie.
Modele tworzenia programów
Model Zalety Wady
Wysokiej jakości kod jako efekt
pozytywnego nastawienia do szukania
Zespół demokratyczny Trudno rozszerzalny.
błędów.
Skuteczny w trudnych problemach.
Klasyczny zespół
- Niepraktyczny.
głównego programisty
Brak w strukturze wysoko
Współczesny zespół kwalifikowanego Problemy z podziałem zadań
głównego programisty głównego programisty. pomiędzy lidera a managera zespołu.
Można go zdecentralizować.
Porównanie różnych sposobów organizacji zespołu programistycznego.
Rodzaje programowania
Programowanie (ang. programming) - czynności związane z
wpisywaniem poleceń języka programowania przez programistów
celem tworzenia oprogramowania komputerowego.
Rodzaje programowania
Programowanie proceduralne  styl programowania, w którym kod
zródłowy podzielony jest na fragmenty wykonujące ściśle określone
operacje. Procedury nie powinny korzystać ze zmiennych globalnych
(w miarę możliwości) lecz pobierać i przekazywać wszystkie dane (czy
też wskazniki do nich) jako parametry wywołania.
Rodzaje programowania
Programowanie strukturalne  metoda programowania, w której kod
zródłowy podzielony jest na niewielkie moduły - procedury, bądz
funkcje - komunikujące się ze sobą jedynie poprzez odpowiednie
interfejsy.
Interfejs (interface)  część danego obiektu widoczna na zewnątrz dla
innych obiektów. Jego zadaniem jest umożliwienie współpracy z tym
obiektem np. komunikacja z nim, czy wykorzystanie jego innych
właściwości umieszczonych wewnątrz.
Do najpopularniejszych języków strukturalnych zalicza się Pascal, C,
Modula-2.
Rodzaje programowania
Programowanie modularne (modular programming) - paradygmat
programowania zalecający stosowanie modułów, jako nadrzędnych w
stosunku do procedur, bloków tworzących program. Moduł w pojęciu
programowania modularnego grupuje funkcjonalnie związane ze sobą
dane i procedury i jest reprezentacją obiektu występującego w
programie w jednym egzemplarzu.
Rodzaje programowania
Programowanie imperatywne  technika programowania, w której
program składa się ze zmiennych oraz modyfikujących je operacji, z
jawnie określonym przepływem sterowania.
Programista używający języka imperatywnego osiąga zamierzony efekt
przez manipulowanie wartościami zmiennych. Przykładami języków
imperatywnych są Fortran, Pascal i C.
Największą zaletą jest bliskość takiej reprezentacji do tego co
rzeczywiście wykonywane jest przez komputer.
Rodzaje programowania
Programowanie obiektowe (object-oriented programming)  jest to
metodologia tworzenia programów komputerowych, która definiuje
programy za pomocą  obiektów - elementów łączących stan (czyli
dane) i zachowanie (czyli procedury, tu: metody). Obiektowy program
komputerowy wyrażony jest jako zbiór takich obiektów,
komunikujących się pomiędzy sobą w celu wykonywania zadań.
Podejście to różni się od tradycyjnego programowania proceduralnego,
gdzie dane i procedury nie są ze sobą bezpośrednio związane.
Programowanie obiektowe ma ułatwić pisanie, konserwację i
wielokrotne użycie programów lub ich fragmentów.
Popularnymi językami obiektowymi są: C++, Java, Smalltalk, Object
Pascal, Beta, Theta, CLOS, Eiffel, Ada98, Python i in. Od lat
osiemdziesiątych języki obiektowe uważa się za szczytowe osiągnięcie
inżynierii oprogramowania.
Rodzaje programowania
Programowanie funkcjonalne (functional programming) - koncepcja
programowania bez używania przypisań; w programowaniu
funkcjonalnym obliczenie tej samej procedury z tymi samymi
parametrami powoduje zawsze powstanie tego samego wyniku,
procedury w programowaniu funkcjonalnym mogą zatem być
rozważane jako funkcje w rozumieniu matematycznym.
Rodzaje programowania
Programowanie RAD (Rapid Application Development) - termin
komercyjny ( błyskawiczne opracowywanie aplikacji ) określający
możliwości pakietu oprogramowania działającego w graficznym
środowisku okienkowym, służącego do zestawiania aplikacji,
w szczególności  ich interfejsów, z modułów wybieranych z bibliotek
udostępnianych w postaci drzew tematycznych.
W zależności od wybranego elementu pakiet RAD wytwarza fragmenty
kodu (np. w języku C++) wraz z odpowiednimi wywołaniami.
Szczegóły odbiegające od standardu uzupełnia ręcznie programista.
Aplikacje wytworzone w środowiskach RAD są z reguły słabo
przenośne i zajmują dużo pamięci, jednak możliwość automatycznego
oprogramowania ich najżmudniejszych elementów (interfejs graficzny)
oraz ułatwiony kontakt ze standardowymi bazami danych powoduje, że
programowanie RAD staje się coraz popularniejsze.
Rodzaje programowania
Programowanie zdarzeniowe (sterowane zdarzeniami)  jest to
metoda programowania według którego program jest cały czas
bombardowany zdarzeniami (events), na które musi odpowiedzieć.
Przepływ kontroli w takim programie jest całkowicie niemożliwy do
przewidzenia z góry. Programowanie zdarzeniowe jest dominującym
typem programowania GUI - zdarzenia to naciśnięcia myszy, klawiszy,
żądania odświeżenia przez system okienkowy, różne zdarzenia sieciowe
i inne.
W programowaniu zdarzeniowym ważne jest żeby nie obsługiwać zbyt
długo danego zdarzenia, bo blokuje się w ten sposób obsługę innych.
Można to osiągnąć za pomocą asynchronicznego I/O,
wielowątkowości, rozbijania zdarzenia na pod-zdarzenia i wielu innych
mechanizmów.
Rodzaje programowania
Programowanie liniowe (w ujęciu matematycznym) - maksymalizacja
lub minimalizacja funkcji wielu zmiennych, gdy zmienne te, lub
niektóre z nich, podlegają liniowym warunkom ograniczającym w
postaci równań lub nierówności. Nazwa "programowanie" wskazuje w
tym kontekście na schemat działań.
Rodzaje programowania
Programowanie nieliniowe (w ujęciu matematycznym) - metody
rozwiązywania problemów opisywanych przez równania różniczkowe
nie dające się sprowadzić do równań liniowych (programowanie
liniowe).
Rodzaje programowania
Programowanie dynamiczne - metoda zapewniająca wybór ciągu
zgodnych rozwiązań optymalnych w wielostopniowych problemach
decyzyjnych. W istocie jest to proces sekwencyjnego podejmowania
decyzji.
Rodzaje programowania
Programowanie w logice (logic programming) - kierunek rozwojowy
języków programowania, korzystający istotnie z doświadczeń i
osiągnięć logiki matematycznej. Instrukcje języków programowania w
logice przyjmują postaci wzorów logicznych (predykatów).
Programowanie w logice znajduje zastosowanie przy budowaniu
inteligentnych baz wiedzy, systemów ekspertowych,
w eksperymentach ze sztuczną inteligencją.
Rodzaje programowania
Programowanie współbieżne (concurrent
programming) - programowanie procesów
współbieżnych realizowane za pomocą
specjalnie zaprojektowanych języków
programowania (np. Linda), języków
odpowiednio dostosowanych (np. Concurrent
Pascal) lub przy użyciu bibliotek synchronizacji
procesów i wątków.
Rodzaje programowania
Programowanie z użyciem obiektów (object-based programming) -
paradygmat programowania dopuszczający możliwość tworzenia typów
zdefiniowanych przez użytkownika i posługiwania się w programach
danymi nowo zdefiniowanych typów. Programowanie z użyciem
obiektów jest zalecane tam, gdzie programowanie proceduralne lub
modularne okazują się niewystarczające z uwagi na potrzebę użycia
nowych typów danych i liczne ich reprezentacje (obiekty), natomiast
programowanie obiektowe jest niepotrzebne z powodu prostych
właściwości przedmiotu programowania.
Rodzaje programowania
Programowanie wstępujące - w
programowaniu strukturalnym
rozwiązywanie problemu za pomocą
wydzielonych prostszych zadań.
Programowanie zstępujące - w
programowaniu strukturalnym
rozwiązywanie problemu w jednym
ogólnym, dobrze przemyślanym planie.
Dziękuję za uwagę
Wojciech Sobieski
Olsztyn 2007-2012


Wyszukiwarka

Podobne podstrony:
2007 08 OpenKODE [Programowanie C C ]
07 technologia programowania
Instrukcja do ćw 08 Technologia wykonywania obwodów drukowanych
Visual?sic 08 Warsztat programisty vb28wp
2002 08 Programowana tablica świetlna
MS Program Laboratorium 08
o1 08 u tech komp i dokument technologiczna11[32]
program cwiczenia 08 2009 lekarski[1]
08 wprowadzenie do programowania grafikiidu39
PHP profesjonalnie programowanie obiektowe i narzędzia programisty 08 2006
08 Integracja Javy z innymi językami, programowanie sieciowe
ZEM 07 08 Program
PROGRAM MS s1 08
2008 07 08 Serwis zdjęć z wakacji [Programowanie]
2004 08 Katalog filmów [Programowanie]

więcej podobnych podstron