SDJ 03.2011 PL.pdf

(8875 KB) Pobierz
435995602 UNPDF
3/2011 (195)
SPIS TREŚCI
NARZĘDZIA
PROGRAMOWANIE C++
aplikacji Rails. Od koncepcji biznesowej do
kodu aplikacji
Andrzej Sliwa
Framework Ruby on Rails zyskał w ciągu kilku ostatnich
lat olbrzymią popularność. Stało się tak gdyż głównym za-
łożeniem frameworka jak zwiększenie produktywności
programisty poprzez dostarczenie zestawu gotowych na-
rzędzi wspomagających proces wytwarzania aplikacji in-
ternetowych zwanych potocznie “webowymi”.
34 C++ Builder XE
Wojciech Kulik
C++ Builder XE jest to zaawansowane środowisko pro-
gramistyczne przeznaczone do projektowania aplikacji
okienkowych w języku C++. Umożliwia szybkie i spraw-
ne programowanie w nowoczesnym stylu. Dzięki dostęp-
nej palecie komponentów oraz szerokiej gamie narzędzi
ułatwiających projektowanie, praca z tym programem jest
przyjemna i bezproblemowa. Opiszmy teraz poszczegól-
ne okna aplikacji.
WEB DEVELOPMENT
Krzysztof MArciniak
Kontenery biblioteki standardowej to dynamiczne struktu-
ry służące do przechowywania dużej ilości danych w sytu-
acjach gdy ich ilość nie jest znana z góry. W tym artykule
przedstawione są ich rodzaje wraz z krótkim opisem oraz
kody źródłowe z przykładami ich wykorzystania.
16 Dlaczego warto czekać na PHP 5.4?
Przegląd nowości w kolejnej wersji języka
Marcin Fliszta
Niedawno opublikowano PHP 5.2.16, które ma być ostat-
nią wersją gałęzi 5.2. Wszystkim jej użytkownikom zale-
ca się jak najszybsze przejście na nowszą 5.3.4. Zostało
w niej usuniętych wiele błędów, poprawiono bezpieczeń-
stwo oraz szybkość działania. Tymczasem pojawiła się
już pierwsza, będąca w fazie tworzenia wersja PHP 5.4.
46 Przestrzenie nazw
Łukasz Czekaj
Przestrzenie nazw (ang. namespaces) zostały wpro-
wadzone do standardu języka C++ w celu zwiększenia
przejrzystości i czytelności kodu. Pozwalają one zgrupo-
wać unikalne identyfikatory lub symbole (takie, jak np. kla-
sy, czy zmienne) w nazwany obszar, ograniczając jedno-
cześnie ich widoczność.
20 Wszystko w jednym – JBoss SEAM
Mateusz Zięba
Prosty przewodnik opisujący krok po kroku stworzenie ba-
zodanowej aplikacji WWW z AJAXowym interfejsem użyt-
kownika przy wykorzystaniu szkieletu JBoss SEAM.
WARSZTATY
PROGRAMOWANIE JAVA
48 Grafika wektorowa w Tclu
Paweł Salawa
Domyślny graficzny interfejs użytkownika w Tclu to Tk. Po-
czątkowo był stworzony wyłącznie na potrzeby Tcla, lecz
dzisiaj jest już dostępny dla wielu innych języków. Nie-
zmiennie jednak Tcl pozostaje liderem w obsłudze pakietu
Tk pod względem aktualności, oraz natywnej składni.
26 JAVA w bazach Oracle
Grzegorz Oleksy
W codziennej praktyce projektowej zajmuję się tworze-
niem systemów informatycznych dla szeroko rozumia-
nej dystrybucji. Projekty tego rodzaju (realizowane przede
wszystkim dla pracy przemysłowej) w swym zakresie
główny nacisk kładą na stabilność działania oraz wydaj-
ność, czyli - „..aby skutek był zawsze i na czas..”.
2
3/2011
2
435995602.027.png 435995602.028.png 435995602.029.png 435995602.001.png 435995602.002.png 435995602.003.png
 
SPIS TREŚCI
SPIS TREŚCI
TESTOWANIE OPROGRAMOWANIA
ROBOTYKA
50 Parametryzacja testów – Wykonywanie
tych samych testów dla różnych danych
wejściowych
Sławomir Czerwiński
Czy musiałeś kiedyś przetestować jakąś metodę z uży-
ciem kilku zestawów danych? Czy rozwijając oprogramo-
wanie, natrafiałeś na dotąd nieprzewidziane sytuacje, gdy
program zachowywał się inaczej, niż powinien? Mnie spo-
tykało to wielokrotnie. Dlatego zainteresowało mnie bo-
gactwo sposobów parametryzacji testów, jakie oferuje bi-
blioteka TestNG.
58 Okiełznać robotykę
Wojciech Czarnecki, Michał Wszoełek
Robotyka niezmiennie przyciąga i fascynuje rzesze mło-
dych ludzi. Co jednak, gdy chcielibyśmy stworzyć własne-
go robota, a nie znamy się na elektronice, mechanice czy
programowaniu niskopoziomowym? Z pomocą przycho-
dzą zestawy Lego Mindstorms, obecne na naszym ryn-
ku od kilku lat, oraz bilioteka leJOS, pozwalające na zbu-
dowanie i oprogramowanie robota w przeciągu kilkuna-
stu minut.
54 Proces testowy w normie ISO 29119
Radek Smilgin
Norma ISO 29119 jest nadzieją testerów na pierwszy pro-
fesjonalny standard dotyczący testowania oprogramowa-
nia. Pierwsze materiały wskazują na to, że możemy mieć
do czynienia z naprawdę wartościową publikacją opisują-
cą podstawowe aspekty testowania.
WYWIAD
Java
Na pytania odpowiada Daniel Witkowski – Lider Obsza-
ru Strategicznego Application Improvement Technologies
w WORLDIT Systems
Miesięcznik Software Developer’s Journal
(12 numerów w roku)
jest wydawany przez Software Press Sp. z o.o. SK
Redaktor naczelny:
Łukasz Łopuszański lukasz.lopuszanski@software.com.pl
Skład i łamanie:
Tomasz Kostro www.studiopoligraficzne.com
Kierownik produkcji:
Andrzej Kuca andrzej.kuca@software.com.pl
Adres korespondencyjny:
Software Press Sp. z o.o. SK,
ul. Bokserska 1, 02-682 Warszawa, Polska
tel. +48 22 427 36 91, fax +48 22 224 24 59
www.sdjournal.org cooperation@software.com.pl
Dział reklamy: adv@software.com.pl
Redakcja dokłada wszelkich starań, by publikowane
w piśmie i na towarzyszących mu nośnikach informacje i programy
były poprawne, jednakże nie bierze odpowiedzialności za efekty
wykorzystania ich; nie gwarantuje także poprawnego działania
programów shareware, freeware i public domain.
Wszystkie znaki firmowe zawarte w piśmie są własności odpowiednich
firm.
Zostały użyte wyłącznie w celach informacyjnych.
Osoby zainteresowane współpracą prosimy o kontakt:
cooperation@software.com.pl
www.sdjournal.org
3
435995602.004.png 435995602.005.png 435995602.006.png 435995602.007.png 435995602.008.png 435995602.009.png 435995602.010.png 435995602.011.png
NARZĘDZIA
z zewnątrz do środka
aplikacji Rails
Od koncepcji biznesowej do kodu aplikacji
Framework Ruby on Rails zyskał w ciągu kilku ostatnich
lat olbrzymią popularność. Stało się tak gdyż głównym
założeniem frameworka jak zwiększenie produktywności
programisty poprzez dostarczenie zestawu gotowych
narzędzi wspomagających proces wytwarzania aplikacji
internetowych zwanych potocznie “webowymi”.
Dowiesz się:
• W jaki sposób wykorzystać podejście BDD w rozwijanych
przez siebie aplikacjach
• Jak efetykwnie pracować z narzędziami Cucumber i Rspec
• Jak zmniejszyć dystans między kodem a konceptem bizneso-
wym aplikacji
Powinieneś wiedzieć:
• Znać podstawy tworzenia aplikacji z użyciem frameworka Ru-
by on Rails
• Znać podstawy testowania aplikacji TDD / BDD
ważniejszym, leżącym u podstaw powstania te-
go frameworka jest skupienie się na zapewnie-
niu programiście zadowolenia z wykonywanej pracy.
Założenie to zostało spełnione poprzez maksymalne
uproszczenie zestawu API wewnętrznych funkcji fra-
meworka, oparcie się na wykorzystaniu konwencji po-
nad konfigurację oraz udostepnieniu prostej architek-
tury aplikacji bazującej na konwencji REST.
Framework Ruby on Rails nie powstał przypadkowo
w oparciu o język Ruby. To właśnie język Ruby dzię-
ki swoim unikalnym właściwością umożliwił powsta-
nie frameworka w takiej postaci. Ruby umożliwił bar-
dzo ekspresyjny sposób tworzenia API w postaci de-
klaratywnych konstrukcji bliskich konstrukcjom języka
naturalnego lecz dedykowanych dla konkretnych spe-
cyficznych problemów (tzw. Domain Specific Langu-
age - DSL).
Najważniejszą jednak koncepcją w kontekście tego
artykułu, która jest niejako wizytówką frameworka Ru-
by on Rails, jest zautomatyzowane testowanie prak-
tycznie każdego komponentu wchodzącego w skład
pełnej aplikacji internetowej. Ruby on Rails jako pierw-
szy framework został zintegrowany z pełnym stosem
- frameworkiem testowania. Od samego początku za-
adaptowane zostało podejście Test Driven Develop-
ment oparte na tworzeniu w pierwszej kolejności te-
stów w języku Ruby z wykorzystaniem gotowego ze-
stawu assercji - metod które umożliwiał porównywanie
wyników działania kodu z oczekiwanymi wartościami.
Dopiero po utworzeniu kodu testów tworzyło się im-
plementacje bazującą na jakiejś strukturze czy hierar-
chii klas.
Po implementacji wszystkie testy powinny zasy-
gnalizować poprawną weryfikację z przypadkami te-
stowymi. Przypadki testowe zapisane w kodzie Ru-
by oprócz ułatwienia procesu tworzenia kodu w spo-
sób bardziej systematyczny i wykrywania na bierzą-
co błędów w implementacji, stanowią również swoje-
go rodzaju polisę ubezpieczeniową projektu. Dzieje
się tak ponieważ wraz z rozwojem aplikacji zwiększa
się również baza testów którym testowany kod pod-
4
3/2011
Cucumber & Rspec –
K olejnym istotnym założeniem, jeżeli nie naj-
435995602.012.png 435995602.013.png
 
435995602.014.png 435995602.015.png 435995602.016.png 435995602.017.png 435995602.018.png
Cucumber & Rspec – z zewnątrz do środka aplikacji Rails
lega. Taka biblioteka testów praktycznie natychmiast
po uruchomieniu jest w stanie wykryć błędy regresyj-
ne wynikające ze zmian nanoszonych w kodzie. Ta-
kie błędy często nie są oczywiste ze względu na swój
daleki zasięg oddziaływania na całą bazę kodu apli-
kacji.
Również użycie języka skryptowego, jakim jest ję-
zyk Ruby, wymusiło mocne skupienie się na procesie
testowania, ze względu na jego dynamiczne możliwo-
ści (brak statycznego typowania, możliwość przedefi-
niowania standardowych metod itd.), jak również ze
względu na całkowity brak procesu kompilacji, który
w językach ze statycznym typowaniem wykrywał więk-
szość błędów niedoświadczonych programistów, lub
po prostu zwykłych przeoczeń.
Wykrywanie błędów w ten sposób w Ruby on Rails
ma szczególne znaczenie gdyż w związku z uprosz-
czeniem narzędzi, sam proces wytwarzania aplikacji
znacznie przyśpieszył. Efektem tego jest dość inten-
sywny i stały rozwój aplikacji, odporny na częste zmia-
ny wymagań biznesowych.
Skoncentrowanie się na testowaniu w kontekście fra-
meworka Ruby on Rails ma również tą zaletę, że pro-
gramiści są już przyzwyczajeni do takiego trybu pra-
cy, a w związku z tym wprowadzanie nowych narzędzi
lub frameworków testowania nie zwiększało w sposób
drastyczny krzywej uczenia i czasu niezbędnego na
poznanie nowego stosu (o ile oczywiście nadal są one
zbieżne z wcześniej wyuczonymi nawykami).
Listing 1.
source 'http://rubygems.org'
Rspec
Biblioteka RSpec rozszerza zestaw narzędzi testowa-
nia frameworka Ruby on Rails o wykorzystanie dodat-
kowych klas do specyfikacji modeli, widoków, kontrole-
rów czy choćby helperów (metod pomocnicznych). Bi-
blioteka RSpec może zarówno współistnieć w aplikacji
ze standardowym stosem testowania opartym o testy
jednostkowe, jak również może go całkowicie zastą-
pić. Stało się to znacznie łatwiejsze wraz z wydaniem
frameworka Ruby on Rails w wersji 3.x za sprawą lep-
szego projektu API które zapewnia obecnie wymien-
ność poszczególnych elementów frameworka na ich
alternatywne rozwiązania. Oczywiscie nadal dostęp-
ny jest standardowy zestaw instalowany wraz z fra-
meworkiem.
Specyfikacje w postaci klas zapewniają kompletną
izolację przypadków testowych. Taka całkowita izola-
cja może być również bardzo ryzykowana ze względu
na zbyt wąski zakres testowanych zmian nie obejmu-
jący testowania integracyjnego. Testowanie integracyj-
ne zapewnia, że konkretny scenariusz użycia aplikacji
wykorzystujący kilkanaście funkcjonalności zakończy
się pomyślnie.
Przykładowy scenariusz pracy z RSpec:
gem 'rails' , '3.0.3'
# Bundle edge Rails instead:
# gem 'rails', :git => 'git://github.com/rails/
rails.git'
gem 'sqlite3-ruby' , : require => 'sqlite3'
gem 'haml' , '>= 3.0.16'
gem 'compass' , '>= 0.10.4'
gem 'rails3-generators'
gem 'haml-rails'
gem 'httparty'
gem "jquery-rails"
group : development , : test do
gem 'rspec-rails' , '>= 2.1.0'
gem 'hpricot'
gem 'rspec_hpricot_matchers' , '>= 1.0'
gem 'autotest' , '>= 4.4.2'
gem 'autotest-rails' , '>= 4.1.0'
gem 'factory_girl' , : git => 'git://github.com/
thoughtbot/factory_girl.git'
if RUBY_PLATFORM = ~ /darwin/
gem 'autotest-growl' , '>= 0.2.6'
gem 'autotest-fsevent' , '>= 0.2.3'
end
end
1. Napisanie specyikacji, której wykonanie się nie
powiedzie ze względu na brak implementacji. (ko-
lor czerwony)
2. Implementacja kodu podlegającego specyikacji
3. Zweryikowanie zgodności - pomyślne wykonanie
specyikacji. (kolor zielony)
4. Refaktoryzacja, czyszczenie kodu, optymalizacje.
group : cucumber do
gem 'database_cleaner' , '>= 0.5.2'
gem 'rspec-rails' , '>= 2.1.0'
gem 'capybara' , '>= 0.4.0'
gem 'cucumber' , '>= 0.8.5'
gem 'cucumber-rails' , '>= 0.3.2'
end
Cucumber
Testowaniem integracyjnym zajmuje się biblioteka Cu-
cumber, stanowiąc uzupełnienie dla biblioteki RSpec.
Bibliteka ta umożliwia, z użyciem takich narzędzi jak
Webrat czy Selenium, testowanie z perspektywy użyt-
www.sdjournal.org
5
435995602.019.png 435995602.020.png 435995602.021.png 435995602.022.png 435995602.023.png 435995602.024.png 435995602.025.png
 
Zgłoś jeśli naruszono regulamin