Your SlideShare is downloading. ×
Agile Softwareentwicklung mit Rails
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×

Introducing the official SlideShare app

Stunning, full-screen experience for iPhone and Android

Text the download link to your phone

Standard text messaging rates apply

Agile Softwareentwicklung mit Rails

1,253
views

Published on

Dieser Vortrag wurde am 4.11.2009 an der FH Trier - Gesellschaft für Informatik Regionalgrupper - von Tanja Otto und Hussein Morsy gehalten

Dieser Vortrag wurde am 4.11.2009 an der FH Trier - Gesellschaft für Informatik Regionalgrupper - von Tanja Otto und Hussein Morsy gehalten

Published in: Technology

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
1,253
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
9
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. Agile Softwareentwicklung mit Ruby on Rails Tanja Otto und Hussein Morsy 04.11.2009 Gesellschaft für Informatik Regionalgruppe Trier/Luxemburg
  • 2. SalesLentz::DevTeam
  • 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 ?
  • 5. Konferenzen 2009
  • 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
  • 7. Unsere Projekte
  • 8. www.sales-lentz.lu
  • 9. flibco.com
  • 10. flibco.com (Backend)
  • 11. travel.lu
  • 12. show.lu
  • 13. wellness.sales-lentz.lu
  • 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 ?
  • 18. Agile Softwareentwicklung (Theorie)
  • 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
  • 23. Agile Softwareentwicklung mit Rails
  • 24. Verwendete “Tools” • Sprache: Ruby • Web-Framework: Ruby on Rails • Test-Framework: RSpec und Cucumber • Versionierung: Git • Deployment: Capistrono
  • 25. Die Sprache Ruby
  • 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)
  • 30. Der Framework Rails
  • 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
  • 34. Java-Frameworks vs. Rails
  • 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
  • 36. Testen
  • 37. Was ist TDD
  • 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”
  • 44. Was ist BDD
  • 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
  • 51. Cucumber Applikation
  • 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
  • 57. Given-Step mit Definition
  • 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
  • 61. Versionierung mit Git/ GitHub
  • 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
  • 65. GitHub
  • 66. Deployment
  • 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
  • 69. “...”
  • 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/