Softwarearchitektur vs. PHP

173
SOFTWARE ARCHITEKTUR VS PHP Workshop IPC Frühjahr 2010 in Berlin (in Berlin!) Sonntag, 30. Mai 2010

description

Der Workshop stellt den gesamten Prozess der Architekturdefinition einer Software auf Basis der LAMP-Plattform vor: von der Ermittlung der Architekturanforderungen bis zur Evaluation bestehender Lösungen. Zunächst wird gezeigt, wie Architekturziele und -qualitäten für eine Software definiert werden. Daraufhin werden die möglichen Architekturstile wie u. a. N-Tier-Architekturen, SOA, Komponentenmodelle, Event- und Messaging-Architekturen vorgestellt. Es wird gezeigt, wie man Architekturen anhand dieser Anforderungen bewertet. Auf dieser Basis werden drei Anforderungsszenarien skizziert, für die in Gruppenarbeit Lösungsarchitekturen erstellt werden. Diese werden in der großen Gruppe vorgestellt und diskutiert.

Transcript of Softwarearchitektur vs. PHP

Page 1: Softwarearchitektur vs. PHP

SOFTWARE ARCHITEKTURVS

PHPWorkshop IPC Frühjahr 2010

in Berlin (in Berlin!)

Sonntag, 30. Mai 2010

Page 2: Softwarearchitektur vs. PHP

Sonntag, 30. Mai 2010

Foto von Bill Gates einfügen - Hier haben wir einen Entrepreneur.

Page 3: Softwarearchitektur vs. PHP

Sonntag, 30. Mai 2010

Foto von Steve Jobs einfügen - Der vor zwei Wochen in der Aktienkapitalisierung von diesem Entrepreneur überholt wurde. Entrepreneure gab es aber auch schon vorher.

Page 4: Softwarearchitektur vs. PHP

Sonntag, 30. Mai 2010

Hier haben wir einen. Das ist Gustav. Er ist der klassische jugendliche Entrepreneur - ähnlich Bill Gates, der schon mit 17 das Unternehmen seiner Eltern übernahm.

Page 5: Softwarearchitektur vs. PHP

Sonntag, 30. Mai 2010

Das ist das elterliche Unternehmen - Schweden.

Page 6: Softwarearchitektur vs. PHP

Sonntag, 30. Mai 2010

Schweden war damals im Schwerpunkt noch nicht auf Möbel spezialisiert, sondern auf

Page 7: Softwarearchitektur vs. PHP

80%

20%

Agrar Seefahrt

Sonntag, 30. Mai 2010

... den Agrarbereich und die Seewirtschaft. Da Schweden nun mal zu den meisten Seiten durch mehr oder zuviel Schnee begrenzt war dachte er sich als Wachstumsstrategie, nehmen wir doch einfach mal mehr Produktionsmittel mit dazu.

Page 8: Softwarearchitektur vs. PHP

http://www.flickr.com/photos/pdxdj/

Sonntag, 30. Mai 2010

Glücklicherweise war ein Konkurrenzunternehmen im Rahmen des dreissigjährigen Krieges gerade etwas geschwächt worden, und daher wollte unser Entrepreneur deren Marktanteile übernehmen.

Page 9: Softwarearchitektur vs. PHP

Sonntag, 30. Mai 2010

Ausserdem, wenn schon sonst jeder Krieg führt, warum sollte man nicht mitmachen. Aber: Krieg ist ziemlich Resourcenhungrig, konkret für die Human Resources Abteilung.

Page 10: Softwarearchitektur vs. PHP

http://www.flickr.com/photos/johncatral/

Sonntag, 30. Mai 2010

Also dachte er sich: bauen wir einfach ein Produkt, dass so klasse ist, dass sich die Konkurrenz von alleine vom Markt zurückzieht.

Page 11: Softwarearchitektur vs. PHP

http://www.flickr.com/photos/mcaven/Sonntag, 30. Mai 2010

War jemand schon mal in Stockholm? Skansen angeschaut? Auch im Museum mit dem Schiff gewesen? Weiss jemand, wie das Schiff heisst?

Page 12: Softwarearchitektur vs. PHP

Wikimedia

Sonntag, 30. Mai 2010

Das war seiner Superwaffe: Ein Schiffe, dass sehr viel Dekoration hatte, drei Masten, 69 Meter lang, 12 Meter breit und 52 Meter hoch - und - das war neu - zwei Kanonendecks.

Page 13: Softwarearchitektur vs. PHP

Sonntag, 30. Mai 2010

Page 14: Softwarearchitektur vs. PHP

2 Kanonendecks

Sonntag, 30. Mai 2010

Page 15: Softwarearchitektur vs. PHP

2 Kanonendecks =

Sonntag, 30. Mai 2010

Page 16: Softwarearchitektur vs. PHP

2 Kanonendecks =

doppelt so viele wie die anderen

Sonntag, 30. Mai 2010

Page 17: Softwarearchitektur vs. PHP

2 Kanonendecks =

doppelt so viele wie die anderen=

Sonntag, 30. Mai 2010

Page 18: Softwarearchitektur vs. PHP

2 Kanonendecks =

doppelt so viele wie die anderen=

EPIC WIN!

Sonntag, 30. Mai 2010

Page 19: Softwarearchitektur vs. PHP

http://www.flickr.com/photos/kanelstrand/Sonntag, 30. Mai 2010

Der beauftragte Schiffsbauer „Henrik Hybertsson“ war bisher eher auf kleine Schiffe spezialisiert, die nur über ein Deck verfügten.

Page 20: Softwarearchitektur vs. PHP

Sonntag, 30. Mai 2010

Fazit: Das Schiff war zwar sehr beeindruckend, und hätte den Gegner mit Sicherheit eingeschüchtert, wenn es jemals aus dem Hafen herausgekommen wäre - das ist es aber nicht, sondern bereits nach wenigen Minuten auf der Jungfernfahrt noch im Hafen gesunken.

Page 21: Softwarearchitektur vs. PHP

?

Sonntag, 30. Mai 2010

Warum erzähl ich das ganze? Weil hier jemand zwei Konkurrierende Architekturmerkmale hatte - solide Bauart mit einem Deck vs. eindrucksvolle Erscheinung. Da sich das Management - sprich vorhin genannter Entrepreneur - aber für eindrucksvolle Erscheinung entschieden hat, musste es kommen wie es gekommen ist.

Page 22: Softwarearchitektur vs. PHP

JOHANN-PETER HARTMANN

Sonntag, 30. Mai 2010

Das bin ich, willkommen zum Workshop!

Page 23: Softwarearchitektur vs. PHP

PHP-DEVELOPER

Aber auch ein paar andere Sprachen im Koffer.

Sonntag, 30. Mai 2010

Page 24: Softwarearchitektur vs. PHP

PHP-DEVELOPER

Aber auch ein paar andere Sprachen im Koffer.

Seit 3.0.4 :-)

Sonntag, 30. Mai 2010

Page 25: Softwarearchitektur vs. PHP

Sonntag, 30. Mai 2010

Das ist auch schon über 10 Jahre her.

Page 26: Softwarearchitektur vs. PHP

Gründer und CTO

Sonntag, 30. Mai 2010

Das ist auch schon über 10 Jahre her.

Page 27: Softwarearchitektur vs. PHP

Sonntag, 30. Mai 2010

Ausserdem bin ich der CEO von SektionEins. Ich nehm das mal als Anlass, einfach zu Duzen - ist das in Ordnung? oder ist hier eher „DU sagst immer noch SIE zu mir...“ angesagt?

Page 28: Softwarearchitektur vs. PHP

Gründer und CEO

Sonntag, 30. Mai 2010

Ausserdem bin ich der CEO von SektionEins. Ich nehm das mal als Anlass, einfach zu Duzen - ist das in Ordnung? oder ist hier eher „DU sagst immer noch SIE zu mir...“ angesagt?

Page 29: Softwarearchitektur vs. PHP

Sonntag, 30. Mai 2010

Bei Mayflower machen wir Software für Firmen wie EON

Page 30: Softwarearchitektur vs. PHP

Sonntag, 30. Mai 2010

... das von Telefonica eingesetzt wird ...

Page 31: Softwarearchitektur vs. PHP

Sonntag, 30. Mai 2010

Page 32: Softwarearchitektur vs. PHP

Sonntag, 30. Mai 2010

Page 33: Softwarearchitektur vs. PHP

Sonntag, 30. Mai 2010

Page 34: Softwarearchitektur vs. PHP

Architektur++

Sonntag, 30. Mai 2010

Es wäre also tendenziell gut, wenn wir Architektur könnten.

Page 35: Softwarearchitektur vs. PHP

Wer ist Softwarentwickler?

Sonntag, 30. Mai 2010

Wer von Euch ist Entwickler?

Page 36: Softwarearchitektur vs. PHP

Wer ist Softwarearchitekt?

Sonntag, 30. Mai 2010

Wer von Euch ist Softwarearchitekt?

Page 37: Softwarearchitektur vs. PHP

Wer muss trotzdem irgendwiedie Architektur machen? :-)

Sonntag, 30. Mai 2010

Auch wenn es keinen echten Architekten gibt, ist Architektur häufig Bestandteil des Jobs.

Page 38: Softwarearchitektur vs. PHP

Wer hat den European Song Contest gesehen?

Sonntag, 30. Mai 2010

Wer hat den European Song Contest gesehen?

Page 39: Softwarearchitektur vs. PHP

Wer hat mit abgestimmt?

Sonntag, 30. Mai 2010

Wissen Deine Eltern das? Sind sie besorgt?

Page 40: Softwarearchitektur vs. PHP

?

Sonntag, 30. Mai 2010

Ok, aber eigentlich wollen wir hier Softwarearchitektur machen. Was ist Eure Definition von Softwarearchitektur?

Page 41: Softwarearchitektur vs. PHP

Was erwartet Ihr vom Vortrag?

Sonntag, 30. Mai 2010

Ich erzählte tatsächlich was über: Was ist Architektur, wie bewertet man die, wie sorgt man dafür, das man beim architekturaudit nicht auseinandergenommen wird?

Page 42: Softwarearchitektur vs. PHP

ARCHITEKTUR

Sonntag, 30. Mai 2010

Motivation: Ein Mayflower-Talk: Fix your architecture, bei dem alle gesagt haben: der ist ja gar nicht über architektur.

Page 43: Softwarearchitektur vs. PHP

The software architecture of a program or computing system is the structure or structures of the system, which comprise software elements, the externally visible properties of those elements, and the relationships among them.

Sonntag, 30. Mai 2010

Schauen wir mal, was die Profis sagen.*vorlesen* - Wie man sieht, komplizierte Satzstruktur, also haben wir es offensichtlich mit einem ungeschickten Autor oder einer komplexen Materie zu tun.

Page 44: Softwarearchitektur vs. PHP

Architecture is high-level design.

Sonntag, 30. Mai 2010

This is true enough, in the sense that a horse is a mammal, but the two are not interchangeable.

Page 45: Softwarearchitektur vs. PHP

Architecture is high-level design.

Sonntag, 30. Mai 2010

This is true enough, in the sense that a horse is a mammal, but the two are not interchangeable.

Page 46: Softwarearchitektur vs. PHP

Architecture is the overall structure of the system.

Sonntag, 30. Mai 2010

Schön wärs - eine Architektur sind in der Regel aber nicht nur eine, sondern viele Strukturen.

Page 47: Softwarearchitektur vs. PHP

Architecture is the overall structure of the system.

Sonntag, 30. Mai 2010

Schön wärs - eine Architektur sind in der Regel aber nicht nur eine, sondern viele Strukturen.

Page 48: Softwarearchitektur vs. PHP

Architecture is the structure of the components of a program or system, their interrelationships, and the principles and guidelines governing their design and evolution over time.

Sonntag, 30. Mai 2010

Wer hat hier im Raum alles eine Architekturdokumentation?

Page 49: Softwarearchitektur vs. PHP

Architecture is the structure of the components of a program or system, their interrelationships, and the principles and guidelines governing their design and evolution over time.

Sonntag, 30. Mai 2010

Wer hat hier im Raum alles eine Architekturdokumentation?

Page 50: Softwarearchitektur vs. PHP

The software architecture of a program or computing system is the structure or structures of the system, which comprise software elements, the externally visible properties of those elements, and the relationships among them.

Sonntag, 30. Mai 2010

Also bleiben wir mal bei dieser Definition. Sie ist aus „Software Architecture in Praxis Second Edition“, von Len Bass, Paul Clements oder Rick Kazman. Bei den Jungs habe ich ziemlich viel gekupfert.Wichtig ist: Architektur definiert die Elemente eines Systems, nicht Ihre Implementierung.

Page 51: Softwarearchitektur vs. PHP

ARCHITEKTUR!=

DESIGN

Sonntag, 30. Mai 2010

Was im inneren der Elemente ist, ist Design. MVC ist im Regelfall nicht nach aussen sichtbar - und dementsprechend ein Design, keine Architektur.

Page 52: Softwarearchitektur vs. PHP

http://www.flickr.com/photos/ryanhayes/

Sonntag, 30. Mai 2010

Schauen wir uns doch einfach ein paar Beispiele für Architekturstile, englisch Architecture Patterns, an. Patterns sind keine globalen Architekturen, sondern Architekturmuster, von denen meist mehrere in der gesamten Architektur vorkommen.

Page 53: Softwarearchitektur vs. PHP

client - server

Sonntag, 30. Mai 2010

Durch Browser und Webserver nutzt praktisch jede Webanwendung unter anderem eine Client-Server Struktur. Bei Mashups oder embedded Applications wie Facebook wird diese Struktur durchbrochen.

Page 54: Softwarearchitektur vs. PHP

Frontend and Backend

Sonntag, 30. Mai 2010

Bei Frontend/ Backend handelt es sich um eine Trennung zwischen dem, was interagiert, und der Businesslogik. Durch SOA/REST-Architekturen erlebt diese Trennung gerade wieder einen Hype. Achtung: Frontend / Backend ist nicht mit Designs wie MVC zu verwechseln - weiss jemand warum?

Page 55: Softwarearchitektur vs. PHP

Three-tier model

Sonntag, 30. Mai 2010

Klassischerweise presentation layer, business logic,database - und damit auch eine Grundstruktur von Webanwendungen mit Datenbankpersistenz. Key-Value-Datenbanken etc führen hier zu 4-Tier-Architekturen.

Page 56: Softwarearchitektur vs. PHP

Event Driven Architecture

Sonntag, 30. Mai 2010

Hat jemand eine Ahnung, wo Eventgetriebene Architekturen vor allem vorkommen? Korrekt - in der GUI. Langsam schwappt dieses Architekturmuster aber auch in das Web - weil es sehr gut skaliert und hohe Responsivität erlaubt.

Page 57: Softwarearchitektur vs. PHP

Redundante Hardware

Sonntag, 30. Mai 2010

Eine einfach zu verstehende Architektur - meist mit automatischem Failover durch Betriebssystem (Heartbeat), Netzwerk (Load Balancer) oder Applikation

Page 58: Softwarearchitektur vs. PHP

Publish-Subscribe

Sonntag, 30. Mai 2010

Ich schicke eine Information irgendwo hin, und sie kann 0-n Empfänger haben. Viele Message-Queues implementieren diese Architektur.

Page 59: Softwarearchitektur vs. PHP

Sonntag, 30. Mai 2010

Ein konkretes Beispiel dafür ist node.js. Wer von den anwesenden hat schon damit zu tun gehabt? Ein sehr Klasse spielzeug, wenn man dinge in Javascript machen möchte.

Page 60: Softwarearchitektur vs. PHP

Implicit invocation

Sonntag, 30. Mai 2010

Die Technik hinter dem Observer-Designpattern: man registriert sich für ein Ereignis, und wird aufgerufen, wenn dieses eintritt.

Page 61: Softwarearchitektur vs. PHP

Sonntag, 30. Mai 2010

Das ganze wird auch Hollywood-Principle genannt- don‘t call us, we call you.

Page 62: Softwarearchitektur vs. PHP

Monolithic application

Sonntag, 30. Mai 2010

Der Klassiker ist die monolithische Applikation. Damit fängt jeder einmal an, und es gab eine dunkle Zeit, in der alle Applikationen so aussahen. Hier kümmert sich die Applikation um Nutzerinterface, Speichern von Daten und hat keine externen Abhängigkeiten - kennt jemand ein Beispiel? Korrekt - Microsoft Office ;-)

Page 63: Softwarearchitektur vs. PHP

Microsoft Word

Sonntag, 30. Mai 2010

Page 64: Softwarearchitektur vs. PHP

Peer 2 Peer

Sonntag, 30. Mai 2010

Warez, Muzak, filesharing - aber auch NNTP (also Usenet), Skype oder Spotify

Page 65: Softwarearchitektur vs. PHP

Peer 2 Peer

Sonntag, 30. Mai 2010

Warez, Muzak, filesharing - aber auch NNTP (also Usenet), Skype oder Spotify

Page 66: Softwarearchitektur vs. PHP

C.O.A.

Sonntag, 30. Mai 2010

Hier handelt es sich um Architekturen wie CORBA, Microsofts DCOM, OLE, XPCOM in Firefox oder Java EE - einzelne Komponenten arbeiten für sich losgelöst und können von anderen eingebunden werden.

Page 67: Softwarearchitektur vs. PHP

Pipes and Filters

Sonntag, 30. Mai 2010

Eine Sonderform von Component Based Architectures sind Pipes und Filters - hier können komponenten durch Ein/Ausgabe-Streams miteinander verbunden werden und das Ergebnis der Vorgänger weiterverarbeiten können - wie etwa im Unix-System.

Page 68: Softwarearchitektur vs. PHP

S.O.A.

Sonntag, 30. Mai 2010

Eine Spezialisierung von COA ist SOA - service oriented architecture, auch REST. Ursprünglich um eine bessere Architektur von sehr grossen systemen zu erlauben, heute wird es auch gerne gemacht, um Teile von Webapplikationen auch für andere Applikationen nutzbar zu machen - etwa durch eine Webbasierte Schnittstelle.

Page 69: Softwarearchitektur vs. PHP

Shared nothing

Sonntag, 30. Mai 2010

Einer der Gründe, warum PHP so populär ist - wenn ich nichts gemeinsam benutze, kann ich einfach linear über Blech skalieren. Viel Infrastruktur hinter Google basiert auf dieser Idee.

Page 70: Softwarearchitektur vs. PHP

Space based

Sonntag, 30. Mai 2010

Space based ist btw. sehr cool. da wirft man POJOs gegen einen Stapel worker und guckt nach, was rauskommt.

Page 71: Softwarearchitektur vs. PHP

Messaging/Queues

Sonntag, 30. Mai 2010

Asynchronous Workqueues: Synchronous work asynchronous. If you have time, why do it now? ActiveMQ, RabbitMQ, Gearman for the cool internet startup.Wie sieht das ganze in der Praxis aus?

Page 72: Softwarearchitektur vs. PHP

Framework

Sonntag, 30. Mai 2010

Die Wahl des Frameworks ist eine Architekturentscheidung, die viele andere Architektur- und Designentscheidungen vorweg nimmt.

Page 73: Softwarearchitektur vs. PHP

Applikation

Sonntag, 30. Mai 2010

Das ist die einfachste Form der Applikation, ein Monolith.

Page 74: Softwarearchitektur vs. PHP

Applikation

Datenbank

Sonntag, 30. Mai 2010

Eine klassische Two-Tier-Architektur, nimmt man den Browser mit dazu Tree-Tier.

Page 75: Softwarearchitektur vs. PHP

Frontend

Datenbank

Backend

Sonntag, 30. Mai 2010

Weil es gerade modern ist, trennen wir Frontend und Backend -und lassen die über eine definierte Schnittstelle miteinander reden - gute Gründe sind zB, wenn auch andere Dienste auf unser Backend zugreifen sollen.

Page 76: Softwarearchitektur vs. PHP

Frontend

Datenbank

Backend External Service

IPhone-App

Sonntag, 30. Mai 2010

Wie zum Beispiel, zeitgemäß, eine Iphone App. (Frage: Wer ist Android? Wer ist Iphone?) Aber nicht nur ich kann für andere Applikationen Services anbieten, ich kann auch fremde Services einbinden. Das können Payment-Gateways sein, eine Maps-Variante als auch andere interne services.

Page 77: Softwarearchitektur vs. PHP

Frontend

Datenbank

Backend External Service

IPhone-App

Indizierer

SuchIndex

Sonntag, 30. Mai 2010

Und weil mit der IPhone-App automatisch der massive Erfolg da ist, muss die Suche in einen Solr ausgelagert werden. Weil ich PDF und Word-Files automatisch wandle, wird das ganze asynchron über einen Indizierer gemacht, der den Solr-Topf füllt, der dann synchron abgefragt wird.

Page 78: Softwarearchitektur vs. PHP

Frontend

Datenbank

Backend External Service

IPhone-App

Indizierer

SuchIndex

?Sonntag, 30. Mai 2010

Aber was sagt uns dieses Diagramm genau?

Page 79: Softwarearchitektur vs. PHP

Frontend

Datenbank

Backend External Service

IPhone-App

Indizierer

SuchIndex

Sonntag, 30. Mai 2010

Hardware? Prozesse? Request-Basiert oder Asynchron? Verteilt?Welche Funktion haben die Elemente genau in der Architektur?

Page 80: Softwarearchitektur vs. PHP

Frontend

Datenbank

Backend External Service

IPhone-App

Indizierer

SuchIndex

Sonntag, 30. Mai 2010

Was sind die Verbindungen? Direkte Kommunikation? Kontrolliert ein Element das andere? Rufen sie sich gegenseitig auf, synchronisieren sie sich? Um eine Architektur zu beschreiben benötigt man also eine ganze Reihe von Diagrammen und Beschreibungen. Ausser, man baut nur Monolithen.

Page 81: Softwarearchitektur vs. PHP

Was macht eine gute Architektur aus?

Sonntag, 30. Mai 2010

Frage an die Zuhörer: Was macht eine gute Architektur aus?Welche Kriterien muss eine Architektur erfüllen?

Page 82: Softwarearchitektur vs. PHP

Funktionalität

Sonntag, 30. Mai 2010

Zunächst einmal müssen die vom Kunden angeforderten Requirements erfüllt werden - das ist klar. Wenn der Zweck der Anwendung nicht erfüllt wird, gibt es keine Anwendung. Aber Architektur geht darüber hinaus.

Page 83: Softwarearchitektur vs. PHP

?

Sonntag, 30. Mai 2010

Hat jemand eine Idee, was weiterhin noch von der Architektur geliefert werden soll? Gibt es bestimmte Anforderungen, die eine Architektur neben der offensichtlichen Funktionalität erfüllen soll?

Page 84: Softwarearchitektur vs. PHP

Qualitätskriterien

Sonntag, 30. Mai 2010

Page 85: Softwarearchitektur vs. PHP

FURPS

?

Sonntag, 30. Mai 2010

Quizfrage: Was bedeutet FURBS? Englisches Umgangswort für Aufstossen, eine Knuddelalienrasse aus Star Trek 1?

Page 86: Softwarearchitektur vs. PHP

FURPS

?

Sonntag, 30. Mai 2010

Quizfrage: Was bedeutet FURBS? Englisches Umgangswort für Aufstossen, eine Knuddelalienrasse aus Star Trek 1?

Page 87: Softwarearchitektur vs. PHP

FURPS

?

Sonntag, 30. Mai 2010

Quizfrage: Was bedeutet FURBS? Englisches Umgangswort für Aufstossen, eine Knuddelalienrasse aus Star Trek 1?

Page 88: Softwarearchitektur vs. PHP

FunctionalityUsabilityReliabilityPerformanceSecurity

Sonntag, 30. Mai 2010

Funktionalität - das, was der Kunde eigentlich wollte (typischerweise am Tag der Abgabe)Usability - Wenn der Kunde das gewollt hätte hätte er keinen Programmierer fragen sollenReliability - die Verlässlichkeit der Applikation, Fehlerfreiheit und VerfügbarkeitPerformance - Antwortzeit, Durchsatz, Bandbreite und vieles andereSecurity- Sicherheit in Netzwerk, Daten, Angriffsarten

Page 89: Softwarearchitektur vs. PHP

Sonntag, 30. Mai 2010

Aber es geht natürlich noch komplizierter ...

Page 90: Softwarearchitektur vs. PHP

ISO 9126

Sonntag, 30. Mai 2010

Page 91: Softwarearchitektur vs. PHP

ISO 9126Wer ein fotografisches

Gedächtnis hat ist klar im Vorteil.

Sonntag, 30. Mai 2010

Page 92: Softwarearchitektur vs. PHP

Funktionalität

Sonntag, 30. Mai 2010

Analog zu Furbs spielt Funktionalität den erste und wichtigsten PunktInwieweit besitzt die Software die geforderten Funktionen? - Vorhandensein von Funktionen mit festgelegten Eigenschaften. Diese Funktionen erfüllen die definierten Anforderungen.

Page 93: Softwarearchitektur vs. PHP

AngemessenheitFunktionalität:

Sonntag, 30. Mai 2010

Eine Randfunktionalität sollte nicht 80% der Programmierung verursachen.

Page 94: Softwarearchitektur vs. PHP

RichtigkeitFunktionalität:

Sonntag, 30. Mai 2010

Der Durchschnittsentwickler: Ich glaube gesehen zu haben, dass es bei mir einmal bei einer bestimmten Konstellation ein richtiges Ergebnis geliefert hätte.

Page 95: Softwarearchitektur vs. PHP

InteroperabilitätFunktionalität:

Sonntag, 30. Mai 2010

Das verschweigen wir Developer gerne, dass wir das auch könnten, wenn wir wollten - statt dessen verkaufen wir lieber eine enterprisig klingende Middle-Ware-Architektur.

Page 96: Softwarearchitektur vs. PHP

SicherheitFunktionalität:

Sonntag, 30. Mai 2010

Das können wir PHPler inzwischen ganz gut. Fähigkeit, unberechtigten Zugriff, sowohl versehentlich als auch vorsätzlich, auf Programme und Daten zu verhindern.

Page 97: Softwarearchitektur vs. PHP

OrdnungsmässigkeitFunktionalität:

Sonntag, 30. Mai 2010

Hej, es ist eine ISO-Norm. Also wird bei Funktionalität Konformität zu Standards gefordert. Das können aber auch interne, eigene Standards sein. Im Regelfall reicht es, auf dem Papier zu dokumentieren, dass man sie einhält, und in der echten Architektur einfach das zu machen, wozu man Bock hat.

Page 98: Softwarearchitektur vs. PHP

Zuverlässigkeit

Sonntag, 30. Mai 2010

Bei Zuverlässigkeit haben wir Entwickler einen doofen Fehler gemacht. Damals, auf DOS, war es ok, wenn eine Software nach dem Start einfach mal eine Weile lief, wenn sie zwischendurch mal Gabberish redet oder einfach abstürzt, dann hat der Nutzer neu gestartet und in Zukunft um die Ursache herum gearbeitet. Heute ist es leider weniger Komfortabel, der Nutzer erwartet allen Ernstes, dass die Software einfach funktioniert.

Page 99: Softwarearchitektur vs. PHP

ReifeZuverlässigkeit:

Sonntag, 30. Mai 2010

Wenige Fehler und wenige Bugs. Das können wir alle ziemlich gut, meist hört es nur an dem Tag auf, an dem der Kunde beginnt, die Software tatsächlich zu benutzen.

Page 100: Softwarearchitektur vs. PHP

FehlertoleranzZuverlässigkeit:

Sonntag, 30. Mai 2010

Kann sich noch jemand an den Commodore Amiga erinnern? Sein Bluescreen hiess „Guru Meditation“ und versprach, dass der Rechner wieder zu potte kommen würde. Kam er aber nicht. Für diejenigen unter Euch, die Fehler machen: wenn einer passiert, sollte der Nutzer nicht mit einem weissen Screen „Please contact your local system administrator“ konfrontiert werden - ausser, euer Administrator hat es einfach verdient, so wie unserer.

Page 101: Softwarearchitektur vs. PHP

RobustheitZuverlässigkeit:

Sonntag, 30. Mai 2010

Fähigkeit, ein stabiles System bei Eingaben zu gewährleisten, die gar nicht vorgesehen sind. Die Software hält DAUs stand. Tipp für Leute ohne gut skalierbaren Idioten im Unternehmen: einfach mal im familiären Kreis schauen, da gibt es eigentlich immer irgendwen, der hartnäckig komische Dinge von Software verlangt und einen anruft, wenn es nicht klappt.

Page 102: Softwarearchitektur vs. PHP

WiederherstellbarkeitZuverlässigkeit:

Sonntag, 30. Mai 2010

Wenn eine Fehler auftrat, kann man den irgendwie wieder gut machen? Oder muss man bei den Robotern, die die Simulation steuern in der wir leben nachfragen, ob sie die Matrix noch mal auf dem Snapshot von 9:35 restarten können?

Page 103: Softwarearchitektur vs. PHP

KonformitätZuverlässigkeit:

Sonntag, 30. Mai 2010

Und hier auch wieder die Duftmarke der ISO-Norm: Werden Standards, auch gerne die eigenen, erfüllt?

Page 104: Softwarearchitektur vs. PHP

Benutzbarkeit

Sonntag, 30. Mai 2010

Entgegen anderslautenden Gerüchten unter Developern reicht hier nicht der theoretische Nachweis, dass mit einer hochgetunten Intuition ohnehin alles offensichtlich ist, schliesslich verstehe ich als Developer ja auch alles. Die Benutzbarkeit ist der Aufwand, den ich _nicht_ zum Einlernen und Verstehen brauche.

Page 105: Softwarearchitektur vs. PHP

VerständlichkeitBenutzbarkeit:

Sonntag, 30. Mai 2010

Ist Konzept und Anwendung auch für sterbliche verständlich? Oder sind die tieferen Logiken nur dem Developer mit Schwerpunkt auf Prolog zugänglich?

Page 106: Softwarearchitektur vs. PHP

ErlernbarkeitBenutzbarkeit:

Sonntag, 30. Mai 2010

Aufwand für den Benutzer, die Anwendung zu erlernen (z. B. Bedienung, Ein-, Ausgabe).Tipp für Entwickler: Einfach mal wichtige Funktionen hinter einem verwirrend benannten Button verstecken. Das freut die Vertriebsabteilung, da wird gleich die Schulung hinterherverkauft. Kennt jemand Unternehmen, die immer gleich Schulungen mitverkaufen?

Page 107: Softwarearchitektur vs. PHP

BedienbarkeitBenutzbarkeit:

Sonntag, 30. Mai 2010

Aufwand für den Benutzer, die Anwendung zu bedienen. Wieviele Clicks sind zu machen, wieviele Screens sind zu verstehen um einen einfachen Workflow durchzuführen?

Page 108: Softwarearchitektur vs. PHP

AttraktivitätBenutzbarkeit:

Sonntag, 30. Mai 2010

Daaaa kann Apple mitreden. Ist die Oberfläche sexy? Will ich mit der Applikation gesehen werden? Nehme ich sie heimlich mit unter die Bettdecke?

Page 109: Softwarearchitektur vs. PHP

KonformitätBenutzbarkeit:

Sonntag, 30. Mai 2010

Und, die ISO-Duftmarke wieder.

Page 110: Softwarearchitektur vs. PHP

Effizienz

Sonntag, 30. Mai 2010

Nicht nur die Frage, wie schnell die Seite antwortet - sondern vor allem, was leistet die software für die eingesetzten Betriebsmittel? Braucht es einen Strato-Account oder eine Sun Enterprise mit Oracle-Lizenzen für 32 CPUs?

Page 111: Softwarearchitektur vs. PHP

ZeitverhaltenEffizienz:

Sonntag, 30. Mai 2010

Wieviele Requests pro Sekunde? Und, „Responsivität ist das neue Schwarz“, wie schnell kommt die Antwort? „Wir können 40 Requests pro Sekunde, sie dauern nur jeweils 10 Minuten“

Page 112: Softwarearchitektur vs. PHP

VerbrauchsverhaltenEffizienz:

Sonntag, 30. Mai 2010

Wieviel CPU / Festplatte wird für eine bestimmte Leistung gebraucht? Wenn ich nen Hardwarehersteller wäre, der sowas verkauft, würde ich versuchen eine Plattform zu bauen, die möglichst viel davon braucht .... am besten mit einer eigenen Programmiersprache ... andere Hardwarehersteller wie IBM würden das bestimmt stützen ... Moment mal ...

Page 113: Softwarearchitektur vs. PHP

VerbrauchsverhaltenEffizienz:

Sonntag, 30. Mai 2010

Wieviel CPU / Festplatte wird für eine bestimmte Leistung gebraucht? Wenn ich nen Hardwarehersteller wäre, der sowas verkauft, würde ich versuchen eine Plattform zu bauen, die möglichst viel davon braucht .... am besten mit einer eigenen Programmiersprache ... andere Hardwarehersteller wie IBM würden das bestimmt stützen ... Moment mal ...

Page 114: Softwarearchitektur vs. PHP

KonformitätEffizienz:

Sonntag, 30. Mai 2010

Tjahaha, und die ISO-Jungs wieder ...

Page 115: Softwarearchitektur vs. PHP

Änderbarkeit

Sonntag, 30. Mai 2010

Da beginnen unsere Kunden zu grinsen - Änderbarkeit ist die Fähigkeit, neue Features abzubilden und Fehler zu korrigieren. Deshalb wollen unsere Kunden so PHP-Jungs wie uns - weil angeblich können wir das super.

Page 116: Softwarearchitektur vs. PHP

AnalysierbarkeitÄnderbarkeit:

Sonntag, 30. Mai 2010

Das ist ein spannender Punkt. So Systeme wie Symfony oder Ruby on Rails erlauben es, deutlich schneller als mit zB dem Zend Framework zu arbeiten. Auf der anderen Seite passiert viel impliziert über lustige Hooks usw, und man weiss gar nicht immer, was man gerade alles anfässt - zum Nachteil der Analysierbarkeit. Auf der anderen Seite schadet Dokumentation und ein Gehirn auch nicht zwangsläufig.

Page 117: Softwarearchitektur vs. PHP

ModifizierbarkeitÄnderbarkeit:

Sonntag, 30. Mai 2010

Das ist mal die konkrete Änderung. Wie lange brauch ich dafür. Habe ich eine saubere Trennung der Concerns, oder muss ich in 7 Layern jeweils etwas ändern, um ein geändertes Requirement abzubilden. Das ganze wird boykottiert von schlechten Boundaries und natürlich von hoher Cohesion.

Page 118: Softwarearchitektur vs. PHP

Sonntag, 30. Mai 2010

Spaghetti-Code zu fixen ist keine Freude.

Page 119: Softwarearchitektur vs. PHP

StabilitätÄnderbarkeit:

Sonntag, 30. Mai 2010

„Hey Boss, kein Problem, hab ich in 5 Minuten Live“ „Ja, die Produktionsseite läuft gerade nicht, aber das hab ich gleich.“ „Uh, da war noch eine andere Sache, ich muss nur kurz die Library umschreiben.“ „Chef, ich rufe aus dem Flugzeug nach Brasilien aus an, und wollte nur sagen, es tut mir leid!“

Page 120: Softwarearchitektur vs. PHP

TestbarkeitÄnderbarkeit:

Sonntag, 30. Mai 2010

Der Durchschnittsprogrammierer denkt: Verdammt, testen auch noch? Wer arbeitet hier test-driven? Wir haben die erfahrung gemacht, dass bei hohen änderungsfrequenzen von grossen requirements testdriven keine freude ist. Aber halt weniger scheisse als die alternative.

Page 121: Softwarearchitektur vs. PHP

Übertragbarkeit

Sonntag, 30. Mai 2010

Für Commodity-software trivial: läuft das überall. Aber auch Inhouse von bedeutung - Änderungen von Plattformen, datenbanken, der Serverstruktur etc.

Page 122: Softwarearchitektur vs. PHP

AnpassbarkeitÜbertragbarkeit:

Sonntag, 30. Mai 2010

Kann ich die Software schnell anpassen. Anders formuliert: habe ich zB eine Datenbankabstraktion?

Page 123: Softwarearchitektur vs. PHP

InstallierbarkeitÜbertragbarkeit:

Sonntag, 30. Mai 2010

Wer benutzt hier Capistrano oder irgendein automatisches Deployment? Wer installiert per Hand? Wie lange dauert das?

Page 124: Softwarearchitektur vs. PHP

KoexistenzÜbertragbarkeit:

Sonntag, 30. Mai 2010

Verlange ich spezialitäten von meiner umgebung, die dem rest der welt weh tun? register_globals, anyone?

Page 125: Softwarearchitektur vs. PHP

AustauschbarkeitÜbertragbarkeit:

Sonntag, 30. Mai 2010

Wie gut lässt sich meine Software wegwerfen?

Page 126: Softwarearchitektur vs. PHP

KonformitätÜbertragbarkeit:

Sonntag, 30. Mai 2010

Und die ISO-Jungs wieder, war ja klar.

Page 127: Softwarearchitektur vs. PHP

O - Kay ...

Sonntag, 30. Mai 2010

Müssen wir wirklich alles beachten, wenn wir eine Architektur auswählen?

Page 128: Softwarearchitektur vs. PHP

?

Sonntag, 30. Mai 2010

Wer von den hier Anwesenden berücksichtigt jedesmal alle Aspekte?

Page 129: Softwarearchitektur vs. PHP

Zu einer anderen Zeit, an einem anderen Ort ...

Sonntag, 30. Mai 2010

Page 130: Softwarearchitektur vs. PHP

Zu einer anderen Zeit, an einem anderen Ort ...

Heute, in der Realität

Sonntag, 30. Mai 2010

Page 131: Softwarearchitektur vs. PHP

Default-Toolset des Unternehmens

Sonntag, 30. Mai 2010

Page 132: Softwarearchitektur vs. PHP

Alte Bekannte 1:Dinge, die sich in der Vergangenheit

bewährt haben ...

Sonntag, 30. Mai 2010

Page 133: Softwarearchitektur vs. PHP

Alte Bekannte II:... und Dinge, die sich in der

Vergangenheit nicht bewährt haben.

Sonntag, 30. Mai 2010

Page 134: Softwarearchitektur vs. PHP

Technik mit Coolness-Faktor

Sonntag, 30. Mai 2010

Das „echte“ Architekturvorgehen: Ich habe eine coole Lösung, die ich spannend finde, die jemand verblogt hat.

Page 135: Softwarearchitektur vs. PHP

Ich habe eine Lösung, und suche nach einem Passenden Problem

Sonntag, 30. Mai 2010

Map-Reduce anyone? NoSQL? Message-Queues?

Page 136: Softwarearchitektur vs. PHP

"Nobody ever got fired for choosing Java"

Sonntag, 30. Mai 2010

Page 137: Softwarearchitektur vs. PHP

• Innere Plattform

•Wheel Factory

• Gas Factory

• Golden Hammer

• ... und vieles mehr ...

ARCHITEKTURNEUROSEN

Sonntag, 30. Mai 2010

Innere Plattform: Das System ist so universell Konfigurierbar, dass es letztlich nur eine schwache Kopie der Plattform ist, auf der es gebaut ist. Beispiel: Ein Beispiel sind „flexible“ Datenmodelle, die auf konkrete (anwendungsbezogene) Datenbanktabellen verzichten und stattdessen mittels allgemeiner Tabellen eine eigene Verwaltungsschicht für die Datenstruktur implementieren.Wheel Factory: Es wird jeweils etwas eigenes erfunden, anstelle etablierte Tools zu nutzen.Gas Factory: ein einfaches Problem wird Enterprise gelöstGolden Hammer: Ein bevorzugter Lösungsweg wird als universell beste Lösung angesehen.

Page 138: Softwarearchitektur vs. PHP

Sonntag, 30. Mai 2010

Alle diese Dinge _können_ klappen, müssen aber nicht.- nicht durch andere Nachvollziehbar - nicht optimal für das Problem- die Entscheidungsfindung und Motivation wurde nicht dokumentiert Daher: Machen und Beten? Klingt nicht wirklich optimal ...

Page 139: Softwarearchitektur vs. PHP

ATAM

Sonntag, 30. Mai 2010

Page 140: Softwarearchitektur vs. PHP

ArchitectureTradeoffAnalysisMethod

Sonntag, 30. Mai 2010

Die Tradeoff Analyse geht davon aus, dass es keine perfekte Architektur für alles gibt. sondern nur Architekturen, die für jede Aufgabe ein paar Vorteile und ein paar Nachteile mitbringen.

Page 141: Softwarearchitektur vs. PHP

Sonntag, 30. Mai 2010

Das ganze kommt vom Software Engineering Institute, und ist eigentlich für die Bewertung von Architekturen im Vergleich gedacht.

Page 142: Softwarearchitektur vs. PHP

Es gibt kein Silver Bullet?

Sonntag, 30. Mai 2010

Page 143: Softwarearchitektur vs. PHP

ATAM

Ermöglicht die Ermittlung präziser Qualitätskriterien

Sonntag, 30. Mai 2010

Page 144: Softwarearchitektur vs. PHP

ATAM

Erzeugt eine frühe Architekturdokumentation.

Sonntag, 30. Mai 2010

Page 145: Softwarearchitektur vs. PHP

ATAM

Erzeugt eine dokumentierte Basis für Architekturentscheidungen

Sonntag, 30. Mai 2010

Page 146: Softwarearchitektur vs. PHP

ATAM

Erkennt Risiken früh im Software LifeCycle

Sonntag, 30. Mai 2010

Page 147: Softwarearchitektur vs. PHP

ATAM

Erzeugt bessere Kommunikation zwischen den Stakeholdern

Sonntag, 30. Mai 2010

Page 148: Softwarearchitektur vs. PHP

Sonntag, 30. Mai 2010

Wie sieht ATAM genau aus? „Was issene Dampfmaschin? Da stellen wir uns mal ganz dumm ...

Page 149: Softwarearchitektur vs. PHP

Business Drivers

Sonntag, 30. Mai 2010

Welche Ziele verfolgen wir mit dem Projekt? Was sind unsere Prioriäten dort?

Page 150: Softwarearchitektur vs. PHP

FUNKTIONALITÄT

Sonntag, 30. Mai 2010

Page 151: Softwarearchitektur vs. PHP

TECHNISCHE EINSCHRÄNKUNGEN

„Muss auf Windows laufen“

„Datenbank ist Oracle.“„Unsere Entwickler können nur PHP!“

„Alles auf unserem eigenen Framework!“

Sonntag, 30. Mai 2010

Page 152: Softwarearchitektur vs. PHP

?

Sonntag, 30. Mai 2010

Welche technischen Einschränkungen gibt es bei Euch?

Page 153: Softwarearchitektur vs. PHP

BUSINESS GOALS

1.OpenSource, Standards and of-the-shelf

2.Systemkomplexität reduzieren, Komponentenwiederverwendung

3.Einfache Reparatur / Maintenance

4.Kostengünstige Änderungen / neue Features

5.Flexibilität und Konfigurierbarkeit

Sonntag, 30. Mai 2010

Die Werte kommen aus unserer Studie, einfach bei uns im Blog runterladen.

Page 154: Softwarearchitektur vs. PHP

Sonntag, 30. Mai 2010

Stakeholder gibts viele, der erste ist aber klar: Das sind natürlich erst mal die Jungs, die unsere Rechnung bezahlen. Aber nicht nur die.

Page 155: Softwarearchitektur vs. PHP

Sonntag, 30. Mai 2010

Daneben gibt es noch die Leute, die unsere Software benutzen müssen, - Leute, die die Software später weiterentwickeln müssen,- Leute, die die Software in Produktion warten müssen - Leute, die die Software testen müssenetc ...

Page 156: Softwarearchitektur vs. PHP

QUALITÄTSKRITERIEN

Was war FURPS noch mal?

Sonntag, 30. Mai 2010

Page 157: Softwarearchitektur vs. PHP

Sonntag, 30. Mai 2010

Auf Basis der Qualitätskriterien wird der Utility Tree gebaut, mit den Qualitätskriterien, die - ganz konkret - für die Stakeholder eine grosse, wichtige Rolle spielen. Alle anderen, nicht relevanten Qualitätskriterien werden ausgeblendet.

Page 158: Softwarearchitektur vs. PHP

Sonntag, 30. Mai 2010

Für jedes Blatt des Utility Trees wird eine Szenario entworfen.

Page 159: Softwarearchitektur vs. PHP

SZENARIEN

• Repräsentieren die Interessen der Stakeholder

• um die Wirkung der Qualitätskriterien zu ermitteln

Sonntag, 30. Mai 2010

Page 160: Softwarearchitektur vs. PHP

SZENARIEN

• stellen wichtige Usecases dar

• stellen erwartete Änderungen dar

• stellen nicht erwartete Ereignisse da

Sonntag, 30. Mai 2010

Erwartete Änderungen sind Dinge wie Erfolg - die Plattform hat doppelt so viele Nutzer wie vorherNicht erwarte Ereignisse sind Dinge wie ein Ausfall von 50% aller Rechner.

Page 161: Softwarearchitektur vs. PHP

GUTE SZENARIEN

•Use Case: Die Startseite benötigt im Tagespeak nicht mehr als 1500 ms zur Darstellung

• erwartete Änderungen: Bei Verdopplung der Nutzer kann durch Verdopplung der Applikationsserver die gleiche Responsivität erzielt werden

•Nicht erwartete Änderungen: Nach einem Datenbankserver-Plattencrash ist innerhalb von 30 Minuten wieder für alle Nutzer normaler Betrieb möglich.

Sonntag, 30. Mai 2010

Erwartete Änderungen sind Dinge wie Erfolg - die Plattform hat doppelt so viele Nutzer wie vorherNicht erwarte Ereignisse sind Dinge wie ein Ausfall von 50% aller Rechner.

Page 162: Softwarearchitektur vs. PHP

Sonntag, 30. Mai 2010

Diese Szenarien werden mit der Priorität bewertet - H(igh), M(edium), L(ow)

Page 163: Softwarearchitektur vs. PHP

(Zend, Cake, Symfony)-Framework-basiert

Magento erweitern

REST-Architektur

Gearman-Message-Queue

ORM

JavaScript Toolkit

Generiertes JavaScript

NoSQL

Sonntag, 30. Mai 2010

Danach werden mögliche Architekturansätze gesammelt. Die können jeglicher Art sein, und sich natürlich in Teilaspekten des Systems jeweils ergänzen.

Page 164: Softwarearchitektur vs. PHP

Does it Blend?Sonntag, 30. Mai 2010

Die Architekturen, die Anfangs vom Team ermittelt wurden, werden jetzt jeweils gegen den Utility Tree geworfen, und geschaut, ob es zusammen aufgeht.

Page 165: Softwarearchitektur vs. PHP

Sonntag, 30. Mai 2010

Fehlertoleranz und Performance konkurrieren zB häufig. Oder eine Architektur erlaubt gar kein schnelles Ändern des Layouts. Oder die Queue wird - wie bei gearman - im Speicher gehalten, und bei einem Hardwarefehler gehen zwangsläufig Daten verloren.

Page 166: Softwarearchitektur vs. PHP

ANALYSE

•Welche Architekturen erfüllen die wichtigsten Qualitätsattribute?

•Welche Risiken entstehen, weil bestimmte Attribute in einer Architektur nicht erfüllt werden können?

•Welche Tradeoffs existieren?

Sonntag, 30. Mai 2010

Page 167: Softwarearchitektur vs. PHP

Sonntag, 30. Mai 2010

Zusammen mit den Stakeholdern werden die Konsequenzen der Architekturwahl besprochen und eine Architekturentscheidung getroffen.

Page 168: Softwarearchitektur vs. PHP

Das ganze noch mal im Schnelldurchlauf

Sonntag, 30. Mai 2010

Page 169: Softwarearchitektur vs. PHP

•Business Treiber definieren

•Utility Tree auf Basis von Qualitätskriterien definieren

•Szenarien erzeugen und Priorisieren

•Architekture gegen Utility Tree Analysieren

•Ergebnis präsentieren & Entscheiden

Sonntag, 30. Mai 2010

Page 170: Softwarearchitektur vs. PHP

Gruppenarbeit!

Vorstellen der Ergebnisse: 17:30Sonntag, 30. Mai 2010

Page 171: Softwarearchitektur vs. PHP

• Funktionalität: Angemessenheit, Richtigkeit, Interoperabilität, Sicherheit

• Zuverlässigkeit: Reife, Fehlertoleranz, Robustheit, Wiederherstellbarkeit

•Benutzbarkeit: Verständlichkeit, Erlernbarkeit, Bedienbarkeit, Attraktivität

• Effizienz: Zeitverhalten, Verbrauchsmaterialien

•Änderbarkeit: Analysierbarkeit, Modifizierbarkeit, Stabilität, Testbarkeit

•Übertragbarkeit: Anpassbarkeit, Installierbarkeit, Koexistenz, Austauschbarkeit

Vorstellen der Ergebnisse: 17:30Sonntag, 30. Mai 2010

Page 172: Softwarearchitektur vs. PHP

Noch Fragen?

Sonntag, 30. Mai 2010

Page 173: Softwarearchitektur vs. PHP

http://www.amazon.de/Software-Architecture-Practice-SEI-Engineering/dp/0321154959/

http://de.wikipedia.org/wiki/ISO/IEC_9126

http://c2.com/cgi-bin/wiki?AntiPatternsCatalog

Sonntag, 30. Mai 2010