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