Forum: Mikrocontroller und Digitale Elektronik Verteilte Softwareentwicklung


von Marius (Gast)


Lesenswert?

Hallo zusammen,

ich arbeite gerade an einem Projekt für die Uni. Für dieses Projekt sind 
aktuell drei Mikrocontroller mit zusätzlicher Hardware wie ADCs, 
Speicher, Display... im Einsatz. Jeder Controller wird dabei von einem 
Studenten programmiert, die Schnittstellen zur Kommunikation legen wir 
dann immer zu 3. fest.
Das klappt soweit auch ganz gut aber nun kam die Idee, alles mit einem 
Controller abzudecken. Den passenden Controller haben wir auch schon 
gefunden, also von der Hardwareseite ist nicht mit Problemen zu rechnen. 
Softwareseitig haben wir da allerdings Fragen. Speicher und Performance 
sind nicht das Problem sondern die verteilte Softwareentwicklung.
Da wir verschiedene Vorlesungen besuchen haben wir selten Zeit um uns zu 
3. zu treffen. Eine Idee wäre, die Software aus den drei Controllern 
"zusammen zu schmeißen" und auf einen Stand zu bringen, den man 
compilieren kann. Danach würde dann jeder seine Sourcen bearbeiten und 
über SVN ( oder was auch immer ) abspeichern und sich die neuen Sourcen 
der anderen ziehen.
Da muss man halt an die Disziplin jedes einzelnen appelieren, damit der 
eigene Code immer compilierbar ist, dass eine Änderung von Objekten 
mitegeteilt wird usw.
Eine andere Idee ist, dass zwei Leute ihren Code per Lib zur Verfügung 
stellen, aber dann haben wir keinen Ansatz zum Debuggen...
Meine Frage ist nun relativ einfach: Wie geht man in der 
Softwareentwicklung vor, wenn mehrere Entwickler für die gleiche 
Zielhardware Software entwicklen?

Danke
Marius

von Udo S. (urschmitt)


Lesenswert?

Saubere Schnittstellen definieren.
Statt Hardware Schnittstellen sind das dann Software Schnittstellen.
Für Tests und zum Weitermachen bzw. wenn was nicht funktioniert muss man 
sich dann halt Stubs Also Dummy Module schreiben.

Sourceverwaltungssystem, früher z.B. CVS heute Git, etc.

Versuchen in den gemeinsamen Meetings sich abzusprechen wer wann!!! was 
macht und versuchen sich an den Zeitplan zu halten.

Leute ihr habt heute mit dem Internet Möglichkeiten euch abzustimmen, 
davon haben wir früher geträumt. Ich hatte damals das nur das Telefon 
(Ferngespräch) und das Auto, und maximal Diskette.

von Cyblord -. (cyblord)


Lesenswert?

Udo Schmitt schrieb:

> Sourceverwaltungssystem, früher z.B. CVS heute Git, etc.

würde eher SVN empfehlen. Ist auch quasi "Industriestandard". Git ist 
eher auf der Hobby/Nerd/Bastel Schiene zu sehen.

von greg (Gast)


Lesenswert?

cyblord ---- schrieb:
> würde eher SVN empfehlen. Ist auch quasi "Industriestandard". Git ist
> eher auf der Hobby/Nerd/Bastel Schiene zu sehen.

Hausgemachter Quatsch. Git ist doch schon längst in der Industrie 
angekommen. Ansonsten gibt's da noch Perforce. SVN ist in den meisten 
Fällen nur noch eine Altlast.

von Pete K. (pete77)


Lesenswert?

Nutze Tools wie z.B. Jira und Redmine oder was sonst so an der Uni en 
vogue ist.
Kostenlose SVNs mit weiteren Tools gibt es z.B. bei assembla.com.

Für den Entwicklungsprozess eignet sich die SCRUM-Methode.

So, dass waren jetzt viele Stichworte für google & Co. :-)

von Cyblord -. (cyblord)


Lesenswert?

greg schrieb:
> cyblord ---- schrieb:
>> würde eher SVN empfehlen. Ist auch quasi "Industriestandard". Git ist
>> eher auf der Hobby/Nerd/Bastel Schiene zu sehen.
>
> Hausgemachter Quatsch. Git ist doch schon längst in der Industrie
> angekommen. Ansonsten gibt's da noch Perforce. SVN ist in den meisten
> Fällen nur noch eine Altlast.

Sicher nicht. Auch dann nicht, wenn ein paar Nerds das gerne anders 
sehen und ganz doll mit dem Fuss aufstampfen.

von Marius (Gast)


Lesenswert?

Pete K. schrieb:
> So, dass waren jetzt viele Stichworte für google & Co. :-)

Danke Pete. Welches Tool zum Einsatz kommt ist bisher noch Nebensache. 
Ich habe halt einfach bedenken, wenn 3 Leute Software für eine Plattform 
schreiben. Scrum sagt mir etwas, da war mal was in einer Vorlesung ;-)

von Kollege (Gast)


Lesenswert?

Marius schrieb:
> Da muss man halt an die Disziplin jedes einzelnen appelieren, damit der
> eigene Code immer compilierbar ist, dass eine Änderung von Objekten
> mitegeteilt wird usw.

.. oder man nimmt eine Continous Integration Server der prueft ob dre 
Code kompilierbar ist und die Tests richtig laufen.

von Udo S. (urschmitt)


Lesenswert?

cyblord ---- schrieb:
> Ist auch quasi "Industriestandard".

Na ja Clearcase und CVS sind/waren auch Industriestandard.
Git hat z.B. fast 3 mal so viele Treffer von SVN bei Google.

Und bei 3 Personen braucht man ntürlich einen "Industriestandard" der 
den Bestand von 1000 Entwicklern und hunderten von Projekten verwaltet?
:-)

Ich würde das nehmen, was schon am besten bekannt ist, am einfachtsten 
aufzusetzen ist und wo die Einarbeitungszeit am kürzesten ist. 
Schliesslich haben sie gerade schon die Hardware umgeworfen und endlos 
soll das Projekt wohl auch nicht dauern.

von markus (Gast)


Lesenswert?

>Sicher nicht. Auch dann nicht, wenn ein paar Nerds das gerne anders
>sehen und ganz doll mit dem Fuss aufstampfen.

Bist Du Dir sicher, dass Du wirklich up-to-date bist? Immerhin wird 
Linux mit Git entwickelt und Github ist wirklich gut gemacht. Da kann 
SVN nicht mithalten. Manchmal ändern sich die Zeiten, vielleicht gehörst 
Du schon zum alten Eisen.

von Udo S. (urschmitt)


Lesenswert?

Pete K. schrieb:
> Für den Entwicklungsprozess eignet sich die SCRUM-Methode.

Auch wieder so ein Modewort. Wollen wir noch "extrem programming" 
dazuwerfen. An Scrum verdienen hauptsächlich Beratungsklitschen, für ein 
3 Personen Projekt genauso sinnvoll wie sich einen 60 Tonnen 
Muldenkipper zu kaufen nur weil man ein Gartenhäuschen bauen will.
SCRUM ist nichts anderes als gesunden Menschenverstand in ein Schema zu 
packen.
Ist durchaus in Unternehmen angebracht weil man dort dann ganz einfach 
mit dem standardisierten Schema den Vertrieblern und Chefs die 
Sonderlockenflusen austreiben kann. Und die machen dann dafür auch noch 
Unmengen Kohle für externe SCRUM Berater locker.

von Cyblord -. (cyblord)


Lesenswert?

markus schrieb:

> Bist Du Dir sicher, dass Du wirklich up-to-date bist?
Denke schon.

> Immerhin wird
> Linux mit Git entwickelt
Warte mal.... irgendwas klingelt da... ach ja das ist doch das lustige 
OS mit 3% Marktanteil.
Ok ernsthaft: Ich weiß das GIT in der OS-Gemeinde dominiert. Aber was 
heißt das?

> und Github ist wirklich gut ge in diesem Fall? Was brauch ich für ein 
gemeinsames Projekt? Nen SVN-Server bzw. nen lokales Repo, und nen ordentlichen 
Client mit am besten guter Integration in die IDE. Das gibts für git auch, ja. 
Aber ob da nun github nehm oder was anderes. Unbedingt web-basiert brauch ich da 
nicht.

: Bearbeitet durch User
von greg (Gast)


Lesenswert?

cyblord ---- schrieb:
> Sicher nicht. Auch dann nicht, wenn ein paar Nerds das gerne anders
> sehen und ganz doll mit dem Fuss aufstampfen.

Sicher doch. Da gibt es genug Umfragen und andere Indikatoren (z.B. 
Stellenanzeigen), die das bestätigen. SVN ist seit einigen Jahren auf 
einem starken Abwärtstrend, bei Git sieht es umgekehrt aus. Microsoft 
liefert seit einiger Zeit selbst Git-Unterstützung in Visual Studio. 
Machen die das zum Spaß, oder weil Kunden danach fragten? Rate mal.

von Udo S. (urschmitt)


Lesenswert?

cyblord ---- schrieb:
> Warte mal.... irgendwas klingelt da... ach ja das ist doch das lustige
> OS mit 3% Marktanteil.
> Ok ernsthaft: Ich weiß das GIT in der OS-Gemeinde dominiert. Aber was
> heißt das?

Genau was nichts kostet taugt nix. Also kaufe Clearcase und schmeis das 
idiotische SVN weit weg.
Was ereiferst du dich? Ich habe mich mit einem selbstgeschriebenen 
System auf einer VAX rumgeschlagen, dann mit Clearcase, im Moment immer 
noch mit CVS das schon länger tot ist. In Kürze wird es bei uns wohl Git 
werden. Wenn es statt dessen SVN wäre -auch egal-.
Wichtig ist was hinten raus kommt und dass man mit dem Produkt Geld 
verdient.
Wenn du dich so auf ein System versteifst bist du schneller Alteisen als 
du denkst.

von Oliver (Gast)


Lesenswert?

greg schrieb:
> Machen die das zum Spaß, oder weil Kunden danach fragten? Rate mal.

Hm. Schau ich mir die sonstigen  Produkte von denen an z.B. das aktuelle 
Windows, so fällt die Antwort nicht schwer. Kundenwünsche haben 
Microsoft überhaupt noch nie interessiert.

Oliver

von Klaus W. (mfgkw)


Lesenswert?

Pete K. schrieb:
> Für den Entwicklungsprozess eignet sich die SCRUM-Methode.

Für drei Leute, die es nicht schaffen, sich auf ein Bier zu treffen?
Dann machen 3 Leute SCRUM jeder für sich zuhause?

von greg (Gast)


Lesenswert?

Aber zurück zum Thema: ich kann bitbucket empfehlen. Da gibt es 
Repositories, Mercurial oder Git. Wenn man will auch privat, und das mit 
Einschränkungen kostenlos. Bei Github muss man für private Repositories 
zahlen.

von Udo S. (urschmitt)


Lesenswert?

Klaus Wachtler schrieb:
> Dann machen 3 Leute SCRUM jeder für sich zuhause?

Klaus Wachtler schrieb:
> Für drei Leute, die es nicht schaffen, sich auf ein Bier zu treffen?
> Dann machen 3 Leute SCRUM jeder für sich zuhause?

Nee, die müssen deutlich mehr Bier trinken als früher. Bis erst mal die 
Rollen verteilt sind: Owner, Scrum Master, Management, Customer , User, 
(gibts noch mehr?). Dann müssen sie User Stories erarbeiten, ihre 
Ceremonies abhalten, das alles protokollieren und auf die Einhaltung der 
Verfahren prüfen, ....
ach so und ein Entwicklerteam braucht man auch noch, und die müssen 
zwischen all dem dann auch noch ab und zu entwickeln...
Nach soviel Bier, Ohweh!
:-)

von greg (Gast)


Lesenswert?

Udo Schmitt schrieb:
> Nee, die müssen deutlich mehr Bier trinken als früher. Bis erst mal die
> Rollen verteilt sind: Owner, Scrum Master, Management, Customer , User,
> (gibts noch mehr?). Dann müssen sie User Stories erarbeiten, ihre
> Ceremonies abhalten, das alles protokollieren und auf die Einhaltung der
> Verfahren prüfen, ....
> ach so und ein Entwicklerteam braucht man auch noch, und die müssen
> zwischen all dem dann auch noch ab und zu entwickeln...
> Nach soviel Bier, Ohweh!

Wenn man das richtig macht, ist es kein Problem:

https://xkcd.com/323/ :)

von Udo S. (urschmitt)


Lesenswert?

greg schrieb:
> enn man das richtig macht, ist es kein Problem:
>
> https://xkcd.com/323/ :)

Schööön :-)
Danke

Nachtrag: Bei Windows8 haben sie es mit Scrum probiert. Leider hat der 
Scrum Master die User Stories aus Versehen mit den Kindergarten Bildern 
seines Sprösslings vertauscht. Herausgekommen ist die neue 
Benutzeroberfläche :-)

: Bearbeitet durch User
von Mladen G. (mgira)


Lesenswert?

cyblord ---- schrieb:
> Warte mal.... irgendwas klingelt da... ach ja das ist doch das lustige
> OS mit 3% Marktanteil.

3% Marktanteil?
Vielleicht auf Sekretaerinnenrechnern ;)
Auf Servern sieht das ganze genau umgekehrt aus, da sind weit ueber 90% 
Linux Maschinen.

cyblord ---- schrieb:
> Ok ernsthaft: Ich weiß das GIT in der OS-Gemeinde dominiert. Aber was
> heißt das?

Dass damit schon sehr viel Code verwaltet wird.

von Cyblord -. (cyblord)


Lesenswert?

Mladen G. schrieb:
>
> 3% Marktanteil?
> Vielleicht auf Sekretaerinnenrechnern ;)
> Auf Servern sieht das ganze genau umgekehrt aus, da sind weit ueber 90%
> Linux Maschinen.

Die Tuxe lassen sich aber auch auf den Punkt provozieren ;-)

>
> cyblord ---- schrieb:
>> Ok ernsthaft: Ich weiß das GIT in der OS-Gemeinde dominiert. Aber was
>> heißt das?
>
> Dass damit schon sehr viel Code verwaltet wird.

Das es funktioniert bestreitet ja keiner.

von Mladen G. (mgira)


Lesenswert?

cyblord ---- schrieb:
> Die Tuxe lassen sich aber auch auf den Punkt provozieren ;-)

Eine falsche Aussage als falsch darzustellen ist vielleicht nicht fuer 
jeden gleich etwas provokantes ;)

von Cyblord -. (cyblord)


Lesenswert?

Mladen G. schrieb:
> cyblord ---- schrieb:
>> Die Tuxe lassen sich aber auch auf den Punkt provozieren ;-)
>
> Eine falsche Aussage als falsch darzustellen ist vielleicht nicht fuer
> jeden gleich etwas provokantes ;)

Die Qualität eines Tools damit zu begründen dass es ja gut sein muss da 
damit Linux entwickelt wird, schreit aber geradezu nach einer ebenso 
hahnebüchenen Antwort.

von Mladen G. (mgira)


Lesenswert?

cyblord ---- schrieb:
> Die Qualität eines Tools damit zu begründen dass es ja gut sein muss da
> damit Linux entwickelt wird, schreit aber geradezu nach einer ebenso
> hahnebüchenen Antwort.

Jetzt hast du wieder recht :)

von Karl Käfer (Gast)


Lesenswert?

Hallo,

greg schrieb:
> cyblord ---- schrieb:
>> würde eher SVN empfehlen. Ist auch quasi "Industriestandard". Git ist
>> eher auf der Hobby/Nerd/Bastel Schiene zu sehen.
>
> Hausgemachter Quatsch. Git ist doch schon längst in der Industrie
> angekommen. Ansonsten gibt's da noch Perforce. SVN ist in den meisten
> Fällen nur noch eine Altlast.

Meine Güte. Sowohl Git als auch SVN sind Industriestandards, und ich 
kenne etliche Unternehmen, die eines oder sogar beide Systeme einsetzen. 
Welches man benutzt, ist letztendlich egal: beide erfüllen ihre Aufgabe 
ordentlich und zuverlässig, und unterscheiden sich für den Anwender nur 
wenig.

Beste Grüße,
Karl

von Cyblord -. (cyblord)


Lesenswert?

Karl Käfer schrieb:

> Meine Güte.

Hast ja recht mit allem. Aber wir hatten hier noch nie einen zünftigen 
Glaubenskrieg für Versionsverwaltungssysteme. Aber ich sehe Potential... 
;-)

von working directory (Gast)


Lesenswert?

cyblord ---- schrieb:
> Nen SVN-Server bzw. nen lokales Repo, und nen ordentlichen
> Client mit am besten guter Integration in die IDE.

IMHO übersiehst du hier einen Punkt, der bei Systemen wie SVN einfach 
nur riesige Schmerzen bereitet: die Wartung eigener Patchsets auf Basis 
anderer Software.

Um beim gebrachten Linux-Beispiel zu bleiben: du benutzt Linux für ein 
Projekt, benötigst aber Boardsupport oder andere Sachen, die noch nicht 
im Mainline-Kernel enthalten sind. Oder du unterhältst aus was für 
Gründen auch immer lokale Modifikationen, die nicht Teil des "normalen" 
Linuxkernels sind. Auf jeden Fall musst du ein Patchset pflegen und das 
idealerweise so, dass Upstream-Änderungen weiterhin in deinen Code 
einfließen können und du dich nicht für immer und ewig auf eine 
Uraltversion festlegst, weil die Codebasen immer weiter auseinander 
driften.

Mit Git ist sowas ziemlich angenehm durchzuführen, mit SVN jedoch die 
Hölle auf Erden.

von Karl Käfer (Gast)


Lesenswert?

Hallo markus,

markus schrieb:
> Bist Du Dir sicher, dass Du wirklich up-to-date bist? Immerhin wird
> Linux mit Git entwickelt

die Entwicklung des Linux-Kernels ist ein Sonderfall und profitiert 
darum von dem verteilten Modell von Git. Einem kleineren Projekt von 
Leuten, die in dieselbe Richtung entwickeln, nutzt das wenig.

> Da kann SVN nicht mithalten.

Doch, natürlich. Subversion ist immer noch eine äußerst leistungsfähige 
Software, die wunderbar funktioniert und nur in einigen sehr seltenen 
Ausnahmefällen hinter Git oder Mercurial zurückstehen muß.

Für das, was der TO vorhat, kann er Git oder Subversion oder Mercurial 
nehmen, wie es ihm gerade beliebt. Jedes dieser Systeme kann alles, was 
er und seine Mitstreiter brauchen.

Liebe Grüße,
Karl

von Karl Käfer (Gast)


Lesenswert?

Hallo cyblord,

cyblord ---- schrieb:
> markus schrieb:
>> Immerhin wird
>> Linux mit Git entwickelt
> Warte mal.... irgendwas klingelt da... ach ja das ist doch das lustige
> OS mit 3% Marktanteil.

Von wegen. Im Serverbereich hat Linux laut Gartner einen Marktanteil von 
28%, weiterhin mit steigender Tendenz. Du kannst gern Deinen Phobien und 
Glaubensdingen fröhnen, aber bei der Wahrheit solltest Du schon bleiben.

Liebe Grüße,
Karl

von Cyblord -. (cyblord)


Lesenswert?

Karl Käfer schrieb:
> Hallo cyblord,
>
> cyblord ---- schrieb:
>> markus schrieb:
>>> Immerhin wird
>>> Linux mit Git entwickelt
>> Warte mal.... irgendwas klingelt da... ach ja das ist doch das lustige
>> OS mit 3% Marktanteil.
>
> Von wegen. Im Serverbereich hat Linux laut Gartner einen Marktanteil von
> 28%

laut deinem Kollegen oben, "weit ueber 90%". Bis ihr euch auf irgendeine 
Phantasiezahl geeinigt habt, bleibe ich mal bei meinen 3%.

von Oliver (Gast)


Lesenswert?

Mladen G. schrieb:
> Auf Servern sieht das ganze genau umgekehrt aus, da sind weit ueber 90%
> Linux Maschinen.

Karl Käfer schrieb:
> Im Serverbereich hat Linux laut Gartner einen Marktanteil von
> 28%, weiterhin mit steigender Tendenz.

Der Abstand zwischen gemessenem und gefühltem Marktanteil ist aber doch 
noch erheblich.

Oliver

von innerand i. (innerand)


Lesenswert?

cyblord ---- schrieb:
> Karl Käfer schrieb:
>> Hallo cyblord,
>>
>> cyblord ---- schrieb:
>>> markus schrieb:
>>>> Immerhin wird
>>>> Linux mit Git entwickelt
>>> Warte mal.... irgendwas klingelt da... ach ja das ist doch das lustige
>>> OS mit 3% Marktanteil.
>>
>> Von wegen. Im Serverbereich hat Linux laut Gartner einen Marktanteil von
>> 28%
>
> laut deinem Kollegen oben, "weit ueber 90%". Bis ihr euch auf irgendeine
> Phantasiezahl geeinigt habt, bleibe ich mal bei meinen 3%.

Ich werfe mal den Smartphone-Bereich mit rein, da ist Linux Marktführer.

von Axel S. (a-za-z0-9)


Lesenswert?

Karl Käfer schrieb:
> Meine Güte. Sowohl Git als auch SVN sind Industriestandards, und ich
> kenne etliche Unternehmen, die eines oder sogar beide Systeme einsetzen.
> Welches man benutzt, ist letztendlich egal

Keineswegs. Git (genauso wie bitkeeper, hq, bzr, ...) ist ein 
verteiltes System. Das heißt jeder Entwickler hat die Historie lokal 
auf seinem Rechner und kann auch ohne Internetverbindung alte Revisionen 
ansehen, Änderungen committen und was noch alles. Bei SVN (und CVS, 
perforce, ...) braucht man für jede solche Operation Zugriff auf das 
zentrale Repository. Was bedeutet, daß man ohne Internet auch mal gar 
nicht weiterarbeiten kann.

Noch gravierender sind allerdings die ganz neuen Workflows, die ein DVCS 
erlaubt. Team-Trees, verteilte Merges usw. Der Entwicklungsprozeß selber 
skaliert einfach viel besser.

Zugegeben, bei 3 Hanseln ist das noch nicht gravierend. Aber wenn ich in 
die Softwareindustrie in meiner Umgebung schaue (ok, ist sehr 
open-source-lastig ;) dann sind DVCS die Regel und SVN & Co sind Exoten. 
Demzufolge kann es nicht schaden, wenn sich angehende Softwareentwickler 
frühzeitig mit den Möglichkeiten vertraut machen.


XL

von Cyblord -. (cyblord)


Lesenswert?

Oliver schrieb:

> Der Abstand zwischen gemessenem und gefühltem Marktanteil ist aber doch
> noch erheblich.

Das mit der Realität vs. persönlichem Empfinden haben viele (auch und 
gerade überzeugte Linuxer) auch noch nicht so ganz drauf ;-)
Der nächste rechnet Android-Geräte rein und landet bei "weit über 99%". 
Eventuell sollte die Linux-Gemeinde mal eine Reform der Prozentzahlen 
denken. Eine Art GNU/%. Linux könnte dann 120 GNU/% Marktanteile haben. 
Und Windows hätte 0.05 GNU/%.

von Andreas S. (andreas) (Admin) Benutzerseite


Lesenswert?

working directory schrieb:
> IMHO übersiehst du hier einen Punkt, der bei Systemen wie SVN einfach
> nur riesige Schmerzen bereitet: die Wartung eigener Patchsets auf Basis
> anderer Software.

Das ist mit vendor branches nicht wirklich schwierig.

von Axel S. (a-za-z0-9)


Lesenswert?


von Karl Käfer (Gast)


Lesenswert?

Hallo cyblord,

cyblord ---- schrieb:
>> Von wegen. Im Serverbereich hat Linux laut Gartner einen Marktanteil von
>> 28%
>
> laut deinem Kollegen oben, "weit ueber 90%". Bis ihr euch auf irgendeine
> Phantasiezahl geeinigt habt, bleibe ich mal bei meinen 3%.

die von mir als Quelle angegebene Gartner Group gilt in diesem Bereich 
als seriöser Industriestandard. Du willst doch wohl nicht etwa 
ausgerechnet hier von etablierten Industriestandards abweichen, oder?

Abgesehen davon sind wir hier ja in einem Mikrocontroller-Forum, und auf 
Embedded-Systemen hat Linux sicher den mit Abstand höchsten Marktanteil 
von allen verbreiteten Betriebssystemen. Bei den Marsrovern hat Linux 
mit einem Marktanteil von 100% sogar ein Monopol! Und das willst Du 
einfach leugnen?

Tse,
Karl

von Cyblord -. (cyblord)


Lesenswert?

Karl Käfer schrieb:

> die von mir als Quelle angegebene Gartner Group gilt in diesem Bereich
> als seriöser Industriestandard. Du willst doch wohl nicht etwa
> ausgerechnet hier von etablierten Industriestandards abweichen, oder?

Niemals! Industriestandards sind meine Bibel.

> Bei den Marsrovern hat Linux
> mit einem Marktanteil von 100% sogar ein Monopol! Und das willst Du
> einfach leugnen?

Im Gegentum, ich wäre dafür das Linux Monopol auf fremden Himmelskörpern 
deutlich auszubauen. Dazu könnte man eine größere Anzahl Linux-Nerds 
dorthin auslagern.

von Andreas (Gast)


Lesenswert?

Marius schrieb:
> Da muss man halt an die Disziplin jedes einzelnen appelieren, damit der
> eigene Code immer compilierbar ist, dass eine Änderung von Objekten
> mitegeteilt wird usw.

Immer compilierbar muss der Code nicht sein. Man sollte aus 
Sicherheitsgründen auch halb fertige Sachen einchecken, dann ist es 
nicht gar so übel, wenn die lokale Festplatte mal die Grätsche macht.
Wenn ein Entwicklungsschritt fertig und kompilierbar ist, wird diese 
Version nach dem einchecken getaggt. So hat jeder zu jeder Zeit 
kompilierbaren Code von den anderen Entwicklern.
Änderungen an den gemeinsamen Schnittstellen müssen aber natürlich 
abgestimmt oder mindestens dokumentiert sein und dieses Dokument muss 
mit dem zugehörigen Code eingecheckt werden. Das ist der Punkt, wo 
Disziplin nötig ist.

von René K. (cyprius)


Lesenswert?

Huch, das ist ja ganz schön explodiert hier. Um mal auf den TE 
einzugehen, bei einem so kleinen Projekt dürfte die Wahl einer 
Sourceverwaltung recht leichtfallen. Ich habe SVN einige Jahre genutzt 
und beim jetzigen Arbeitgeber GIT - solange man kein exzessives 
Branching/Merge-Orgien vorhat ist das imho gehopst wie gesprungen. 
Aktuell dürfte das Angebot an GIT-Hosting allerdings größer sein.

Und jetzt hier die große SCRUM-Keule auszupacken, halte ich für völlig 
oversized. Das könnte allerdings auch an meiner persönlichen Abneigung 
gegen SCRUM liegen ;)

von benwilliam (Gast)


Lesenswert?

interessant das niemand bisher online live coding vorgeschlagen hat

wie z.B. cloud9 (https://c9.io/)

oder zumindest sowas wie etherpad

dann wäre SVN auch fast hinfällig :)
nur dauer online könnte schwierig werden

von Karl Käfer (Gast)


Lesenswert?

Hallo Oliver,

Oliver schrieb:
> Mladen G. schrieb:
>> Auf Servern sieht das ganze genau umgekehrt aus, da sind weit ueber 90%
>> Linux Maschinen.
>
> Karl Käfer schrieb:
>> Im Serverbereich hat Linux laut Gartner einen Marktanteil von
>> 28%, weiterhin mit steigender Tendenz.
>
> Der Abstand zwischen gemessenem und gefühltem Marktanteil ist aber doch
> noch erheblich.

Das kommt auf den Markt und die Meßmethode an. Meine Systeme fließen zum 
Beispiel gar nicht oder sogar falsch in die Messung ein: meine Rechner 
laufen alle unter Debian- und Ubuntu-Linux, das ich heruntergeladen 
habe. Trotzdem werden meine Laptops für Windows gezählt, weil es ihnen 
beilag -- auch wenn ich es gar nicht nutze.

Etwas mehr zu den Märkten und Methoden, auch zur Kritik an den Methoden, 
findest Du hier:

http://en.wikipedia.org/wiki/Usage_share_of_operating_systems

Du siehst: auf Supercomputern hat Linux einen Marktanteil von 96,4 %. 
Wenn unser Vorredner also mit "Server" Supercomputer meint, dann hat er 
damit sogar noch bescheiden tiefgestapelt.

HTH,
Karl

von greg (Gast)


Lesenswert?

Ich weiß gar nicht, wie man SVN überhaupt verteidigen kann. Wenn man 
intensiver mit Branches arbeitet, ist das einfach nur unglaublich 
schmerzhaft, unübersichtlich und zeitaufwändig. SVN kann doch nicht 
einmal richtig (d.h. unter Erhaltung der einzelnen Commits) mergen.

von René K. (cyprius)


Lesenswert?

benwilliam schrieb:
> interessant das niemand bisher online live coding vorgeschlagen hat
>
> wie z.B. cloud9 (https://c9.io/)
>
> oder zumindest sowas wie etherpad
>
> dann wäre SVN auch fast hinfällig :)
> nur dauer online könnte schwierig werden

Da bellst du aber den völlig falschen Baum an, die Jungs wollen für 
Software für Mikrocontroller entwickeln, kein jQuery frickeln.

von Karl Käfer (Gast)


Lesenswert?

Hallo Axel,

Axel Schwenke schrieb:
> Keineswegs. Git (genauso wie bitkeeper, hq, bzr, ...) ist ein
> verteiltes System.

Nein, wirklich? Da wär' ich ja nie drauf gekommen. ;-)

> Was bedeutet, daß man ohne Internet auch mal gar nicht weiterarbeiten
> kann.

Natürlich kann man. Im Zweifelsfall muß man die Änderungen hinterher 
halt manuell zusammenfügen. Wenn man regelmäßig Kontakt zum Internet 
hat, ein wenig Disziplin mitbringt und die Aufgaben klar verteilt sind, 
geht das trotzdem ganz gut. Als wir früher nur CVS, RCS und SCCS hatten, 
ging es schließlich auch immer, irgendwie.

> Noch gravierender sind allerdings die ganz neuen Workflows, die ein DVCS
> erlaubt. Team-Trees, verteilte Merges usw. Der Entwicklungsprozeß selber
> skaliert einfach viel besser.

Für drei Leute mit einer Mikrocontroller-Software...

> Zugegeben, bei 3 Hanseln ist das noch nicht gravierend.

Puh, Du hast es doch noch gemerkt. ;-)

> Aber wenn ich in
> die Softwareindustrie in meiner Umgebung schaue (ok, ist sehr
> open-source-lastig ;) dann sind DVCS die Regel und SVN & Co sind Exoten.
> Demzufolge kann es nicht schaden, wenn sich angehende Softwareentwickler
> frühzeitig mit den Möglichkeiten vertraut machen.

Tja, das mag bei Dir in der OpenSource-Welt so sein. Ich hingegen komme 
aus der kommerziellen Softwareentwicklung und kenne sogar noch Firmen, 
in denen immer noch RCS läuft. Viele vor allem große Firmen lösen 
etablierte Systeme nicht aufgrund irgendeiner Mode ab, weil irgendein 
Klugscheißer gerade daher kommt und erzählt wie toll verteilte Systeme 
sind. Ein paar meiner Kunden haben das Gefühl, daß ihnen die Kontrolle 
entgleitet, wenn sie auf ein zentrales Repository verzichten. Ganz 
abgesehen von den Kosten und dem Gemopper, wenn Du 200 Entwickler und 20 
Architekten auf ein neues Softwaresystem umziehen willst...

Liebe Grüße,
Karl

von Karl Käfer (Gast)


Lesenswert?

Hallo cyblord,

cyblord ---- schrieb:
> Niemals! Industriestandards sind meine Bibel.

Na also.

> Im Gegentum, ich wäre dafür das Linux Monopol auf fremden Himmelskörpern
> deutlich auszubauen. Dazu könnte man eine größere Anzahl Linux-Nerds
> dorthin auslagern.

Bisher schaffen wir das nur mit Linux-Geräten.

Liebe Grüße,
Karl

von Udo S. (urschmitt)


Lesenswert?

Karl Käfer schrieb:
> Tja, das mag bei Dir in der OpenSource-Welt so sein. Ich hingegen komme
> aus der kommerziellen Softwareentwicklung und kenne sogar noch Firmen,
> in denen immer noch RCS läuft.

Wie oben gesagt, wir hatten was eigengestricktes für die VAX, dann 
Clearcase, dann CVS und jetzt wollen wir projektweise auf GIT umstellen. 
Und unsere Software ist sowas von closed, wie es bei Banken und 
Versicherungen als Kunden nur sein kann.

Karl Käfer schrieb:
> Ein paar meiner Kunden haben das Gefühl, daß ihnen die Kontrolle
> entgleitet, wenn sie auf ein zentrales Repository verzichten.
Ich kenne Git noch nicht besonders, aber ich denke nicht, daß man nicht 
zentral die offizielle Versionen halten kann. Wir versprechen uns vor 
allem ein besseres Merge von Git, mal sehen.

von Marius (Gast)


Lesenswert?

Hallo,

Danke für die vielen Antworten aber ehrlich gesagt helfen sie mir bei 
meinem Problem wenig bis gar nicht. Wie gesagt es geht mir darum, wie 
man mit mehreren Leuten Software für eine Plattform entwickelt. Ob man 
jetzt SVN oder Git nutzt ist zweitrangig.

von Udo S. (urschmitt)


Lesenswert?

Marius schrieb:
> Danke für die vielen Antworten aber ehrlich gesagt helfen sie mir bei
> meinem Problem wenig bis gar nicht.

Du hast meinen ersten Beitrag gelesen?

von Klaus W. (mfgkw)


Lesenswert?

Marius schrieb:
> Danke für die vielen Antworten aber ehrlich gesagt helfen sie mir bei
> meinem Problem wenig bis gar nicht.

Das Problem liegt (neben der üblichen Schlammschlacht bzgl. "meiner ist 
länger als deiner") daran, daß es keine einfache Antwort in wenigen 
Zeilen gibt.

Letztlich muß man auf mehreren Ebenen gleichzeitig aufpassen:
- das Gesamtproblem muß sinnvoll unterteilt werden
- zwischen den Teilen ergeben sich Schnittstellen
- diese müssen genau definiert sein
- für jeden Einzelteil sollte es sinnvolle Tests geben
- es sollte Gesamttests geben
- man muß Quelltexte austauschen, z.B. über svn o.ä.
- bei größeren Projekten sollte auch jederzeit Lauffähigkeit
  des Gesamtsystems gewährleistet sein (hier wohl nicht)
- ...

Das alles will organisiert sein und kontrolliert.
Drei gleichberechtigte Leute, die nebeneinander herwursteln,
sind keine gute Voraussetzung für Gelingen.

Zu jedem dieser Teilschritte kann man ewige Diskussionen (s.o.)
anfachen.

: Bearbeitet durch User
von greg (Gast)


Lesenswert?

Noch was: selbst bei so einem kleinen Team ist es vielleicht gut, wenn 
man jemanden auswählt, der die Entscheidungen letztendlich und 
verbindlich trifft und auch dafür sorgt, dass diese umgesetzt werden. 
Ein Teamleiter eben.

Ich habe es bei Uni-Projekten schon gehabt, dass wir uns zwar locker 
abgesprochen hatten, einzelne Leute dann aber Dinge ganz anders gemacht 
haben, weil sie das so für besser hielten. Das geht natürlich gar nicht, 
und hat zu viel Streit geführt.

von markus (Gast)


Lesenswert?

cyberlord schrieb:
>Hast ja recht mit allem. Aber wir hatten hier noch nie einen zünftigen
>Glaubenskrieg für Versionsverwaltungssysteme. Aber ich sehe Potential...
>;-)

Ja, und sie habe extra für Dich einen Git-Anfängerkurs in der neuen ct.
http://www.heise.de/ct/12/13/links/144.shtml

von markus (Gast)


Lesenswert?

>Ich kenne Git noch nicht besonders, aber ich denke nicht, daß man nicht
>zentral die offizielle Versionen halten kann. Wir versprechen uns vor
>allem ein besseres Merge von Git, mal sehen.

Da gibt es zugegebnermaßen einen kleine Tradeoff bei Git: Es gibt keine 
Locks, d.h. die Leute können immer gleichzeitig an einem File arbeiten, 
dass am Schluss "gemerged" werden muss.

von c-hater (Gast)


Lesenswert?

greg schrieb:

> Noch was: selbst bei so einem kleinen Team ist es vielleicht gut,
> wenn
> man jemanden auswählt, der die Entscheidungen letztendlich und
> verbindlich trifft und auch dafür sorgt, dass diese umgesetzt werden.
> Ein Teamleiter eben.

Richtig, eine klare (idealerweise vorab und einvernehmlich festgelegte) 
Organisationsstruktur ist viel wichtiger für den Erfolg als die Wahl 
irgendeiner konkreten Versionsverwaltung. Was wirklich nötig ist, 
können die nämlich allesamt. Was einige mehr können, ist bestenfalls ein 
"nice to have", wird aber niemals einen entscheidenden Einfluß auf den 
Erfolg des Projektes ausüben können.

von Pete K. (pete77)


Lesenswert?

@Marius (Gast):

SVN hast Du ja schon in Deinem Ursprungspost erwähnt. Gut.

Für jeden Bereich des µCs wie z.B. ADC, Display, etc. lassen sich 
eingene Bibliotheken (adc.h, adc.c, gui.h, gui.c) entwickeln, die von 
einem Hauptprogramm zusammengehalten werden (main.c).


Also, zuwerst werden die Prototypen (*.h) abgestimmt, dann kann jeder 
einzeln loslegen. Was compilierbar ist wird eingecheckt.

So schwierig ist das nicht.

Ihr benutzt kein C? Hmm, dann wäre dies eine Überlegung zum Umstieg 
wert.

von Axel S. (a-za-z0-9)


Lesenswert?

markus schrieb:

> Da gibt es zugegebnermaßen einen kleine Tradeoff bei Git: Es gibt keine
> Locks, d.h. die Leute können immer gleichzeitig an einem File arbeiten

LOL. VCS bei denen immer nur einer an einem File ändern darf, sind so 
90er. Schon CVS hat dieses schwere Manko beseitigt (das C steht für 
concurrent). Daß man sich damit potentielle Konflikte einhandelt, 
wiegt in der Praxis weit weniger schwer als die sonst auftretenden 
Locking-Konflikte.


XL

von greg (Gast)


Lesenswert?

Axel Schwenke schrieb:
> Daß man sich damit potentielle Konflikte einhandelt,
> wiegt in der Praxis weit weniger schwer als die sonst auftretenden
> Locking-Konflikte.

In der Tat, reicht ja schon wenn irgendwer vergisst, einen Lock wieder 
aufzuheben. Und außerdem zählt dann nicht mehr nur "der kompiliert 
gerade" als Grund für eine Pause, sondern auch noch "die Datei ist 
gelockt". :)

von sebastian (Gast)


Lesenswert?

> damit der eigene Code immer compilierbar ist

Einfache Regel: Was auf den main-Branch geliefert wird (oder wie auch 
immer sich das bei der jeweiligen Versionsverwaltung nennt) muss 
compilieren. Kann man mit Selbstdiziplin hinbekommen, oder mit 
automatischer Prüfung durch das Tool.

Wenn man nicht compilierbare Zwischenergebnisse sichern will, hat man 
dafür einen eigenen Branch.


> Wie geht man in der Softwareentwicklung vor, wenn mehrere Entwickler
> für die gleiche Zielhardware Software entwicklen?

Schnittstellen abstimmen wurde ja schon genannt.

Auch wichtig: Traces an den Schnittstellen. Ihr werdet mit hoher
Wahrscheinlichkeit Fehler suchen müssen. Und dann ist es gut,
wenn man "den Schuldigen" schnell findet, damit der dann in seinem
Zuständigkeitsbereich weiter suchen kann.

von markus (Gast)


Lesenswert?

Diese Buch hier sollte jeder im Team gelesen haben

http://www.oreilly.de/catalog/wenschleprogger/

Darin werden einige Fehler in der Team-Zusammenarbeit auf witzige Weise 
analysiert.

von Marius (Gast)


Lesenswert?

Pete K. schrieb:
> Ihr benutzt kein C?

Doch wir programmieren in C.


sebastian schrieb:
> Auch wichtig: Traces an den Schnittstellen.

Was genau ist damit gemeint?

von Klaus W. (mfgkw)


Lesenswert?

sebastian schrieb:
>> damit der eigene Code immer compilierbar ist
>
> Einfache Regel: Was auf den main-Branch geliefert wird (oder wie auch
> immer sich das bei der jeweiligen Versionsverwaltung nennt) muss
> compilieren. Kann man mit Selbstdiziplin hinbekommen, oder mit
> automatischer Prüfung durch das Tool.

Naja, bedingt.

Wenn ein Make-Lauf eine Stunde oder länger dauert und die Änderungen im 
Sekundentakt kommen, bleibt nur noch die Selbstdisziplin - und die kann 
nicht alle Konflikte vorhersehen.

von Klaus W. (mfgkw)


Lesenswert?

Marius schrieb:
>> Auch wichtig: Traces an den Schnittstellen.
>
> Was genau ist damit gemeint?

Das weisst du in dem Moment, in dem irgendwas nicht funktioniert, keine 
Seite schuld sein will und man wissen will, was zwischen den Teilen 
übertragen wird um den Schuldigen zu finden.

von Udo S. (urschmitt)


Lesenswert?

Klaus Wachtler schrieb:
> Wenn ein Make-Lauf eine Stunde oder länger dauert und die Änderungen im
> Sekundentakt kommen

Das sind 3 Hanselchen die einen µC für ein Uniprojekt neu! programmieren 
wollen. Da dauert ein Compile genau 2-10 Sekunden.
Und die Changes kommen alle paar Stunden mal einer oder 2.
Leute, bleibt doch mal am konkreten Problem.

von Axel S. (a-za-z0-9)


Lesenswert?

Marius schrieb:

> sebastian schrieb:
>> Auch wichtig: Traces an den Schnittstellen.
>
> Was genau ist damit gemeint?

Daß API-Funktionsaufrufe mitsamt Parametern und Ergebnissen bei Bedarf 
geloggt werden können. Vergleichbar strace oder ltrace auf unixoiden 
Betriebssystemen.

Ist allerdings auf µC oft leichter gesagt als getan. In diesem Zusammen- 
hang auch der (anderswo) immer wieder geäußerte Hinweis, dem µC-System 
eine Kommunikationsschnittstelle zum Debuggen mitzugeben.


XL

von Marius (Gast)


Lesenswert?

Axel Schwenke schrieb:
> dem µC-System
> eine Kommunikationsschnittstelle zum Debuggen mitzugeben.

Die Kommunikation zwischen den Controllern läuft über CAN und wir haben 
eigene Tools geschrieben, die den CAN "mithören" aber auch CCP ist 
möglich. Deshalb ist die Variante, dass 2 Leute ihren Code per Lib 
bereitstellen ja nicht möglich. Bzw weiss ich dann nicht, wie das mit 
dem Debuggen sauber klappt.

von Klaus W. (mfgkw)


Lesenswert?

Dann müsst ihr halt statt des CAN-Protokolls eines für die neue 
Schnittstelle schaffen ...

von Dr. M. (Gast)


Lesenswert?

Ich habe aufhört die Antworten zu lesen nachdem der 20. Post zur 
Versionskontrolle kam. Das löst euer eigentliches Problem nicht.

Grundsätzlich solltet ihr irgendeine Versionskontrolle verwenden. Soweit 
so gut. Eingecheckt wird nur was sich bauen lässt. Eine Hand voll 
Sourcefiles ueber ein so kleines Team zu synchronisieren sollte somit 
geklärt sein.

Euer eigentliches Problem droht allerdings im Konzept: Für 
Timing-Probleme anfälliger Spaghetti-Code, weil das was bisher auf drei 
Ausführungssträngen lief auf einen zusammengeführt wird. Mit einer 
Superloop und ausgefallenen Statemachines fallen solche Projekte dann 
schnell mit sonderbaren Ablaufproblemen auf.
Bei der Portierung solltet ihr von vorneherein auf ein kleines 
pre-emptives RTOS setzen.
Wenn jetzt jeder seinen eigenen Aufgabenbereich sauber in Tasks 
formuliert braucht ihr nur noch einen der bei der Integration die 
einzelnen Tasks mit ihrer globalen Prioritaet richtig versieht. Der Rest 
ist gratis.

von Udo S. (urschmitt)


Lesenswert?

Dr. M. schrieb:
> Der Rest
> ist gratis.

inclusive Deadlocks, Synchronisierung, jegliche globale Änderungen 
atomar kapseln, etc. pp.
Wer glaubt Multitasking/Multithreading wäre gratis nur weil man ein 
Betriebssystem benutzt das concurrency zulässt hat noch nie wirkliches 
Multitasking/Multithrading programmiert.
Im ERSTEN Beitrag hättest du lesen können daß sie schon einen µC haben, 
ob darauf ein RTOS läuft und ob es notwendig/sinnvoll ist wäre erst mal 
zu klären.

von Marcus (Gast)


Lesenswert?

Marius schrieb:
> Das klappt soweit auch ganz gut aber nun kam die Idee, alles mit einem
> Controller abzudecken.

Ich spiele jetzt mal den "devil's advocate":

Meistens ist es ja nicht das Ziel einer akademischen Arbeit, möglichst 
kosteneffizient (hier: mit weniger Controllern) eine Lösung zu finden, 
sondern vielmehr einen neuen Ansatz für ein Problem als 
"proof-of-concept" darzustellen. Ich befürchte, dass Ihr mir der 
Umstellung auf einen einzelnen Controller sehr viel Arbeit in die 
Koordination der Tätigkeiten stecken müsst, ohne einen wirklichen 
Vorteil bei der Lösung der grundsätzlichen Aufgabe zu gewinnen.

Lehrreich ist es auf jeden Fall, wenn man (das erste Mal?) mit mehreren 
Leuten zusammen an einer Codebasis arbeitet. Nach meiner Erfahrung gibt 
dort es aber mehr koordinative und soziale Probleme als technische.

von Marius (Gast)


Lesenswert?

Marcus schrieb:
> Nach meiner Erfahrung gibt
> dort es aber mehr koordinative und soziale Probleme als technische.

Genau darum habe ich ja gefragt, wie man Projekte mit mehreren ( in 
diesem Fall drei Leuten ) angeht. Ob da nun Git, SVN oder was auch zum 
Einsatz kommt ist erst einmal egal. Um die Koordination geht es. Aber so 
wie ich das verstehe muss sich da jeder an die eigene Nase packen und 
strickt an Absprachen, die gemeinsam getroffen wurden, halten muss.
Das mit dem Scrum ist ja alles schön und gut aber wir haben ja gar nicht 
genug Leute, um jede "Rolle" zu besetzen ;-)
Mich würde ja mal interessieren wie ein Bosch, Conti oder wer auch immer 
sowas händelt. An einem Mototsteuergerät arbeiten ja sicher mehr als 
drei Leute. Und die bekommen es ja auch gebacken.

von Klaus W. (mfgkw)


Lesenswert?

Marius schrieb:
> Und die bekommen es ja auch gebacken.

Trotz SCRUM und Co... :-)

von Andreas S. (Firma: Schweigstill IT) (schweigstill) Benutzerseite


Lesenswert?

Marius schrieb:
> Mich würde ja mal interessieren wie ein Bosch, Conti oder wer auch immer
> sowas händelt. An einem Mototsteuergerät arbeiten ja sicher mehr als
> drei Leute.

Man kaufe die teuersten Tools, weil deren Hersteller die glänzendsten 
Hochglanzprospekte und pomadigsten Vertriebler haben und die Einführung 
und der Unterhalt solcher Tools einen gewaltigen administrativen Aufwand 
bedeuten. Dadurch sichert man dann wieder ein paar (oder viele) 
Konzernbeamtenstellen.

In solchen Projekten arbeiten die Entwickler häufig auch nicht 
kooperativer oder planvoller als anderweitig, sondern die 
Integrationsverantwortlichen müssen den Entwicklern hinterherrennen, um 
überhaupt kompilierbare Versionsstände zu finden.

In sehr vielen Fällen resignieren irgendwann die Entwickler und 
synchronisieren ihre eigenen Arbeitskopien nur noch nach massivem Druck 
durch Projektverantwortliche. Ansonsten arbeiten sie teils monatelang 
abgekoppelt, so dass deren eingecheckte Versionen zwar in ihren alten 
Arbeitskopien kompilieren, aber nicht mehr kompatibel sind zu den 
eingecheckten Entwicklungsständen. All diese Probleme sind auch allen 
Projektbeteiligten bekannt, und jeder behauptet, darunter zu leiden, 
aber wer sich wirklich für eine fortwährende Synchronisation einsetzt, 
wird dafür nicht belohnt, da diese zwar extrem dem Projektfortschritt 
dient, ihn selbst aber bei der Implementierung der eigenen Arbeitspakete 
zeitlich zurückwirft. Wer aber in seiner asynchronen Arbeitskopie 
herumwurschtelt, kommt schneller voran.

In meiner langjährigen Erfahrung auch bei Kunden vor Ort bin ich fast 
immer auf genau die oben beschriebenen Strukturen gestoßen. Je größer 
das Unternehmen und/oder das Projekt, desto ausgeprägter die mangelnde 
Synchronisation.

> Und die bekommen es ja auch gebacken.

Ein steter Tropfen höhlt den Stein. In vielen Fällen betrachte ich es 
aber eher als Zufall, wenn dort ein verkaufsfähiges Produkt entsteht.

von Udo S. (urschmitt)


Lesenswert?

Andreas hat das wunderbar beschrieben, genau so geht es oft in der 
Großindustrie ab. Und nicht nur in der Implementierung, sondern auch 
schon in der Planungsphase.
Stichworte für ein gutes Gelingen sind:
mehr miteinander reden,
noch mehr miteinander reden (nicht labern),
über den Tellerrand schauen was der Kollege macht
Sich nicht zu große, regelmäßige Ziele setzen und dann zusammenwerfen 
und gemeinsam testen. REGELMÄSSIG!
Verantwortliche für Teilgebiete benennen.
Nicht Schuldige sondern Lösungen finden.
...

Andreas Schweigstill schrieb:
> Ein steter Tropfen höhlt den Stein. In vielen Fällen betrachte ich es
> aber eher als Zufall, wenn dort ein verkaufsfähiges Produkt entsteht.

Ich habe mal (kurz) bei der deutschen Bank gearbeitet und war da in 
einem Ausschuß in dem es um eine Traceschnittstelle ging. Einheitlich 
über mehrere Abteilungen hinweg.
Da gab es regelmäßige Meetings, alle 14 Tage, schon seit über einem Jahr 
mit ständig wechselnden Personen. Das Ergebnis waren 2-3 Seiten Spec, 
die man mit einem guten Kollegen auch abends nach der Arbeit bei einem 
Bier genausogut hätte schreiben können.

: Bearbeitet durch User
von Andreas S. (Firma: Schweigstill IT) (schweigstill) Benutzerseite


Lesenswert?

Udo Schmitt schrieb:
> Nicht Schuldige sondern Lösungen finden.

Und genau daran hapert es überall. Gerade bei zuzukaufenden Produkten 
(Tools, Software) wird sofort die Haftungsfrage gestellt. Und wenn es 
sich um freie Software handelt, kommt der Einwand: "Und wen verklagen 
wir, wenn die Software doch nicht so tut wie wir es uns erhoffen?" Die 
tatsächliche technische Eignung tritt vollkommen in der Hintergrund 
gegenüber solchen Themen.

von Mark B. (markbrandis)


Lesenswert?

Was bisher noch gar nicht angesprochen wurde, ist das Thema 
Anforderungen, also Requirements Management. Die besten Entwickler mit 
den besten Tools bekommen keine vernünftige Software hin, wenn die 
Anforderungen qualitativ schlecht, unvollständig, missverständlich, 
nicht gut trackbar sind.

Ihr habt doch ein mit großer Sorgfalt geschriebenes Pflichtenheft, nicht 
wahr? :-)

von Marius (Gast)


Lesenswert?

Mark Brandis schrieb:
> Ihr habt doch ein mit großer Sorgfalt geschriebenes Pflichtenheft, nicht
> wahr? :-)

Der war gut ;-)

Wie gesagt es handelt sich um ein Projekt an der Uni. Daher wird 
implementiert, was der Prof möchte. Natürlich gibt es kurze schriftliche 
Beschreibungen und wir besprechen dann mit ihm die Details aber so 
professionell ist das ganze Projekt auch nicht, warum auch!?

Also eine Open issue liste mit Excel führen wir schon, damit man auch 
einen Überblick hat. Die Software hat auch eine Softwarenummer und beim 
Umstieg von V1.0 auf V1.1 gibt es auch eine kurze Beschreibung mit den 
Änderungen. Also ganz so lasch wird das Projekt nicht gehändelt.

Vielleicht soll ja gerade mit der Umstellung von drei auf einen 
Controller mehr Professionalität einhalten. Daher erkunden wir uns ja 
mit Büchern, Artikeln und auch hier wie die "Profis" so ein Projekt 
bewältigen.

von Mark B. (markbrandis)


Lesenswert?

Marius schrieb:
> Mark Brandis schrieb:
>> Ihr habt doch ein mit großer Sorgfalt geschriebenes Pflichtenheft, nicht
>> wahr? :-)
>
> Der war gut ;-)
>
> Wie gesagt es handelt sich um ein Projekt an der Uni. Daher wird
> implementiert, was der Prof möchte.

Wichtig ist, einmal schriftlich und verbindlich festzuhalten "was der 
Kunde möchte". Wenn der nämlich immer wieder mit neuen Änderungswünschen 
kommt, am besten noch sehr spät im Projektverlauf, wird die Software 
niemals fertig. Aber vielleicht weiß Euer Prof das ja sehr genau und 
verhält sich intelligent. Das kann man von den echten Kunden in der 
Berufswelt da draußen leider nicht immer behaupten, und vom eigenen 
Vertrieb schon zehnmal nicht ;-)

: Bearbeitet durch User
von Andreas S. (Firma: Schweigstill IT) (schweigstill) Benutzerseite


Lesenswert?

Mark Brandis schrieb:
> Wichtig ist, einmal schriftlich und verbindlich festzuhalten "was der
> Kunde möchte".

Und genau damit wären wir dann aber wieder bei dem zuvor beschriebenen 
Problem, dass nicht das erfolgreiche Projekt im Vordergrund steht, 
sondern die Suche nach dem Schuldigen.

von Klaus W. (mfgkw)


Lesenswert?

Wie soll Projekt erfolgreich sein, wenn keiner das Ziel kennt?

Das Ziel zu formulieren hat doch nichts mit Schuld zu tun.

von Andreas S. (Firma: Schweigstill IT) (schweigstill) Benutzerseite


Lesenswert?

Klaus Wachtler schrieb:
> Das Ziel zu formulieren hat doch nichts mit Schuld zu tun.

Viele Projekte scheitern in der Tat daran, dass kein Ziel formuliert 
wurde und deswegen das Projekt wie Treibsand vor sich hinläuft und 
niemals fertig wird. Solche Projekte können aber durchaus noch von 
guten Entwicklern gerettet werden, indem sie selbst sinnvolle Ziele 
definieren und umsetzen.

Genauso falsch ist es aber auch, von vornherein davon auszugehen, dass 
schon zu Beginn des Projektes alle Anforderungen in Stein gemeißelt 
werden können. So etwas wird aber durch das o.a. "einmal" impliziert. 
Dadurch wird solch ein Projekt sowohl an der Überspezifizierung von 
Details als auch Spezifikationslücken leiden. Und beides darf nicht mehr 
korrigiert werden, weil man ja beschlossen hat, die Festschreibung nur 
einmalig durchzuführen.

Ganz wichtig ist bei einer guten Anforderungsanalyse, zwischen Problem- 
und Lösungsraum zu unterscheiden. Im Problemraum müssen Anforderungen 
möglichst vollständig, aber eng gefasst beschrieben werden, wohingegen 
die ersten Iterationen im Lösungsraum möglichst weit gefasst werden 
müssen, um mögliche Lösungswege nicht von vornherein auszuschließen. Und 
Anforderungen, die schon in den Lösungsraum vorgreifen, sind auch 
ausdrücklich als Randbedingungen zu definieren und dürfen nur sparsam 
eingesetzt werden, z.B. bei rechtlichen Anforderungen oder wenn ein 
Produkt in eine bestehende Landschaft eingefügt werden muss.

von Mark B. (markbrandis)


Lesenswert?

Andreas Schweigstill schrieb:
> Mark Brandis schrieb:
>> Wichtig ist, einmal schriftlich und verbindlich festzuhalten "was der
>> Kunde möchte".
>
> Und genau damit wären wir dann aber wieder bei dem zuvor beschriebenen
> Problem, dass nicht das erfolgreiche Projekt im Vordergrund steht,
> sondern die Suche nach dem Schuldigen.

Nein. Man kann nicht wild mit den Armen rudern, "macht mal irgendwas, 
aber gefälligst bis gestern" rufen, und sich dann hinterher beschweren 
wenn die Entwickler nicht das abliefern was der Kunde will. Auch wenn 
manch ein Projektmanager gerne so vorgeht.

Edit:
Vielleicht reden wir auch aneinander vorbei. Mit "einmal" habe ich nicht 
gemeint "exakt einmal, nicht mehr und nicht weniger". Sondern eher 
"mindestens einmal, aber hoffentlich auch nicht oft".

Mit Änderungen an Requirements ist das halt so eine Sache. Wenn sie 
sinnvoll sind und noch früh genug passieren, meinetwegen. Trotzdem muss 
man mal begreifen, dass Softwareentwicklung dann gut funktioniert, wenn 
man mit stabilen und möglichst vollständigen Anforderungen an den Start 
geht. Dann kann man sich nämlich um die Dinge kümmern, um die man sich 
eigentlich kümmern sollte: Vernünftige Archtitektur, gutes Design, Code 
Reviews, ordentliches Testen. Diese Dinge kommen sonst regelmäßig zu 
kurz, wenn man sich andauernd mit unfertigen bzw. sich ändernden 
Anforderungen herumschlagen muss.

: Bearbeitet durch User
von Andreas S. (Firma: Schweigstill IT) (schweigstill) Benutzerseite


Lesenswert?

Mark Brandis schrieb:
> Vielleicht reden wir auch aneinander vorbei. Mit "einmal" habe ich nicht
> gemeint "exakt einmal, nicht mehr und nicht weniger". Sondern eher
> "mindestens einmal, aber hoffentlich auch nicht oft".

Ach so, dann bestand darin das Missverständnis.

> Mit Änderungen an Requirements ist das halt so eine Sache. Wenn sie
> sinnvoll sind und noch früh genug passieren, meinetwegen.

Anforderungsänderungen im Problemraum sind nach Möglichkeit zu 
vermeiden; ggf. kann später eine Verfeinerung vorgenommen werden, um 
Missverständnisse zu beseitigen oder festgestellte Lücken zu schließen.

Die Spezifikation der daraus abgeleiteten Aufgaben im Lösungsraum sollte 
man ggf. aber sogar bewusst auf spätere Projektphasen verschieben, wenn 
man merkt, dass man noch nicht die erforderlichen Kenntnisse besitzt, um 
sie schon zu erstellen.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.