SlideShare a Scribd company logo
1 of 72
Download to read offline
Agile
Softwareentwicklung
 mit Ruby on Rails
   Tanja Otto und Hussein Morsy

             04.11.2009
     Gesellschaft für Informatik
   Regionalgruppe Trier/Luxemburg
SalesLentz::DevTeam
Über uns
• internes Entwicklerteam von Sales-Lentz
• IBEs für Reisen, Bustickets, Eventtickets
• seit 2006 entwickeln wir mit Ruby on Rails
• Buch Ruby on Rails 2 Galileo Press
  http://www.railsbuch.de
  http://twitter.com/ajnato
  http://twitter.com/HusseinMorsy
Wer ist ein Rails Newbie ?
Konferenzen 2009
Konferenzen 2009
• RailsConf 2009, Las Vegas 4.-7.Mai
• Ruby on OS X, Amsterdam 15. Mai
• Apple WWDC, San Francisco 8.-12. Juni
• Rails-Konferenz*, Offenbach 1-2. September
• RubyEnRails, Amsterdam 30.-31. Oktober
• Rails Usergroup*, Uni Düsseldorf monatlich
Unsere Projekte
www.sales-lentz.lu
flibco.com
flibco.com (Backend)
travel.lu
show.lu
wellness.sales-lentz.lu
Webapplikationen
• Client-Server Architektur
• Keine Installation proprietärer Software
• Nur Webbrowser und eine
  Internetverbindung notwendig
• Einfach zu testen, da Output Text (HTML)
  ist
Entwicklungsprinzipien

• Software, die gebraucht wird (Software that
  matters)
• Software, die pünktlich geliefert wird
• Software, die innerhalb des Budgets
  ausgeliefert wird
• Software, die dem Benutzer die Arbeit
  erleichtert
...und das Wichtigste


  Software, die den Kunden und den
   Programmierer glücklich macht
Wie erreichen wir
  diese Ziele ?
Agile
Softwareentwicklung
     (Theorie)
Agile
 Softwareentwicklung
• Entwurfsphase auf ein Mindestmaß
  reduzieren
• so früh wie möglich zu ausführbarer
  Software gelangen
• regelmäßig, in kurzen Abständen deployen
• regelmäßig, in kurzen Abständen mit dem
  Kunden besprechen
• Gegensatz z.B. zum Wasserfallmodell
Agile Methoden

• Paarprogrammierung
• Testgetriebene Entwicklung
• Refactoring
• Häufiges Deployment
• Scrum
Entwicklungszyklus
1. Anforderungen und Entwurf (Requirements
   Management, Analyse, Design)
2. Implementierung
3. Test
4. Veröffentlichung
   (Deployment,Konfigurationsmanagement)
Iterationen


• Jede Iteration ist ein Mini-Projekt
• 2 Wochen Iteration
Agile
Softwareentwicklung
     mit Rails
Verwendete “Tools”

• Sprache: Ruby
• Web-Framework: Ruby on Rails
• Test-Framework: RSpec und Cucumber
• Versionierung: Git
• Deployment: Capistrono
Die Sprache Ruby
Vorteile von Ruby
• rein objektorientiert, keine skalaren
  Datentypen
• Interpretersprache (=> sehr dynamisch)
• Humansprache
• wurde entwickelt, um Programmierer
  glücklich zu machen
                          puts car.wheels
                          # 3

                          puts 3.odd?
                          # true
DSL mit Ruby
• DSL = Domain Specific Language
• Für jede Domäne (Arbeitsgebiet) ein
  eigenes Vokabular
   class Meeting < ActiveRecord::Base
     has_many :attendees
     validates_presence_of :title
     validates_numericality_of :room_nr

   end
Yukihiro Matsumoto

•   44 jähriger, japanischer
    Wissenschaftler und
    Programmierer

•   Erfinder von Ruby 1995

•   Spitzname Matz
JRuby
• Ruby-Interpreter/Compiler in Java
• Alternative zur Sprache Java , Groovy,...
• JRuby-Code kann in bestehende Java-
  Projekte eingesetzt werden
• Einfaches Deployment auf der Java-
  Plattform
• Wird im Enterprise-Bereich aktiv
  eingesetzt (u.a. bei ThoughtWorks)
Der Framework Rails
David Heinemeier
          Hansson
•   30 jähriger, dänischer
    Programmierer

•   Rails aus Basecamp
    “extrahiert”

•   2004 Rails veröffentlicht

•   Partner von 37signals
Prinzipien von Rails

• Don’t repeat yourself
• Convention over configuration
• Datenbankpersistenz “eingebaut” (ORM)
• Model-View-Controller
• Modulare Komponenten/Subframeworks
Model-View-Controller

• Model (Datenmodell) - ActiveRecord
• View (Präsentation) - ActionView
• Controller (Programmsteuerung) -
  ActionController
Java-Frameworks vs.
        Rails
Java-Frameworks vs.
          Rails
• Konfigurationsdatei eines Java-Programms
  so gross wie gesamtes Rails-Programm
• Alle Subframeworks enthalten
• Mit Rails können 80% der Aufgaben gelöst
  werden
• Nicht für Desktop-Applikationen geeignet
Testen
Was ist TDD
Was ist TDD

• Hauptmerkmal: Test First
Was ist TDD

• Hauptmerkmal: Test First
• Zuerst der Test dann der Code
Was ist TDD

• Hauptmerkmal: Test First
• Zuerst der Test dann der Code
• Von innen nach aussen
Was ist TDD

• Hauptmerkmal: Test First
• Zuerst der Test dann der Code
• Von innen nach aussen
• TDD ist kein Test-Tool, sondern eine
  Technik für Entwickler
Units

   Views             Views            Views            Views




        Controller       Controller       Controller




Model        Model           Model        Model         Model
Refactoring

• Code optimieren/verbessern ohne die
  “Funktionalität” zu verändern
• Red => Green => Refactor

• “Make it green than make it clean”
Was ist BDD
Was ist BDD

• BDD ist kein Ersatz für TDD
Was ist BDD

• BDD ist kein Ersatz für TDD
• TDD ist ein Bestandteil von BDD
Was ist BDD

• BDD ist kein Ersatz für TDD
• TDD ist ein Bestandteil von BDD
• BDD bedeutet outside-in Entwicklung
Was ist BDD

• BDD ist kein Ersatz für TDD
• TDD ist ein Bestandteil von BDD
• BDD bedeutet outside-in Entwicklung
• Wie ein User mit der App arbeiten möchte
  beeinflusst die Implementierung
Was ist BDD

• BDD ist kein Ersatz für TDD
• TDD ist ein Bestandteil von BDD
• BDD bedeutet outside-in Entwicklung
• Wie ein User mit der App arbeiten möchte
  beeinflusst die Implementierung
• Kundenwünsche stehen an erster Stelle
Outside-In

   Views             Views            Views            Views




        Controller       Controller       Controller




Model        Model           Model        Model         Model
Cucumber


 Applikation
Aslak Hellesøy
        David Chelimsky
•   Aslak Hellesøy:

    Cucumber

•   David Chelimsky:

    Unit-Testframework RSpec
Feature: Booking
  As a Customer
  I want to book a travel
  So that I can spend my holidays with Sales-Lentz

Scenario:....
Scenario: booking a Travel
  Given a travel “Rhein in Flammen” for 137.40
  When I go to the detail page of Rhein in Flammen
  And I follow "buchen"
  And I select "Herr" from "Anrede"
  And I fill in "Nachname" with "Mustermann"
  And I fill in "E-Mail" with "hans@mustermann.de"
  And I check "Versicherung"
  And I press "buchen"
  Then I should see "Ihre Buchung"
  And I should see "Herr"
  And I should see "Mustermann"
  And I should see "hans@mustermann.de"
  And I should see "137,40 EUR"
  But I should not see "Ausgebucht"
Feature: Administrationsbereich
 Als ein angemeldeter Administrator
 Möchte ich die Admin-Seiten besuchen
 So dass ich die Seiten leicht aktualisieren kann.

Szenario: Zugang für Admin-Seite beschränken
  Gegeben sei ein Admin-User
  Wenn ich nicht eingelogged bin
  Und ich die Admin-Seite besuche
  Dann sollte mir der Zugang verweigert werden

Szenario: Zugang für für autorisierten User
 Gegeben sei ein Admin-User
 Und ich bin eingelogged als Admin-User
 Wenn ich die Admin-Seite besuche
 Dann sollte ich "Admin-Bereich" sehen
Ziel

Automatisiertes ausführen der Features
          auf der Applikation
      wie in einem Webbrowser
Given-Step mit Definition
Given-Step mit Definition

Step
Given a travel “Rhein in Flammen” for 137.40
Given-Step mit Definition

Step
Given a travel “Rhein in Flammen” for 137.40



Step-Definition
Given /^a travel "([^"]*)" for ([0-9.]*)$/ do |title, price|
  Travel.create(:title => title, :price => price.to_f)
end
Given-Step mit Definition

Step
Given a travel “Rhein in Flammen” for 137.40



Step-Definition
Given /^a travel "([^"]*)" for ([0-9.]*)$/ do |title, price|
  Travel.create(:title => title, :price => price.to_f)
end
Versionierung mit Git/
       GitHub
Versionsverwaltung
• System zur Erfassung von Änderungen an
  Dokumenten
• Zugriff auf die gesamte Historie
• Versionsverwaltungssysteme
 • CVS
 • SVN
 • Mercurial
 • Git
Git
• Entwickelt von Linus Torvalds (2005)
• Für die Verwaltung des Linux-Kernels
• Besser als svn, cvn etc.
 • kein zentraler Server mehr notwendig
 • nicht lineare Entwicklung einfach
    (branching)
 • Sicherheit (z.H. Hash-Wert für commits)
    Geschwindigkeit
GitHub

• Kostenloser/Kostenpflichtiger Git-Server
• Fast alle Ruby/Rails Projekte auf GitHub
• Facebook für Entwickler
GitHub
Deployment
Continious Integration


• Automatischer Test bei jedem Deploy
• Automatische Benachrichtungen per E-Mail
  wenn Test fehlschlägt
Heroku

• Hosting für Rails
• Sehr einfaches deployment
• Kostenlos für kleine Applikationen
“...”
Webdienste rund um
          Rails
•   GitHub       •   EngineYard

•   lighthouse   •   Shopify

•   hoptoad      •   ...

•   New Relic

•   Scout

•   Heroku
Praktika

• Interessiert, im Rahmen eines Praktikums
  mit uns zu arbeiten?

  devteam.sales-lentz.lu
  tanja.otto@sales-lentz.lu
Literatur
• Agile Web Development with Rails (Dave
  Thomas, David Heinemeier Hansson)
• Die Programmiersprache Ruby (David
  Flanagan,Yukihiro Mastumoto)
• The RSpec Book(David Chelimsky, Dave
  Astels, Zach Dennis, Aslak Hellesøy, Bryan
  Helmkamp, Dan North)
• Ruby on Rails 2, Hussein Morsy,Tanja Otto.
  http://openbook.galileocomputing.de/
  ruby_on_rails/

More Related Content

Viewers also liked

Social Media: von netten Gesprächen und harten Fakten
Social Media: von netten Gesprächen und harten FaktenSocial Media: von netten Gesprächen und harten Fakten
Social Media: von netten Gesprächen und harten FaktenChristian Henner-Fehr
 
Rieser****s Hotel Wellness am Achensee Tirol Urlaub
Rieser****s Hotel Wellness am Achensee Tirol UrlaubRieser****s Hotel Wellness am Achensee Tirol Urlaub
Rieser****s Hotel Wellness am Achensee Tirol UrlaubHotel Rieser
 
2009-03-17 FNF BaaA- nr-16_pakistanische iden des märz
2009-03-17 FNF BaaA- nr-16_pakistanische iden des märz2009-03-17 FNF BaaA- nr-16_pakistanische iden des märz
2009-03-17 FNF BaaA- nr-16_pakistanische iden des märzOlaf Kellerhoff
 
JUNNAID ALI_LETTER OF OFFER
JUNNAID ALI_LETTER OF OFFERJUNNAID ALI_LETTER OF OFFER
JUNNAID ALI_LETTER OF OFFERJUNAID ALI
 
Impressionen Fachkongress New Business Generation 2014
Impressionen Fachkongress New Business Generation 2014Impressionen Fachkongress New Business Generation 2014
Impressionen Fachkongress New Business Generation 2014anthesis GmbH
 
Beeren-ein Geschenk der Natur
Beeren-ein Geschenk der NaturBeeren-ein Geschenk der Natur
Beeren-ein Geschenk der NaturTweuropa Network
 
Der sprunginderschuessel
Der sprunginderschuesselDer sprunginderschuessel
Der sprunginderschuesselchzaenker
 
Gtr Setup Guide
Gtr Setup GuideGtr Setup Guide
Gtr Setup Guideguest36782
 
Presentazione telefoniche
Presentazione telefonichePresentazione telefoniche
Presentazione telefonicheLazzaro Picardi
 
Portraits
PortraitsPortraits
Portraitskyoung
 
Gat2
Gat2Gat2
Gat2exo11
 
Digitale Medien – Nutzen für KMU
Digitale Medien – Nutzen für KMUDigitale Medien – Nutzen für KMU
Digitale Medien – Nutzen für KMUMatthias Walti
 
Der Sprung in der Schuessel
Der Sprung in der SchuesselDer Sprung in der Schuessel
Der Sprung in der Schuesselchzaenker
 
Angriffsvektor Datenkommunikation in der Sicherheitstechnik
Angriffsvektor Datenkommunikation in der SicherheitstechnikAngriffsvektor Datenkommunikation in der Sicherheitstechnik
Angriffsvektor Datenkommunikation in der SicherheitstechnikThomas Schuy
 
Ökonomisches Potential ür den Standort
Ökonomisches Potential ür den StandortÖkonomisches Potential ür den Standort
Ökonomisches Potential ür den StandortOpen Knowledge Austria
 

Viewers also liked (20)

WVG_Ambientales CHNIS_Español
WVG_Ambientales CHNIS_EspañolWVG_Ambientales CHNIS_Español
WVG_Ambientales CHNIS_Español
 
Fachräume
FachräumeFachräume
Fachräume
 
Social Media: von netten Gesprächen und harten Fakten
Social Media: von netten Gesprächen und harten FaktenSocial Media: von netten Gesprächen und harten Fakten
Social Media: von netten Gesprächen und harten Fakten
 
Rieser****s Hotel Wellness am Achensee Tirol Urlaub
Rieser****s Hotel Wellness am Achensee Tirol UrlaubRieser****s Hotel Wellness am Achensee Tirol Urlaub
Rieser****s Hotel Wellness am Achensee Tirol Urlaub
 
2009-03-17 FNF BaaA- nr-16_pakistanische iden des märz
2009-03-17 FNF BaaA- nr-16_pakistanische iden des märz2009-03-17 FNF BaaA- nr-16_pakistanische iden des märz
2009-03-17 FNF BaaA- nr-16_pakistanische iden des märz
 
JUNNAID ALI_LETTER OF OFFER
JUNNAID ALI_LETTER OF OFFERJUNNAID ALI_LETTER OF OFFER
JUNNAID ALI_LETTER OF OFFER
 
Impressionen Fachkongress New Business Generation 2014
Impressionen Fachkongress New Business Generation 2014Impressionen Fachkongress New Business Generation 2014
Impressionen Fachkongress New Business Generation 2014
 
Kultur und Web 20
Kultur und Web 20Kultur und Web 20
Kultur und Web 20
 
Beeren-ein Geschenk der Natur
Beeren-ein Geschenk der NaturBeeren-ein Geschenk der Natur
Beeren-ein Geschenk der Natur
 
Der sprunginderschuessel
Der sprunginderschuesselDer sprunginderschuessel
Der sprunginderschuessel
 
Gtr Setup Guide
Gtr Setup GuideGtr Setup Guide
Gtr Setup Guide
 
w.e.b.Square Kick off
w.e.b.Square Kick offw.e.b.Square Kick off
w.e.b.Square Kick off
 
Presentazione telefoniche
Presentazione telefonichePresentazione telefoniche
Presentazione telefoniche
 
Portraits
PortraitsPortraits
Portraits
 
Gat2
Gat2Gat2
Gat2
 
Digitale Medien – Nutzen für KMU
Digitale Medien – Nutzen für KMUDigitale Medien – Nutzen für KMU
Digitale Medien – Nutzen für KMU
 
Der Sprung in der Schuessel
Der Sprung in der SchuesselDer Sprung in der Schuessel
Der Sprung in der Schuessel
 
Angriffsvektor Datenkommunikation in der Sicherheitstechnik
Angriffsvektor Datenkommunikation in der SicherheitstechnikAngriffsvektor Datenkommunikation in der Sicherheitstechnik
Angriffsvektor Datenkommunikation in der Sicherheitstechnik
 
Atemregler Kauftipps
Atemregler KauftippsAtemregler Kauftipps
Atemregler Kauftipps
 
Ökonomisches Potential ür den Standort
Ökonomisches Potential ür den StandortÖkonomisches Potential ür den Standort
Ökonomisches Potential ür den Standort
 

Similar to Agile Softwareentwicklung mit Rails

JavaScript goes Enterprise - Node.js-Anwendungen mit Visual Studio und den No...
JavaScript goes Enterprise - Node.js-Anwendungen mit Visual Studio und den No...JavaScript goes Enterprise - Node.js-Anwendungen mit Visual Studio und den No...
JavaScript goes Enterprise - Node.js-Anwendungen mit Visual Studio und den No...Peter Hecker
 
SharePointCommunity.ch SharePoint Lösungen für die Zukunft
SharePointCommunity.ch SharePoint Lösungen für die ZukunftSharePointCommunity.ch SharePoint Lösungen für die Zukunft
SharePointCommunity.ch SharePoint Lösungen für die ZukunftDavid Schneider
 
JavaScript und trotzdem Softwerker
JavaScript und trotzdem SoftwerkerJavaScript und trotzdem Softwerker
JavaScript und trotzdem SoftwerkerDennis Wilson
 
Robuste Design Systems mit Storybook und Angular: vom Konzept zur lebendigen ...
Robuste Design Systems mit Storybook und Angular: vom Konzept zur lebendigen ...Robuste Design Systems mit Storybook und Angular: vom Konzept zur lebendigen ...
Robuste Design Systems mit Storybook und Angular: vom Konzept zur lebendigen ...Andreas Wissel
 
Android Apps mit Xamarin entwickeln
Android Apps mit Xamarin entwickelnAndroid Apps mit Xamarin entwickeln
Android Apps mit Xamarin entwickelnAndré Krämer
 
OOP 2012 - Udo Pracht - DevOps Einführung und Überblick
OOP 2012 - Udo Pracht - DevOps Einführung und ÜberblickOOP 2012 - Udo Pracht - DevOps Einführung und Überblick
OOP 2012 - Udo Pracht - DevOps Einführung und ÜberblickUdo Pracht
 
Devops ohne root
Devops ohne rootDevops ohne root
Devops ohne rootcusy GmbH
 
JavaScript goes Enterprise - Node.js-Anwendungen mit Visual Studio und den No...
JavaScript goes Enterprise - Node.js-Anwendungen mit Visual Studio und den No...JavaScript goes Enterprise - Node.js-Anwendungen mit Visual Studio und den No...
JavaScript goes Enterprise - Node.js-Anwendungen mit Visual Studio und den No...Peter Hecker
 
DNUG 2017 - ApplicationInsights
DNUG 2017 - ApplicationInsightsDNUG 2017 - ApplicationInsights
DNUG 2017 - ApplicationInsightsChristoph Adler
 
Serverless Application Framework
Serverless Application FrameworkServerless Application Framework
Serverless Application FrameworkBATbern
 
DNUG - ApplicationInsights: So analysieren, optimieren und modernisieren Sie ...
DNUG - ApplicationInsights: So analysieren, optimieren und modernisieren Sie ...DNUG - ApplicationInsights: So analysieren, optimieren und modernisieren Sie ...
DNUG - ApplicationInsights: So analysieren, optimieren und modernisieren Sie ...panagenda
 
Cloud Architekturen - von "less Server" zu Serverless
Cloud Architekturen - von "less Server" zu ServerlessCloud Architekturen - von "less Server" zu Serverless
Cloud Architekturen - von "less Server" zu ServerlessOPEN KNOWLEDGE GmbH
 
AdminCamp2017 - ApplicationInsights
AdminCamp2017 - ApplicationInsightsAdminCamp2017 - ApplicationInsights
AdminCamp2017 - ApplicationInsightsChristoph Adler
 
Responsive Mit Irhem Webseiten (German Edition)
Responsive Mit Irhem Webseiten (German Edition)Responsive Mit Irhem Webseiten (German Edition)
Responsive Mit Irhem Webseiten (German Edition)Koombea
 
Hightway to Hell - Responsive Webdesign Testen
Hightway to Hell - Responsive Webdesign TestenHightway to Hell - Responsive Webdesign Testen
Hightway to Hell - Responsive Webdesign TestenPeter Rozek
 
Node.js - Von der Entwicklugn bis zum produktiven Einsatz
Node.js - Von der Entwicklugn bis zum produktiven EinsatzNode.js - Von der Entwicklugn bis zum produktiven Einsatz
Node.js - Von der Entwicklugn bis zum produktiven EinsatzKai Donato
 
Bernhard Wick - appserver.io - code.talks 2015
 Bernhard Wick - appserver.io - code.talks 2015 Bernhard Wick - appserver.io - code.talks 2015
Bernhard Wick - appserver.io - code.talks 2015AboutYouGmbH
 
Mag. Franz Waldhofer (Raiffeisen Software)
Mag. Franz Waldhofer (Raiffeisen Software)Mag. Franz Waldhofer (Raiffeisen Software)
Mag. Franz Waldhofer (Raiffeisen Software)Praxistage
 
Ruby und Rails für .NET Entwickler
Ruby und Rails für .NET EntwicklerRuby und Rails für .NET Entwickler
Ruby und Rails für .NET EntwicklerNETUserGroupBern
 

Similar to Agile Softwareentwicklung mit Rails (20)

JavaScript goes Enterprise - Node.js-Anwendungen mit Visual Studio und den No...
JavaScript goes Enterprise - Node.js-Anwendungen mit Visual Studio und den No...JavaScript goes Enterprise - Node.js-Anwendungen mit Visual Studio und den No...
JavaScript goes Enterprise - Node.js-Anwendungen mit Visual Studio und den No...
 
Roslyn DDC Kompakt 2014
Roslyn DDC Kompakt 2014Roslyn DDC Kompakt 2014
Roslyn DDC Kompakt 2014
 
SharePointCommunity.ch SharePoint Lösungen für die Zukunft
SharePointCommunity.ch SharePoint Lösungen für die ZukunftSharePointCommunity.ch SharePoint Lösungen für die Zukunft
SharePointCommunity.ch SharePoint Lösungen für die Zukunft
 
JavaScript und trotzdem Softwerker
JavaScript und trotzdem SoftwerkerJavaScript und trotzdem Softwerker
JavaScript und trotzdem Softwerker
 
Robuste Design Systems mit Storybook und Angular: vom Konzept zur lebendigen ...
Robuste Design Systems mit Storybook und Angular: vom Konzept zur lebendigen ...Robuste Design Systems mit Storybook und Angular: vom Konzept zur lebendigen ...
Robuste Design Systems mit Storybook und Angular: vom Konzept zur lebendigen ...
 
Android Apps mit Xamarin entwickeln
Android Apps mit Xamarin entwickelnAndroid Apps mit Xamarin entwickeln
Android Apps mit Xamarin entwickeln
 
OOP 2012 - Udo Pracht - DevOps Einführung und Überblick
OOP 2012 - Udo Pracht - DevOps Einführung und ÜberblickOOP 2012 - Udo Pracht - DevOps Einführung und Überblick
OOP 2012 - Udo Pracht - DevOps Einführung und Überblick
 
Devops ohne root
Devops ohne rootDevops ohne root
Devops ohne root
 
JavaScript goes Enterprise - Node.js-Anwendungen mit Visual Studio und den No...
JavaScript goes Enterprise - Node.js-Anwendungen mit Visual Studio und den No...JavaScript goes Enterprise - Node.js-Anwendungen mit Visual Studio und den No...
JavaScript goes Enterprise - Node.js-Anwendungen mit Visual Studio und den No...
 
DNUG 2017 - ApplicationInsights
DNUG 2017 - ApplicationInsightsDNUG 2017 - ApplicationInsights
DNUG 2017 - ApplicationInsights
 
Serverless Application Framework
Serverless Application FrameworkServerless Application Framework
Serverless Application Framework
 
DNUG - ApplicationInsights: So analysieren, optimieren und modernisieren Sie ...
DNUG - ApplicationInsights: So analysieren, optimieren und modernisieren Sie ...DNUG - ApplicationInsights: So analysieren, optimieren und modernisieren Sie ...
DNUG - ApplicationInsights: So analysieren, optimieren und modernisieren Sie ...
 
Cloud Architekturen - von "less Server" zu Serverless
Cloud Architekturen - von "less Server" zu ServerlessCloud Architekturen - von "less Server" zu Serverless
Cloud Architekturen - von "less Server" zu Serverless
 
AdminCamp2017 - ApplicationInsights
AdminCamp2017 - ApplicationInsightsAdminCamp2017 - ApplicationInsights
AdminCamp2017 - ApplicationInsights
 
Responsive Mit Irhem Webseiten (German Edition)
Responsive Mit Irhem Webseiten (German Edition)Responsive Mit Irhem Webseiten (German Edition)
Responsive Mit Irhem Webseiten (German Edition)
 
Hightway to Hell - Responsive Webdesign Testen
Hightway to Hell - Responsive Webdesign TestenHightway to Hell - Responsive Webdesign Testen
Hightway to Hell - Responsive Webdesign Testen
 
Node.js - Von der Entwicklugn bis zum produktiven Einsatz
Node.js - Von der Entwicklugn bis zum produktiven EinsatzNode.js - Von der Entwicklugn bis zum produktiven Einsatz
Node.js - Von der Entwicklugn bis zum produktiven Einsatz
 
Bernhard Wick - appserver.io - code.talks 2015
 Bernhard Wick - appserver.io - code.talks 2015 Bernhard Wick - appserver.io - code.talks 2015
Bernhard Wick - appserver.io - code.talks 2015
 
Mag. Franz Waldhofer (Raiffeisen Software)
Mag. Franz Waldhofer (Raiffeisen Software)Mag. Franz Waldhofer (Raiffeisen Software)
Mag. Franz Waldhofer (Raiffeisen Software)
 
Ruby und Rails für .NET Entwickler
Ruby und Rails für .NET EntwicklerRuby und Rails für .NET Entwickler
Ruby und Rails für .NET Entwickler
 

More from Hussein Morsy

Rubymotion trip to inspect 2013
Rubymotion trip to inspect 2013Rubymotion trip to inspect 2013
Rubymotion trip to inspect 2013Hussein Morsy
 
Unobtrusive JavaScript in Rails 3
Unobtrusive JavaScript in Rails 3Unobtrusive JavaScript in Rails 3
Unobtrusive JavaScript in Rails 3Hussein Morsy
 
Datamapper Railskonferenz 2009
Datamapper Railskonferenz 2009Datamapper Railskonferenz 2009
Datamapper Railskonferenz 2009Hussein Morsy
 
Einführung in Cucumber mit Rails
Einführung in Cucumber mit RailsEinführung in Cucumber mit Rails
Einführung in Cucumber mit RailsHussein Morsy
 

More from Hussein Morsy (6)

Rubymotion trip to inspect 2013
Rubymotion trip to inspect 2013Rubymotion trip to inspect 2013
Rubymotion trip to inspect 2013
 
Unobtrusive JavaScript in Rails 3
Unobtrusive JavaScript in Rails 3Unobtrusive JavaScript in Rails 3
Unobtrusive JavaScript in Rails 3
 
Rack-Middleware
Rack-MiddlewareRack-Middleware
Rack-Middleware
 
Homebrew
HomebrewHomebrew
Homebrew
 
Datamapper Railskonferenz 2009
Datamapper Railskonferenz 2009Datamapper Railskonferenz 2009
Datamapper Railskonferenz 2009
 
Einführung in Cucumber mit Rails
Einführung in Cucumber mit RailsEinführung in Cucumber mit Rails
Einführung in Cucumber mit Rails
 

Agile Softwareentwicklung mit Rails

  • 1. Agile Softwareentwicklung mit Ruby on Rails Tanja Otto und Hussein Morsy 04.11.2009 Gesellschaft für Informatik Regionalgruppe Trier/Luxemburg
  • 3. Über uns • internes Entwicklerteam von Sales-Lentz • IBEs für Reisen, Bustickets, Eventtickets • seit 2006 entwickeln wir mit Ruby on Rails • Buch Ruby on Rails 2 Galileo Press http://www.railsbuch.de http://twitter.com/ajnato http://twitter.com/HusseinMorsy
  • 4. Wer ist ein Rails Newbie ?
  • 6. Konferenzen 2009 • RailsConf 2009, Las Vegas 4.-7.Mai • Ruby on OS X, Amsterdam 15. Mai • Apple WWDC, San Francisco 8.-12. Juni • Rails-Konferenz*, Offenbach 1-2. September • RubyEnRails, Amsterdam 30.-31. Oktober • Rails Usergroup*, Uni Düsseldorf monatlich
  • 14. Webapplikationen • Client-Server Architektur • Keine Installation proprietärer Software • Nur Webbrowser und eine Internetverbindung notwendig • Einfach zu testen, da Output Text (HTML) ist
  • 15. Entwicklungsprinzipien • Software, die gebraucht wird (Software that matters) • Software, die pünktlich geliefert wird • Software, die innerhalb des Budgets ausgeliefert wird • Software, die dem Benutzer die Arbeit erleichtert
  • 16. ...und das Wichtigste Software, die den Kunden und den Programmierer glücklich macht
  • 17. Wie erreichen wir diese Ziele ?
  • 19. Agile Softwareentwicklung • Entwurfsphase auf ein Mindestmaß reduzieren • so früh wie möglich zu ausführbarer Software gelangen • regelmäßig, in kurzen Abständen deployen • regelmäßig, in kurzen Abständen mit dem Kunden besprechen • Gegensatz z.B. zum Wasserfallmodell
  • 20. Agile Methoden • Paarprogrammierung • Testgetriebene Entwicklung • Refactoring • Häufiges Deployment • Scrum
  • 21. Entwicklungszyklus 1. Anforderungen und Entwurf (Requirements Management, Analyse, Design) 2. Implementierung 3. Test 4. Veröffentlichung (Deployment,Konfigurationsmanagement)
  • 22. Iterationen • Jede Iteration ist ein Mini-Projekt • 2 Wochen Iteration
  • 24. Verwendete “Tools” • Sprache: Ruby • Web-Framework: Ruby on Rails • Test-Framework: RSpec und Cucumber • Versionierung: Git • Deployment: Capistrono
  • 26. Vorteile von Ruby • rein objektorientiert, keine skalaren Datentypen • Interpretersprache (=> sehr dynamisch) • Humansprache • wurde entwickelt, um Programmierer glücklich zu machen puts car.wheels # 3 puts 3.odd? # true
  • 27. DSL mit Ruby • DSL = Domain Specific Language • Für jede Domäne (Arbeitsgebiet) ein eigenes Vokabular class Meeting < ActiveRecord::Base has_many :attendees validates_presence_of :title validates_numericality_of :room_nr end
  • 28. Yukihiro Matsumoto • 44 jähriger, japanischer Wissenschaftler und Programmierer • Erfinder von Ruby 1995 • Spitzname Matz
  • 29. JRuby • Ruby-Interpreter/Compiler in Java • Alternative zur Sprache Java , Groovy,... • JRuby-Code kann in bestehende Java- Projekte eingesetzt werden • Einfaches Deployment auf der Java- Plattform • Wird im Enterprise-Bereich aktiv eingesetzt (u.a. bei ThoughtWorks)
  • 31. David Heinemeier Hansson • 30 jähriger, dänischer Programmierer • Rails aus Basecamp “extrahiert” • 2004 Rails veröffentlicht • Partner von 37signals
  • 32. Prinzipien von Rails • Don’t repeat yourself • Convention over configuration • Datenbankpersistenz “eingebaut” (ORM) • Model-View-Controller • Modulare Komponenten/Subframeworks
  • 33. Model-View-Controller • Model (Datenmodell) - ActiveRecord • View (Präsentation) - ActionView • Controller (Programmsteuerung) - ActionController
  • 35. Java-Frameworks vs. Rails • Konfigurationsdatei eines Java-Programms so gross wie gesamtes Rails-Programm • Alle Subframeworks enthalten • Mit Rails können 80% der Aufgaben gelöst werden • Nicht für Desktop-Applikationen geeignet
  • 38. Was ist TDD • Hauptmerkmal: Test First
  • 39. Was ist TDD • Hauptmerkmal: Test First • Zuerst der Test dann der Code
  • 40. Was ist TDD • Hauptmerkmal: Test First • Zuerst der Test dann der Code • Von innen nach aussen
  • 41. Was ist TDD • Hauptmerkmal: Test First • Zuerst der Test dann der Code • Von innen nach aussen • TDD ist kein Test-Tool, sondern eine Technik für Entwickler
  • 42. Units Views Views Views Views Controller Controller Controller Model Model Model Model Model
  • 43. Refactoring • Code optimieren/verbessern ohne die “Funktionalität” zu verändern • Red => Green => Refactor • “Make it green than make it clean”
  • 45. Was ist BDD • BDD ist kein Ersatz für TDD
  • 46. Was ist BDD • BDD ist kein Ersatz für TDD • TDD ist ein Bestandteil von BDD
  • 47. Was ist BDD • BDD ist kein Ersatz für TDD • TDD ist ein Bestandteil von BDD • BDD bedeutet outside-in Entwicklung
  • 48. Was ist BDD • BDD ist kein Ersatz für TDD • TDD ist ein Bestandteil von BDD • BDD bedeutet outside-in Entwicklung • Wie ein User mit der App arbeiten möchte beeinflusst die Implementierung
  • 49. Was ist BDD • BDD ist kein Ersatz für TDD • TDD ist ein Bestandteil von BDD • BDD bedeutet outside-in Entwicklung • Wie ein User mit der App arbeiten möchte beeinflusst die Implementierung • Kundenwünsche stehen an erster Stelle
  • 50. Outside-In Views Views Views Views Controller Controller Controller Model Model Model Model Model
  • 52. Aslak Hellesøy David Chelimsky • Aslak Hellesøy: Cucumber • David Chelimsky: Unit-Testframework RSpec
  • 53. Feature: Booking As a Customer I want to book a travel So that I can spend my holidays with Sales-Lentz Scenario:....
  • 54. Scenario: booking a Travel Given a travel “Rhein in Flammen” for 137.40 When I go to the detail page of Rhein in Flammen And I follow "buchen" And I select "Herr" from "Anrede" And I fill in "Nachname" with "Mustermann" And I fill in "E-Mail" with "hans@mustermann.de" And I check "Versicherung" And I press "buchen" Then I should see "Ihre Buchung" And I should see "Herr" And I should see "Mustermann" And I should see "hans@mustermann.de" And I should see "137,40 EUR" But I should not see "Ausgebucht"
  • 55. Feature: Administrationsbereich Als ein angemeldeter Administrator Möchte ich die Admin-Seiten besuchen So dass ich die Seiten leicht aktualisieren kann. Szenario: Zugang für Admin-Seite beschränken Gegeben sei ein Admin-User Wenn ich nicht eingelogged bin Und ich die Admin-Seite besuche Dann sollte mir der Zugang verweigert werden Szenario: Zugang für für autorisierten User Gegeben sei ein Admin-User Und ich bin eingelogged als Admin-User Wenn ich die Admin-Seite besuche Dann sollte ich "Admin-Bereich" sehen
  • 56. Ziel Automatisiertes ausführen der Features auf der Applikation wie in einem Webbrowser
  • 58. Given-Step mit Definition Step Given a travel “Rhein in Flammen” for 137.40
  • 59. Given-Step mit Definition Step Given a travel “Rhein in Flammen” for 137.40 Step-Definition Given /^a travel "([^"]*)" for ([0-9.]*)$/ do |title, price| Travel.create(:title => title, :price => price.to_f) end
  • 60. Given-Step mit Definition Step Given a travel “Rhein in Flammen” for 137.40 Step-Definition Given /^a travel "([^"]*)" for ([0-9.]*)$/ do |title, price| Travel.create(:title => title, :price => price.to_f) end
  • 62. Versionsverwaltung • System zur Erfassung von Änderungen an Dokumenten • Zugriff auf die gesamte Historie • Versionsverwaltungssysteme • CVS • SVN • Mercurial • Git
  • 63. Git • Entwickelt von Linus Torvalds (2005) • Für die Verwaltung des Linux-Kernels • Besser als svn, cvn etc. • kein zentraler Server mehr notwendig • nicht lineare Entwicklung einfach (branching) • Sicherheit (z.H. Hash-Wert für commits) Geschwindigkeit
  • 64. GitHub • Kostenloser/Kostenpflichtiger Git-Server • Fast alle Ruby/Rails Projekte auf GitHub • Facebook für Entwickler
  • 67. Continious Integration • Automatischer Test bei jedem Deploy • Automatische Benachrichtungen per E-Mail wenn Test fehlschlägt
  • 68. Heroku • Hosting für Rails • Sehr einfaches deployment • Kostenlos für kleine Applikationen
  • 70. Webdienste rund um Rails • GitHub • EngineYard • lighthouse • Shopify • hoptoad • ... • New Relic • Scout • Heroku
  • 71. Praktika • Interessiert, im Rahmen eines Praktikums mit uns zu arbeiten? devteam.sales-lentz.lu tanja.otto@sales-lentz.lu
  • 72. Literatur • Agile Web Development with Rails (Dave Thomas, David Heinemeier Hansson) • Die Programmiersprache Ruby (David Flanagan,Yukihiro Mastumoto) • The RSpec Book(David Chelimsky, Dave Astels, Zach Dennis, Aslak Hellesøy, Bryan Helmkamp, Dan North) • Ruby on Rails 2, Hussein Morsy,Tanja Otto. http://openbook.galileocomputing.de/ ruby_on_rails/