Problemy nauczania zaawansowanych technologii informatycznych

Transkrypt

Problemy nauczania zaawansowanych technologii informatycznych
Wincenty Pirjanowicz
[email protected]
Wydział Matematyki i Informatyki
Uniwersytet Warmińsko-Mazurski w Olsztynie
Olsztyn
Problemy nauczania
zaawansowanych technologii informatycznych
Autor, w oparciu o swoje wieloletnie doświadczenia dydaktyczne w Polsce oraz poza krajem wyciąga
pewne wnioski o stanie wykładania przedmiotów informatycznych w uczelniach wyższych.
Znana jest teza filozoficzna, że z czasem „ilość” przekształca się w „jakość”. Jak
najbardziej dotyczy to narzędzi informatycznych:
- Spośród różnorodnych problemowo zorientowanych języków programowania
powstałych w latach 1960-1990 tylko kilka, jak np. C++, Java, jest rozwijanych do dnia
dzisiejszego. Za ich pomocą obecnie jest tworzona większość programów komputerowych.
- Spośród wielu edytorów tekstów, arkuszy kalkulacyjnych i systemów baz danych,
które pojawiły się w latach 1965-1995, dzisiaj najbardziej szeroko wykorzystuje się WORD,
EXCEL i ACCESS, które są w stanie zaspokoić wymagania prawie każdego użytkownika
komputera.
- W okresie od powstania pierwszego komputera do lat 90. ubiegłego stulecia
skonstruowano wiele komputerów różnego typu, często bez możliwości wspólnej
komunikacji. Obecnie, jako wynik ewolucji, mamy mniej modeli komputerów, ale takich,
które bezproblemowo porozumiewają się pomiędzy sobą w sieciach komputerowych
i są w stanie świadczyć takie usługi użytkownikom, o których można było tylko marzyć
jeszcze kilka lat temu.
Z tego można wnioskować, że w informatyce nastąpiła pewna stabililizacja,
co w konsekwencji może ułatwić procesy nauczania tej dziedziny. Lecz to nie jest prawdą.
Przemysł, wojsko, technika, nauka stawiąją coraz trudniejsze zadania do rozwiązania.
Zmusza to do intensywnego rozwoju metod oraz narzędzi do wytwarzania systemów
informatycznych (SI) w podejściu obiektowym, SI z wysokimi wymaganiami niezawodności,
zdolności do działania bez katastroficznych awarii, dobrze zabezpieczonych przed
„intruzami”. Zmusza to do rozwoju Internetu, systemów operacyjnych, pozwalających na
rozproszone rozwiązywanie zadań.
W roku 2002 do sprzedaży komercyjnej oddano produkt firmy Microsoft Visual
Studio .NET [Dunaway, 2003], którego opracowanie kosztowało ponad dwa miliardy
dolarów. Bazuje on na platformie .NET, która całkiem zmienia zasady rozwiązywania
problemów praktycznych, oparte dotychczas na tradycyjnym podejściu strukturalnym.
W ostatnich latach opracowano wiele nowych narzędzi CASE (ang. Computer Aided
Software/System Engineering), CAST (ang. Computer Aided Software Testing)
wspomagających projektowanie, implementację oraz testowanie tworzonych SI. To
1
wszystko wymaga od szkoły wyższej kształcenia dużej liczby specjalistów, zdolnych
do wykorzystania tych nowoczesnych metod i narzędzi informatyki do rozwiązywania
złożonych zadań praktycznych. I tu powstaje dużo różnego rodzaju problemów, trudności.
Trudność 1. Stale zwiększa się liczba publikacji dotyczących metod wytwarzania SI.
Jednak analiza tych lepszych z nich [Dąbrowski, Subieta, 2005; Koffman, Wolfgang, 2006;
Sommerville, 2003] pokazuje, że przedstawia się w nich raczej klasyczne podejścia:
systemowe lub obiektowe do wytwarzania abstrakcyjnych SI. Za mało jest przykładów
praktycznych. Byłby sens podzielić, choć z grubsza, tworzone SI na trzy grupy:
• SI wspomagające zarządzaniem przedsiębiorstw (procesów gospodarczych),
• SI w zarządzaniu procesami technologicznymi (chemicznymi),
• SI sterowania urządzeniami technicznymi (robotami).
Wspomniane klasyczne podejścia do wytwarzania SI dotyczą zwykle grupy
pierwszej. Trudno znaleźć materiały dotyczące metod wytwarzania SI dla grupy drugiej
i trzeciej. Grupie trzeciej częściowo odpowiada już wprowadzony do standardów kształcenia
przedmiot „systemy wbudowane”, lecz zakres tego przedmiotu przewiduje nauczanie
programowania tylko prostych systemów wbudowanych (mikrokontrolerów).
Trudność 2. Od dawna do projektowania i implementacji SI wykorzystuje się jako
podstawowe metody dekompozycji oraz model wodospadu (kaskadowy). Natomiast
mało opisuje się przykładów „przeplatania się” (łączenia) metod dekompozycji z różnymi
odmianami modelu wodospadu na różnych poziomach (etapach) realizacji tak odmiennych
SI. Byłoby dobrze opracować sposoby promowania, zachęty autorów do udostępnienia na
stronach WWW materiałów dotyczących metod wytwarzania SI, jak to się stało
powszechnie w stosunku do języków programowania, baz danych. Pozwoliłoby to na
łatwiejszy dostęp do takich materiałów, na wyrażenie opinii o ich jakości i możliwościach
zastosowań praktycznych.
Trudność 3. Do prowadzenia na odpowiednim poziomie wykładów, ćwiczeń
z przedmiotów nauczających wytwarzania złożonych SI, niezbędna jest wykwalifikowana
kadra, najlepiej z doświadczeniem praktycznym uczestnictwa w opracowaniu takich
projektów. I tu jest największy problem. Takich ludzi jest bardzo mało. Regulamin uczelni
pozwala prowadzić wykłady tylko osobom ze stopniem naukowym co najmniej doktora.
Specjaliści-praktycy w dziedzinie inżynierii oprogramowania bez odpowiednich stopni mogą
tylko prowadzić ćwiczenia. Jest to pewien nonsens. Rady Wydziałów powinny mieć
prawo udzielania pozwolenia na prowadzenie wykładów dla wybitnych specjalistów
nie posiadających stopni naukowych oraz mieć odpowiednie fundusze, aby takich ludzi
zachęcić do pracy na uczelni.
Etatowi wykładowcy przedmiotów informatycznych na uczelniach wyższych mają
niewiele możliwości, aby nadążać za szybkim rozwojem tej nauki. Mizerne fundusze uczelni
nie pozwalają na podwyższenie kwalifikacji w ośrodkach specjalistycznych. Musimy
uzupełniać swoją wiedzę prawie wyłącznie poprzez uczestnictwo w tematycznych
konferencjach oraz przez samodzielne studiowanie literatury. To za mało. Można to nazwać
„gotowaniem się we własnym sosie”.
Trudność 4. Nauczanie wytwarzania złożonych SI opiera się na metodach analizy
i projektowania SI, bazuje na uzyskanej przez studentów wiedzy z systemów operacyjnych,
2
sieci komputerowych, baz danych, języków programowania, wykorzystuje nowoczesne
platformy informatyczne, narzędzia CASE, CAST. Podczas wytwarzania złożonych SI
około 50% środków finansowych oraz czasu wykonania SI przypada na projektowanie
i przeprowadzenie różnorodnych testów oprogramowania. Toteż bardzo dziwnym jest fakt,
że tylko w „inżynierii oprogramowania” tym zagadnieniom poświęca się pewną ilość godzin.
Mówi się, że testowanie jest sztuką i tu każdy „tworzy jak może”. Pewna racja w tym jest,
lecz podstawowe reguły projektowania testów oraz ich wykonania powinny być znane
każdemu, kto przystępuje do tworzenia jakiegokolwiek programu, zaczynając od programów
prostych w Pascalu lub w języku C.
W ostatnich latach opracowano kilka narzędzi CAST wspomagających testowanie.
Są to narzędzia CANTATA dla języków C, C++ i Ady oraz RATIONAL dla Javy, C++ i Visual
Basic. Sensownym wydaje się też zapoznanie studentów z ostatnio opracowanymi
narzędziami firmy Borland do testowania złożonych systemów informatycznych (Borland
SilkCentral Test Manager – narzędzie do zarządzania cyklem testowym oparte na
technologii internetowej; Borland SilkTest – zautomatyzowane narzędzie do testowania
funkcjonalnego i regresyjnego; Borland SilkPerformer – zautomatyzowane,
zaawansowane narzędzie do testowania obciążeniowego aplikacji korporacyjnych).
Krótki opis tych narzędzi można znaleźć w materiałach reklamowych firmy Borland,
zamieszczonych na jej stronach w Internecie, w materiałach konferencyjnych, dotyczących
corocznych konferencji firmy Borland. Lecz opanowanie praktyczne na zajęciach
ćwiczeniowych zasad działania i możliwości opisanych produktów Borlanda oraz
wspomnianych wyżej narzędzi CAST na razie nie jest możliwe, gdyż dla uczelni najczęściej
nie są one dostępne z przyczyn finansowych.
Jak pokonać te ostatnie trudności? Zależy to oczywiście od producentów narzędzi
CASE i CAST. Dobrym wzorem do naśladowania dla tych producentów może być Microsoft
udostępniający bezpłatnie dla uczelni swoje produkty: środowisko Visual Studio .NET
z jego elementami podstawowymi .NET Framework, ASP.NET (opis których można
znaleźć w [6, 9, 17, 18]) oraz Microsoft Office Visio 2003 – narzędzie do tworzenia
różnego rodzaju szablonów i diagramów, wykorzystywanych w analizie i projektowaniu SI.
Innym przykładem jest firma SUN, pozwalająca na bezpłatne kopiowanie
[http://java.sun.com, dostęp 02.06.2008] swojego produktu: środowisko pracy Javy
– narzędzie NetBeans IDE 6.0 oraz dokumentacja opisująca ten system. Obiektowy
język programowania Java staje się coraz bardziej popularny, przede wszystkim
w zastosowaniach internetowych. W USA Java staje się jednym z podstawowych języków
programowania wykładanych na uniwersytetach. Opis języka Java oraz jego możliwości
można znaleźć w wielu źródłach, w tym internetowych.
Trudność 5. Współczesne techniki oraz narzędzia wytwarzania SI są złożone
i wymagają sporo wysiłku do ich opanowania. W pewien sposób ułatwić procesy poznawcze
można przez umiejętne stosowanie znanych wyników badań pamięci ludzkiej [Sommerville,
2003], zasad zapamiętywania w niej nowych wiadomości. Indywidualne zdolności ludzi
(studentów) są bardzo różne. Zależą one przede wszystkim od inteligencji, wykształcenia,
doświadczeń oraz od sposobu przechowywania informacji w naszych mózgach. Pamięć
3
człowieka jest zorganizowana hierarchicznie i w pewnym sensie jest podobna do pamięci
komputerowych. Ma trzy odrębne, połączone ze sobą obszary (rys. 1):
- Pamięć krótka ma małą pojemność i szybki czas dostępu. Do niej najpierw trafiają
wejściowe bodźce (uzyskiwane za pośrednictwem oczu, uszu, nosa, języka, dotknięcia) do
wstępnego przetwarzania. Ta pamięć jest podobna do rejestrów procesora komputerowego
– służy do przetwarzania, a nie do przechowywania danych.
- Pamięć robocza o większej pojemności jest podobna do pamięci RAM komputera.
Ma dłuższy czas dostępu niż pamięć krótka, służy do przetwarzania informacji oraz jej
zatrzymywania w razie potrzeby na pewien czas dla kolejnych cykli przetwarzania.
- Pamięć długa może być przyrównana do pamięci zewnętrznej (dyskowej)
komputera: ma dość długi czas dostępu i zawodny mechanizm wyszukiwania (zapominamy
o pewnych rzeczach). Służy ona do „trwałego” przechowywania informacji. Z wiekiem ten
„magazyn” naszej pamięci jest coraz większy.
Informacja o problemie (np. treść wykładu) trafia do pamięci krótkiej w wyniku
słuchania, rozmów z ludźmi oraz czytania dokumentów. Jest następnie integrowana
z innymi istotnymi informacjami pobranymi z pamięci długiej do pamięci roboczej, w wyniku
czego następuje zrozumienie sposobu rozwiązania problemu. W miarę zdobywania nowych
informacji, pamięć długa jest uzupełniana i aktualizowana. Niepoprawne informacje nie są
jednak całkowicie usuwane, pozostają w pamięci w pewnej postaci. Wiemy o nich, gdyż
uczymy się na naszych błędach: niepoprawny wynik też jest wynikiem.
Bodźce wejściowe
Pamięć krótka
Pamięć robocza
Pamięć długa
(duża pojemność, powolny dostęp)
Rys. 1. Organizacja ludzkiej pamięci. Źródło: [Sommerwille, 2003]
Wiedzę zdobytą w trakcie nauki, doświadczeń i przechowywaną w pamięci długiej
można podzielić na dwie klasy: na wiedzę składniową i wiedzę znaczeniową (semantyczną).
Wiedza składniowa polega na mechanicznym zapamiętaniu pewnych faktów
(„wkuwaniu” materiału w noc przed egzaminem), bez ich istotnego przetworzenia. Jest
4
słabo zintegrowana z wcześniej zdobytą wiedzą. Do takiej wiedzy zaliczamy np. reguły
składniowe danego języka programowania. Wizualnym przykładem wiedzy składniowej
mogą być ulokowane na pewnym obrazie różne figury geometryczne, strzałki – jako
elementy schematów blokowych. Kształty figur, ich rozmiary oraz miejsce ulokowania są
dość trudne do zapamiętywania. Niewiele osób po krótkim spojrzeniu na taki obraz da radę
go powtórzyć na papierze.
Wiedza znaczeniowa (semantyczna) polega na tym, że fakty są zapamiętane
nie w postaci ich formy, lecz w postaci znaczenia – np. znajomość zasady działania
instrukcji while, znajomość koncepcji pojęcia klasy i dziedziczenia itd. Nowa wiedza jest tu
zintegrowana z wiedzą wcześniej zdobytą. Wizualnym przykładem wiedzy znaczeniowej
mogą być te same figury geometryczne przedstawiające algorytm rozwiązania konkretnego
zadania.
Uwzględnienie istnienia tych dwóch rodzajów wiedzy może mieć wpływ na metody
nauczania studentów oraz na politykę kadrową w zespołach wykonawców oprogramowania.
Na przykład student (pracownik) rozumiejący ogólne zasady obiektowości (wiedza
semantyczna) może lepiej sobie poradzić niż człowiek dobrze znający składnię konkretnego
języka obiektowego (posiada wiedzę składniową). Pod tym względem w procesach
nauczania trzeba poszukiwać pewnych haseł, „haczyków”, za pomocą których nowa
wiedza będzie kojarzona z pojęciami analogicznymi, podobnymi, wcześniej poznanymi
i utrwalonymi w pamięci. Wtedy nowa wiedza będzie należała do wiedzy znaczeniowej,
stanie się łatwiejsza do zrozumienia i zapamiętania.
Dziwnym jest, że firmy zatrudniające informatyków przywiązują zbyt wielką wagę
do wiedzy składniowej, na przykład znajomości konkretnych języków i systemów. W istocie
ta wiedza może być stosunkowo szybko nabyta (na przykład, powinno wystarczyć kilka
tygodni na opanowanie nowego języka programowania). Natomiast zdobycie wiedzy
semantycznej może wymagać lat studiów i doświadczeń – stanowi ona fundament dalszego
rozwoju umiejętności człowieka.
Bibliografia
Dąbrowski W., Subieta K.: Podstawy inżynierii oprogramowania. PJWSTK, Warszawa 2005
Dunaway R. B.: Visual Studio .NET. MIKOM, Warszawa 2003
Knuth D. E.: Sztuka programowania. T. 1-3. WNT, Warszawa 2002
Koffman E., Wolfgang P.: Struktury danych i techniki obiektowe na przykładzie Javy 5.0.
Helion, Gliwice 2006
Pirjanowicz W.: Programowanie komputerów. WSIiE TWP w Olsztynie, Olsztyn 2001
Płodzień J., Stemposz E.: Analiza i projektowanie systemów informatycznych. PJWSTK,
Warszawa 2003
Sommerville I.: Inżynieria oprogramowania. WNT, Warszawa 2003
5