PIOTR NIEMOJEWSKI * SZKIELET PLATFORMY WEB WSPOMAGAJĄCEJ PRACĘ JEDNOSTKI DYDAKTYCZNEJ A FRAMEWORK FOR WEB-BASED PLATFORM SUPPORTING EDUCATIONAL PROCESS MANAGEMENT STRESZCZENIE: W artykule zawarte są: Przedstawienie kolejnych etapów realizacji portalu od chwili otrzymania zlecenia do gotowego produktu podane zostaną wskazówki dla osób realizujących podobny projekt. Wyjaśnienie zastosowanej technologii, nowatorskie rozwiązania oraz przedstawienie istotnych elementów programistycznych. Wymienienie napotkanych trudności i problemów w procesie tworzenia i scalania produktu. Wyjaśnienie kwestii bezpieczeństwa, autoryzacji oraz prawidłowej instalacji systemu. Prezentacja na żywo (w miarę możliwości czasowych) przedstawiony zostanie szkielet platformy WEB wspomagającej pracę zakładu katedry uczelni. ABSTRACT: The paper includes following content: We will show every single step of our education platform creation process from design to ready project authors of Web based platform will present some tips considering important steps that are to be taken while implementing similar project. Information about new technology and some of our programming secrets. We will explain which problems are very common during project evaluation. Description of security and authorization problems. Live presentation (depending on time given for speech) showing the framework of ASPort education platform. 1. Wprowadzenie jak się tworzy projekt? Rozwiązanie zadania stworzenia portalu z dynamicznie tworzoną treścią wymaga przeprowadzenia wielu analiz przed właściwym rozpoczęciem prac. Pierwszym krokiem jest dobór zespołu ludzi o odpowiednich kwalifikacjach do realizacji zadania. W celu wykonania projektu, zostały stworzone grupy o następujących funkcjach: Kierownik projektu osoba odpowiedzialna za całościowe zarządzanie projektem Jakość osoby odpowiedzialne za merytoryczną analizę dokumentów, tworzenie standardów, systemu obiegu informacji, zapewniające zachowanie spójności projektu * Politechnika Warszawska 158
Dokumentacja zespół odpowiedzialny za tworzenie, aktualizację i scalenie dokumentacji projektowej, użytkownika, administracyjnej, zapis polityki bezpieczeństwa. Grafika osoby odpowiedzialne za projekt szaty graficznej projektu, elementów DTP w dokumentacji oraz tworzenie prezentacji multimedialnych, jeśli jest taka potrzeba. Analitycy najważniejszy trzon zespołu, to od tej grupy zależy, w jaki sposób będzie wyglądał produkt, oraz czy spełni on założenia postawione na etapie zlecenia. Najlepiej, aby byli oni też dobrymi programistami. Programiści osoby odpowiedzialne za zrealizowanie kodowania projektu i jego uruchomienie Specjaliści od baz osoby odpowiedzialne za implementację bazy danych i tworzenie interfejsów do kodu źródłowego dla programistów. Testerzy osoby weryfikujące błędy zarówno widoczne, ze strony użytkownika, jak również te mniej widoczne po stronie kodu. Administrator osoba odpowiedzialna za zarządzanie infrastrukturą informatyczną oraz bezpieczeństwem Utworzenie tych grup, jest bardzo istotne, ponieważ większość projektów dyplomowych lub międzywydziałowych jest realizowana jedynie przez programistów. Ilość osób, potrzebnych do tworzenia portalu została ustalona w naszym przypadku na dwanaście jest to wystarczająca ilość do sprawnego stworzenia portalu (w innym przypadku więcej czasu mogłoby zostać stracone na konserwację, poprawki, wdrożenie i udokumentowanie systemu). Drugim etapem jest przydział zadań dla członków zespołu. Równolegle można zlecić dwa zadania przeprowadzenie analizy projektu przez analityków oraz opracowanie szablonów dokumentów oraz standardów przez jakość. Tuż po zakończeniu analizy projektu można rozpocząć projekt układu szaty graficznej GUI. Teraz następuje właściwy początek realizacji portalu jednoczesne prowadzone kodowanie i tworzenie bazy danych. Po pewnym założonym wstępnie przez kierownika okresie czasu następuje pierwszy punkt kontrolny żargonowo nazywany checkpoint weryfikujący czy projekt jest tworzony w odpowiedni sposób. W tym momencie może nastąpić pierwsze scalenie projektu przez programistów (każdy tworzy jedynie elementarny moduł dla portalu). Analitycy mogą w tym momencie zweryfikować czy jest zgodność pomiędzy założeniami projektowymi a realizacją. Przeprowadzane są kolejne testy i poprawki. Na koniec jest zatwierdzana dokumentacja produktu i jego prezentacja oraz wdrożenie. Bardziej optymalne wyniki można by uzyskać stosując podejście szybkiego tworzenia projektu tzw. extreme Programming. XP pozwala ulepszyć projekt w czterech zasadniczych wymiarach: komunikacja, prostota, sprzężenie/informacje zwrotne oraz pewność działania. Programiści XP komunikują się ze swoimi klientami, jak też z innymi programistami. Utrzymują swój projekt prosty i przejrzysty. Otrzymują informacje zwrotne, rozpoczynając testowanie swojego oprogramowania już od pierwszego dnia. Dostarczają klientom system tak wcześnie, jak to możliwe i wprowadzają sugerowane zmiany. Bazując na takich, fundamentach programiści XP mogą z pewnością i zdecydowaniem reagować na zmieniające się wymagania i technologię. My użyliśmy klasycznej metodologii programowania oraz część elementów XP, przez co ilość roboczogodzin na osobę była umiarkowana. 159
2. Technologia Serwer stron Internet Information Services z obsługą ASP Baza danych MS SQL 2000.NET C#.NET Framework Do zarządzania procesem projektowania stosowanych było wiele różnorodnych aplikacji, między innymi MS SharePoint. Zdefiniowany został szablon dla programistów i standard kodowania (między innymi nazwy zmiennych, skróty, język). Ponieważ portal ma aktywnie tworzoną treść w środowisku ASP.NET, zastosowane zostało środowisko programistyczne Microsoft Visual Studio 2003 (język C#) z obsługą.net Framework 1.1. Windows 2003 lub XP Baza danych SQL 2000 Skompilowne interfejsy oraz kod portalu obsługiwane przez Framework 1.1 Serwer IIS ASP.NET Przeglądarka WWW Internet Explorer, Firefox Firewall + IDS Logi i alerty Rys. 1. Uproszczona struktura systemu Jako podstawowy system bazodanowy wykorzystano Microsoft SQL Serwer 2000 pracujący pod systemami Windows 20003 / XP. Głównym elementem integrującym wszystkie usługi i udostępniającym strony jest typowy serwer WWW - Microsoft Internet Information Services w wersji 5 / 6 wbudowany w system operacyjny Windows. W projekcie zastosowano User Web Controls czyli technologię, która pozwala programującym w.net na wielokrotne wykorzystywanie raz napisanego kodu bez potrzeby jego ponownego kopiowania dodatkowo kod po stronie serwera jest w postaci plików C# z rozszerzeniami ASCX, które są w projekcie dynamicznie ładowane ze strony bazowej ASPX. 160
Portal jest tak zaprojektowany, że wszystkie przyciski menu widoczne po lewej stronie ekranu portalu są tworzone w sposób dynamiczny w zależności od kontekstu wywołania. Uprawnienia osoby, logującej się do portalu decydują jak jest wyświetlana ta sama strona bazowa z inną zawartością, a nie jak to ma miejsce w przypadku innych portali inny plik html lub aspx. Dla użytkownika mniej uprzywilejowanego gościa jest wyświetlana lista przycisków umożliwiających wyłącznie operacje przeglądania ogólnie dostępnych informacji. Strona bazowa ASPX Podstrona (kontrolka) ASCX Podstrona (kontrolka) ASCX Rys. 2. System wywoływania kontrolek ze strony bazowej. Baza danych nie jest bezpośrednio dostępna dla programisty. Do komunikacji z bazą stosujemy specjalnie stworzone interfejsy, które pozwalają na prostą implementację dostępu, modyfikację oraz pobieranie danych Kontrolki ASCX SQL Procedury składowane Interfejsy w C# strony używające b.d. na przykład: szukanie pracowników Rys. 3. Sposób udostępniania informacji przechowywanych w bazie danych W praktyce wygląda to tak: baza danych SQL zawiera procedury składowane wykonują parametryczne zapytania, do procedur są stworzone odpowiednie interfejsy napisane w języku C#, które z kolei są używane w kontrolkach (elementach funkcjonalnych serwisu). 161
3. Napotkane problemy Podczas realizacji tak dużego projektu sporo trudności sprawiło rozwiązanie problemów wynikających z pewnych ograniczeń języka C# a w szczególności zaawansowanego użycia kontrolek User Web Controls. Okazało się, że nie do końca wyjaśnione w dokumentacji MSDN zostały przypadki wywoływania kontrolek przez kolejne kontrolki są problemy z przekazywaniem parametrów oraz gubieniem informacji o stanie elementów sterujących mimo próby ich przechowania w typowy sposób. Kolejny problem to prawidłowa konfiguracja serwera IIS i bazy, przy pierwszym testowym uruchomieniu systemu on-line czas potrzebny na włamanie do serwera przez port 80 wyniósł niecałe 10 minut! Typowym problemem ze strony realizacji jest dotrzymywanie terminów wyznaczonych na sprawdzenia w punktach kontrolnych, które z założenia są nieprzekraczalne. Niezwykle istotne jest prawidłowe stworzenie szablonów dokumentów. W bieżącej wersji ASPort, system nie jest jeszcze skalowalny, należałoby stworzyć specyfikację dodatkową między innymi interfejsów oraz standardy komunikacji między innymi portalami. Nie ustalono też limitów połączeń, może to w praktyce doprowadzić do zablokowania funkcjonalności portalu przy bardzo dużej liczbie aktywnych użytkowników lub przy próbach ataków typu DDoS (rozproszone ataki odmówienia usługi). W celu rozwiązania w/w problemów należałoby wprowadzić moduł zarządzania połączeniami oraz na przykład klasteryzację lub inne rozwiązanie. Testowanie odbywało się w kilku etapach. Pierwsze przeprowadzane było już na etapie tworzenia kodu przez samych programistów. Kolejnym etapem była weryfikacja scalonego projektu, oraz jego kolejnej poprawionej wersji. Na samym końcu przeprowadzono testy bezpieczeństwa. 4. Niebezpieczeństwo Ten fragment artykułu można by rozwinąć do postaci wielotomowej książki a mimo wszystko nie da się przewidzieć wszystkich możliwych prób włamania lub ataku na serwis przez nas publikowany. Podstawowy problem stanowi to, że usługa ASP.NET jest uruchomiona na bardzo dobrze znanym wszystkim serwerze Microsoft IIS. Oprogramowanie to jest niezwykle podatne na różne rodzaje włamań i prób uzyskania nieautoryzowanego dostępu. Podczas pierwszego uruchomienia i instalacji komponentów należy bezwzględnie odłączyć serwer od sieci LAN. W przeciwnym wypadku z dużym prawdopodobieństwem nie uda się dokończyć tej procedury, gdyż system zostanie zainfekowany wirusem lub zainstaluje się jakiś RootKit (aplikacja dająca uprawnienia administracyjne hakerom). Po uruchomieniu IIS, o ile nie są potrzebne należy blokować wszystkie nieużywane usługi (FTP, SMTP, itp.). Po zainstalowaniu i skonfigurowaniu w bezpieczny sposób IIS, należy bezwzględnie ściągnąć wszystkie aktualizacje do tego systemu (najlepiej na innej stacji roboczej i nagrać je na nośnik CD / DVD). Sugerowana jest instalacja przez administratora odpowiednich filtrów w serwerze, które usuwają niedozwolone zapytania mogące bardzo zagrozić dalszemu funkcjonowaniu serwera. Następnym krokiem w naszym przypadku było odpowiednie zabezpieczenie dostępu ze strony zarówno bazy danych jak i aplikacji portalowej. We wszystkich możliwych miejscach, gdzie użytkownik ma styczność z wprowadzaniem danych postanowiono użyć tak zwanych walidatorów treści, są to wbudowane 162
w język C# specjalne formuły filtrująco-sprawdzające poprawność wprowadzanych treści. W ten sposób sprawdzane mogą być dynamicznie typy danych, rozmiar danych i inne parametry. Dzięki temu można znacznie ograniczyć próby użycia niedozwolonych treści jak i uodpornić system na przypadkowe błędy ze strony użytkownika. 5. Dodatkowe rozwiązania Rys. 4. Zaawansowana struktura bazy danych W tym momencie należy wspomnieć o bardzo rozbudowanym systemie uprawnień. W naszym portalu można definiować grupy użytkowników o różnych (wspólnych) uprawnieniach, w projekcie przewidziana jest opcja chwilowego przekazywania uprawnień między użytkownikami (aktualnie jeszcze nie zrealizowana). Baza danych przechowuje informacje o użytkownikach, rolach, uprawnieniach. Na rysunku 4 przedstawiono następujące elementy odpowiedzialne za wspomniane funkcje: RoleRights, Role, UserRole, User, Right, User- Rights Jak już wcześniej wspomniano portal jest tak zaprojektowany, że wszystkie przyciski menu widoczne po lewej stronie ekranu portalu są tworzone w sposób dynamiczny. Jest to bardzo praktyczne podejście, które ułatwia rozbudowę portalu o nowe treści i funkcje bez konieczności zmiany kodu strony w celu dodania nowych składników. Kolejnym elementem zrealizowanym w naszym projekcie jest wsparcie dla szyfrowania połączenia za pomocą SSL. Wystarczy zaimportować do serwera IIS specjalnie przygo- 163
towany certyfikat dla portalu ASPort, aby wszystkie połączenia z serwerem były szyfrowane 128 bitowym kluczem. Dodatkowym zabezpieczeniem wbudowanym w ASPort jest możliwość weryfikacji na każdym etapie wykonywanych operacji czy użytkownik posiada do niej uprawnienie, zabezpiecza to przed niedozwolonym wykorzystaniem kontrolek (podstron) przez zwykłe podmienienie ich adresu i nazw z poziomu przeglądarki. Nie zaimplementowany został moduł szyfrowania haseł w bazie danych, ale można w łatwy sposób podłączyć dostępne mechanizmy szyfrowania danych z.net (np. CryptoAPI). 6. Funkcje portalu Portal edukacyjny jako aplikacja trójwarstwowa z możliwością przyszłej rozbudowy i integracji z innymi systemami (standard bazy danych portalu zgodny ze SCORM) Rys. 5. Wygląd strony głównej Obsługa prac dyplomowych (zautomatyzowane określanie i wybór tematów prac, a także ich ocenianie, przypisywanie dyplomantów do prac; Możliwość odciążenia pracowników dydaktycznych od zajęć administracyjnych (poprzez możliwość przekazywania ich części pracownikom administracji); Promocji realizowanych zadań dydaktycznych i zapewnianiu informacji o zakładzie w formie portalu internetowego; Ułatwienia oceny pracy dydaktycznej zakładu poprzez statystyki 164
Tabela 1 Prezentacja funkcjonalności systemu Rola użytkownika Kontekst wywołania Możliwości Gość Lista pracowników Wybór zakładu/katedry, Imienia, Nazwiska. Sekretarka Administrator Nauczyciel Przedmioty Kalendarium Lista ogłoszeń Prace dyplomowe Dziedziczy uprawnienia gościa Statystyki szczegółowe Statystyki prowadzącego Wyznaczanie terminu Ocena pracy dyplomowej Dodanie/Edycja/Usuwanie wydarzenia Dziedziczy uprawnienia gościa Tworzenie/Edycja/Usuwanie użytkownika Przypisywanie/Usuwanie uprawnień dla grup Zmiana haseł Dodawanie/Edycja nowych uprawnień Dziedziczy uprawnienia gościa Zarządzenie pracami dyplomowymi Nowa konsultacja Usuwanie nieaktualnych konsultacji Edycja własnych danych Tworzenie nowych prac Nazwa, prowadzący, gmach, typ zajęć, kierunek Wyświetlanie kalendarium Wyświetlanie listy ogłoszeń Kierunek, typ pracy, stan, słowa kluczowe Posiada wszystkie uprawnienia gościa Informacje jak dla statystyk ogólnych tylko dodatkowo informacje o latach ubiegłych Ilość prac u danego prowadzącego, dodatkowo informacje o latach ubiegłych Przypisanie terminu obrony dla konkretnej pracy Przypisanie oceny do konkretnej pracy Dodanie/edycja/usuwanie wydarzenia w portalu Posiada wszystkie uprawnienia gościa Dodawanie/edycja/usuwanie użytkownika oraz przypisanie mu roli Możliwość przypisania/usuwania nowych uprawnień na przykład: nauczycielowi Możliwość edycji haseł Dodawanie/Edycja nowych uprawnień, które można następnie przypisać innym użytkownikom Posiada wszystkie uprawnienia gościa Edycja, zamknięcie pracy, przypisanie studentów Wyznaczanie terminu konsultacji dla danego kierunku/specjalności/przedmiotu Możliwość usuwania nieaktualnych terminów konsultacji Edycja danych kontaktowych widocznych dla studentów Dodawanie nowych prac 165
7. Podsumowanie System zaprojektowano jako aplikację trójwarstwową składającą się z bazy danych, warstwy logicznej i warstwy prezentacji. Warstwę logiki stanowił komponent ASPortLibrary zbiór interfejsów bazy danych umożliwiający dostęp do danych dydaktycznych poprzez bezpośrednie wywołania, poprzez system wyszukiwania i poprzez moduł generujący statystyki. Warstwa prezentacji oparła się na pojedynczej stronie bazowej, którą system kształtował w zależności od: aktualnie wykonywanej operacji statusu (autoryzacji i autentykacji) użytkownika wydarzeń w życiu jednostki administracji uczelni wyższej Dzięki możliwości obsługi prac dyplomowych i przeglądania informacji bieżących możne on znacznie ułatwić dostęp do wymaganych informacji dla różnych grup użytkowników o różnych uprawnieniach. Szkielet portalu ASPort, który został przez nas zrealizowany jest prawie całkowicie funkcjonalny, większość funkcji można rozbudować lub zintegrować z innymi istniejącymi systemami i portalami uczelnianymi. System można przetestować on-line wchodząc na stronę https://asport.dyndns.org (są jednak wprowadzone ograniczenia czasowe), w razie chęci zalogowania się jako uprzywilejowany użytkownik, proszę wysłać e-mail na adres: piotr@aplikacje.biz z prośbą o udostępnienie loginu i hasła do systemu. 8. Literatura Michael Howard, David LeBlanc. 2001: Bezpieczny kod. Promise, Warszawa. P. Niemojewski, A. Ambroziewicz, K. Kalenik. 2005: Dokumentacja systemu. ASPort T. Miszkiel. 2002: Visual C#.NET encyklopedia. Helion, Gliwice. 166