Przygotowanie platformy projektowo-programowej Wydział Inżynierii Mechanicznej i Informatyki Instytut Informatyki Teoretycznej i Stosowanej dr inż. Łukasz Szustak
Agenda System Kontroli Wersji (SVN) Zintegrowane środowiska programistyczne UML jako przykład narzędzia do projektowania systemów
Wprowadzenie do Systemów Kontroli Wersji Systemy kontroli wersji ułatwiają grupową pracę wielu programistów nad jednym projektem Pozwalają one na współbieżną współpracę poprzez sieć wielu osób nad tym samym kodem źródłowym Najbardziej popularnym systemem kontroli wersji jest CVS Ze względu na kilka wad systemu CVS powstał system Subversion, nazywany również SVN, który wypiera (wyparł) CVS
Wprowadzenie do Systemów Kontroli Wersji Wszędzie tam, gdzie nad jednym projektem pracuje wiele osób, zastosowanie znajduje system kontroli wersji System, zainstalowany na serwerze, przechowuje pliki projektu Programista, który chce wykonać poprawki lub zmiany w kodzie źródłowym, pobiera aktualny kod projektu z serwera Po dokonaniu zmian w plikach, kod projektu jest przesyłany przez programistę ponownie na serwer Oprogramowanie kontroli wersji scala pliki przesłane przez programistę z kodem
Wprowadzenie do Systemów Kontroli Wersji Proces scalania jest niemal całkowicie automatyczny Nawet, jeśli wielu programistów wykonało zmiany w projekcie i przesłało nowe wersje kodu na serwer w tym samym czasie, oprogramowanie kontroli wersji poprawnie scali wszystkie dokonane zmiany: być może w wielu plikach naraz, być może w niektórych plikach w wielu miejscach Jedynie wykluczające się wzajemnie zmiany dotyczące dokładnie tego samego miejsca w jednym pliku nie mogą być rozstrzygnięte automatycznie Wówczas potrzebna jest ingerencja jednego z programistów, który musi ręcznie wybrać jedną wersję wprowadzonych modyfikacji
Wprowadzenie do Systemów Kontroli Wersji Naturalnie, takie kolizje w rzeczywistości są dość rzadkie (pod warunkiem, że poszczególni developerzy mają ściśle określone zadania) Opisany model pracy jest określany jako kopiuj-modyfikuj-scal (copy-modify-merge) W modelu tym, poza specjalnymi przypadkami, nie występują blokady, co znaczy że żaden z plików projektu nie jest zablokowany Programista może pobrać kod całego projektu, i pracować nad dowolnym plikiem w dowolnej chwili Nie ma wymogu oczekiwania na zakończenie pracy poszczególnych osób w zespole (wykonania uaktualnienia) - programiści są wzajemnie niezależni
Subversion cechy systemu Subversion może być postrzegany jako serwer plików wzbogacony o dodatkową funkcjonalność W wirtualnym systemie plików udostępnianym przez serwer wszystkie zmiany, a więc zawartość, nazwy, atrybuty oraz położenie plików i katalogów podlegają śledzeniu i mogą być wycofywane System rejestruje zmiany dotyczące nie tylko zawartości, ale także wszystkich innych cech plików Foldery podlegają rejestracji w taki sam sposób jak pliki Śledzeniu podlegają także operacje na plikach i folderach: tworzenie, kopiowanie, przesuwanie, usuwanie, zmiana nazwy
Subversion cechy systemu Zatwierdzenie poprawek przez programistę jest operacją atomową, tzn. odbędzie się ona w całości lub nie odbędzie się wcale (bez względu na to ilu plików dotyczy) Subversion został zaimplementowany m.in. w postaci modułu serwera Apache, dzięki czemu dostęp do repozytoriów może wykorzystywać SSL, kompresję danych i wszelkie inne udogodnienia oferowane przez Apache'a System pozwala na rejestrację wersji zarówno plików tekstowych jak i binarnych
SVN słownik repozytorium (repository): zestaw plików i folderów zarządzanych i udostępnianych przez serwer SVN System SVN jest serwerem plików, który nadaje całemu repozytorium dodatkowy wymiar: numer rewizji W każdej chwili użytkownicy mogą uzyskać dostęp do całego repozytorium (czyli drzewa katalogów i plików) w stanie z zadanej rewizji Numer rewizji dotyczy całego repozytorium i jest zwiększany po każdym przesłaniu plików na serwer (czyli po wykonaniu operacji commit)
SVN słownik repozytorium (repository): Podstawowy proces wykorzystywania SVN-a: Użytkownik najpierw pobiera z serwera aktualną kopię plików Kopia lokalna jest nazywana kopią roboczą Następnie użytkownik dowolnie modyfikuje swoją własną kopię roboczą Na zakończenie, zmieniona kopia robocza jest przesyłana przez użytkownika na serwer i scalana z plikami zawartymi na serwerze
SVN słownik kopia robocza (working copy): Komplet plików tworzących projekt przekopiowany z serwera SVN na dysk lokalny Kopia robocza jest w 100% prywatną własnością: oprogramowanie SVN nigdy samowolnie nie dokona w niej żadnych zmian Do utworzenia kopii roboczej służy polecenie checkout zaś do przesłania kopii roboczej na serwer polecenie commit Po przesłaniu na serwer, kopia robocza może być usunięta (nie ma to wpływu na zawartość serwera)
SVN słownik rewizja (revision) Stan systemu plików przechowywanych przez serwer SVN po wykonaniu zadanej liczby zmian Operacja commit przesyłająca kopię roboczą na serwer zwiększa numer rewizji Bez względu na liczbę zmienionych plików, jedna operacja commit zwiększa numer rewizji dokładnie o jeden w stosunku do aktualnego numeru rewizji na serwerze SVN Numery rewizji dotyczą całego drzewa plików i katalogów przechowywanego przez SVN, a nie poszczególnych plików
SVN słownik kolizja (collision): Sytuacja, w której dwie osoby wykonały wykluczające się zmiany w jednym z plików Serwer SVN nie może w takiej sytuacji automatycznie rozstrzygnąć, która wersja pliku ma być traktowana jako bieżąca Decyzję o tym, który plik ma być aktualny, podejmuje człowiek, po ręcznej analizie plików
Subversion Oprogramowanie Subversion składa się z klienta oraz serwera: VISUALSVN SERVER: Serwer SVN dla systemu Windows TortoiseSVN: graficzny klient SVN dla systemu Windws
VISUALSVN SERVER Po zainstalowaniu należy stworzyć użytkowników, którzy w oparciu o login i hasło - będę mieć dostęp do SVN:
VISUALSVN SERVER W następnej kolejności należy stworzyć repozytorium, czyli miejsce w którym będą przechowywane kopie robocze
VISUALSVN SERVER Z utworzonym repozytorium można powiązać użytkowników, nadając im indywidualne prawa dostępu:
TortoiseSVN TortoiseSVN: graficzny klient SVN dla systemu Windows W celu skorzystania z klienta SVN, w pierwszej kolejności należy powiązać folder użytkownika z repozytorium:
TortoiseSVN W celu skorzystania z klienta SVN, w pierwszej kolejności należy powiązać folder użytkownika z repozytorium:
TortoiseSVN Po wykonaniu polecania SVN checkout zostanie pobrana zawartość repozytorium W następnej kolejności można dodawać nowe pliki/foldery do repozytorium:
TortoiseSVN Aby synchronizować repozytorium z lokalną wersją należy użyć 1 z 2 komend: SVN Update której zadaniem jest pobranie najnowszej wersji np..pliku z repozytorium SVN Commit której zadaniem jest wysłanie nowej/zmodyfikowanej wersji np.. pliku
TortoiseSVN W trakcie wysyłania użytkownik zostanie poproszony o podanie komentarza:
TortoiseSVN Użytkownicy mają dostęp do wszystkich wcześniej wysłanych wersji:
Zintegrowane środowiska programistyczne Zintegrowane środowisko programistyczne (Integrated Development Environment, IDE) jest to aplikacja lub zespół aplikacji, środowisk służących do tworzenia, modyfikowania, testowania i konserwacji oprogramowania Przykłady: Edytor tekstowy, np: vim, gedit, kwrite NetBeans Eclipse Visual Studio Dev-C++
NetBeans NetBeans projekt otwartego oprogramowania mający za zadanie dostarczanie efektywnych narzędzi programowania głównie w języku Java Dodatkowo, NetBeans zapewnia wsparcie dla PHP, C/C++, i HTML5 Dwa najważniejsze elementy wchodzące w skład NetBeans-a to: NetBeans IDE zintegrowane środowisko programistyczne, którego głównym celem jest przyspieszenie budowy aplikacji, w tym również usług sieciowych oraz aplikacji mobilnych NetBeans Platform gotowa platforma służąca za fundament rozwoju aplikacji Java Swing. Dzięki użyciu gotowej bazy i udostępnianych przez NetBeans Platform gotowych do użycia usług okna, menu, zarządzanie i przechowywanie konfiguracji, dostęp do plików można znacząco skrócić proces budowy aplikacji http://www.oracle.com/technetwork/java/javase/downloads/jdk-7-netbeans-download-432126.html
NetBeans moduł C/C++ Moduł Netbeans dla C/C++ wymaga wcześniejszego zainstalowania kompilatorów dla C/C++, debuggera gdb, jak również zapewnienia wsparcia dla make utility Dla systemów rodziny Linux może zostać wykorzystany szeroko znany GNU Compiler Collection, natomiast dla rodziny systemów Windows można wykorzystać jeden z następujących narzędzi: Cygwin Compilers and Tools MinGW Compilers and Tools https://netbeans.org/community/releases/72/cpp-setup-instructions.html#downloading
NetBeans praca zdalna NetBeans pozwala na pracę zdalną, np.: Kod tworzony/rozwijany może być na lokalnym komputerze lub serwerze Kod może być kompilowany na serwerze lub lokalnie Program może zostać uruchomiony na serwerze lub na lokalnym komputerze Wykorzystywane są do tego standardowe protokoły komunikacyjne: ssh, sshfs lub ftp, sftp
NetBeans - Subversion NetBeans zapewnia integrację klienta SVN W rezultacie usprawnia to proces rozwoju danego oprogramowania dla grup roboczo-projektowych, poprzez równoległą pracę z użyciem wspólnego repozytorium Funkcjonalność ta pozwala na wykonywanie zadań wersjonowanych bezpośrednio z IDE systemu projektu https://netbeans.org/kb/docs/ide/subversion.html
Narzędzia do modelowania w UML Narzędzia do modelowania w UML (Unified Modeling Language ujednoliconym języku modelowania) oprogramowanie, które pozwala tworzyć modele pomocne przy programowaniu Format otwarty UML język formalny wykorzystywany do modelowania różnego rodzaju systemów Służy do modelowania dziedziny problemu - w przypadku stosowania go do analizy oraz do modelowania rzeczywistości, która ma dopiero powstać - tworzy się w nim głównie modele systemów informatycznych.
Narzędzia do modelowania w UML UML jest głównie używany wraz z jego reprezentacją graficzną - jego elementom przypisane są symbole, które wiązane są ze sobą na diagramach Można wyróżnić aż 14 diagramów głównych oraz 3 abstrakcyjne (struktur, zachowań i interakcji) Przykładowe diagramy: Przypadków użycia: przedstawia interakcję pomiędzy aktorem (użytkownikiem systemu), który inicjuje zdarzenie oraz samym systemem jako sekwencję prostych kroków
Narzędzia do modelowania w UML Przykładowe diagramy: Sekwencji: opisują interakcje pomiędzy częściami systemu w postaci sekwencji komunikatów wymienianych między nimi Klas: to statyczny diagram strukturalny, przedstawiający strukturę systemu w modelach obiektowych przez ilustrację struktury klas i zależności między nimi Komunikacji kooperacji: Diagram komunikacji jest jednym z diagramów interakcji. Diagram komunikacji przedstawia sposób wymiany komunikatów pomiędzy obiektami uczestniczącymi w interakcji.
Diagram przypadków użycia
Diagram Sekwencji
Diagram Komunikacji
Serwer www - Apache Apache - otwarty serwer HTTP dostępny dla wielu systemów operacyjnych W połączeniu z interpreterem języka skryptowego PHP i bazą danych MySQL, Apache stanowi jedno z najczęściej spotykanych środowisk w firmach oferujących miejsce na serwerach sieciowych Cechuje go wielowątkowość, skalowalność, bezpieczeństwo, itd...
PHP PHP jest językiem skryptowym służącym do rozszerzania możliwości stron internetowych Składnia PHP jest bardzo podobna do popularnych języków programowania C/C++, lecz jest bardzo uproszczona programista PHP zazwyczaj nie musi przejmować się poprawnością typów zmiennych, przydzielaniem dla nich pamięci itp. PHP umożliwia współpracę z wieloma rodzajami źródeł danych, takich jak systemy zarządzania bazami danych, pliki tekstowe, dokumenty XML oraz serwisy WWW
Baza danych: MySQL MySQL jest wolnodostępnym systemem zarządzania relacyjnymi bazami danych MySQL rozwijany jest przez firmę Oracle MySQL to najchętniej używana baza danych z otwartym dostępem do kodu źródłowego Jest wykorzystywana do tworzenia niedrogich, skutecznych i skalowalnych wbudowanych aplikacji bazodanowych w sieci
phpmyadmin phpmyadmin narzędzie służące do łatwego zarządzania bazą danych MySQL napisane w języku PHP Oprogramowanie wydawane jest na licencji GNU General Public License i umożliwia między innymi tworzenie/usuwanie baz danych, dodawanie/kasowanie relacji oraz edycję ich struktury i zawartości Wszystkie operacje mogą być wykonywane z poziomu przeglądarki internetowej, w graficznym środowisku, bez konieczności pracy z domyślnym interfejsem tekstowym
WorkBeanch MySQL Workbench jest zunifikowanym wizualnym narzędziem dla twórców baz danych, programistów i administratorów baz danych MySQL Workbench umożliwia modelowania baz danych oraz zapewnia kompleksowe narzędzia administracyjne dla konfiguracji serwera, administracji użytkowników, tworzenia kopii zapasowych itd.. MySQL Workbench jest dostępny dla różnych systemów operacyjnych rodziny Windows, Linux i Mac OS X MySQL Workbench dostarcza wizualne narzędzia do tworzenia, realizacji i optymalizacji zapytań SQL
Instalacja serwera Apache, PHP, MySQL Alache: http://httpd.apache.org/download.cgi php: http://windows.php.net/download/ MySQL: http://dev.mysql.com/downloads/mysql/ phpmyadmin: http://www.phpmyadmin.net/home_page/downloads.php przykładowy przewodnik: http://www.tworzenieinternetowychstron.cba.pl/porady/instal acja-serwera-apache-php-i-mysql.html