SlideShare ist ein Scribd-Unternehmen logo
1 von 40
Downloaden Sie, um offline zu lesen
Behavior Driven
Development
mit CakePHP, Symfony, Drupal und Django
Workshop zur FUxCon 2013
Olav Schettler - Cocomore AG
olav.schettler@cocomore.com
Montag, 17. Juni 13
Behavior Driven
Development
Während der
Anforderungsanalyse werden
Aufgaben, Ziele und Ergebnisse der
Software textuell festgehalten, so
dass diese später automatisiert auf
ihre korrekte Implementierung
getestet werden können.
wikipedia.org/
Behavior_Driven_Development
BDD wurde 2003
von Dan North eingeführt.
dannorth.net/introducing-bdd
Montag, 17. Juni 13
Anforderung
Vision: Projektportfolio einer AgenturVision: Projektportfolio einer Agentur Name: ProjectsName: Projects
Personas
Besucher der Site, die
sich über das
Portfolio der Agentur
informieren wollen
Mehrere
Agenturmitarbeiter,
die Projektbeschrei-
bungen pflegen
Big PictureBig Picture Product Details
Project User p p p
p p p
user▾
user▾
➽
Title
Lorem
ipsum dolor
sit amet,
conseteturvon..bis
aa, bb
• Features: Projektliste, Projektdetailseite, Nutzerkonten,
Bild-Upload, automatische Bildskalierung,Tagging
• User Stories formal in Gherkin, einer
Domain Specific Language (DSL) zur Beschreibung von
Software-Verhalten
• Implementierung alternativ in vier Web-Frameworks
Tagging Tag
Bild
Montag, 17. Juni 13
Das Gesamtverhalten
Merkmal Fallbeispiele
Startseite
Spaltenweise Auflistung
Seitenweises Blättern
Projektdetails
Verlinkung von der Listenseite
Felder:Titel, skaliertes Bild, Start, Ende,Themen
Projekt anlegen
Nur angemeldete Nutzer dürfen Projekte anlegen
Projekte werden nach Abschicken des Formulars
gespeichert
Projekt
bearbeiten
Redakteure und Admins dürfen Projekte
bearbeiten
Änderungen werden beim Abschicken des
Formulars gespeichert
Nutzerkonten Registrierung,Anmelden,Abmelden
Montag, 17. Juni 13
Formale User Stories
• Einbeziehung des Auftraggebers in die
Anforderungsdefinition
• Fallbeispiele fürVerhaltensbeschreibung
• Automatisierung der Fallbeispiele
durch Mock-Objekte
• Successive Implementierung
Montag, 17. Juni 13
Beispiel: Projektdetails
Feature: projectdetail
• In order to see project details
• As an anonymous or logged-in user
• I want to click in a title on an index page and
get a page with title, big picture, dates, and
description text formatted in Markdown
Montag, 17. Juni 13
1. Fallbeispiel dazu
Scenario: From the index page a click on a
title brings me to a project detail page
• Given I am on the homepage
• When I click on the first project title
• Then I am on a project detail page
Montag, 17. Juni 13
2. Fallbeispiel dazu
Scenario: A project detail page shows
title, big picture, dates, and description text
• Given I am on a project detail page
• Then I see content (title, picture, dates, about)
• And the picture has a width of 380px
• And the "about" content is formatted with
Markdown
Montag, 17. Juni 13
Brücke zwischen
Fallbeispielen und Code
• a) Mock Objekte - nicht weiter verfolgt
• b) Funktionale Tests
Montag, 17. Juni 13
1. Beispiel - Werkzeuge
Behat und Mink:
• Zuordnung von
Szenarien zu Tests über
reguläre Ausdrücke
• Einheitliche Schnittstelle
zu verschiedenen
Browser-Emulationen
Montag, 17. Juni 13
2. Beispiel:
Parametrisierung
• Geklammerte
Ausdrücke werden
Parameter
• Wiederverwend-
barkeit von Tests
Montag, 17. Juni 13
3. Beispiel: Bildprüfung
• Parametrisierung
• Suchen in Seite
mit CSS
• Herunterladen
und lokale
Validierung des
Bildes
Montag, 17. Juni 13
Erhöhte Testbarkeit
• Hilfsfunktionen
(checkLogin)
Montag, 17. Juni 13
Konfiguration
& Fixtures
Montag, 17. Juni 13
Provide TestValues
zeit-
basierend
eindeutige
Werte
Datumsfelder
Bild-Uploads
Montag, 17. Juni 13
Der Rest ist
Montag, 17. Juni 13
Der Rest ist
... Fleiß
Montag, 17. Juni 13
Vier Frameworks
• Komponenten-Framework
zur schnelleren Entwicklung
von Content-Management-Systemen
• Bausteine für:
• Zugriffsschutz
• Datenbankschnittstelle
• Template-Engine
• Suchfunktionalitäten
http://de.wikipedia.org/wiki/
Content-Management-Framework
Montag, 17. Juni 13
Aber welches?
Montag, 17. Juni 13
... ist fantastisch, weil es
uns Web-Anwendungen einfacher, schneller
und mit weniger Code entwickeln lässt.
Ständig benötigte Bausteine sind bereits
eingebaut: Übersetzung, Datenbankzugang,
Caching, Formularvalidierung,
Authentisierung
http://cakephp.org/
platinnetz.de
scratch.mit.edu
hotscripts.com
Montag, 17. Juni 13
... ist fantastisch, weil es
bereits von Millionen Websites genutzt und
von einer aktiven und vielfältigen Gemeinde
unterstützt wird und als Basis von privaten
Weblogs ebenso wie für Unternehmens-
anwendungen taugt.
https://drupal.org/
whiteHouse.gov
louvre.fr
x.com
maxim.com
brits.co.uk
examiner.com
kenzo.com
Montag, 17. Juni 13
... ist fantastisch, weil es
damit einfacher ist, bessere Web Apps
schneller und mit weniger Code zu bauen.
https://www.djangoproject.com/
disqus.com
instagram.com
mozilla.org
pinterest.com
rdio.com
Montag, 17. Juni 13
... ist fantastisch, weil es
... Erstellung und Pflege von PHP Web-
Anwendungen beschleunigt. Er ersetzt sich
wiederholende Programmieraufgaben durch
Leistungsfähigkeit, Kontrolle undVergnügen.
... eine Zertifizierung für Entwickler gibt.
... demnächst in Drupal 8 enthalten ist.
http://symfony.com/
esl.eu
dailymotion.com
answers.yahoo.com
del.icio.us
Montag, 17. Juni 13
Aber es gibt doch noch
• Open Source:Wordpress,Typo3, Joomla, ...
• Proprietär: SixCMS, Coremedia, Sitecore, ...
• PHP: Zend Framework,Yii, Kohana, ...
• Javascript: Node.js, Opa, ...
• andere: Ruby on Rails, Skala, ...
Montag, 17. Juni 13
Ich habe eine Stunde
Montag, 17. Juni 13
Warum dann
dieseVier?
CakePHP
Ich habe zwischen 2008 und 2011 platinnetz.de
mit einem kleinen Team in CakePHP
programmiert und betrieben.
Drupal
Ich setze Drupal seit 9 Jahren in Projekten
für Kunden ein, habe ein Buch darüber
geschrieben und zuletzt in 2012 für Acquia
im technischen Support großer Drupal-
Sites gearbeitet. Cocomore macht auch Drupal-Projekte
Django
Viele Konzepte in Symfony stammen aus Django.
Python ist meine Lieblings-Programmiersprache.
Django ist ein extrem produktives Framework, besitzt hervoragende Dokumentation,
wird auf vielen wirklich großen Sites eingesetzt und besitzt einen umfassenden
Marktplatz für Erweiterungen.
Symfony
Wenn man PHP machen muss, ist Symfony das neue Cool Kid. Es gibt wird in
Deutschland aktiv durch die Agentur SensioLabs des Projektautors Fabien Potencier
vermarktet,
Es gibt eine Entwicklerzertifizierung und es wird in Drupal 8 enthalten sein.
Annotationen
Docstrings
erzwungene Struktur
funktionierende Namespaces
Montag, 17. Juni 13
Core, Contrib, Custom
CakePHP Django Drupal Symfony
Core
Users
Tagging
Thumbnails
CRUD
Markdown
Testdaten
2.3 1.5 7.22 2.3
eingebaut eingebaut eingebaut FOSUserBundle
CakeDC / tags taggit eingebaut FPNTagBundle
eigen photologue eingebaut eigen
bake eingebaut eingebaut
doctrine:
generate:crud
Hydra /
markdown
eingebaut markdown
KnpMarkdown
Bundle
eigen autofixture devel generate (noch nicht)
Montag, 17. Juni 13
Vier
Implementierungen
Frei verfügbar:
https://cocomore.github.io/fuxcon2013
• https://github.com/cocomore/fuxcon2013_cakephp
• https://github.com/cocomore/fuxcon2013_django
• https://github.com/cocomore/fuxcon2013_drupal
• https://github.com/cocomore/fuxcon2013_symfony
Montag, 17. Juni 13
Projects in CakePHP
Entwicklungs-
werkzeuge
Nutzerkonten
Bildskalierung
Tagging
Markdown
einfache Rollen
Spaltenlayout
Montag, 17. Juni 13
CakePHP - Der Code
http://fossil.cm.schettler.net/fuxcon2013/
finfo?name=cakephp/app/Controller/
ProjectsController.php
Montag, 17. Juni 13
Projects in Drupal
Drupal Toolbar
Kein Toolbar ;)
Testdaten
Taxonomy
Markdown
Theming
Montag, 17. Juni 13
Drupal - Der Code
Montag, 17. Juni 13
Projects in Django
Debug Toolbar
Admin
Testdaten
Tagging
Markdown
Montag, 17. Juni 13
Django - Der Code
Montag, 17. Juni 13
Projects in Symfony
Debug Toolbar
Markdown
Tagging
rollenbasierte
Zugriffsrechte
Montag, 17. Juni 13
Symfony - Der Code
Montag, 17. Juni 13
Zusammenfassung
Dateien /
Code-Zeilen
Dateien /
Code-Zeilen
Dateien /
Code-Zeilen
gesamt custom contrib
CakePHP
153 /
23.289
26 /
1.771
40 /
6.297
Die Seite in CakePHP war am einfachsten zu
erstellen (ich habe einige Erfahrung darin),
erforderte aber am meisten Custom Code.
Drupal
541 /
166.951
8 /
216
179 /
41.697
Drupal ist riesig, bei relativ wenigen, großen
Dateien. Die erforderlichen Erweiterungen
(besondersViews) sind ebenfalls groß.
Der erforderliche, eigenen Code ist am kleinsten!
Django
1992 /
289.956
17 /
808
887 /
167.242
Django ist subjektiv das eleganteste (eingebaute
Features) und produktivste (Dokumentation,
verfügbare Erweiterungen) MVC-Framework in
diesemVergleich.
Symfony
6075 /
69.888 (?)
34 /
1093
2406 /
312.729
Symfony selbst ist X so groß wie CakePHP, hat
aber überproportional mal mehr Dateien. Der
erforderliche Custom Code ist mit CakePHP
vergleichbar. ImVergleich zu den anderen
Frameworks wirkt vieles umständlich.
viele kleine Dateien
Tagging, Skalierung,
Markdown
Montag, 17. Juni 13
Die Zukunft
• Die vier Implementierungen und die Tests
stehen unter github.com/.../fuxcon2013
zum Download
• Ich nehme gerne weitere Frameworks und
zusätzliche Features auf
• Neben den funktionalen Tests wünsche ich
mir vergleichende Performance-Tests mit
Massendaten.Wer mag...
Montag, 17. Juni 13
Feedback, Fragen?
Montag, 17. Juni 13
danke!
Montag, 17. Juni 13

Weitere ähnliche Inhalte

Empfohlen

2024 State of Marketing Report – by Hubspot
2024 State of Marketing Report – by Hubspot2024 State of Marketing Report – by Hubspot
2024 State of Marketing Report – by HubspotMarius Sescu
 
Everything You Need To Know About ChatGPT
Everything You Need To Know About ChatGPTEverything You Need To Know About ChatGPT
Everything You Need To Know About ChatGPTExpeed Software
 
Product Design Trends in 2024 | Teenage Engineerings
Product Design Trends in 2024 | Teenage EngineeringsProduct Design Trends in 2024 | Teenage Engineerings
Product Design Trends in 2024 | Teenage EngineeringsPixeldarts
 
How Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental HealthHow Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental HealthThinkNow
 
AI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdfAI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdfmarketingartwork
 
PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024Neil Kimberley
 
Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)contently
 
How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024Albert Qian
 
Social Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsSocial Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsKurio // The Social Media Age(ncy)
 
Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Search Engine Journal
 
5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summarySpeakerHub
 
ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd Clark Boyd
 
Getting into the tech field. what next
Getting into the tech field. what next Getting into the tech field. what next
Getting into the tech field. what next Tessa Mero
 
Google's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentGoogle's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentLily Ray
 
Time Management & Productivity - Best Practices
Time Management & Productivity -  Best PracticesTime Management & Productivity -  Best Practices
Time Management & Productivity - Best PracticesVit Horky
 
The six step guide to practical project management
The six step guide to practical project managementThe six step guide to practical project management
The six step guide to practical project managementMindGenius
 
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...RachelPearson36
 

Empfohlen (20)

2024 State of Marketing Report – by Hubspot
2024 State of Marketing Report – by Hubspot2024 State of Marketing Report – by Hubspot
2024 State of Marketing Report – by Hubspot
 
Everything You Need To Know About ChatGPT
Everything You Need To Know About ChatGPTEverything You Need To Know About ChatGPT
Everything You Need To Know About ChatGPT
 
Product Design Trends in 2024 | Teenage Engineerings
Product Design Trends in 2024 | Teenage EngineeringsProduct Design Trends in 2024 | Teenage Engineerings
Product Design Trends in 2024 | Teenage Engineerings
 
How Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental HealthHow Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental Health
 
AI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdfAI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdf
 
Skeleton Culture Code
Skeleton Culture CodeSkeleton Culture Code
Skeleton Culture Code
 
PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024
 
Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)
 
How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024
 
Social Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsSocial Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie Insights
 
Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024
 
5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary
 
ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd
 
Getting into the tech field. what next
Getting into the tech field. what next Getting into the tech field. what next
Getting into the tech field. what next
 
Google's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentGoogle's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search Intent
 
How to have difficult conversations
How to have difficult conversations How to have difficult conversations
How to have difficult conversations
 
Introduction to Data Science
Introduction to Data ScienceIntroduction to Data Science
Introduction to Data Science
 
Time Management & Productivity - Best Practices
Time Management & Productivity -  Best PracticesTime Management & Productivity -  Best Practices
Time Management & Productivity - Best Practices
 
The six step guide to practical project management
The six step guide to practical project managementThe six step guide to practical project management
The six step guide to practical project management
 
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
 

Workshop: Behavior Driven Development mit vier Frameworks

  • 1. Behavior Driven Development mit CakePHP, Symfony, Drupal und Django Workshop zur FUxCon 2013 Olav Schettler - Cocomore AG olav.schettler@cocomore.com Montag, 17. Juni 13
  • 2. Behavior Driven Development Während der Anforderungsanalyse werden Aufgaben, Ziele und Ergebnisse der Software textuell festgehalten, so dass diese später automatisiert auf ihre korrekte Implementierung getestet werden können. wikipedia.org/ Behavior_Driven_Development BDD wurde 2003 von Dan North eingeführt. dannorth.net/introducing-bdd Montag, 17. Juni 13
  • 3. Anforderung Vision: Projektportfolio einer AgenturVision: Projektportfolio einer Agentur Name: ProjectsName: Projects Personas Besucher der Site, die sich über das Portfolio der Agentur informieren wollen Mehrere Agenturmitarbeiter, die Projektbeschrei- bungen pflegen Big PictureBig Picture Product Details Project User p p p p p p user▾ user▾ ➽ Title Lorem ipsum dolor sit amet, conseteturvon..bis aa, bb • Features: Projektliste, Projektdetailseite, Nutzerkonten, Bild-Upload, automatische Bildskalierung,Tagging • User Stories formal in Gherkin, einer Domain Specific Language (DSL) zur Beschreibung von Software-Verhalten • Implementierung alternativ in vier Web-Frameworks Tagging Tag Bild Montag, 17. Juni 13
  • 4. Das Gesamtverhalten Merkmal Fallbeispiele Startseite Spaltenweise Auflistung Seitenweises Blättern Projektdetails Verlinkung von der Listenseite Felder:Titel, skaliertes Bild, Start, Ende,Themen Projekt anlegen Nur angemeldete Nutzer dürfen Projekte anlegen Projekte werden nach Abschicken des Formulars gespeichert Projekt bearbeiten Redakteure und Admins dürfen Projekte bearbeiten Änderungen werden beim Abschicken des Formulars gespeichert Nutzerkonten Registrierung,Anmelden,Abmelden Montag, 17. Juni 13
  • 5. Formale User Stories • Einbeziehung des Auftraggebers in die Anforderungsdefinition • Fallbeispiele fürVerhaltensbeschreibung • Automatisierung der Fallbeispiele durch Mock-Objekte • Successive Implementierung Montag, 17. Juni 13
  • 6. Beispiel: Projektdetails Feature: projectdetail • In order to see project details • As an anonymous or logged-in user • I want to click in a title on an index page and get a page with title, big picture, dates, and description text formatted in Markdown Montag, 17. Juni 13
  • 7. 1. Fallbeispiel dazu Scenario: From the index page a click on a title brings me to a project detail page • Given I am on the homepage • When I click on the first project title • Then I am on a project detail page Montag, 17. Juni 13
  • 8. 2. Fallbeispiel dazu Scenario: A project detail page shows title, big picture, dates, and description text • Given I am on a project detail page • Then I see content (title, picture, dates, about) • And the picture has a width of 380px • And the "about" content is formatted with Markdown Montag, 17. Juni 13
  • 9. Brücke zwischen Fallbeispielen und Code • a) Mock Objekte - nicht weiter verfolgt • b) Funktionale Tests Montag, 17. Juni 13
  • 10. 1. Beispiel - Werkzeuge Behat und Mink: • Zuordnung von Szenarien zu Tests über reguläre Ausdrücke • Einheitliche Schnittstelle zu verschiedenen Browser-Emulationen Montag, 17. Juni 13
  • 11. 2. Beispiel: Parametrisierung • Geklammerte Ausdrücke werden Parameter • Wiederverwend- barkeit von Tests Montag, 17. Juni 13
  • 12. 3. Beispiel: Bildprüfung • Parametrisierung • Suchen in Seite mit CSS • Herunterladen und lokale Validierung des Bildes Montag, 17. Juni 13
  • 16. Der Rest ist Montag, 17. Juni 13
  • 17. Der Rest ist ... Fleiß Montag, 17. Juni 13
  • 18. Vier Frameworks • Komponenten-Framework zur schnelleren Entwicklung von Content-Management-Systemen • Bausteine für: • Zugriffsschutz • Datenbankschnittstelle • Template-Engine • Suchfunktionalitäten http://de.wikipedia.org/wiki/ Content-Management-Framework Montag, 17. Juni 13
  • 20. ... ist fantastisch, weil es uns Web-Anwendungen einfacher, schneller und mit weniger Code entwickeln lässt. Ständig benötigte Bausteine sind bereits eingebaut: Übersetzung, Datenbankzugang, Caching, Formularvalidierung, Authentisierung http://cakephp.org/ platinnetz.de scratch.mit.edu hotscripts.com Montag, 17. Juni 13
  • 21. ... ist fantastisch, weil es bereits von Millionen Websites genutzt und von einer aktiven und vielfältigen Gemeinde unterstützt wird und als Basis von privaten Weblogs ebenso wie für Unternehmens- anwendungen taugt. https://drupal.org/ whiteHouse.gov louvre.fr x.com maxim.com brits.co.uk examiner.com kenzo.com Montag, 17. Juni 13
  • 22. ... ist fantastisch, weil es damit einfacher ist, bessere Web Apps schneller und mit weniger Code zu bauen. https://www.djangoproject.com/ disqus.com instagram.com mozilla.org pinterest.com rdio.com Montag, 17. Juni 13
  • 23. ... ist fantastisch, weil es ... Erstellung und Pflege von PHP Web- Anwendungen beschleunigt. Er ersetzt sich wiederholende Programmieraufgaben durch Leistungsfähigkeit, Kontrolle undVergnügen. ... eine Zertifizierung für Entwickler gibt. ... demnächst in Drupal 8 enthalten ist. http://symfony.com/ esl.eu dailymotion.com answers.yahoo.com del.icio.us Montag, 17. Juni 13
  • 24. Aber es gibt doch noch • Open Source:Wordpress,Typo3, Joomla, ... • Proprietär: SixCMS, Coremedia, Sitecore, ... • PHP: Zend Framework,Yii, Kohana, ... • Javascript: Node.js, Opa, ... • andere: Ruby on Rails, Skala, ... Montag, 17. Juni 13
  • 25. Ich habe eine Stunde Montag, 17. Juni 13
  • 26. Warum dann dieseVier? CakePHP Ich habe zwischen 2008 und 2011 platinnetz.de mit einem kleinen Team in CakePHP programmiert und betrieben. Drupal Ich setze Drupal seit 9 Jahren in Projekten für Kunden ein, habe ein Buch darüber geschrieben und zuletzt in 2012 für Acquia im technischen Support großer Drupal- Sites gearbeitet. Cocomore macht auch Drupal-Projekte Django Viele Konzepte in Symfony stammen aus Django. Python ist meine Lieblings-Programmiersprache. Django ist ein extrem produktives Framework, besitzt hervoragende Dokumentation, wird auf vielen wirklich großen Sites eingesetzt und besitzt einen umfassenden Marktplatz für Erweiterungen. Symfony Wenn man PHP machen muss, ist Symfony das neue Cool Kid. Es gibt wird in Deutschland aktiv durch die Agentur SensioLabs des Projektautors Fabien Potencier vermarktet, Es gibt eine Entwicklerzertifizierung und es wird in Drupal 8 enthalten sein. Annotationen Docstrings erzwungene Struktur funktionierende Namespaces Montag, 17. Juni 13
  • 27. Core, Contrib, Custom CakePHP Django Drupal Symfony Core Users Tagging Thumbnails CRUD Markdown Testdaten 2.3 1.5 7.22 2.3 eingebaut eingebaut eingebaut FOSUserBundle CakeDC / tags taggit eingebaut FPNTagBundle eigen photologue eingebaut eigen bake eingebaut eingebaut doctrine: generate:crud Hydra / markdown eingebaut markdown KnpMarkdown Bundle eigen autofixture devel generate (noch nicht) Montag, 17. Juni 13
  • 28. Vier Implementierungen Frei verfügbar: https://cocomore.github.io/fuxcon2013 • https://github.com/cocomore/fuxcon2013_cakephp • https://github.com/cocomore/fuxcon2013_django • https://github.com/cocomore/fuxcon2013_drupal • https://github.com/cocomore/fuxcon2013_symfony Montag, 17. Juni 13
  • 30. CakePHP - Der Code http://fossil.cm.schettler.net/fuxcon2013/ finfo?name=cakephp/app/Controller/ ProjectsController.php Montag, 17. Juni 13
  • 31. Projects in Drupal Drupal Toolbar Kein Toolbar ;) Testdaten Taxonomy Markdown Theming Montag, 17. Juni 13
  • 32. Drupal - Der Code Montag, 17. Juni 13
  • 33. Projects in Django Debug Toolbar Admin Testdaten Tagging Markdown Montag, 17. Juni 13
  • 34. Django - Der Code Montag, 17. Juni 13
  • 35. Projects in Symfony Debug Toolbar Markdown Tagging rollenbasierte Zugriffsrechte Montag, 17. Juni 13
  • 36. Symfony - Der Code Montag, 17. Juni 13
  • 37. Zusammenfassung Dateien / Code-Zeilen Dateien / Code-Zeilen Dateien / Code-Zeilen gesamt custom contrib CakePHP 153 / 23.289 26 / 1.771 40 / 6.297 Die Seite in CakePHP war am einfachsten zu erstellen (ich habe einige Erfahrung darin), erforderte aber am meisten Custom Code. Drupal 541 / 166.951 8 / 216 179 / 41.697 Drupal ist riesig, bei relativ wenigen, großen Dateien. Die erforderlichen Erweiterungen (besondersViews) sind ebenfalls groß. Der erforderliche, eigenen Code ist am kleinsten! Django 1992 / 289.956 17 / 808 887 / 167.242 Django ist subjektiv das eleganteste (eingebaute Features) und produktivste (Dokumentation, verfügbare Erweiterungen) MVC-Framework in diesemVergleich. Symfony 6075 / 69.888 (?) 34 / 1093 2406 / 312.729 Symfony selbst ist X so groß wie CakePHP, hat aber überproportional mal mehr Dateien. Der erforderliche Custom Code ist mit CakePHP vergleichbar. ImVergleich zu den anderen Frameworks wirkt vieles umständlich. viele kleine Dateien Tagging, Skalierung, Markdown Montag, 17. Juni 13
  • 38. Die Zukunft • Die vier Implementierungen und die Tests stehen unter github.com/.../fuxcon2013 zum Download • Ich nehme gerne weitere Frameworks und zusätzliche Features auf • Neben den funktionalen Tests wünsche ich mir vergleichende Performance-Tests mit Massendaten.Wer mag... Montag, 17. Juni 13