ZWINNE PROGRAMOWANIE Agile software development o wytwarzanie oprogramowania w oparciu o programowanie iteracyjne (czynnoÅ›ci wykonywane w każdej iteracji) ·ð testowanie ·ð zebranie wymagaÅ„ ·ð rozwiÄ…zania o wymagania i rozwiÄ…zania ewoluujÄ… o inspekcje wymagaÅ„ o brak rozbudowanej dokumentacji o brak hierarchii o szybkość wytwarzania oprogramowania o okresowe dostarczanie oprogramowania o bliska współpraca, bezpoÅ›redni kontakt o adaptacja do zmian LOOP o Late przekroczony termin o Over Budget przekroczony budżet o Overtime - nadgodziny o Poor quality niska jakość XP Extreme Programming Programowanie Ekstremalne (twórca: Kent Beck) ZALETY: XP üð Nie piszemy dokumentacji Ä…ð komunikacja ustna üð Brak specyfikacji wymagaÅ„ Ä…ð kod + przypadki testowe üð Brak f. Albrechta Ä…ð gra planistyczna (rozmowa z klientem) üð Brak inspekcji Fagana Ä…ð programowanie parami üð & Ä…ð Krótkie wydania ZAGROÅ»ENIA: ż Programowanie parami ż PielÄ™gnacja oprogramowania (brak dokumentacji) ż ZÅ‚e planowanie (nie ma okresów dÅ‚uższych niż 1-2 mies) ż NiespeÅ‚nialne zaÅ‚ożenia FAZY CYKLU Å»YCIA PROJEKTU XP o Eksploracja (temat pracy, podstawowe inf. od klienta, zarys architektury i funkcjonalnoÅ›ci) o Planowanie (analiza inf., harmonogram prac) o Iteracje wykonawcze (implementacja, kodowanie, testowanie) o Przygotowanie do produkcji (wdrożenie, uwagi użytkownika, dodatkowe testy) o Utrzymanie w ruchu (nadzór, tworzenie ew. kolejnej wersji oprogramowania) o ZakoÅ„czenie projektu (dokumentacja systemu i projektu) MODEL MVC (Model View Controller) o Model rdzeÅ„ aplikacji o Widok wyjÅ›cie interfejsu użytkownika o Kontroler wejÅ›cie interfejsu użytkownika Separacja prezentacji i modelu umożliwia zmianÄ™ interfejsu użytkownika bez potrzeby modyfikacji modelu Separacja widoku i kontrolera umożliwia zmianÄ™ kontrolera bez koniecznoÅ›ci modyfikacji widoku MODEL Cechy i wÅ‚asnoÅ›ci: o Odpowiedzialny za tzw. logikÄ™ biznesowÄ… o Sposób przechowywania danych nie jest istotny o Szczegóły implementacyjne resztÄ… aplikacji o Dostarczać innym komponentom spójny interfejs o Implementacja Ä…ð oddzielne klasy dla logicznych obiektów o Informacje w BD Ä…ð 1 klasa odpowiada 1 tabeli o Odporny na wewnÄ™trzne zmiany o Zmiana struktury danych nie zmienia interfejsu o Model powinien być PRZENOÅšNY (Å‚atwe przeniesienie kodu do nowej aplikacji) WIDOK: o WyÅ›wietla (prezentuje) dane o Format wyjÅ›ciowy dla aplikacji internetowych (X)HTML o Wykorzystuje model do pobrania danych (instancje klas, aby wywoÅ‚ać odpowiednie metody) o Nie zmienia stanu aplikacji o Implementacja w postaci wielu klas, po jednej na każdÄ… stronÄ™, dokument, plik& o Powinien być WYMIENNY (zmiana wyÅ›wietlanych danych powinna być osiÄ…galna przez prostÄ… wymianÄ™ klas widoku) STEROWNIK: o Centrum dowodzenia aplikacji o Przechwytuje żądanie HTTP i wie co należy wykonać (akcja) i wyÅ›wietlić (widok) o Pozostaje bez zmian (część biblioteki) o Powinien być jeden w caÅ‚ej aplikacji webowej o Skrypt, który korzysta z danych zawartych URL-u lub POST o Dobrze skonfigurowany Ä…ð plik konfiguracyjny o Ma zaimplementowane akcje (pojedyncza czynność, np. dodaj użytkownika) Ä…ð implementowana jako klasa o Zmiana w modelu za poÅ›rednictwem akcji FRAMEWORK-i Øð PHP Symfony o Oddziela od siebie logikÄ™ biznesowÄ…, model danych i interfejs użytkownika o Kompatybilny z serwerami baz danych o DziaÅ‚a na platformach unixopodobnych i windowsowych o JÄ™zyk PHP5 o Wzorzec projektowy MVC o OOP - Object-Oriented Programming o Niezależny od RDBMS o Walidacja o ZarzÄ…dzanie sesjami o Aatwość rozbudowy o Technologia SCAFFOLDINGU (programista pisze specyfikacjÄ™ opisujÄ…cÄ… strukturÄ™ i zależnoÅ›ci w bazie danych, a generator buduje kod umożliwiajÄ…cy tworzenie, czytanie, aktualizowanie i usuwanie wpisów w bazie danych o Ochrona przed atakami żð CSRF Cross-site request forgery (skÅ‚onienie użytkownika zalogowanego do serwisu internetowego, aby uruchomiÅ‚ odnoÅ›nik, którego otwarcie wykona w owym serwisie akcjÄ™, do której atakujÄ…cy nie ma dostÄ™pu) żð XSS Cross-site scripting (osadzeniu w treÅ›ci atakowanej strony kodu, np. JavaScript, który wyÅ›wietlony innym użytkownikom może doprowadzić do wykonania przez nich niepożądanych akcji) Øð MODEL W SYMFONY o Model MVC realizowany za pomocÄ… ORM (Object-Relational Mapping) oraz abstrakcyjnÄ… bazÄ™ danych Øð WIDOK W SYMFONY o SkÅ‚ada siÄ™ z oddzielnych części żð Szablony (prezentacja danych pochodzÄ…cych z aktualnej akcji) żð WyglÄ…d (Layout) żð Komponenty żð Sloty żð Ustawienia odpowiedzi (response) oraz obiekt resposne Øð KONTROLER W SYMFONY o PodziaÅ‚ na kilka komponentów żð Front controller jest punktem wejÅ›cia aplikacji żð Akcje zawierajÄ… logikÄ™ aplikacji żð Obiekty żądania, odpowiedzi oraz sesji udostÄ™pniajÄ… parametry żądania, nagłówki odpowiedzi i trwaÅ‚e dane użytkownika żð Filtry fragmenty kodu wykonywane przy każdym żądaniu, przed i po wykonaniu akcji Øð ASP .NET MVC o Korzysta z MVC o Nie ma modelu zdarzeniowego i kontrolek serwerowych o Usuwa code behind o Separacja warstw TDD (Test-Driven Development) o Wzorce rutowania Øð KONTROLER W ASP.NET MVC o Klasa z metodami o ObsÅ‚uga żądaÅ„ przeglÄ…darki o Wynik akcji ActionResult Øð WIDOK W ASP.NET MVC o WyÅ›wietla interfejs o Bazuje na danych zawartych w modelu Øð Ruby on Rails (RoR, Rails) o Architektura MVC o JÄ™zyk Ruby o Typ open source JZYK RUBY o Zbalansowanie programowania funkcjonalnego i imperatywnego o Zmienna instancji Ä…ð @name o Obiekt Ä…ð g = Greeter.new( Pat ) RUBY A JAVA PODOBIECSTWA o Pamięć zarzÄ…dzana przez garabge collector o Obiekty silnie typowane o Metody publiczne, prywatne, chronione o Wbudowane narzÄ™dzia dokumentujÄ…ce RUBY A JAVA RÓŻNICE o Brak kompilacji o end zamiast } o require zamiast import o atrybuty prywatne o wszystko jest obiektem o brak deklaracji typów o brak koniecznoÅ›ci rzutowania o konstruktor Ä…ð initialize o domieszkowanie klas (maxin s) o YAML zamiast XML o Nil zamiast null ZAAOÅ»ENIA ROR o DRY (Don't Repeat Yourself) - unikanie powtarzania tej samej pracy w różnych miejscach o Convention Over Configuration o Możliwość używania wtyczek BUDOWA ROR o ActiveRecord odpowiada za tworzenie modeli w architekturze MVC o ActionPack biblioteka zawierajÄ…ca klasy: o ActionController (tworzenie kontrolerów) o ActionView (tworzenie widoków) o ActiveSupport zbiór użytecznych o ActionMailer biblioteka sÅ‚użąca do wysyÅ‚ania wiadomoÅ›ci