Entwicklungsumgebung für Gruppen...

wurstkuchen

Fießers Erstling
Registriert
09.07.08
Beiträge
128
Hallo,

wir sind gerade dabei ein größeres Projekt für die Uni um zu setzen.
Dabei handelt es sich um eine Webapplikation geschrieben mit PHP, Javascript und mySQL (html & CSS klar).
Da wir fast nie zusamen in einem Raum arbeiten, kommt es oft zu Problemen. Wenn z.B. Jemand eine Änderung an der Datenbank macht, dann sollte man das ER Modell erweitern und den Anderen zur Verfügung stellen können.
Genau so siehts im Code aus. Wenn dort eine Änderung gemacht wird, jemand eine Idee hat, oder eine Klasse oder Methode erweitert, dann sollte man die Anderen davon in Kenntnis setzen können etc..

Toll wäre natürlich eine Anwendung die im Netz läuft. So kann online jeder sehen was gerade passiert. So etwas gibt es auch. Allerdings habe ich z.B. nichts gefunden, wo man das ER Modell der Datenbank aktuell halten kann.

Kennt ihr sowas? Auch wenn es nicht genau das ist, was ich hier suche, aber ihr damit gute Erfahrungen gemacht habt würde ich mich über Vorschläge freuen.

Danke
 

YanniH

Auralia
Registriert
20.04.08
Beiträge
202
Da wir fast nie zusamen in einem Raum arbeiten, kommt es oft zu Problemen. Wenn z.B. Jemand eine Änderung an der Datenbank macht, dann sollte man das ER Modell erweitern und den Anderen zur Verfügung stellen können.

Ihr repräsentiert also eure Datenbank durch ein plattes, abstrahiertes ER-Modell?

Habt ihr schon mal an Subversion gedacht? Ist eigentlich für Team-Kollaborationen verdammt gut und setze ich in meiner Firma sehr erfolgreich ein :)

PHP & MySQL klingt übrigens nach einer Mischung, die zwar beliebt aber nur schwer skalierbar ist - habt ihr euch schon Gedanken gemacht, wie das System arbeiten soll, wenn es "größer" wird (je nach Definition, was größer bedeutet...)

Die Zend IDE ist btw wohl ne ganz nette IDE, die insbesondere PHP-Projekte im Team gut unterstützt (nen Freund von mir schwört auf ZendStudio)...
 

wurstkuchen

Fießers Erstling
Registriert
09.07.08
Beiträge
128
Hallo YanniH,

danke für Deine Antwort. Subversion werde ich mir mal anschauen. Was ich überflogen habe sah interessant aus.

Dein Problem mit PHP scheint ein typisches von Unternehmern zu sein. Du weisst wahrscheinlich selber, dass damit sehr viele große Projekte realisiert sind und werden.
Aber es wäre interessant zu wissen wo Deiner Meinung nach das Problem liegen soll...

Beste Grüße
 

YanniH

Auralia
Registriert
20.04.08
Beiträge
202
Also mit Subversion wirst du, denke ich, sehr glücklich, zumal es von den gängigsten IDEs nativ unterstützt wird.

Ich halte PHP nicht grundsätzlich für eine schlechte Lösung. Problematisch wird es einerseits bei der Entwicklung und andererseits bei verschiedenen programmierparadigmen.

Natürlich ist die Entwicklung mit PHP sehr schnell, da du die Logik direkt in deine PHP-Files einbindest. Allerdings ist PHP nicht typsicher, wodurch deutlich unsaubere Datentypen zugelassen werden. Du musst also, neben jedem Parameter, den du in der Datenbank speicherst bzw. erst einmal überprüfen a) Ist der Parameter korrekt und b) ist der Parameter so ausgelegt, spezifische Schwächendes Systems auszunutzen (ich schiele hier auf integrierte Sicherheitssysteme wie sie zB schon in Java oder RoR implementiert sind). Zudem ist PHP in C geschrieben, wodurch es äußerst anfällig für Null-Byte-Attacken ist (wie oft gab es schon Bugs in der Implementation der Get- und Post-Parameter).

PHP wird zwar auf großen Projekten eingesetzt, jedoch kannst du ja mal selber einen Benchmark programmieren, der diverse DB-Abfragen durchführt und mit, z.B. jMeter, testen, wie deine Anwendung auf PHP-Basis udn auf z.B. Java-Basis reagiert. Bei wneigen nutzern wirst du keinen Unterschied merken, da geben sich die Unterschiede in den Reaktionszeiten nichts. Aber wenn du auf mehrere Nutzer (hunderte oder gar tausende...) gehst, wird PHP schnell ins Hintertreffen geraten. Wir haben hier einen internen Vergleich in meiner Firma angestellt und haben auf diversen unterschiedlichen Hardware-System herausgefunden, dass PHP gegen eine anständige JAVA/Spring/Hibernate/JSP-Lösung nicht ankommt, da die Middleware auf Singleton-Basis einfach deutlich schneller die Geschäftslogik abarbeiten kann als PHP - das ist einfach prinzipbedingt.

Zudem kommen Punkte wie Testfähigkeit - die ist zwar irgendwie gegeben, kommt aber lediglich im Unit-Test-Bereich an die von zB Java heran, in anderen Bereichen muss PHP passen.

Zudem ist PHPs Session- und Thread-Footprint extrem hoch. AFAIk gibt es keinen O/R-Mapper (den man tunlichst benutzen sollte, damit man das DBMS ändern kann und anständig optimiertes SQL hat...), der mit dem Speicher so sparsam umgeht, dass "viele" (also im vierstelligen Bereich...) Nutzer zuverlässig auf einem System arbeiten können.

Zudem sind deine Kosten für eine spätere Skalierung sehr hoch. Was machte StudiVZ, als die PHP-Engine an die Grenzen stieß? Einen immer größeren Server anschaffen... irgendwann kommst du da aber in Preisklassen, die du nicht bezahle kannst. Stichwort: Horizontale Partitionierung. Was machte StudiVZ? Ab ins Ausland und PHP wird nur noch als Anzeigeschicht genutzt - der gesamte Unterbau ist in anderen Hochsprachen gebaut :) Facebook btw. genauso.

Ich könnte stundenlang darüber philosophieren. PHP ist für mich eine Sprache, die häufig von Webdesignern genutzt wird, um schnelle Ergebnisse zu erzielen. Das ganze ist auch legitim - aber denk lieber vorher drüber nach, wie umfangreich das Projekt wird. Je größer, desto weniger lohnt sich PHP aufgrund der impliziten Förderung von schlechten Programmierpraktiken, Security-Leaks und der Untestbarkeit auf Integration :)
 

wurstkuchen

Fießers Erstling
Registriert
09.07.08
Beiträge
128
Sehr interessant,

auch wenn ich Dir nicht in allen Punkten folgen kann. Überprüfen lassen sich die Aussagen für mich natürlich auch nicht, das sind wohl Erfahrungswerte, die Du gesammelt hast.

Unser Projekt hat keine StudiVZ Ausmaße und Du hast vollkommen Recht: Erst mal muss ein "schnelles" Ergebnis her. PHP ist für uns auch am einfachsten, weil wir damit die meiste Erfahrung haben und auch keine Vollzeit Coder sind.


Wenn Jemand noch andere Entwicklungsumgebungen kennt oder nutzt immer her damit. Ich suche ja eigentlich keine richtige IDE sondern eher eine Software für Projektmanagement.
 

tjp

Altgelds Küchenapfel
Registriert
07.07.04
Beiträge
4.057
Zudem ist PHP in C geschrieben, wodurch es äußerst anfällig für Null-Byte-Attacken ist (wie oft gab es schon Bugs in der Implementation der Get- und Post-Parameter).
Java ist in C++ geschrieben, nur so mal am Rande erwähnt.

dass PHP gegen eine anständige JAVA/Spring/Hibernate/JSP-Lösung nicht ankommt, da die Middleware auf Singleton-Basis einfach deutlich schneller die Geschäftslogik abarbeiten kann als PHP - das ist einfach prinzipbedingt.
Das ist ziemlich wirres Zeug. Hibernate ist ein Persistenz-Framework, d.h. es ist nicht für die Abfrage großer Datenbanken gedacht, wenn man es dazu mißbraucht, dann verbrennt man massiv Rechenleistung. "Singleton" ist ein Design Pattern, ergibt in diesem Kontext keinerlei Sinn.

AFAIk gibt es keinen O/R-Mapper (den man tunlichst benutzen sollte, damit man das DBMS ändern kann und anständig optimiertes SQL hat...),
"anständig optimiertes SQL" und OR-Mapper sind ein Widerspruch in sich selbst, OR-Mapper sind dazu da mit möglichst allgemeinem SQL Objektgraphen in ein RDBMS zu sichern. Will man eine performante SQL-Anwendung muß man als erstens auf den OR-Mapper verzichten, und sich auf die Datenstruktur der Datenbank konzentrieren. Das erfordert in der Regel Anpassungen auf das jeweilige SQL-Dialekt des RDBMS.
Wenn man einmal eine Anwendung für Oracle oder DB2 geschrieben hat, dann portiert man die auch nie mehr. Das ergäbe auch gar keinen Sinn. Somit sind auch generische SQL-Frameworks meist sinnlos (es gibt für PHP solche Frameworks). Die Skalierung übernimmt in erster Linie das RDBMS, falls man einen Application Server dazwischen braucht, muß auch dieser skalieren.
 

YanniH

Auralia
Registriert
20.04.08
Beiträge
202
Java ist in C++ geschrieben, nur so mal am Rande erwähnt.

Lies dir bitte einmal etwas Wissen im Bereich C/C++ und vor allem deren Unterschiede an.

Das ist ziemlich wirres Zeug. Hibernate ist ein Persistenz-Framework, d.h. es ist nicht für die Abfrage großer Datenbanken gedacht, wenn man es dazu mißbraucht, dann verbrennt man massiv Rechenleistung. "Singleton" ist ein Design Pattern, ergibt in diesem Kontext keinerlei Sinn.

Kennst du dich mit dem von mir genannten Spring-Framework wenigstens etwas aus? Ich denke eher nicht. Das Design Pattern Singleton wurde von mir im Kontext mit Spring genannt, die gerade dieses Pattern propagieren.
Natürlich ist Hibernate nicht dazu gedacht, OLAP/OLTP-Systeme zu betreiben. Deren Datenbanken, Abfragesprachen etc. unterscheiden sich idr aber auch siginifikant vom Standardeinsatz eines RDBMS

"anständig optimiertes SQL" und OR-Mapper sind ein Widerspruch in sich selbst, OR-Mapper sind dazu da mit möglichst allgemeinem SQL Objektgraphen in ein RDBMS zu sichern. Will man eine performante SQL-Anwendung muß man als erstens auf den OR-Mapper verzichten, und sich auf die Datenstruktur der Datenbank konzentrieren. Das erfordert in der Regel Anpassungen auf das jeweilige SQL-Dialekt des RDBMS.

"Gute" OR-Mapper bieten entsprechende Konfigurationselemente an, um das abgefeueter SQL entsprechend auf Konfig-Ebene an seine Bedürfnisse anzupassen. Schreibst du das good old handcrafted SQL selber und möchtest on the fly entscheiden, welche Felder aus der DB gelutscht werden sollen, hast du nen verdammtes Problem. Mit entsprechnd gutem Wissen kannst du sogar zur Laufzeit das Verhalten der O/R-Mapper ändern. Ich habe nun schon viele Enterprise-Software-Projekte geleitet und konnte noch nie einen Nachteil bzgl. der SQL-Qualität feststellen.

Wenn man einmal eine Anwendung für Oracle oder DB2 geschrieben hat, dann portiert man die auch nie mehr. Das ergäbe auch gar keinen Sinn. Somit sind auch generische SQL-Frameworks meist sinnlos (es gibt für PHP solche Frameworks). Die Skalierung übernimmt in erster Linie das RDBMS, falls man einen Application Server dazwischen braucht, muß auch dieser skalieren.
Ähm, also, es gibt da vier große Wirtschaftsbetriebe, die von einer Oracle aufgrund der Kosten zu OpenSource-Datenbanken (Postgres) gewechselt sind. Und alleine das umschreiben der Anwendung von Oracle auf PG hat mir mein Haus finanziert ;) Dein obiger Satz ist also extrem gefährlich, einschränkend und ... naja ;) Auch schonmal was von heterogenen, geclusterten Datenbanken gehört? Youtube ist da so ein Spezialist.

Schöne Grüße.