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
– przekroczony termin
Late
o
Over Budget
– przekroczony budżet
o
- nadgodziny
Overtime
o
– niska jakość
Poor quality
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
F
AZY 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 – View –Controller)
MODEL MVC
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ć
(łatwe przeniesienie kodu do nowej
PRZENOŚNY
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ć
(zmiana wyświetlanych danych powinna być
WYMIENNY
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
Łatwość rozbudowy
o Technologia
(programista pisze specyfikację
SCAFFOLDINGU
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
JĘZYK RUBY
o Zbalansowanie programowania funkcjonalnego i imperatywnego
o Zmienna instancji @name
o Obiekt g = Greeter.new(‘’Pat’’)
R
UBY
A
J
AVA
–
PODOBIEŃSTWA
o Pamięć zarządzana przez garabge collector
o Obiekty silnie typowane
o Metody publiczne, prywatne, chronione
o Wbudowane narzędzia dokumentujące
R
UBY
A
J
AVA
–
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
ZAŁOŻENIA
R
O
R
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
R
O
R
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