Forum: Ausbildung, Studium & Beruf Softwareentwicklung im Maschinenbau


von Ing (Gast)


Lesenswert?

Ich bin Softwareingenieur mit mehreren Jahre Beruferfahrung im Bereich 
Maschinenbau. Meine bisherige Erfahrung ist, dass selbst in nahmhaften 
Unternehmen dieser Branche komplexe (Hochsprachen-)Software auf 
abenteuerliche Art und Weise entsteht. Es gibt fast keinen 
Designprozess! Aus dem Studium und eigenen Projekten kenne ich viele 
Vorgehensmodelle, Strukturierungs- und Spezifizierungsprozesse, UML, 
Requirements-Engineering, Pflicht- und Lastenheft... nichtmal letzteres 
wird in der Realität konsequent gemacht, zumindest nicht für Software im 
Maschinenbau. Bei Microsoft, SAP und anderen Firmen des 
Nicht-Maschinenbau ist das zumindest besser.

Man mag zu trockenen Planungsprozessen stehen wie man will, ganz ohne 
diese Planung bricht einem ab einer gewissen Komplexität das Dach übern 
Kopf zusammen. Seit über 25 Jahren sind diese Effekte bekannt! Und 
dennoch geht die Entwicklung seit Jahren dahin, dass 
Anforderungsmanagement durch Scrum ersetzt wird... hatte ich bisher 
einfach nur Pech mit den Firmen oder ist das "branchenüblich"?

Beitrag #6114824 wurde vom Autor gelöscht.
von Glutenfreier laktoseintoleranter Frutarier (Gast)


Lesenswert?

Ing schrieb:
> [...]

Mimimi.

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Ing schrieb:
> hatte ich bisher einfach nur Pech mit den Firmen
Oder mit der Berufswahl.

> Aus dem Studium und eigenen Projekten kenne ich viele Vorgehensmodelle,
> Strukturierungs- und Spezifizierungsprozesse, UML,
> Requirements-Engineering, Pflicht- und Lastenheft... nichtmal letzteres
> wird in der Realität konsequent gemacht, zumindest nicht für Software im
> Maschinenbau.
Du solltest es als Chance sehen: diese Strukturen müssen dort alle noch 
irgendwie implementiert werden. Sonst kann das ja niemals gutgehen!

> Bei Microsoft, SAP und anderen Firmen des
> Nicht-Maschinenbau ist das zumindest besser.
Träum weiter. Dort kommen auf 1 Programmierer eben 3 Verwalter, die als 
Consulter die ganzen "Requirements" beim Kunden einsammeln, ausführlich 
doumentieren, dem Programmierer sagen wie sie die Anforderungen des 
Kunden verstanden haben und dann kurz vor Ende des Geldes irgendwas 
abliefern, das hinterher in 2 Jahren soweit zusammengeflickt wird, bis 
es annähernd das tut, was die bisherige Lösung auch schon konnte.

Da kommt es dann schon mal vor, dass die firmeneigene IT als Ziel 
ausruft: "die Nachfolgelösung ist nicht schneller oder besser als die 
bisherige". Das möchte ich mal über eine meiner Maschinensteuerungen vor 
der ganzen Firma verkünden wollen...

: Bearbeitet durch Moderator
von Walter T. (nicolas)


Lesenswert?

Ing schrieb:
> .. hatte ich bisher
> einfach nur Pech mit den Firmen oder ist das "branchenüblich"?

Letzteres. Btdt.

von Udo S. (urschmitt)


Lesenswert?

Lothar M. schrieb:
> Träum weiter. Dort kommen auf 1 Programmierer eben 3 Verwalter, die als
> Consulter die ganzen "Requirements" beim Kunden einsammeln, ausführlich
> doumentieren, dem Programmierer sagen, wie sie den Kunden verstanden
> haben und dann kurz vor Ende des Geldes irgendwas abliefern, das
> hinterher in 2 Jahren soweit zusammengeflickt wird, bis es annähernd as
> tut, was die bisherige Lösung auch schon konnte.

:-)

Mein persönliches Highlight war mal einer unserer "Berater" der mit 
einem Kunden vereinbart hatte dass wir (SW-Entwicklung) "mal was 
machen", der Kunde es sich dann ansieht und dann sagt wie er es gerne 
hätte.

Zum Festpreis!

von Sklavenvermittler (Gast)


Lesenswert?

Ing schrieb:
> Anforderungsmanagement durch Scrum ersetzt wird... hatte ich bisher
> einfach nur Pech mit den Firmen oder ist das "branchenüblich"?
Wohl eher branchenübergreifend.

Welche Projekte waren denn das? Warst du als Interner dabei oder als 
Externer?

von Glutenfreier laktoseintoleranter Frutarier (Gast)


Lesenswert?

Ich war schon in einigen Firmen angestellt. Und alle mit ausufernder 
"Vorgehensmodelle, Strukturierungs- und Spezifizierungsprozesse, UML,
Requirements-Engineering, Pflicht- und Lastenheft" kamen nicht inne 
Pötte und haben keine bessere Qualität abgeliefert.

Weniger ist manchmal mehr. Aber gewiss ganz sollte man sowas nicht 
weglassen. Manche übertreiben es mit diesem Bla Bla jedoch ganz 
gewaltig.

von Programmierer (Gast)


Lesenswert?

Udo S. schrieb:
> Mein persönliches Highlight war mal einer unserer "Berater" der mit
> einem Kunden vereinbart hatte dass wir (SW-Entwicklung) "mal was
> machen", der Kunde es sich dann ansieht und dann sagt wie er es gerne
> hätte.

Ein Traum! Da kann man sich mal ein nettes Projekt ausdenken fern von 
wirtschaftlichen Zwängen, sich ein paar neue Technologien aneignen und 
ausnahmsweise mal nicht Quick-and-Dirty coden. Dass der Kunde dann am 
Ende nichts damit anfangen kann ist sein Problem...

Ing schrieb:
> Und
> dennoch geht die Entwicklung seit Jahren dahin, dass
> Anforderungsmanagement durch Scrum ersetzt wird...

Normal, weil es oft keine genauen Anforderungen gibt. Keiner weiß so 
genau was die Millionen potentielle Nutzer so genau wollen. Bei 
Facebook, WhatsApp & Co wird auch kein Lastenheft geschrieben - es 
werden diverse Dinge ausprobiert, und die die gut ankommen weiter 
ausgebaut. Dann muss man auch den Mut haben, wenig benutzte Features 
wieder einzustampfen, weil die letztlich nur Wartungsaufwand und damit 
Geld kosten.

von motzkopp (Gast)


Lesenswert?

Ing schrieb:
> Ich bin Softwareingenieur mit mehreren Jahre Beruferfahrung im
> Bereich
> Maschinenbau. Meine bisherige Erfahrung ist, dass selbst in nahmhaften
> Unternehmen dieser Branche komplexe (Hochsprachen-)Software auf
> abenteuerliche Art und Weise entsteht. Es gibt fast keinen
> Designprozess! Aus dem Studium und eigenen Projekten kenne ich viele
> Vorgehensmodelle, Strukturierungs- und Spezifizierungsprozesse, UML,
> Requirements-Engineering, Pflicht- und Lastenheft... nichtmal letzteres
> wird in der Realität konsequent gemacht, zumindest nicht für Software im
> Maschinenbau. Bei Microsoft, SAP und anderen Firmen des
> Nicht-Maschinenbau ist das zumindest besser.

Ist aussserhalb von Microsoft und SAP nicht nur im Maschinenbau so !

> Man mag zu trockenen Planungsprozessen stehen wie man will, ganz ohne
> diese Planung bricht einem ab einer gewissen Komplexität das Dach übern
> Kopf zusammen.

So isses !

> Seit über 25 Jahren sind diese Effekte bekannt! Und
> dennoch geht die Entwicklung seit Jahren dahin, dass
> Anforderungsmanagement durch Scrum ersetzt wird... hatte ich bisher
> einfach nur Pech mit den Firmen oder ist das "branchenüblich"?

Scrum ist halt der heisse Scheiss. Da wird der Bock zum Gärtner gemacht, 
Kritik ist sektenartig nicht erwünscht. Meckern über Scheiss 
Anforderungen ist Vergangenheit, sieh zu wie du ohne klar kommst. Am 
Ende steigt der Druck auf die Entwickler noch mehr, und es wird 
gefrickelt bis der Arzt kommt. Verstehe nicht, wie mancher Entwickler 
das auch noch gut findet.

von FrustrierterComputerBastler (Gast)


Lesenswert?

Das mit dem Designprozess ist toll. Ich hatte mal so ne UML Phase, wo 
ich 10 Jahre an mehreren UML Tools mitgearbeitet hab. Hab ich sehr viel 
bei gelernt.

Kannst aber in der Praxis alles vergessen. Was ich jetzt erlebe ist, 
dass die GeschFü Morgens die Spezifikation umwirft und erwartet, dass 
paar Stunden später eine Version zum Testen bereitsteht. Da ist genau 0 
Zeit, irgendwas zu dokumentieren o.ä.

Neue Funktionen sollen im Stundentakt eingebaut werden. Zum Testen 
bleibt keinerlei Zeit.

von Motzkopp (Gast)


Lesenswert?

FrustrierterComputerBastler schrieb:
> Das mit dem Designprozess ist toll. Ich hatte mal so ne UML Phase,
> wo ich 10 Jahre an mehreren UML Tools mitgearbeitet hab. Hab ich sehr
> viel bei gelernt.
>
> Kannst aber in der Praxis alles vergessen. Was ich jetzt erlebe ist,
> dass die GeschFü Morgens die Spezifikation umwirft und erwartet, dass
> paar Stunden später eine Version zum Testen bereitsteht. Da ist genau 0
> Zeit, irgendwas zu dokumentieren o.ä.
>
> Neue Funktionen sollen im Stundentakt eingebaut werden. Zum Testen
> bleibt keinerlei Zeit.

Ja, aber Clean Coden und es soll auch noch ein vernünftiges OOP Design 
entstehen. Ist ohne Planung nicht möglich, Scrum ist die Pflicht zu 
Frickelei.

von A. S. (Gast)


Lesenswert?

Ing schrieb:
> kenne ich viele Vorgehensmodelle, Strukturierungs- und
> Spezifizierungsprozesse, UML, Requirements-Engineering, Pflicht- und
> Lastenheft... nichtmal letzteres wird in der Realität konsequent
> gemacht,

Das es so viele gibt, ist oft ein Zeichen, dass keine gut ist.

Wenn Anforderungen bekannt, konstant und formulierbar sind, dann ist das 
alles ja ganz schön. Wird z b. bei Sicherheit oft gemacht. Oder wenn man 
Programmierer hat, was bei SAP & CO oft der Fall ist.

Aber Innovation, Fortschritt geht so nicht.

Und zusammenbrechen tut es nicht an fehlenden redundanten Dokumenten, 
sondern an schlechtem Design. Egal ob in UML oder Code, es gibt halt 
Leute mit genialen Lösungen und guter Auffassungsgabe und üble Frickler 
(hat mir keiner gesagt, dass ...) und alles dazwischen.

von A. S. (Gast)


Lesenswert?

Motzkopp schrieb:
> soll auch noch ein vernünftiges OOP Design entstehen. Ist ohne Planung
> nicht möglich,

Ein gutes Design ist erst möglich, wenn man einen Großteil der 
Anforderungen und Einsatzfälle kennt. Das ist aber bei neuen, 
innovativen Dingen erst im Projektverlauf. Wenn ich XY erfinde, baue, 
dann kann ich noch nicht wissen, was ich mit XY mache, brauche.

Darum ist refakturieren, redesignen, Funktionen wegwerfen, andere 
verbessern wichtig. Das Design muss/kann quasi erst am Ende sauber sein.

Der beste Plan ist wertlos beim ersten Feindkontakt. Oder: vergiss den 
Plan, Planung ist alles.

von Motzkopp (Gast)


Lesenswert?

A. S. schrieb:
>
>
> Wenn Anforderungen bekannt, konstant und formulierbar sind, dann ist das
> alles ja ganz schön. Wird z b. bei Sicherheit oft gemacht. Oder wenn man
> Programmierer hat, was bei SAP & CO oft der Fall ist.

Die Herren aus dem Anforderungs und Produktmanagment usw waren schon 
immer bequem und denkfaul, durch Scrum und diesen Scheiss kriegen sie 
jetzt auch noch ne offizielle Legimitation dazu. Das sind die ersten, 
die der GF erzählen, wie toll das ist, sind ja schließlich damit raus 
aus der Verantwortung.


> Aber Innovation, Fortschritt geht so nicht.

Boa ej, hat man dich auch schon erfolgreich durch die Gehirnwäsche 
durch, oder was ist das fürn Managergeschwafel?

> Und zusammenbrechen tut es nicht an fehlenden redundanten Dokumenten,
> sondern an schlechtem Design. Egal ob in UML oder Code, es gibt halt
> Leute mit genialen Lösungen und guter Auffassungsgabe und üble Frickler
> (hat mir keiner gesagt, dass ...) und alles dazwischen.

Dann zaubere mir mal ein schönes DB und OOP Klassendesign hin, wenn die 
Anforderungen tagesweise bekannt werden und wieder umgeworfen werden. 
Nein, man wird aber nicht zugeben, dass das systembedingt kaum möglich 
ist, Scrum ist nicht Schuld, das liegt an den Leuten !

von Motzkopp (Gast)


Lesenswert?

A. S. schrieb:
> Motzkopp schrieb:
> soll auch noch ein vernünftiges OOP Design entstehen. Ist ohne Planung
> nicht möglich,
>
> Ein gutes Design ist erst möglich, wenn man einen Großteil der
> Anforderungen und Einsatzfälle kennt.

Da sind wir uns einig !

Das ist aber bei neuen,
> innovativen Dingen erst im Projektverlauf. Wenn ich XY erfinde, baue,
> dann kann ich noch nicht wissen, was ich mit XY mache, brauche.
>
> Darum ist refakturieren, redesignen, Funktionen wegwerfen, andere
> verbessern wichtig. Das Design muss/kann quasi erst am Ende sauber sein.

Ja, dann kannst nach agil und CO ständig redisgnen oder neu machen, und 
das soll gut sein? Das ist nur teuer ! Und du glaubst ja wohl nicht, das 
eine funktionierende Frickelkei in der Praxis später noch redesigned 
wird.

> Der beste Plan ist wertlos beim ersten Feindkontakt. Oder: vergiss den
> Plan, Planung ist alles.

Man sollte erstmal das Ziel haben den Plan so gut wie möglich zu machen 
und nicht mit dem Ansatz Pkan geht sowieso nicht, also lassen wir es 
gleich ganz.

von A. S. (Gast)


Lesenswert?

Motzkopp schrieb:
> Die Herren aus dem Anforderungs und Produktmanagment usw waren schon
> immer bequem und denkfaul,

Wer sollen denn diese Leute sein?

Wie gesagt, Programmierer sind im Maschinenbaus selten. Eher 
Softwareentwickler / Ingenieure, die etwas neues entwickeln. Zum 
nachbauen haben wir Chinesen, für Änderungen Techniker, nachdem es 
erfolgreich ist und das Design glattgezogen ist. Nur erfolgreiche 
Produkte werden geändert!

von Motzkopp (Gast)


Lesenswert?

A. S. schrieb:
> Motzkopp schrieb:
> Die Herren aus dem Anforderungs und Produktmanagment usw waren schon
> immer bequem und denkfaul,
>
> Wer sollen denn diese Leute sein?
> Wie gesagt, Programmierer sind im Maschinenbaus selten. Eher
> Softwareentwickler / Ingenieure, die etwas neues entwickeln. Zum
> nachbauen haben wir Chinesen, für Änderungen Techniker, nachdem es
> erfolgreich ist und das Design glattgezogen ist. Nur erfolgreiche
> Produkte werden geändert!

Programmierer gibt es bei uns auch nicht und mein Bereich ist nicht 
Maschbau.
Aber sonne Maschine wird selbst nicht nach Scrum konstruiert und gebaut, 
oder ? Warum nicht, ist doch so eine tolle Sache?
Zu der Frage wer diese Leute sein sollen. Ich bin mir sicher, auch im 
Maschinenbau, obwohl nicht mein Bereich, gibt es Leute, die einem sagen, 
was das Ding am Ende können muss.

von A. S. (Gast)


Lesenswert?

Motzkopp schrieb:
> Aber sonne Maschine wird selbst nicht nach Scrum konstruiert und gebaut,
> oder ? Warum nicht, ist doch so eine tolle Sache?

Das Design einer Maschine ist z.B. dessen Zeichnung.

Das Design einer Software ist z.B. dessen Quelltext.

Der Unterschied zwischen Maschine und Quelltext ist, dass die Produktion 
eines Prototypen (Maschine, Maschinencode) im einen Fall hunderte 
Stunden dauert, im zweiten Fall nur Sekunden oder Minuten. Darum hat man 
beim Maschinenbau weniger Itterationen.

Ob und wie Maschienenbauer ihr Design üblicherweise entwickeln, weiss 
ich nicht. Ich hoffe aber mal, dass sie auch Dinge ausprobieren, 
gemeinsam besprechen, Ideen im Projektfortschritt aufgreifen etc. Aber 
dass konkret Scrum jetzt nicht passt, ist offensichtlich (es gibt keine 
täglichen Prototypen, Funktionsmuster)

> Zu der Frage wer diese Leute sein sollen. Ich bin mir sicher, auch im
> Maschinenbau, obwohl nicht mein Bereich, gibt es Leute, die einem sagen,
> was das Ding am Ende können muss.

Ja, ähnlich Abstrakt wie Du einem Architekten sagst, wie Dein Haus 
auszusehen hat. Du sagst ihm, ob es Traufenständig sein soll, wie groß 
in etwa, was und welche Zimmer. Und dann macht er einen Entwurf, den Ihr 
verfeinert. Und ja, technische Abläufe der Maschine muss der 
SW-Ingenieur wirklich selber verstehen und dann Umsetzen. Und ja, wenn 
es um z.B. die SPS-SW eine Produktionsstraße geht, dann brauchst Du eher 
Programmierer. Aber eine SPS selber, Maschinen mit embeddedter Steuerung 
und GUI, Eine Druckmaschine oder Spinnmaschine, … da ist die SW Teil der 
Entwicklung.

von c r (Gast)


Lesenswert?

A. S. schrieb:
> Das Design einer Maschine ist z.B. dessen Zeichnung.
>
> Das Design einer Software ist z.B. dessen Quelltext.

Hä? Der Quelltext IST die Software. Das Design sind Ablauf-, Klassen-, 
Zustands- etc. diagramme

von A. S. (Gast)


Lesenswert?

c r schrieb:
> Hä? Der Quelltext IST die Software. Das Design sind Ablauf-, Klassen-,
> Zustands- etc. diagramme

Wenn das so wäre, bräuchte man Programmierer, die die Diagramme in 
Quelltext "übersetzen". Wo das der Fall ist (bzw. von einem Tool gemacht 
wird), hast Du recht. Ein Matlab-Simulink-Stateflow-Diagramm ist das 
Design.

Vielleicht meinst Du eher eine Art "Architektur", "übergeordnete 
Struktur" oder so. Das gibt es natürlich im Maschinenbau auch, dass es 
übergeordnete Zeichnungen, Erklärungen etc. gibt.

von A. S. (Gast)


Lesenswert?

Nachtrag: Hier ein Papier dazu:

http://user.it.uu.se/~carle/softcraft/notes/Reeve_SourceCodeIsTheDesign.pdf

Ich fand das genauso bahnbrechend, wie seinerzeit die Ablösung von 
Nassi-Shneydermann und Co durch Hochsprachen.

von Claus W. (Gast)


Lesenswert?

Software kann man ja runterladen.

von Ing (Gast)


Lesenswert?

Motzkopp schrieb:
> Die Herren aus dem Anforderungs und Produktmanagment usw waren schon
> immer bequem und denkfaul, durch Scrum und diesen Scheiss kriegen sie
> jetzt auch noch ne offizielle Legimitation

Aber wieso kommt man damit durch? Man stelle sich vor ein Haus zu 
beauftragen ohne Planung! "War halt noch nicht klar wo die Fenster und 
Türen rein sollen und wo der Schornstein stehen muss"? Bauteil fertigen 
ohne Zeichnungen/CAD? Das leuchtet jedem sofort ein, dass da etwas nicht 
stimmt. Bei Softwareprojekten ist das Bewusstsein offenbar auf dem Stand 
von 1980 verharrt?!

von Programmierer (Gast)


Lesenswert?

Ing schrieb:
> Aber wieso kommt man damit durch?

Weil es funktioniert. Die Branchengrößen machen es vor.

Ing schrieb:
> Man stelle sich vor ein Haus zu
> beauftragen ohne Planung!

Ein Haus ist keine Software. Da kann man nicht mit einem Klick auf den 
Stand von gestern zurückgehen.

Ing schrieb:
> Bei Softwareprojekten ist das Bewusstsein offenbar auf dem Stand
> von 1980 verharrt?!

Softwareprojekte sind so komplex, und arbeiten in einer so komplexen 
Umgebung, dass die Entwicklung unmöglich komplett planbar ist. Bei einem 
Haus oder einem Bauteil auf Basis bekannter Technologie ist das was ganz 
anderes.

Komplett spezifizierte Anforderungen zu haben ist utopisch - viele 
Auftraggeber wissen nicht genau was sie brauchen, und was sich im 
Endkundenmarkt durchsetzt ist sowieso unvorhersehbar (klassisches 
Beispiel VHS vs Betamax). Man muss mit dem arbeiten was man hat, 
flexibel auf neue Erkenntnisse - die man vorher unmöglich haben konnte - 
reagieren und das Ziel ständig neu stecken. Scrum hilft dabei.

Wenn man komplette Software-Projekte versucht durchzuplanen und alles 
nach dem ursprünglichen Plan entwickelt, d.h. zwischendurch 
dazugekommene Erkenntnisse und Technologien ignoriert, wird das Ergebnis 
veraltet sein sobald es auf den Markt kommt - daher der Grundsatz, oft 
kleine Versionssprünge zu veröffentlichen, um die Nutzer bei Laune zu 
halten.

Auch bei Häusern ändern sich gelegentlich die Anforderungen 
zwischendurch, und Dinge werden mittendin umgeplant. Das manifestiert 
sich dann gelegentlich in kuriosen Konstruktionen.

Man muss diese typische Ingenieurs-Denkweise ablegen, alles durchplanen 
und dann zusammenbauen zu können - das ist unrealistisch, 
unwirtschaftlich und lässt Möglichkeiten ungenutzt (erinnert an 
Planwirtschaft). Software ist lebending, ist nie fertig und kann 
jederzeit umgebaut werden. Autoren planen ihre Romane auch selten von 
A-Z durch um sie dann nur noch runterzuschreiben - es wird viel 
nachträglich korrigiert und vieles spontan entschieden. In beiden Fällen 
ist das natürlich ein zweischneidiges Schwert - es verleitet schnell zu 
unbeherrschbarem Wildwuchs. Daher gibt es Modelle wie Scrum, um das in 
den Griff zu bekommen, ohne auf eine starre Komplettplanung zurück zu 
fallen.

Motzkopp schrieb:
> Ja, dann kannst nach agil und CO ständig redisgnen oder neu machen, und
> das soll gut sein? Das ist nur teuer !
Billiger als Projekte die nur für die Tonne entwickelt werden, weil man 
sich ändernde Marktsituationen/-Erkenntnisse ignoriert.

> Und du glaubst ja wohl nicht, das
> eine funktionierende Frickelkei in der Praxis später noch redesigned
> wird.
Selbstverständlich werden Proof-of-Concept-Ansätze bereinigt und 
ausgebaut, wenn sie gut ankommen.

von Mr.T (Gast)


Lesenswert?

Ing schrieb:
> hatte ich bisher
> einfach nur Pech mit den Firmen oder ist das "branchenüblich"?

Ist nicht nur dort so. Wenn der Käufer der Produkte keinen 
Entwicklungsprozess zwingend in die Auftragsbücher diktiert, ist Wilder 
Westen angesagt.

von Michael Gugelhupf (Gast)


Lesenswert?

Ing schrieb:
> Aber wieso kommt man damit durch?

Weil es einen Aspekt der Realität in der Entwicklung abdeckt, der von 
den klassischen Methoden nicht abgedeckt wird, nämlich dass sich 
Anforderungen ständig ändern.

> Man stelle sich vor ein Haus zu
> beauftragen ohne Planung! "War halt noch nicht klar wo die Fenster und
> Türen rein sollen und wo der Schornstein stehen muss"? Bauteil fertigen
> ohne Zeichnungen/CAD? Das leuchtet jedem sofort ein, dass da etwas nicht
> stimmt.

Schon mal ein Haus gebaut? Alle paar Tag fällt einem eine Änderung ein. 
Hier noch was ein bisschen anders, da noch was. Wenn man es sich leisten 
kann dann beauftragt man die Änderungen, was viel Geld kostet. Die 
Handwerker freut es und man wäre froh, wenn im Gesamtsystem mehr 
Flexibilität wäre.

Bei großen Bauprojekten ist es noch schlimmer. Jeden Tag Besprechung in 
der man über Fehler in den Plänen diskutiert und mehr oder weniger guten 
Pfusch beschließt.

Es ist übrigens ein Gerücht, dass bei Scrum keine Planung stattfindet 
und es keine Anforderungen gibt. Jeder Sprint wird voraus geplant und 
während eines Sprints wird sich an die Planung gehalten. Änderungen die 
während eines Sprints reinkommen werden frühstens im nächsten Sprint 
berücksichtigt. Damit das nicht zu lange dauert werden Sprints selber 
sehr kurz gehalten.

Scrum bedeutet viel Disziplin.

Das ist das eigentliche Problem. Wenn die Beteiligten undisziplinert 
sind, und die meisten sind es, dann kommt Mist raus. Der Product Owner 
schafft die Requirements nicht ran oder sie sind extrem wage. Der Scrum 
Master sichert nicht den Prozess. Die Sprints werden nicht sauber 
geplant. Mitten in den Sprints wird die Richtung geändert, jeder 
Programmierer macht was er will.

> Bei Softwareprojekten ist das Bewusstsein offenbar auf dem Stand
> von 1980 verharrt?!

Nein, eher von 1950. Undisziplinierte Softwerker brauchen klare 
Anweisungen und Kontrolle. Wer glaubt Scrum ohne Disziplin zum Laufen zu 
bekommen, dem kann ich nur viel Spaß wünschen.

von Yalu X. (yalu) (Moderator)


Lesenswert?

Ing schrieb:
> Man mag zu trockenen Planungsprozessen stehen wie man will, ganz ohne
> diese Planung bricht einem ab einer gewissen Komplexität das Dach übern
> Kopf zusammen.

Ist das Dach denn schon zusammengebrochen?

Wenn ja:

Nach dem Desaster sollte eigentlich jedem in der Firma klar sein, dass
am Entwicklungsprozess etwas geändert werden muss. Vielleicht bist du
mit deiner Erfahrung der einzige, der in der Lage ist, so etwas
umzusetzen. Sprich doch einfach mal mit den Verantwortlichen darüber.
Evtl. fördert das sogar deine Karriere in der Firma.

Wenn nein:

Vermutlich gibt es bereits so etwas wie einen Entwicklungsprozess, sonst
wüsste ja keiner der Entwickler, was er jeden Tag zu tun hat. Der
Prozess basiert aber möglicherweise nicht auf einem starren Regelwerk
und deckt sich nicht mit den Verfahren, die du in deinem Studium gelernt
hast. Gerade in kleineren Entwicklergruppen kristallisiert sich oft im
Lauf der Zeit eine Vorgehensweise heraus, bei der ein paar erfahrene
Mitarbeiter den Wagen in die richtige Richtung lenken, ohne dass es für
ihre Rolle einen speziellen Namen oder eine genaue Beschreibung gibt.

Solche Vorgehensweisen mögen auf der einen Seite chaotisch anmuten, auf
der anderen Seite können sie aber sehr effizient, gut auf das jeweilige
Projektumfeld hin optimiert und vor allem sehr flexibel sein.

Die standardisierten Vorgehensmodelle, wie sie dir vorschweben, sind
meist auf größere Entwicklergruppen zugeschnitten, wo eine direkte
Kommunikation unter den Mitgliedern nur eingescränkt möglich ist.

Wie groß ist denn bei euch die Anzahl der Softwareentwickler, die
gleichzeitig an einem Projekt arbeiten?

von motzkopp (Gast)


Lesenswert?

> Softwareprojekte sind so komplex, und arbeiten in einer so komplexen
> Umgebung, dass die Entwicklung unmöglich komplett planbar ist. Bei einem
> Haus oder einem Bauteil auf Basis bekannter Technologie ist das was ganz
> anderes.

Die sind komplex und ja ein Plan Bedarf ständiger Anpassungen. Aber 
erstmal
einen Plan haben !
Und wie Wahrheit ist, dass gute Pläne an folgenden Dingen scheitern:
Zeit und Einstellung der Personen ! Man gesteht der Planung zu wenig 
Zeit zu und die Anforderungsmanager haben kein Bock zu denken, es ist 
halt leichter wenn man schonmal was zum draufklicken hat
und ein paar Dinge ausprobieren kann.

Typisch ist es z.B. dass der Anfoderungsmanager den IST-Zustand gar 
nicht genau kennt, erst der Entwickler sagt ihm beim coden dann, was er 
noch zu berücksichtigen hat. Das muss man bei Planestellung nicht bis 
ins letzte Detail machen, das ist echt aufwendig, aber nen groben Plan 
sollte man haben.


> Komplett spezifizierte Anforderungen zu haben ist utopisch - viele
> Auftraggeber wissen nicht genau was sie brauchen, und was sich im
> Endkundenmarkt durchsetzt ist sowieso unvorhersehbar (klassisches
> Beispiel VHS vs Betamax). Man muss mit dem arbeiten was man hat,
> flexibel auf neue Erkenntnisse - die man vorher unmöglich haben konnte -
> reagieren und das Ziel ständig neu stecken. Scrum hilft dabei.

Oh man, hier haben wir einen der Scrum-Jünger !!! Die Schulungen sind 
Gehirnwäsche.


> Wenn man komplette Software-Projekte versucht durchzuplanen und alles
> nach dem ursprünglichen Plan entwickelt, d.h. zwischendurch
> dazugekommene Erkenntnisse und Technologien ignoriert, wird das Ergebnis
> veraltet sein sobald es auf den Markt kommt - daher der Grundsatz, oft
> kleine Versionssprünge zu veröffentlichen, um die Nutzer bei Laune zu
> halten.
> Auch bei Häusern ändern sich gelegentlich die Anforderungen
> zwischendurch, und Dinge werden mittendin umgeplant. Das manifestiert
> sich dann gelegentlich in kuriosen Konstruktionen.

Es sagt niemand, dass man beim klassischen Vorgehen, nicht den Plan 
ständig
anpassen kann. Wie gesagt, das Ziel sollte zuerst sein einen möglichst 
guten Plan zu haben, statt einen Plan von vorneherein abzulehnen.

>
> Motzkopp schrieb:
>> Ja, dann kannst nach agil und CO ständig redisgnen oder neu machen, und
>> das soll gut sein? Das ist nur teuer !
> Billiger als Projekte die nur für die Tonne entwickelt werden, weil man
> sich ändernde Marktsituationen/-Erkenntnisse ignoriert.

So ein Quark. Ich weiss nicht woher die Vorstellung kommt, das nach 
Wasserfall keine Änderungen am Plan mehr möglich sind und das das nur 
mit Scrum möglich ist.


>> Und du glaubst ja wohl nicht, das
>> eine funktionierende Frickelkei in der Praxis später noch redesigned
>> wird.
> Selbstverständlich werden Proof-of-Concept-Ansätze bereinigt und
> ausgebaut, wenn sie gut ankommen.

Bin 25 Jahre im Job ind 4 verschiedenen Unternehmen, das mit dem 
Redisgnen klappt in der Praxis nur mit KleinKlein Zeug, das keine 
anderen Entscheidungsgewalten abnicken müssen. Z.B. Meine jetzigen 
"Kunden", die Fachabteilungen ist das nicht vermittelbar, wofür sie 
wertvolle Resourcen opfern sollen. Was haben sie davon ?

von motzkopp (Gast)


Lesenswert?

Ing schrieb:
> Motzkopp schrieb:
>> Die Herren aus dem Anforderungs und Produktmanagment usw waren schon
>> immer bequem und denkfaul, durch Scrum und diesen Scheiss kriegen sie
>> jetzt auch noch ne offizielle Legimitation
>
> Aber wieso kommt man damit durch? Man stelle sich vor ein Haus zu
> beauftragen ohne Planung! "War halt noch nicht klar wo die Fenster und
> Türen rein sollen und wo der Schornstein stehen muss"? Bauteil fertigen
> ohne Zeichnungen/CAD? Das leuchtet jedem sofort ein, dass da etwas nicht
> stimmt. Bei Softwareprojekten ist das Bewusstsein offenbar auf dem Stand
> von 1980 verharrt?!


Die kommen damit durch, weil sie näher am Managment und am Kunden 
sitzen. Die Entwickler sind die Blaumänner in der Produktion, haben 
nichts zu kamellen, dürfen es nur ausbaden.
Notfalls reden die Herren sich raus, schwieriger Kunde, Markt hat sich 
geändert, Kunde hat es umentschieden usw. usw..
Meiner Meinung sind diese Ausreden zu 90% vermeidbar, wenn man seinen 
Denkapparat ordentlich angeschmissen hätte, aber lieber ersteinmal auf 
was rumklicken können und dann umentscheiden um dann damit massenweise 
Geld/Entwiclungszeit zu vernichten.

von motzkopp (Gast)


Lesenswert?

Michael Gugelhupf schrieb:
> Ing schrieb:
>
> Es ist übrigens ein Gerücht, dass bei Scrum keine Planung stattfindet
> und es keine Anforderungen gibt. Jeder Sprint wird voraus geplant und
> während eines Sprints wird sich an die Planung gehalten. Änderungen die
> während eines Sprints reinkommen werden frühstens im nächsten Sprint
> berücksichtigt. Damit das nicht zu lange dauert werden Sprints selber
> sehr kurz gehalten.
>
> Scrum bedeutet viel Disziplin.
>
> Das ist das eigentliche Problem. Wenn die Beteiligten undisziplinert
> sind, und die meisten sind es, dann kommt Mist raus. Der Product Owner
> schafft die Requirements nicht ran oder sie sind extrem wage. Der Scrum
> Master sichert nicht den Prozess. Die Sprints werden nicht sauber
> geplant. Mitten in den Sprints wird die Richtung geändert, jeder
> Programmierer macht was er will.
>
>> Bei Softwareprojekten ist das Bewusstsein offenbar auf dem Stand
>> von 1980 verharrt?!
>
> Nein, eher von 1950. Undisziplinierte Softwerker brauchen klare
> Anweisungen und Kontrolle. Wer glaubt Scrum ohne Disziplin zum Laufen zu
> bekommen, dem kann ich nur viel Spaß wünschen.


Jepp, hier haben wir einen, sie einer meiner letzten Postings !
Merke: Es liegt nie an Scrum, wenns nicht klappt, es liegt an den 
Leuten, oder man hat es falsch umgesetzt usw. !
Daher kommt mir das ganze auch so sektenartig vor, oder man will noch 
Scrum-Schulungen verdienen und die ganzen zertifizierten Scrummaster 
wollen es nicht umsonst gemacht haben.

von Mark B. (markbrandis)


Lesenswert?

Ing schrieb:
> hatte ich bisher einfach nur Pech mit den Firmen oder ist das
> "branchenüblich"?

Das ist so durchaus üblich. Wenn ein Unternehmen sich hauptsächlich als 
Maschinenbauer sieht, woher soll es dann auch eine große Kompetenz in 
Sachen Softwareentwicklung besitzen?

von Michael Gugelhupf (Gast)


Lesenswert?

motzkopp schrieb:
> Jepp, hier haben wir einen, sie einer meiner letzten Postings !

Ach du Pfeife, hör erst mal auf zu plenken.

Hättest du mich gefragt was an Scrum falsch ist hätte ich dir einen 
mehrstündigen Vortrag darüber halten können. Aus Erfahrung. Danach hätte 
ich noch eine Stunde dran hängen können, wie Scrum-Projekte durch 
Ausnutzung der Schwächen erfolgreich sabotiert werden.

Aber du hast ja nicht gefragt. Du hast einfach rumgegrölt. So wie ein 
Afd-Anhänger, unqualifizierte, unwissende aber im Besitz der alleinigen 
Wahrheit und noch stolz drauf.

Weißt du, es ist traurig wenn ein angeblicher Ingenieur wie du nicht 
einmal in Ruhe eine Diskussion zum Für und Wider einer Methode 
aushalten, geschweige denn führen kann.

Nun, da alles Weitere bei dir nur Perlen vor die plenkenden Säue ist 
schenke ich mir alles Weitere.

von A. S. (Gast)


Lesenswert?

motzkopp schrieb:
> Merke: Es liegt nie an Scrum, wenns nicht klappt, es liegt an den
> Leuten, oder man hat es falsch umgesetzt usw. !
> Daher kommt mir das ganze auch so sektenartig vor, oder man will noch
> Scrum-Schulungen verdienen und die ganzen zertifizierten Scrummaster
> wollen es nicht umsonst gemacht haben.


Versteiff Dich doch nicht so auf SCRUM. Mit denen Leuten, mit denen es 
mit SCRUM klappt, kannst Du auch ohne SCRUM genauso viel reißen.

Du musst nur weg vom umfassenden Plan vorab. Wenn Deine Auftraggeber 
wissen, was sie wollen, z.B. deren Geschäftsprozesse auf neues 
Steuerrecht anpassen oder eine Produktionsstraße automatisieren, dann 
ist das doch gut. Dann gibt es zwar hier oder da eine Änderung, aber 
dann weiss anfangs, was hinten rauskommen soll.

Wenn Du etwas Neues entwickelst (ein Messgerät, eine Maschine, die 
erstmals elektronisch gesteuert wird, ...) dann kannst Du nicht wissen, 
was Du willst, einfach weil das bisher niemand in der Hand gehabt hat. 
Dann brauchst Du Entwickler (keinen Techniker), Ingenieure, keine 
Programmierer, Kreativität statt Sorgfalt. Oder besser gesagt, die 
Mischung daraus. Dann brauchst Du die Freiheit, heute die Arbeit der 
letzten 2 Wochen wegzuschmeißen und neu zu machen, heute die Annahme von 
gestern (es wird nie mehr als 255 geben) zu verwerfen.

Hätte Ford die Kunden befragt, hätten sie sich schnellere Pferde 
gewünscht.

von motzkopp (Gast)


Lesenswert?

Programmierer schrieb:
> Ing schrieb:
>> Aber wieso kommt man damit durch?
>
> Weil es funktioniert. Die Branchengrößen machen es vor.
>


Das höre ich auch immer wieder.
Die Branchengrössen können sich von der Ressourcengewalt ganz anders mit 
dem Zeug beschäftigen. Die können viel Ressourcen versemmeln, nur das 
Produkt muss 100% sein, das nutzen Millionen von Leuten.
Kann man nicht mit normalen Softwarebuden vergleichen, wo jede Stunde 
irgendein Kunde bezahlen muss und sich änderende Anforderungen und 
ständiges anders und neu Gemache finanziell ganz anders auswirken. Ist 
aber hipp, dass denen großen nachzumachen.

von motzkopp (Gast)


Lesenswert?

A. S. schrieb:
>
> Wenn Du etwas Neues entwickelst (ein Messgerät, eine Maschine, die
> erstmals elektronisch gesteuert wird, ...) dann kannst Du nicht wissen,
> was Du willst, einfach weil das bisher niemand in der Hand gehabt hat.
> Dann brauchst Du Entwickler (keinen Techniker), Ingenieure, keine
> Programmierer, Kreativität statt Sorgfalt. Oder besser gesagt, die
> Mischung daraus. Dann brauchst Du die Freiheit, heute die Arbeit der
> letzten 2 Wochen wegzuschmeißen und neu zu machen, heute die Annahme von
> gestern (es wird nie mehr als 255 geben) zu verwerfen.
>
> Hätte Ford die Kunden befragt, hätten sie sich schnellere Pferde
> gewünscht.

Diesen Anwendungsfall unterschreibe ich, siehe meinem letzten Postung, 
da zählt das innovative schnelle Produkt 100 mal mehr, als die 
Ressourcen und man startet auf der gründen Wiese.
Ich arbeite zur Zeit an einer seit 25 Jahren existierenden aus 50 Mio 
Zeilen bestehenden -grob gesagt- Buchhaltungssoftware. Schmeiss da mal 
kurz was um, jedes Flag einer Tabelle kann ungeahnte gravierende 
Auswirkung haben...

von Dick Boutsos (Gast)


Lesenswert?

Mark B. schrieb:
> Das ist so durchaus üblich. Wenn ein Unternehmen sich hauptsächlich als
> Maschinenbauer sieht, woher soll es dann auch eine große Kompetenz in
> Sachen Softwareentwicklung besitzen?

Indem es entspr. Leute dafür einstellt und nicht die interne Truppe 
dafür missbraucht die ein bischen was zusammenschustern kann.

von Mark B. (markbrandis)


Lesenswert?

Dick Boutsos schrieb:
> Indem es entspr. Leute dafür einstellt und nicht die interne Truppe
> dafür missbraucht die ein bischen was zusammenschustern kann.

Das scheitert an einem ganz banalen Grund:
Wenn man selbst keine Kompetenz in X besitzt, wie soll man dann erkennen 
welche Person genau die richtige wäre um X korrekt durchzuführen?

Außerdem:
Reine Informatiker tun sich mit der Ansteuerung von Maschinen eher 
schwer, da ihnen hierfür oft das Wissen aus Physik und Elektrotechnik 
fehlt. Also nimmt man oftmals doch einen Ingenieur dafür. Der mag 
manchmal auch gutes Wissen über Methodik der Softwareentwicklung haben - 
oft genug aber hat er es nicht. Weil es nicht sein Fachgebiet ist.

: Bearbeitet durch User
von Mark B. (markbrandis)


Lesenswert?

A. S. schrieb:
> Wenn Du etwas Neues entwickelst (ein Messgerät, eine Maschine, die
> erstmals elektronisch gesteuert wird, ...) dann kannst Du nicht wissen,
> was Du willst, einfach weil das bisher niemand in der Hand gehabt hat.

Äh, doch?

Wenn es eine kommerzielle Entwicklung ist, wovon ich jetzt mal ausgehe, 
dann gibt es in jedem Fall eine konkrete Anwendung die realisiert werden 
soll. Vielleicht soll eine Fernsteuerung her für die Maschine X, oder in 
Produkt Y soll die zusätzliche Funktion Z hinein weil der Kunde das so 
haben will...

Also zumindest Top-Level Requirements werden definitiv existieren. Wenn 
es nichtmal die gibt, wird doch niemand das Budget für eine Entwicklung 
bereitstellen.

: Bearbeitet durch User
von Qwertz (Gast)


Lesenswert?

Dick Boutsos schrieb:
> Mark B. schrieb:
> Das ist so durchaus üblich. Wenn ein Unternehmen sich hauptsächlich als
> Maschinenbauer sieht, woher soll es dann auch eine große Kompetenz in
> Sachen Softwareentwicklung besitzen?
>
> Indem es entspr. Leute dafür einstellt und nicht die interne Truppe
> dafür missbraucht die ein bischen was zusammenschustern kann.

Softwareentwicklung ist aber keine Rocket Science. Es ist auch kein 
Missbrauch, wenn die Angestellten ihr Wissen und ihre Fähigkeiten etwas 
erweitern.

von Dick Boutsos (Gast)


Lesenswert?

Mark B. schrieb:
> Das scheitert an einem ganz banalen Grund:
> Wenn man selbst keine Kompetenz in X besitzt, wie soll man dann erkennen
> welche Person genau die richtige wäre um X korrekt durchzuführen?

Was das fürn Nullargument?

von Mark B. (markbrandis)


Lesenswert?

Dick Boutsos schrieb:
> Mark B. schrieb:
>> Das scheitert an einem ganz banalen Grund:
>> Wenn man selbst keine Kompetenz in X besitzt, wie soll man dann erkennen
>> welche Person genau die richtige wäre um X korrekt durchzuführen?
>
> Was das fürn Nullargument?

Ist kein Nullargument. Denk einfach mal bisschen nach, dafür ist dein 
Gehirn ja da. Wenn niemand in einer Firma echte Kompetenz in Sachen 
Software besitzt, und schon gar nicht die Personalabteilung, wie will 
man dann einen guten Entwickler einstellen? Es fehlt einem ja dann die 
Fähigkeit, beurteilen zu können wer wirklich gut ist.

: Bearbeitet durch User
von Mark B. (markbrandis)


Lesenswert?

Qwertz schrieb:
> Softwareentwicklung ist aber keine Rocket Science. Es ist auch kein
> Missbrauch, wenn die Angestellten ihr Wissen und ihre Fähigkeiten etwas
> erweitern.

Naja. Ich will mal so sagen: Die Menge an schlecht geschriebenem, 
undokumentierten und schlecht wartbarem Legacy Code ist legendär groß. 
Scheint also wohl doch nicht so einfach zu sein, seine Kenntnisse 
diesbezüglich auf einen guten Stand zu bringen - sonst hätten die Leute 
es ja gemacht.

: Bearbeitet durch User
von A. S. (Gast)


Lesenswert?

Mark B. schrieb:
> Also zumindest Top-Level Requirements werden definitiv existieren. Wenn
> es nichtmal die gibt, wird doch niemand das Budget für eine Entwicklung
> bereitstellen.

Top-Level Requirement ist ganz hoch im Bullshit-Bingo.

Der Kunde hat Wünsche.
- Einfachere Bedienung
- Fernsteuerung
- Automatisierung bisher manueller Tätigkeiten
- Aussagekräftigere Anzeigen
- Eine Verriegelung, dass dies oder jenes nicht passiert

SW im Maschinenbau heisst weder Stückzahlen wie beim IPhone oder Auto, 
noch EDV, wo schon seit 70 Jahren Tausende von Programmierern an einer 
SW arbeiten.

Das was im Maschinenbau SW ist, wird bei IPhone oder Auto 
"Vorentwicklung" genannt, und dort gibt es aus guten Grund ähnliche 
Freiheiten und nicht die staren, auf Perfektion ausgerichteten 
Vorgehensmodelle. Dort darf man spielen, probieren, kreativ sein.

Und ja, auch beim Maschinenbau gibt es SIL, SAfety und Co, und dort sind 
Vorgehensmodelle Pflicht, weil die Aufgabe eine andere ist: Eine 
konkrete, zu Anfang bekannte Funktion mit bewährten Mitteln zu 
realisieren. Aber das ist nur ein (ungeliebter) Teil der SW im 
Maschinenbau

Beitrag #6117036 wurde von einem Moderator gelöscht.
von Motzkopp (Gast)


Lesenswert?

Ich will da mal aus meinem Bereich ein kürzlich aufgetretendes Problem 
schildern. Es gibt eine Tabelle mit Buchungen, wo wir 1,2 Mrd Datensätze 
haben. Dort mussten wir ein neues DB Feld einführen. Rückwirkend mussten 
alle Datensätze mit einem nicht einfach zu ermittelnden Wert gefüllt 
werden. Dies passierte durch eine aufwendige PLSQL Routine auf einer 
Oracle DB. Nun das Problem: Die Downzeit des Servers war nicht lange 
genug, um dieses Update durchzuführen. Erst nach wochenlangem Tüfteln, 
testen und optimieren haben wir das Problem gelöst. Da gab es schon viel 
schlimmere Probleme, aber das Bsp versteht jeder Softie.
Warum erzähle ich das ? Weil das ein Scheiss Feld war, was so harmlos in 
irgendeiner Maske in der GUI erscheint, fürn Anforderungsmanager 
vollkommen langweilig, für die Entwickler viel Arbeit.
Mit Scrum dann haha, brauchen wir doch nicht, oder anders, oder so, hmm? 
Da sprinten wir durch.
Wir müssen innovativer umd flexibler werden ! Erst mal was raushauen und 
dann entscheiden, wo es lang geht.

von A. S. (Gast)


Lesenswert?

Motzkopp schrieb:
> Mit Scrum dann haha, brauchen wir doch nicht, oder anders, oder so, hmm?
> Da sprinten wir durch.

Scrum ist doch für Deine Aufgaben überhaupt nicht sinnvoll. Das ist so, 
als wenn jemand 13er Maulschlüssel verteufelt, weil die Prüfung einer 
12V-Batterie damit nur unzureichen möglich ist.

von Dick Boutsos (Gast)


Lesenswert?

Mark B. schrieb:
> Ist kein Nullargument. Denk einfach mal bisschen nach, dafür ist dein
> Gehirn ja da. Wenn niemand in einer Firma echte Kompetenz in Sachen
> Software besitzt, und schon gar nicht die Personalabteilung, wie will
> man dann einen guten Entwickler einstellen? Es fehlt einem ja dann die
> Fähigkeit, beurteilen zu können wer wirklich gut ist.
Nach deiner Logik wäre dann jede Firma noch in der 
produktionstechnischen Steinzeit, weil sie angeblich nicht in der Lage 
ist fähige Leute zu erkennen. Dafür hat Gott die Studienabschlüsse und 
Arbeitszeugnisse geschaffen. Wenn sich einer bewirbt mit 5 Jahren 
Erfahrung in Softwareengineering und Informatikstudium wird der auch 
Ahnung haben, jedenfalls mehr als der Maschinenbauer mit nebenher 
erworbenen Programmierkenntnissen oder E-Techniker mit MC-Fokus.

Das Problem ist ein ganz anderes in diesen Firmen: Man hat noch gar 
nicht erkannt wie unprofessionell man dort arbeitet, das Gestümpere gilt 
dort als normal. Da wurschtelt halt der Maschinenbauer die Software 
irgenwie zusammen oder der E-Techniker die Steuerung aber wenns mal 
komplexer wird und über klassisches MC-Gefrickel hinausgeht glaubt er 
kann da wie bisher weiterfrickeln. Dazu kommt noch wie oben schon 
beschrieben, dass schnelle Ergebnisse gewünscht werden, der ahnungslose 
Vorgesetzte bestimmt also wie gearbeitet werden soll. Selbst wenn die 
Entwickler erkannt haben, dass sie mit dem Gefrickel nicht mehr 
weiterkommen und das ändern wollen würden, der Chef oder wer auch immer 
die Entscheidungsmacht hat, funkt mit seinen unrealistischen 
Zeitvorgaben immer dazwischen.

Wenn ich schon in solchen Knallfroschbuden vom "Chefentwickler" höre 
dass Testen überflüssig ist aber denen ständig die Projekte um die Ohren 
fliegen und keinen Termin reissen. Fragt man die wie sie ihre Projekte 
planen schauen die einen an wie ein Mondkalb. Scrum, Projektmanagement, 
Testszenarien, alles unnützer Kram für die, der nur Zeit kostet. Denen 
rennen auch regelmässig die Fähigen Leute weg, weil die keine neuen 
Strukturen etablieren dürfen. Da muss erst mal Erkenntnis+Wille da sein, 
das man so wie man jetzt 'arbeitet' es völlig unprofessionell ist und 
das geändert werden muss.

von Mark B. (markbrandis)


Lesenswert?

Dick Boutsos schrieb:
> Wenn ich schon in solchen Knallfroschbuden vom "Chefentwickler" höre
> dass Testen überflüssig ist aber denen ständig die Projekte um die Ohren
> fliegen und keinen Termin reissen. Fragt man die wie sie ihre Projekte
> planen schauen die einen an wie ein Mondkalb. Scrum, Projektmanagement,
> Testszenarien, alles unnützer Kram für die, der nur Zeit kostet. Denen
> rennen auch regelmässig die Fähigen Leute weg, weil die keine neuen
> Strukturen etablieren dürfen. Da muss erst mal Erkenntnis+Wille da sein,
> das man so wie man jetzt 'arbeitet' es völlig unprofessionell ist und
> das geändert werden muss.

Richtig. Und warum ist das so? Weil man nicht versteht, wie es richtig 
gemacht werden muss (also die Entwicklung von Software). Und warum weiß 
man das nicht? Weil man sich in diesem Fachgebiet nicht auskennt.

Wenn eine Firma clever genug ist, SW-Entwickler mit Berufserfahrung 
einzustellen und diese auch darüber entscheiden zu lassen, wie der 
Prozess der Entwicklung denn vonstatten gehen soll, dann ist ja gut. 
Aber ob das so in der Regel passiert? Da bin ich skeptisch.

von A. S. (Gast)


Lesenswert?

Mark B. schrieb:
> Weil man nicht versteht, wie es richtig
> gemacht werden muss (also die Entwicklung von Software).


Doch, von Zeit zu Zeit kommen dann solche Informatik-Experten und wollen 
eine 5-Mann-Entwicklung professionalisieren, so wie es bei EDV-SW (mehr 
oder weniger) gut funktioniert. Dann passieren folgende Dinge, die hier 
im Forum ja auch schon geschildert wurden:

- Unsinnige, unhinterfragte Regeln, die im gegenwertigen Kontext keinen 
Sinn machen. (Stefan U: jeder Member-Zugriff nur über Getter/Setter)

- Völlige Ausblendung des µC-Kontexts (Andreas S: Nein, die x kB-RAM im 
Datenblatt sind MB: ein µC mit so wenig RAM gäbe keinen Sinn)

- Design in UML: Nicht nur schlecht geeignet für Automaten, meist auch 
nur gemalt, nicht modelliert (nicht nur, dass kein Code erzeugt wird, 
... das Modell selber ist mangels Umgebung in sich selber nicht 
konsistent oder verifizierbar)

- Frühe Entscheidungen (Dann haben die Leute, die keine Ahnung von SW 
haben, halt ihre wünsche nicht ausreichend durchdacht)

von Mark B. (markbrandis)


Lesenswert?

A. S. schrieb:
> Doch, von Zeit zu Zeit kommen dann solche Informatik-Experten und wollen
> eine 5-Mann-Entwicklung professionalisieren, so wie es bei EDV-SW (mehr
> oder weniger) gut funktioniert. Dann passieren folgende Dinge, die hier
> im Forum ja auch schon geschildert wurden:
>
> - Unsinnige, unhinterfragte Regeln, die im gegenwertigen Kontext keinen
> Sinn machen. (Stefan U: jeder Member-Zugriff nur über Getter/Setter)

Ein echter Informatik-Experte weiß natürlich, dass das Quatsch ist. 
Objekte sollen Nachrichten miteinander austauschen.

Echte Informatik-Experten lesen zum Beispiel solche Artikel:
https://www.javaworld.com/article/2073723/why-getter-and-setter-methods-are-evil.html

Und verstehen sie auch :-)

Das Problem bleibt nach wie vor, zu erkennen wer denn nun ein echter 
Experte ist und wer ein Möchtegern-Experte... und sowas steht halt auf 
keinem Diplomzeugnis der Welt drauf.

: Bearbeitet durch User
von motzkopp (Gast)


Lesenswert?

A. S. schrieb:
> µC-Kontexts

A. S. schrieb:
> Mark B. schrieb:
>> Weil man nicht versteht, wie es richtig
>> gemacht werden muss (also die Entwicklung von Software).
>
> Doch, von Zeit zu Zeit kommen dann solche Informatik-Experten und wollen
> eine 5-Mann-Entwicklung professionalisieren, so wie es bei EDV-SW (mehr
> oder weniger) gut funktioniert. Dann passieren folgende Dinge, die hier
> im Forum ja auch schon geschildert wurden:
>
> - Unsinnige, unhinterfragte Regeln, die im gegenwertigen Kontext keinen
> Sinn machen. (Stefan U: jeder Member-Zugriff nur über Getter/Setter)
>
> - Völlige Ausblendung des µC-Kontexts (Andreas S: Nein, die x kB-RAM im
> Datenblatt sind MB: ein µC mit so wenig RAM gäbe keinen Sinn)
>
> - Design in UML: Nicht nur schlecht geeignet für Automaten, meist auch
> nur gemalt, nicht modelliert (nicht nur, dass kein Code erzeugt wird,
> ... das Modell selber ist mangels Umgebung in sich selber nicht
> konsistent oder verifizierbar)
>
> - Frühe Entscheidungen (Dann haben die Leute, die keine Ahnung von SW
> haben, halt ihre wünsche nicht ausreichend durchdacht)


Wer in Business Applikationen z.B. jedes Bit eines ints nutzt, um sich 
platzsparend Zustände zu merken, der kriegt in der Welt gewaltig hinter 
die Ohren, im µC-Kontext mag das ja sinnvoll sein.
Das mit den Gettern und Settern hätte ich auch gesagt. Hauptgrund neben 
anderen Vorteilen: Ich kann da einen Breakpoint reinsetzen.

von motzkopp (Gast)


Lesenswert?

Mark B. schrieb:
> Echte Informatik-Experten lesen zum Beispiel solche Artikel:
> 
https://www.javaworld.com/article/2073723/why-getter-and-setter-methods-are-evil.html
>
> Und verstehen sie auch :-)
>
> Das Problem bleibt nach wie vor, zu erkennen wer denn nun ein echter
> Experte ist und wer ein Möchtegern-Experte... und sowas steht halt auf
> keinem Diplomzeugnis der Welt drauf.


"It follows then that in OO systems you should avoid getter and setter 
functions since they mostly provide access to implementation details."

Was den für Implementierungsdetails ? Wo ist der Unterscheid zu public 
members, die ich ja dann stattdessen benutzen muss ?
Ich bin auch kein Fan davon alle member Variablen mit gettern und 
settern auszustatten, sondern nur die, auf die ich von aussen zugreifen 
muss.


"To see why, consider that there might be 1,000 calls to a getX() method 
in your program, and each call assumes that the
return value is of a particular type. You might store getX()'s return 
value in a local variable, for example, and that variable type
must match the return-value type. If you need to change the way the 
object is implemented in such a way that the type of X changes, you're 
in deep trouble. If X was an int, but now must be a long, you'll get 
1,000 compile errors."

Die kriege ich auch, wenn ich den Typ einer 1000 mal benutzen public 
member Variabe von int auf long ändere.


Liebe Informatik Experten, ich habe es nicht verstanden, erklärt mir 
warum getter und setter schlechter sein sollen, als public members.

von Hugi (Gast)


Lesenswert?

Wow, ist ja echt interessant. Der Krieg der Vorgehensmodelle :D
Vielleicht wären Schulungen im Bereich der Komplexitätsforschung gar 
nicht so verkehrt. Man kann lernen komplexe Systeme zu erkennen und 
besser zu beurteilen. Und ich denke Software Entwicklung im 
wirtschaftlichen Umfeld stellt ein komplexes System dar.
Es würde genügen die grundlegenden Wesenszüge solcher Systeme zu 
verstehen und was einzelne Veränderungen bewirken können.

Und obwohl ich keine berufliche Erfahrung habe würde ich intuitiv 
wetten, dass es nicht das perfekte Modell gibt, genau wie es auch nicht 
die perfekte Programmiersprache gibt. Abhängig von diversen Faktoren 
kann ein Modell in einem Unternehmen besonders gut oder besonders 
schlecht funktionieren.

Aufwand, Zeitbedarf, Effizienz, Flexibilität... diese Werte können nicht 
alle perfektioniert werden. Besonders große Flexibilität wird andere 
Werte zwangsläufig hochtreiben, etwa den Zeitbedarf. Wenn ein Modell so 
gestaltet ist dass es hohe Flexibilität bei möglichst geringem 
Zeitbedarf bietet, treibt möglicherweise den Aufwands Wert hoch weil es 
hohe Disziplin durch Einhaltung vieler Regeln bedarf um effizient und 
flexibel zu funktionieren. Da aber nicht alle im Unternehmen 
diszipliniert sind funktioniert es nicht wie es theoretisch sollte.

Bei Programmiersprachen ist es ja auch so. Besonders einfache 
Programmiersprachen etwa Scriptsprachen sind langsamer.
Und eine Programmiersprache wie Rust die Vorteile einer GC Sprache ohne 
einen GC haben will bezahlt den Preis mit einer höheren Lernkurve der 
Sprache, was dann auch für viele eine problematische Hürde darstellt.

Vieles deutet also darauf hin dass es gar kein perfektes Vorgehensmodell 
in Projekten geben kann.
Maximal flexibel, maximal schnell, maximal günstig, maximal effizient, 
maximal leicht realisierbar... geht also nicht.

Was neue Modelle oft auszeichnet ist eine Verschiebung eines Wertes nach 
oben ohne den Verweis auf die zwangsläufige Senkung eines anderen 
Wertes.
Also es kommt z.B. ein neues Modell dass viel mehr Flexibilität und 
Zeitersparnis verspricht. Erst die Praxis zeigt dann dass es dies 
beispielsweise mit einer höheren Komplexität für die Beteiligten 
bezahlt, was dann bei manchen nicht funktioniert, weil die Beteiligten 
überfordert sind. Während die durchschnittliche Kompetenz in einem 
anderen Unternehmen höher ist und dort funktioniert es etwas besser.

Und dann streiten sich die Leute darüber welches System besser sei :D

von Dirk K. (merciless)


Lesenswert?

motzkopp schrieb:
> Liebe Informatik Experten, ich habe es nicht verstanden, erklärt mir
> warum getter und setter schlechter sein sollen, als public members.
Getter und Setter sind genauso schlecht wie public Members!

Hier mal ein fiktives Beispiel irgendeiner Connection-Klasse.
Die ersten beiden Klassen sind schlecht, da public Zugriff auf
Implementierungsdetails (enum-Member) besteht. In der 3.
Klasse ist der Zugriff komplett gekapselt, man kann das Objekt
nach seinem Zustand fragen.
1
// some C#
2
public enum State
3
{
4
  Open, Closed
5
}
6
7
public class Connection
8
{
9
  // BAD: public member
10
  public State ConnectionState;
11
}
12
13
public class Connection
14
{
15
  // BAD: public setter/getter
16
  public State ConnectionState { get; set; }
17
}
18
19
public class Connection
20
{
21
  // GOOD: private setter/getter
22
  private State ConnectionState { get; set; }
23
  public bool IsOpen() { return ConnectionState == State.Open; }
24
  public bool IsClosed() { return ConnectionState == State.Closed; }
25
}
Ändert man den enum, sind bei den ersten beiden Klassen
alle Aufrufe im Client-Code zu ändern, die auf den enum
zugreifen. Bei der 3. Klasse betreffen die Änderungen
nur die Klasse selbst.

merciless

von motzkopp (Gast)


Lesenswert?

Dirk K. schrieb:
> motzkopp schrieb:
>> Liebe Informatik Experten, ich habe es nicht verstanden, erklärt mir
>> warum getter und setter schlechter sein sollen, als public members.
>
> Getter und Setter sind genauso schlecht wie public Members!


Na, dann mich ich erstmal beruhigt, wobei ich persönlich die Getter und 
Setter wesentlich besser finde, wegen Breakpoint setzen und mögliche 
Modifizierung an zentraler Stelle.


>
> public class Connection
> {
>   // GOOD: private setter/getter
>   private State ConnectionState { get; set; }
>   public bool IsOpen() { return ConnectionState == State.Open; }
>   public bool IsClosed() { return ConnectionState == State.Closed; }
> }
>
> Ändert man den enum, sind bei den ersten beiden Klassen
> alle Aufrufe im Client-Code zu ändern, die auf den enum
> zugreifen. Bei der 3. Klasse betreffen die Änderungen
> nur die Klasse selbst.
>
> merciless

Du hast geschummelt. Hier gibt es noch ein Mapping zwischen einem Enum 
und einem Boolean Wert, was die Abstraktion des Enums ermöglicht. Klar 
muss dann der Rest des Code das Enum nicht kennen. Was ist, wenn ich 
wirklich ein int haben will ?

von motzkopp (Gast)


Lesenswert?

Nachtrag: Schummeln im Sinne eines Informationsverlust, der nur aufging, 
weil der Status nur zwei Zustände haben kann. Du kannst ja mal mit einem 
byte das Spiel betreiben:

private byte a;
..
public bool IsMinus128(a == -128)
..
public bool Is0(a == 0)
public bool Is1(a == 1)
public bool Is2(a == 2)
public bool Is3(a == 3)
..

dann kannst du auch den internen Datentyp von byte auf int ändern, ohne 
das der Rest des Codes betroffen ist ;).

von Mark B. (markbrandis)


Lesenswert?

motzkopp schrieb:
> Liebe Informatik Experten, ich habe es nicht verstanden, erklärt mir
> warum getter und setter schlechter sein sollen, als public members.

Auf die Daten innerhalb eines Objekts soll man möglichst gerade nicht 
von außerhalb der Klasse beliebig zugreifen können. Wenn man das macht, 
hat man ja gerade keine Datenkapselung. Außerdem kann man dann die 
Implementierung einer Klasse nicht ändern, wenn anderer Code da immer 
beliebig auf deren Membern herumwühlt.

von Dirk K. (merciless)


Lesenswert?

motzkopp schrieb:
> Du hast geschummelt. Hier gibt es noch ein Mapping zwischen einem Enum
> und einem Boolean Wert, was die Abstraktion des Enums ermöglicht. Klar
> muss dann der Rest des Code das Enum nicht kennen. Was ist, wenn ich
> wirklich ein int haben will ?
Ich könnte den enum auf 47 verschiedene Werte aufbohren,
dann müsste ich im o.g. Beispiel 47 Methoden IsXYZ()
haben. Dann muss ich aber die gesamte Architektur in
Frage stellen.

Als aller erstes sollte man sich die Frage stellen, wieso
überhaupt Client-Code Kenntnisse von inneren Zuständen
eines Objektes haben muss. In den meisten Fällen ist das
auf eine schlechte Architektur zurückzuführen. In meinem
Beispiel würde ich dann die 47 Zustände in einer dedizierten
State-Machine kapseln.

motzkopp schrieb:
> Nachtrag: Schummeln im Sinne eines Informationsverlust, der nur aufging,
> weil der Status nur zwei Zustände haben kann. Du kannst ja mal mit einem
> byte das Spiel betreiben:
>
> private byte a;
> ..
> public bool IsMinus128(a == -128)
> ..
> public bool Is0(a == 0)
> public bool Is1(a == 1)
> public bool Is2(a == 2)
> public bool Is3(a == 3)
Und dieser Quatsch sagt mir, dass du nicht wirklich Ahnung
von Software-Entwicklung hast. Auf diese Art kann man jedes
Beispiel ins Lächerliche ziehen. Natürlich muss die Information
(enum) gemappt werden, wie soll sonst die Kapselung erfolgen.

merciless

: Bearbeitet durch User
von motzkopp (Gast)


Lesenswert?

> Und dieser Quatsch sagt mir, dass du nicht wirklich Ahnung
> von Software-Entwicklung hast. Auf diese Art kann man jedes
> Beispiel ins Lächerliche ziehen.
>
> merciless

Aber, aber, lieber Kollege ! Es ware hier die Rede von den so schlechten 
getter und settern. Da will ich als Begründung nicht irgendeinen 
konstruierten Fall haben. Der einzige vollfertige Ersatz sind public 
members und die halte ich für wesentlich schlechter !

von motzkopp (Gast)


Lesenswert?

Mark B. schrieb:
> motzkopp schrieb:
>> Liebe Informatik Experten, ich habe es nicht verstanden, erklärt mir
>> warum getter und setter schlechter sein sollen, als public members.
>
> Auf die Daten innerhalb eines Objekts soll man möglichst gerade nicht
> von außerhalb der Klasse beliebig zugreifen können. Wenn man das macht,
> hat man ja gerade keine Datenkapselung. Außerdem kann man dann die
> Implementierung einer Klasse nicht ändern, wenn anderer Code da immer
> beliebig auf deren Membern herumwühlt.


Jajaja, das ist alles klar. Wenn ich aber nun mal nen paar Werte der 
Klasse setzen oder lesen will, hmmm ? Ganz darauf verzichten ?

von Fridays for Progger (Gast)


Lesenswert?

Jo man; Ihr habt's voll drauf.
Meine Forderung: Mindestlohn 150 k€/a für Progger!

von Dirk K. (merciless)


Lesenswert?

motzkopp schrieb:
>> Und dieser Quatsch sagt mir, dass du nicht wirklich Ahnung
>> von Software-Entwicklung hast. Auf diese Art kann man jedes
>> Beispiel ins Lächerliche ziehen.
>>
>> merciless
>
> Aber, aber, lieber Kollege ! Es ware hier die Rede von den so schlechten
> getter und settern. Da will ich als Begründung nicht irgendeinen
> konstruierten Fall haben. Der einzige vollfertige Ersatz sind public
> members und die halte ich für wesentlich schlechter !
Dann, lieber Kollege, nenne doch mal ein Beispiel,
wo du von außen unbedingt einen Wert in das Objekt
setzen musst. Wenn sich das nicht umgehen lässt, dann
würde ich einen Setter verwenden, weil man sonst keine
Möglichkeit hat, auf die Änderung eines Wertes zu reagieren
(vielleicht muss die Gültigkeit geprüft werden, oder
eine Neuberechnung angestoßen werden, etc.).

merciless

von Motzkopp (Gast)


Lesenswert?

Dirk K. schrieb:
> Dann, lieber Kollege, nenne doch mal ein Beispiel,
> wo du von außen unbedingt einen Wert in das Objekt
> setzen musst. Wenn sich das nicht umgehen lässt, dann
> würde ich einen Setter verwenden, weil man sonst keine
> Möglichkeit hat, auf die Änderung eines Wertes zu reagieren
> (vielleicht muss die Gültigkeit geprüft werden, oder
> eine Neuberechnung angestoßen werden, etc.).
>
> merciless

Ich persönlich nutze Setter selten, ich versuche alles über den 
Konstruktor zu übergeben. Aber manchmal lässt es sich nicht vermeiden, 
die Bsp hast du ja selber schon genannt.
Also halten wir fest: Standardlehrbuch-Empfehlung getter und setter zu 
benutzen (als Ersatz für public members) -  Richtig und Gut !
Gegenempfehlungen beziehen sich nur auf absolute Feinheiten, ist aber 
eine Gelegenheit sich als Creme de la Creme Informatik Experte zu 
positionieren !

von A. S. (Gast)


Lesenswert?

Motzkopp schrieb:
> Richtig und Gut !
> Gegenempfehlungen beziehen sich nur auf absolute Feinheiten, ist aber
> eine Gelegenheit sich als Creme de la Creme Informatik Experte zu
> positionieren !

Eine Frage an die Experten (wobei Du, Motzkopp, ja nach eigenem Bekunden 
auch eher EDV machst):

Wer von Euch auf dieser Welle macht denn wirklich embedded Maschinen-SW? 
Nicht GUI, nicht Visu, nicht Eingabe von Ablaufplänen, sondern wirkliche 
Steuerungstechnik, (weniger Regelungstechnik, da das ja eher Matlab-Code 
ist)?

Also Wenn Sensor so, dann Aktor so, wenn Zeit abgelaufen, dann, wenn 
dies dann das?

Die meisten Mantras von Kapselung und keinen globalen Objekten greifen 
da nämlich meist nicht oder nur schlecht. Es gibt nämlich einen globalen 
Kontext, mit realen (nicht virtuellen) Teilen, die in einer konkreten, 
physischen Abhängigkeit zueinander stehen.

Ich unterscheide es in virtuelle Objekte (ein Quadrat auf der 
Zeichenfläche, ein Menber in der Adressliste, ein Fehlerbit im Logfile) 
und reale Objekte (das Rad vorne Links im Auto).

Virtuelle Objekte sind gut OOP-kapselbar, können fast beliebig 
instanziiert werden (50 neue Quadrate, neue Mitglieder? Nur zu).

Konkrete Objekte werden dann meist alibi-mäßig genauso gehandhabt ("ich 
leite alle 4 Räder von der Klasse Rad ab! und instanziiere sie dann." 
Super, hier ein Lutscher). Das ist quatsch. Es gibt genau 4 Räder am 
Auto, und alle 4 haben spezifische Eigenschaften und es macht überhaupt 
keinen Sinn, ein 5tes zu instanziieren oder nur 3. Kein DSP kommt damit 
klar, wenn man ein Rad weglässt oder 2 tauscht. Globale Objekte spiegeln 
hier nur die Aufgabe wieder und sind nicht böse. Wie weit das ignoriert 
wird, zeigt sich, wenn Autosar (wo Milliarden hinterstehen) als Gebastel 
angesehen wird, weil es den EDV-Mantras nicht folgt.

Ähnliches gilt für die Zeit, die in Steuerungstechnik eine viel breitere 
Rolle einnimmt als in der EDV, wo einfach nur alles akzeptabel schnell 
und gbgf. transaktionssicher sein muss.

Das, genau das ist der Unterschied, warum die EDV-Erfahrung der 
Informatiker im Maschinenbau (und genau darum ging es dem TO) regelmäßig 
scheitert.

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

A. S. schrieb:
> Ähnliches gilt für die Zeit, die in Steuerungstechnik eine viel breitere
> Rolle einnimmt als in der EDV
Fast jeder der Infrommatiker, die von der Hochschule kommend meine 
Hardware zur Maschinensteuerung zu programmieren hatten, schaffte es 
binnen weniger Tage, dass die Steuerung "zu langsam" und die Aufgabe 
damit nicht lösbar ist.

Sie fragen dann regelmäßig nach mehr Rechenleistung um die nötigen 
Reaktionszeiten im 100µs-Bereich zuverlässig ohne großen Jitter 
einhalten zu können!

Regelmäßig nehme ich sie dann an die Hand und zeige ihnen, was der 
Compiler da für umständliches Zeug aus ihrem umständlichen Zeug macht. 
Früher oder später hat es dann noch jeder von ihnen kapiert, wie man 
z.B. Funktionsaufrufe samt Parameterübergabe so zu gestalten hat, dass 
sie effizient umgesetzt werden. Sie finden heraus, dass es schneller 
ist, für ein Flag ein 32 Bit-Wort zu nehmen, als viele Flags in ein 
einziges Wort zusammenzupacken.

Und kaum hat man die grundlegenden Grundlagen zum prozessor- und 
compilerfreundlichen Programmieren gelernt, ist der Rechner auf einmal 
wieder schnell genug, obwohl er nur 4 Cores mit je 1GHz hat...

: Bearbeitet durch Moderator
von Programmierer (Gast)


Lesenswert?

Lothar M. schrieb:
> Fast jeder der Infrommatiker, die von der Hochschule kommend meine
> Hardware zur Maschinensteuerung zu programmieren hatten

Jetzt lästern schon die Mods verallgemeinernd über Informatiker... Waren 
das denn auch Informatiker mit Embedded Spezialisierung? Können frisch 
aus der Hochschule kommende Ings das besser?

Als Embedded-Spezialisierter Informatiker wird man von "normalen" 
Informatikern belächelt weil man kein Experte in PHP, nodejs, Mobile App 
Development, ... ist und nur so komisches Elektronik Zeug macht. Von 
Ings muss man sich anhören dass Ings das alles besser können... Toll!

Ein kleines bisschen wie bei Immigranten 2. Generation, welche hier als 
Ausländer und in der Heimat der Eltern als Deutsche gelten. Die habens 
auch nicht leicht...

von Cyblord -. (cyblord)


Lesenswert?

Das sind nur Lothars Tagträume. In denen verarbeitet er Neid auf 
Informatiker. Als Mod sollte man sich etwas besser im Griff haben, als 
hier dumpf auf das beliebte Ing vs. Inf zu gehen, auch wenn es dafür 
Jubel vom Pöbel gibt.

von Qwertz (Gast)


Lesenswert?

Programmierer schrieb:
> Als Embedded-Spezialisierter Informatiker wird man von "normalen"
> Informatikern belächelt weil man kein Experte in PHP, nodejs, Mobile App
> Development, ... ist und nur so komisches Elektronik Zeug macht. Von
> Ings muss man sich anhören dass Ings das alles besser können... Toll!

Da ist ein wenig was dran. grins
Ich finde aber nicht schlimm, dass es so ist.

von Chris D. (myfairtux) (Moderator) Benutzerseite


Lesenswert?

Programmierer schrieb:
> Lothar M. schrieb:
>> Fast jeder der Infrommatiker, die von der Hochschule kommend meine
>> Hardware zur Maschinensteuerung zu programmieren hatten
>
> Jetzt lästern schon die Mods verallgemeinernd über Informatiker...

Nein, das tut Lothar nicht. Es geht offenbar nur um diejenigen, die 
"Hardware zur Maschinensteuerung zu programmieren hatten".

> Waren
> das denn auch Informatiker mit Embedded Spezialisierung? Können frisch
> aus der Hochschule kommende Ings das besser?

Das ist die Frage.

Als ich damals Informatik studiert habe, musste man ein Nebenfach 
belegen, also eine Art Spezialisierung wählen. Bei mir war das 
Elektrotechnik inkl. (natürlich) Mikrocontrollerprogrammierung und 
dementsprechend hätte ich vermutlich mit Lothars Aufgabenstellung 
weniger Probleme gehabt als seine heutigen Infos.

Wie sieht das heutzutage aus?

> Als Embedded-Spezialisierter Informatiker wird man von "normalen"
> Informatikern belächelt weil man kein Experte in PHP, nodejs, Mobile App
> Development, ... ist und nur so komisches Elektronik Zeug macht. Von
> Ings muss man sich anhören dass Ings das alles besser können... Toll!

Das schreibt Lothar nicht.

Eher, dass es das heutige Abstraktionsniveau der Software immer noch 
spielend schafft, selbst schnellste Controller an ihr Limit zu treiben, 
wenn man sich nicht mal klar gemacht hat, was der Compiler mit dem Code 
anstellt.

Und da hat er Recht.

(schreibe ich als Dipl.-Inf. ;-)

von Bernd K. (prof7bit)


Lesenswert?

Dirk K. schrieb:
> Ändert man den enum, sind bei den ersten beiden Klassen
> alle Aufrufe im Client-Code zu ändern, die auf den enum
> zugreifen.

In diesem Sinne also nur noch Klassen ohne jegliches öffentliche 
Interface? Und auch keine öffentlichen Funktionen mehr in jeglichem 
Code? Denn man könnte ja gezwungen sein das API zu ändern und dann 
müssten alle Benutzer angepasst werden? Sorry, aber diese Argumentation 
die Du da vorgebracht hast ist ungültig.

Bei einem öffentlichen API muss man halt vorher mal tief in sich gehen 
und scharf nachdenken und planen bevor man wild drauf los schreibt damit 
man es später möglichst nicht mehr so oft ändern muss. Und man macht es 
auch nicht breiter als gerade eben notwendig. Und ob da jetzt ein Setter 
oder Getter oder Property oder sonstige öffentliche Methode oder 
Funktion dabei ist macht dabei nicht den geringsten Unterschied.

von motzkopp (Gast)


Lesenswert?

Ich würde mich einem Vorposter anschließen, das man frisch von der 
Hochschule erstmal in nix Erfahrung hat. Gilt für Infos genauso wie für 
Ings.
Ansonsten gilt für Leute, die eher EDV machen: Da kommt es sehr wohl auf 
Performance an, nur nicht auf 100µs. Es geht meist um Massendaten und 
der erste Blick bei Performaceproblemen richtet sich immer gegen 
IO/Datenbankabfragen. Weniger und sehr sehr schnelle Abfragen ist da das 
Ziel. Da kann man was rausholen !
Danach kommen irgenwelche Schleifen über Massendaten und was die da so 
machen. Danach kommt lange nichts.

Für Optimierungen des Codes Richtung compilerfreundlichkeit muss man 
schon sehr verzweifelt sein. Ich habe schon oft Code gesehen, der 
furchtbar kompliziert und umfangreich war, aber eigentlich nur einfache 
Dinge machte. Da hat jemand ziemlich unverständlichen Code hinterlassen, 
vermutlich ewig Zeit verbraten, nur um die letzten µs rauszuholen, 
vollkommen unnötig. Das ist bei Business-Apps nicht angesagt. 
Optimierungen, die den Code komplizierter machen, nur wenn es unbedingt 
sein muss und an letzter Stelle, wenn man bereits erstere erwähnte 
Möglichkeiten ausgeschöpft hat !
Daher haben logischweise Leute aus anderern Bereichen mehr Übung darin.

von Programmierer (Gast)


Lesenswert?

Chris D. schrieb:
> Nein, das tut Lothar nicht. Es geht offenbar nur um diejenigen, die
> "Hardware zur Maschinensteuerung zu programmieren hatten".

Und auch Maschinensteuerung ist etwas was Informatiker durchaus 
beherrschen können.

Chris D. schrieb:
> Wie sieht das heutzutage aus?

Genau so. Es gibt z.B. die Spezialisierung "Embedded Systems". Da lernt 
man Regelungstechnik, Sichere Systeme (FuSi und so), 
Mikrocontroller-Programmierung in C und C++, E-Technik-Grundlagen, DSP, 
Adaptive Filter usw. Sollte doch für den Maschinenbau gar nicht so 
falsch sein.

Chris D. schrieb:
> Eher, dass es das heutige Abstraktionsniveau der Software immer noch
> spielend schafft, selbst schnellste Controller an ihr Limit zu treiben,

Das hat aber nichts mit Informatikern an sich zu tun.

von Programmierer (Gast)


Lesenswert?

PS: In der Informatik-Spezialisierung "Embedded Systems" gibt es auch 
Robotik-Fächer wo man Dinge wie Inverse Kinematik, ROS, 
Roboter-Simulation usw lernt. Es gibt sogar einen Informatik 
Master-Studiengang extra komplett für Robotik, u.a. mit Teilnahme am 
Robocup. Man macht teilweise auch Schaltungsentwicklung und 
Platinenlayouts. Die Teilnahme an der Formula Student (sehr viel 
hardwarenahe Programmierung und Fahrzeugtechnik) wird gefördert. Ist 
auch nicht so weit weg von Industrie und Maschinenbau, oder?

von Chris D. (myfairtux) (Moderator) Benutzerseite


Lesenswert?

Programmierer schrieb:
> Chris D. schrieb:
>> Nein, das tut Lothar nicht. Es geht offenbar nur um diejenigen, die
>> "Hardware zur Maschinensteuerung zu programmieren hatten".
>
> Und auch Maschinensteuerung ist etwas was Informatiker durchaus
> beherrschen können.

Ja, natürlich - ich mache (neben anderem) genau das :-)

> Chris D. schrieb:
>> Wie sieht das heutzutage aus?
>
> Genau so. Es gibt z.B. die Spezialisierung "Embedded Systems". Da lernt
> man Regelungstechnik, Sichere Systeme (FuSi und so),
> Mikrocontroller-Programmierung in C und C++, E-Technik-Grundlagen, DSP,
> Adaptive Filter usw. Sollte doch für den Maschinenbau gar nicht so
> falsch sein.

Danke für die Info.

Ja, das müsste dann doch passen - wenn Lothars Infos diese 
Vertiefungsrichtung auch hatten.

Aber man darf natürlich auch nicht vergessen, dass man nicht viel kann, 
wenn man frisch aus dem Studium kommt und nichts nebenbei gemacht hat 
(daher unterstütze ich auch Formula Student - ist eine tolle Sache).
Wir Älteren vergessen das sehr oft.

Und dass sie nur wenig Zeit brauchten, um Lothars Erfahrungen 
aufzunehmen, zeigt ja, dass sie durchaus fähig sind.

> Chris D. schrieb:
>> Eher, dass es das heutige Abstraktionsniveau der Software immer noch
>> spielend schafft, selbst schnellste Controller an ihr Limit zu treiben,
>
> Das hat aber nichts mit Informatikern an sich zu tun.

Richtig.

Aber ehrlich: irgendwo ist das doch Wahnsinn, wenn für eine simple 
Taschenlampen-App (also im Prinzip etwas, das auf Knopfdruck eine LED 
ein- und ausschalten muss) mittlerweile tatsächlich 5 MByte 
heruntergeladen werden müssen.

Und dann schaut man sich eine alte Sinumerik 810T-CNC-Steuerung an, die 
komplett keine 512kByte belegt und auf einem 80186 mit 16MHz läuft und 
ist erstaunt, wieviel das Ding bereits beherrscht  - in Echtzeit.

: Bearbeitet durch Moderator
von Walter T. (nicolas)


Lesenswert?

Chris D. schrieb:
> Aber ehrlich: irgendwo ist das doch Wahnsinn, wenn für eine simple
> Taschenlampen-App (also im Prinzip etwas, dass auf Knopfdruck eine LEDe
> ein- und ausschalten muss) mittlerweile tatsächlich 5 MByte
> heruntergeladen werden müssen.

Wobei App-Bloat eine ganz eigene Problematik ist, die mit dem 
Programmierer-Problem für Maschinensteuerung nichts zu tun hat.

von Chris D. (myfairtux) (Moderator) Benutzerseite


Lesenswert?

Walter T. schrieb:
> Wobei App-Bloat eine ganz eigene Problematik ist, die mit dem
> Programmierer-Problem für Maschinensteuerung nichts zu tun hat.

Ich bin mir da nicht sicher, ob man das trennen kann.

Denn offenbar führt genau die Denkweise "Wir haben unendlich viel 
Speicher und Rechenleistung und tolle Wollmilchsäue als Bibliotheken" zu 
solchen Programmkonstrukten, bei denen ohne größere Überlegung sehr 
große Datenmengen per Funktionsaufruf übergeben werden und so die 
Echtzeitfähigkeit sprengen.

Daher auch meine Frage, ob man auch als heutiger Informatiker nochmal 
"ganz unten" nachschaut (und bspw. in Assembler programmiert) und ein 
Gespür dafür vermittelt bekommt, was Code effizient macht.

Erfreulicherweise wird das ja in der entsprechenden Vertiefungsrichtung 
auch noch gemacht. Ich nehme deswegen an, dass Lothars Schützlinge 
einfach aus einem anderen Bereich kamen.

Aber vielleicht noch zum Thema Maschinenbausoftware:

wenn ich das hier so lese, dann bin ich doch froh, dass wir hier nur zu 
zweit sind. Aber: schon hier muss geplant werden (allerdings ohne 
irgendwelche spezielle Software).

Sehr bewährt hat sich, dass man nach dem ersten Anforderungskatalog 
eines Kunden eine gewisse Zeit verstreichen lässt, in der man selbst 
weitere Punkte sammelt und in der dem Kunden garantiert noch 
"Kleinigkeiten" einfallen - und erst dann überhaupt in die 
Softwareplanung geht. Und da ist dann noch lange keine einzige Zeile 
Code geschrieben.

Aber auch das "Was könnte der Kunde noch zusätzlich wollen?" hat viel 
mit Erfahrung zu tun, ebenso wie den Code so zu gestalten, dass später 
noch leicht Erweiterungen möglich sind.

von Programmierer (Gast)


Lesenswert?

Chris D. schrieb:
> Aber man darf natürlich auch nicht vergessen, dass man nicht viel kann,
> wenn man frisch aus dem Studium kommt und nichts nebenbei gemacht hat

Ja, aber das gilt für alle Studiengänge. Tatsächlich sind Informatiker 
hier eher im Vorteil, weil man im Studium und auch privat durchaus 
programmieren üben kann. Maschinen bauen oder Labor-Experimente sind da 
schon etwas schwieriger.

Chris D. schrieb:
> Aber ehrlich: irgendwo ist das doch Wahnsinn, wenn für eine simple
> Taschenlampen-App (also im Prinzip etwas, das auf Knopfdruck eine LED
> ein- und ausschalten muss) mittlerweile tatsächlich 5 MByte
> heruntergeladen werden müssen.

Das ist aber ein ganz anderes Problem. Google hat hier entschieden, dass 
das das kleinere Übel ist: Die Apps bringen ihre eigenen Libraries und 
Frameworks mit, alles zusammen in der .apk Datei. Das führt dazu dass 
beliebte Frameworks - auch die, die von Google selbst stammen - 
dutzendfach auf dem selben Gerät installiert sind. Dies ließe sich durch 
einen Paketmanager wie APT lösen, welcher die Bibliotheken bei Bedarf 
einmalig zentral installiert, die dann von den Apps benutzt werden 
können. Ein solches System wäre, wie eben APT, aber derart komplex, 
schwer beherrschbar und damit auch fehleranfällig, dass man das dem 
Normalo-Android-User nicht zutrauen wollte. Unter Windows kennt man das 
als "Dll-Hell". Die pragmatische Lösung ist es, nur ein Minimum an 
gemeinsamer Funktionalität mit Android selbst auszuliefern (das 
Android-Framework), und den Rest bringen die Apps selbst mit. Die 
funktionieren dafür praktisch "immer" und man kann sie auch leichter 
wieder deinstallieren, ohne Abhängigkeits-Chaos.

Dass APT in der Praxis so gut funktioniert ist den Maintainern zu 
danken, welche unermüdlich mit riesigem Aufwand die Paketdatenbanken 
pflegen. Das ist im schnelllebigen Mobile-Bereich, wo ständig neue Apps 
und App-Versionen herauskommen, kaum zu stemmen. Wer mal eine Distro 
genutzt hat, welche bei allen Paketen immer brandaktuelle Versionen 
ausliefert kann ein Lied singen von unlösbaren Abhängigkeitsproblemen 
(die gerne auch Updates komplett blockieren), die man nur durch 
komplizierte Fummelei auflösen kann.

Dazu kommt, dass Apps Medien (Grafik, Video, Ton) für verschiedene 
Sprachen und verschiedene Display-Auflösungen mitliefern. Das kann auch 
eine Menge Platz belegen. Google versucht das mit App Bundles in den 
Griff zu bekommen, was aber seine eigenen Probleme hat.

Chris D. schrieb:
> Und dann schaut man sich eine alte Sinumerik 810T-CNC-Steuerung an,

Kann man da auch beliebige Apps von Drittherstellern installieren ohne 
dass diese sich in die Quere kommen oder unauthorisierten Zugriff auf 
Daten erhalten, eigene Apps ultrakomfortabel mit einer IDE entwickeln, 
komplexe GUIs mit Medieninhalten bauen, Daten über verschiedene 
Netzwerke austauschen, und sodass das ganze auch noch ziemlich sicher 
ist?

Das Problem, beliebige Anwendungen und Komponenten kombinieren und 
flexibel, effizient, robust und benutzerfreundlich ausliefern zu können 
ist praktisch ungelöst. Wenn jemand eine Lösung hat, immer raus damit.

von Dirk K. (merciless)


Lesenswert?

Bernd K. schrieb:
> Dirk K. schrieb:
>> Ändert man den enum, sind bei den ersten beiden Klassen
>> alle Aufrufe im Client-Code zu ändern, die auf den enum
>> zugreifen.
>
> In diesem Sinne also nur noch Klassen ohne jegliches öffentliche
> Interface? Und auch keine öffentlichen Funktionen mehr in jeglichem
> Code? Denn man könnte ja gezwungen sein das API zu ändern und dann
> müssten alle Benutzer angepasst werden? Sorry, aber diese Argumentation
> die Du da vorgebracht hast ist ungültig.
Nope, es muss das Ziel sein, Abhängigkeiten zu
minimieren und Kapselung zu maximieren. Aber
diesen Idealfall wird man in der Praxis nie
erreichen. Ein gutes Design findet dann halt
einen Kompromiss, mit dem man Leben kann.

Das wiederum ist das, was viele Nicht-Informatiker
nicht verstehen und davon ausgehen, Overengineering
macht den guten Informatiker aus - mitnichten.

Ich programmiere typischerweise keine Software
für Embedded Systeme, hatte aber auch schon
Projekte, die zeitkritisch waren. Man fängt halt bei
einer Lösung an, die nahe am Ideal liegt und muss
dann Kompromisse finden, um die Ausführungszeit
zu drücken. Da schrumpft dann die Klassenhierarchie
und Indirektionen durch Benutzung von Interfaces
verschwinden etc.

Die Leute aus der Hardwareecke rotzen typischerweise
ein paar tausend Zeilen globale C-Funktionen hin
und meinen gute Software zu schreiben. Denen fehlt
meistens der Blick aus der anderen Richtung.

Erst sauberen Code schreiben, auf Wartungsfreundlichkeit,
achten etc., dann kann man über Optimierungen reden,
um den Code schneller zu machen.

merciless

: Bearbeitet durch User
von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Programmierer schrieb:
> Jetzt lästern schon die Mods verallgemeinernd über Informatiker...
Ich hatte die paar, mit denen ich direkt zu tun hatte, beispielhaft 
angebracht. Wo habe ich Ansprüche auf die Allgemeingültigkeit meiner 
Beobachtungen gestellt?

Programmierer schrieb:
> Chris D. schrieb:
>> Nein, das tut Lothar nicht. Es geht offenbar nur um diejenigen, die
>> "Hardware zur Maschinensteuerung zu programmieren hatten".
> Und auch Maschinensteuerung ist etwas was Informatiker durchaus
> beherrschen können.
Tun die, die ich da "nachgebildet" habe, ja jetzt auch. Nur wussten sie 
das eben vorher offensichtlich nicht. Oder nicht hinreichend.

Chris D. schrieb:
> Und dass sie nur wenig Zeit brauchten, um Lothars Erfahrungen
> aufzunehmen, zeigt ja, dass sie durchaus fähig sind.
Ja, es wurde ihnen einfach nicht beigebracht. Oder es wurde nicht darauf 
hingedeutet, dass das wichtig wäre. Oder sie haben es vergessen. 
Oderwasweißich.
Wobei nach eigener Aussage bis dahin die wenigsten mal ein Assemblerfile 
ihres Codes angeschaut oder gar näher analysiert hatten...


Programmierer schrieb:
> Tatsächlich sind Informatiker hier eher im Vorteil, weil man im Studium
> und auch privat durchaus programmieren üben kann. Maschinen bauen oder
> Labor-Experimente sind da schon etwas schwieriger.
Allerdings ist es halt so, dass man zum Lernen einer Srategie zur 
Steuerungsprogrammierung eben auch eine Steuerung haben muss, die im 
Ideal auch was steuert. Denn sonst lernt man bestenfalls, 
Reaktionszeiten im 100ms Bereich zu programmieren, weil ein Mensch an 
der Tastatur oder der Maus eben nicht viel schneller ist.
Und an der Maschine/Hardware selber muss man dann eben 1000 mal 
schneller reagieren und darf auch nicht unnötig herumtrödeln.

Am Rande: gerade habe ich das "Problem" an der Backe, dass ein 
Software-Kollege vor dem Speichern von Logdaten den Powerfail nicht 
abfragt und deshalb SD-Karten korrumpiert werden. Der hat mich dann 
vorwurfsvoll angeschaut und gemeint, das müsse doch die Hardware 
sicherstellen, dass das Schreiben funktioniert...  :-o

: Bearbeitet durch Moderator
von Bernd K. (prof7bit)


Lesenswert?

Dirk K. schrieb:
> Nope, es muss das Ziel sein, Abhängigkeiten zu
> minimieren und Kapselung zu maximieren.

Das erreichst Du aber nicht mit pauschalen Fausregeln wie oben (die von 
sich aus an dem Grundproblem gar nichts ändern) sondern nur durch viel 
allgemeinere Praktiken und Überlegungen bei der Planung der Architektur 
die sich meist nicht auf einfaches "tu dieses anstatt jenem dann ist 
alles gut" herunterbrechen lassen. Über dieses Thema kann man ganze 
Bücher schreiben.

Wenn ein naiver Anfänger nämlich jetzt liest daß ein öffentliches enum 
per se böse sein soll und damit im Hinterkopf dann überall mit aller 
Gewalt anfängt seinen Code seitenweise mit is_foo(), is_bar(), is_baz(), 
..., set_foo(), set_bar(), set_baz(), ... vollzupflastern und dann als 
nächstes überall nochmal seitenweise if/else oder switch-Konstrukte 
braucht um dieses umständliche API zu bedienen anstatt einfach den wert 
des enums zu speichern oder weiterzureichen ist niemandem gedient!

Es gibt enums da weiß man von vornherein daß sie sich niemals ändern 
werden und es gibt enums da weiß man vorher schon daß sie unvollständig 
sind. Aber gerade letztere haben so viele Elemente daß Dein 
is_foo()/is_bar()/... Ansatz sowieso vollkommen unpraktikabel ist, dann 
nimmt man (zumindest nach außen hin) vielleicht auch kein enum sondern 
numerische Konstanten, aber das muß man im Einzelfall entscheiden: Wer 
benutzt diese API überhaupt? Kann ich in einem einzigen commit den 
Datentyp überall ändern ohne daß es jemals nach außen dringt?

Auf jeden Fall wie auch immer man es macht, es hat nichts mit Properties 
vs setter/getter zu tun, das ändert absolut nichts am Grundproblem wie 
man API-Brüche vermeidet. Einen Setter braucht man in der Regel nur dann 
wenn das Setzen auch eine Aktion auslösen soll, meist weiß man das aber 
vorher schon, und da kommt es auch auf die Programmiersprache an, es 
gibt auch Sprachen da kann man nachträglich bei Bedarf noch hooks an 
Property-Zugriffe dranhängen und am öffentlichen API ändert sich dadurch 
dann gar nichts, oder man kann Properties haben die read-only sind, da 
kann man sich den ganzen getter/setter-Bloat und die daran hängende 
ewige Diskussion um die Sinnhaftigkeit dann komplett sparen!

von Lothar (Gast)


Lesenswert?

Ing schrieb:
> nahmhaften Unternehmen dieser Branche komplexe (Hochsprachen-)Software

Also im Maschinenbau wären das in dieser Reihenfolge VB .net und VB 6 / 
RealBasic / Xojo und neuerdings PyQt

von Dirk K. (merciless)


Lesenswert?

Bernd K. schrieb:
> Dirk K. schrieb:
>> Nope, es muss das Ziel sein, Abhängigkeiten zu
>> minimieren und Kapselung zu maximieren.
>
> Das erreichst Du aber nicht mit pauschalen Fausregeln wie oben
> ...
> Wenn ein naiver Anfänger nämlich jetzt liest daß ein öffentliches enum
> per se böse sein soll und damit im Hinterkopf dann überall mit aller
> Gewalt anfängt seinen Code seitenweise mit is_foo(), is_bar(), is_baz(),
> ..., set_foo(), set_bar(), set_baz(), ... vollzupflastern und dann als
> nächstes überall nochmal seitenweise if/else oder switch-Konstrukte
> braucht um dieses umständliche API zu bedienen anstatt einfach den wert
> des enums zu speichern oder weiterzureichen ist niemandem gedient!

Ja immer schön auf dem enum rumreiten:
Das war ein Beispiel, um Kapselung zu
demonstrieren, das kann man doch nicht
verallgemeinern!

Ach, heute ist ja Freitag...

merciless

von Mark B. (markbrandis)


Lesenswert?

Lothar M. schrieb:
> Am Rande: gerade habe ich das "Problem" an der Backe, dass ein
> Software-Kollege vor dem Speichern von Logdaten den Powerfail nicht
> abfragt und deshalb SD-Karten korrumpiert werden. Der hat mich dann
> vorwurfsvoll angeschaut und gemeint, das müsse doch die Hardware
> sicherstellen, dass das Schreiben funktioniert...  :-o

Im Grunde genommen hat er ja auch Recht:
Keine Software der Welt kann etwas gegen einen plötzlichen Ausfall der 
Versorgungsspannung unternehmen. Denn wenn keine Spannung da ist, läuft 
die Software nun mal nicht (mehr).

Deshalb gibt es zur Lösung solcher Probleme eine Pufferung über eine 
alternative Spannungsversorgung. Sei es eine Batterie, oder ein 
entsprechend groß dimensionierter Kondensator, ...
Dann fährt man das System eben sauber herunter, wenn ein 
Spannungsausfall detektiert wurde, und gut ist.

von Chris D. (myfairtux) (Moderator) Benutzerseite


Lesenswert?

Mark B. schrieb:
> Deshalb gibt es zur Lösung solcher Probleme eine Pufferung über eine
> alternative Spannungsversorgung. Sei es eine Batterie, oder ein
> entsprechend groß dimensionierter Kondensator, ...
> Dann fährt man das System eben sauber herunter, wenn ein
> Spannungsausfall detektiert wurde, und gut ist.

So hatte ich Lothar verstanden: solange kein Signal "Powerfail" anliegt, 
ist das Schreiben der Karte problemfrei bzw. die Versorgung ausreichend 
gepuffert (vermutlich mit Vorgabe der maximalen Pufferzeit).

Verabsäumt man aber dessen Abfrage, dann wird das Schreiben zur 
Glückssache und das ist hier offenbar prompt schief gegangen.

Es ist also durchaus eine Sache der Software.

von Mark B. (markbrandis)


Lesenswert?

A. S. schrieb:
> Konkrete Objekte werden dann meist alibi-mäßig genauso gehandhabt ("ich
> leite alle 4 Räder von der Klasse Rad ab! und instanziiere sie dann."
> Super, hier ein Lutscher). Das ist quatsch. Es gibt genau 4 Räder am
> Auto, und alle 4 haben spezifische Eigenschaften und es macht überhaupt
> keinen Sinn, ein 5tes zu instanziieren oder nur 3. Kein DSP kommt damit
> klar, wenn man ein Rad weglässt oder 2 tauscht. Globale Objekte spiegeln
> hier nur die Aufgabe wieder und sind nicht böse. Wie weit das ignoriert
> wird, zeigt sich, wenn Autosar (wo Milliarden hinterstehen) als Gebastel
> angesehen wird, weil es den EDV-Mantras nicht folgt.

Schon recht.

Es gibt freilich auch Fälle beim Automobil, wo es sinnvoll sein kann 
wenn man mehr oder weniger Objekte instanziieren kann. Zum Beispiel 
haben manche Autos vorne und hinten elektrische Fensterheber, manche nur 
vorne und hinten nicht, manche gar keine. Auch manche 
Ausstaatungsverianten kann man vielleicht sinnvoll mit OOP abbilden. 
Wenn das entsprechende System verbaut ist, wird eben instanziiert, wenn 
nicht dann eben nicht.

Aber klar: Man muss nicht alles mit OOP machen. Und auch wenn man in C++ 
etc. prgrammiert, kann es durchaus globale Objekte geben. Wenn diese 
sinnvoll mit der Realität übereinstimmen, wie bei dem Beispiel mit den 
genau 4 Rädern, dann ist das doch okay so.

von Mark B. (markbrandis)


Lesenswert?

Chris D. schrieb:
> So hatte ich Lothar verstanden: solange kein Signal "Powerfail" anliegt,
> ist das Schreiben der Karte problemfrei bzw. die Versorgung ausreichend
> gepuffert (vermutlich mit Vorgabe der maximalen Pufferzeit).
>
> Verabsäumt man aber dessen Abfrage, dann wird das Schreiben zur
> Glückssache und das ist hier offenbar prompt schief gegangen.
>
> Es ist also durchaus eine Sache der Software.

Die alternative Spannungsversorgung sollte natürlich noch so lange 
funktionieren, dass man sauber protokollieren kann was geschehen ist. 
Sonst weiß man ja hinterher gar nicht, warum das System ausgefallen 
ist. Viel Spaß dann bei der Fehlersuche! ;-)

Wenn man also den Log-Vorgang nicht mehr sinnvoll abschließen kann, weil 
einem vorher schon der Saft ausgeht, dann ist das zumindest nicht 
alleine ein Problem der Software.

: Bearbeitet durch User
von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Mark B. schrieb:
> Im Grunde genommen hat er ja auch Recht: Keine Software der Welt kann
> etwas gegen einen plötzlichen Ausfall der Versorgungsspannung unternehmen.
Lies mal, was ich geschrieben habe: natürlich ist ein Powerfail-Signal 
da. Man muss es verwenden. Es ging mir eher darum, dass es dem 
Softwerker überhaupt nicht bewusst war, dass es da überhaupt ein 
Problem geben könnte.

> ein entsprechend groß dimensionierter Kondensator
Dass wir angesichts der knappen Stützzeit dieser Komponente vorher in 
der Spec festgehalten hatten, dass keine Schreibzugriffe auf die 
SD-Karte erfolgen dürfen, ist dabei nur ein kleiner Nebenschauplatz. Es 
ergab sich eben "mit der Zeit", dass die Logdaten gespeichert werden 
müssen.

Mal sehen, wie ich aus der Nummer wieder rauskomme...

: Bearbeitet durch Moderator
von Mark B. (markbrandis)


Lesenswert?

Lothar M. schrieb:
> Mark B. schrieb:
>> Im Grunde genommen hat er ja auch Recht: Keine Software der Welt kann
>> etwas gegen einen plötzlichen Ausfall der Versorgungsspannung unternehmen.
> Lies mal, was ich geschrieben habe: natürlich ist ein Powerfail-Signal
> da. Man muss es verwenden. Es ging mir eher darum, dass es dem
> Softwerker überhaupt nicht bewusst war, dass es da überhaupt ein
> Problem geben könnte.
>
>> ein entsprechend groß dimensionierter Kondensator
> Dass wir angesichts der knappen Stützzeit vorher in der Spec
> festgehalten hatten, dass keine Schreibzugriffe auf die SD-Karte
> erfolgen dürfen, ist dabei nur ein kleiner Nebenschauplatz. Es ergab
> sich eben "mit der Zeit", dass die Logdaten gespeichert werden müssen.
>
> Mal sehen, wie ich aus der Nummer wieder rauskomme...

Nun ja, ohne vernünftiges Mitloggen der Fehlermeldungen stelle ich mir 
die Fehlersuche eher schwierig vor. Aber ich kenne das System und die 
Anforderungen an dieses nicht. Nur wenn man nicht mehr loggen kann, 
obwohl es gerade äußerst sinnvoll wäre dies zu tun, dann ist das 
zumindest sagen wir suboptimal :-)

von motzkopp (Gast)


Lesenswert?

Lothar schrieb:
> Ing schrieb:
>> nahmhaften Unternehmen dieser Branche komplexe (Hochsprachen-)Software
>
> Also im Maschinenbau wären das in dieser Reihenfolge VB .net und VB 6 /
> RealBasic / Xojo und neuerdings PyQt


Im Maschbau wird echt VB häufig eingesetzt, oder ist das ein Scherz ? 
Für was, die Leitrechner ?

von A. S. (Gast)


Lesenswert?

motzkopp schrieb:
> Im Maschbau wird echt VB häufig eingesetzt, oder ist das ein Scherz ?
> Für was, die Leitrechner ?

Heute wohl nicht mehr, aber es war recht verbreitet, die 
Visualisierungen in VB zu machen. Oder halt alles, wo irgend ein 
Benutzer mit dem PC interagiert.

MFC und Windows API waren damals nicht wirklich intuitiv, Delphi gut 
aber exotisch (Pascal), QT und DotNet gabs noch nicht. Java auf Windows 
auch irgendwie Stiefmütterlich. Mit DotNet haben dann viele von denen, 
die in C eh µC gemacht haben, auf C# umgestellt, weil es ja C so ähnlich 
ist ;-)

von Cyblord -. (cyblord)


Lesenswert?

A. S. schrieb:
> Mit DotNet haben dann viele von denen,
> die in C eh µC gemacht haben, auf C# umgestellt, weil es ja C so ähnlich
> ist ;-)

Ist ja auch so. Im Vergleich zu VB oder MS Visual C++ ist C# eine 
wohltat.

: Bearbeitet durch User
von Bernd K. (prof7bit)


Lesenswert?

A. S. schrieb:
> auf C# umgestellt, weil es ja C so ähnlich
> ist ;-)

C# soll wohl ähnlicher zu ObjectPascal/Delphi (somit also exotisch) sein 
als jegliches C/C++-Derivat. Nur die geschweiften Klammern und die 
unsägliche Prefix-Typen-Grammatik wurde beibehalten damit der 
Kulturschock abgemildert wird.

: Bearbeitet durch User
von Programmierer (Gast)


Lesenswert?

Bernd K. schrieb:
> C# soll wohl ähnlicher zu ObjectPascal/Delphi (somit also exotisch) sein
> als jegliches C/C++-Derivat.

C# hat praktisch nichts mit C, C++, Pascal zu tun. Wenn schon ist C# 
sehr ähnlich zu Java, da beides auf Bytecode und einer VM basiert. Wie 
jetzt die Klammern aussehen und wo die Typen stehen ist ein rein 
kosmetischer Aspekt und sonst ziemlich egal.

Lothar M. schrieb:
> Es
> ergab sich eben "mit der Zeit", dass die Logdaten gespeichert werden
> müssen.

Ach, eine sich plötzlich ändernde Anforderung, die die Informatiker 
ausbaden müssen...

von Bernd K. (prof7bit)


Lesenswert?

Programmierer schrieb:
> da beides auf Bytecode und einer VM basiert

Das ist für die Sprache irrelevant, das ist nur ein 
Implementierungsdetail des zufällig gerade verwendeten Compilers.

von c# (Gast)


Lesenswert?

Bernd K. schrieb:
> Das ist für die Sprache irrelevant, das ist nur ein
> Implementierungsdetail des zufällig gerade verwendeten Compilers.

Zum einen das und auf der Zielmaschine kann man dann immer noch ngen 
drüber laufen lassen.

von Programmierer (Gast)


Lesenswert?

Bernd K. schrieb:
> Das ist für die Sprache irrelevant, das ist nur ein
> Implementierungsdetail des zufällig gerade verwendeten Compilers.

Gut zu wissen, dann schreibe ich meine AVR Programme demnächst in C#, 
weil ich dessen Syntax schöner finde als die von C.

von Motzkopp (Gast)


Lesenswert?

Dann will ich hier auch mal den Klugscheisser geben:
C# ist sehr sehr ähnlich zu Java, da hat Microsoft abgeschaut, was beide 
auszeichnet ist die Garbage Collection, man braucht sich um den Speicher 
nicht zu kümmern.
Anders als bei Delphi, C++, C. Die haben gemeinsam, dass es Pointer 
gibt, das kennt ein Java oder c# Entwickler nicht.
Und C ist die einzige nicht OOP Sprache von allen.

von klausi (Gast)


Lesenswert?

Ing schrieb:
> hatte ich bisher einfach nur Pech mit den Firmen oder ist das
> "branchenüblich"?

Nein, so ein Chaos ist branchenüblich und stammt aus vielen Dingen wie 
Unwissenheit,  Knappheit an Ressourcen,  Budget,  wie auch fehlendes QM, 
kein seriöses Requirement Engineering oder Tools u.v.m.

Auch in anderen traditionellen aber auch modernen Branchen üblich: man 
ist sich immer noch gewöhnt, in Projekten mit Office, x Wordversionen, 
xy Excelversionen und hunderte Mails zu arbeiten, vor allem verstaubte 
Projektleiter.

Grüsse
 klausi

von A. S. (Gast)


Lesenswert?

klausi schrieb:
> stammt aus vielen Dingen wie
> Unwissenheit,  Knappheit an Ressourcen,  Budget,  wie auch fehlendes QM,
> kein seriöses Requirement Engineering oder Tools u.v.m.

Gibt es sich alles. Ist in Summe aber nicht stichhaltig. Gerade Budget 
ist im Maschinenbau da, QM wurde quasi dort erfunden, und das deutscher 
Maschinenbau keine Anforderungen kennt bzw. Kundenwünsche erfüllt, ist 
auch nicht wirklich offensichtlich.

Vielleicht ist es doch so, dass sich offensichtlich falsche Methoden 
dann doch als das herausgestellt haben, was sie sind: falsch.


Ja, wenn die Schreiner Doors verwenden würden, ihre Zollstöcke 
regelmäßig kalibrieren und jeden Woche einen Tage am internen 
Qualitätszirkel teilnehmen würden, dann würden sich die vielen Fehler 
(vermessene Türen, falsche Maserung) sicher reduzieren.


Oder welche Fortschritte würde die Physik machen, wenn sie sich endlich 
wie die Mathematik rein auf Berechnungen stützt, anstatt an all diesen 
fehlerbehafteten Messungen festzuhalten,.

von Dirk K. (merciless)


Lesenswert?

Motzkopp schrieb:
> Dann will ich hier auch mal den Klugscheisser geben:
> C# ist sehr sehr ähnlich zu Java, da hat Microsoft abgeschaut, was beide
> auszeichnet ist die Garbage Collection, man braucht sich um den Speicher
> nicht zu kümmern.
https://en.wikipedia.org/wiki/C_Sharp_(programming_language)
Zitat: C# was designed by Anders Hejlsberg, ...

James Gosling, who created the Java programming language in 1994, and 
Bill Joy, a co-founder of Sun Microsystems, the originator of Java, 
called C# an "imitation" of Java; Gosling further said that "[C# is] 
sort of Java with reliability, productivity and security deleted." Klaus 
Kreft and Angelika Langer (authors of a C++ streams book) stated in a 
blog post that "Java and C# are almost identical programming languages. 
Boring repetition that lacks innovation," "Hardly anybody will claim 
that Java or C# are revolutionary programming languages that changed the 
way we write programs," and "C# borrowed a lot from Java - and vice 
versa. Now that C# supports boxing and unboxing, we'll have a very 
similar feature in Java." In July 2000, Hejlsberg said that C# is "not a 
Java clone" and is "much closer to C++" in its design.

https://en.wikipedia.org/wiki/Anders_Hejlsberg
Zitat:  He was the original author of Turbo Pascal and the chief 
architect of Delphi. He currently works for Microsoft as the lead 
architect of C# and core developer on TypeScript.

> Anders als bei Delphi, C++, C. Die haben gemeinsam, dass es Pointer
> gibt, das kennt ein Java oder c# Entwickler nicht.
Na na na: https://www.c-sharpcorner.com/article/pointers-in-C-Sharp/

merciless

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.