Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Moderne Softwareentwicklung (https://www.delphipraxis.net/202088-moderne-softwareentwicklung.html)

freimatz 26. Sep 2019 14:33

Moderne Softwareentwicklung
 
Da gibt es noch Firmen, die meinen mit Objektorientierung sei man modern. :wink:
Einige Schlagworte aus meiner Sicht nach Modernität sortiert:
- Maschinencode
- Assembler
- Hochsprache - Delphi
- Strukturierte Programmierung
- Objektorientierte Programmierung
- Unit-Tests
- Testdriven Programming
- Clean Code
- Dependency Injection
- MVVM u.ä.
- Domain Driven Design
- DevOps
Wo seid ihr gerade dran?
In meiner vorigen Firma gab es viele Klassen - nämlich die welche Delphi für jedes Fenster erzeugt hat :twisted:
Wo ich jetzt bin hat man obige Themen schon alle zumindest mal gehört und auch angewendet.
Ich selber bin gerade dran an Feature Flags die bei DevOps eine grössere Rolle spielen.

Neutral General 26. Sep 2019 14:40

AW: Moderne Softwareentwicklung
 
Alles unter Objektorientierung sind quasi nur "optionale Addons" in meinen Augen.
Nicht alles macht unter allen Umständen Sinn und man sollte nicht einfach blind auf das aufspringen was grad "modern" ist.
Und aus eigener Erfahrung kann ich sagen dass es eine ganze Weile und Aufwand braucht um ein Projekt, dass bis auf die VCL nicht viel mit OOP zu tun hat zu modernisieren bzw. aufzuräumen.
Man muss unten anfangen und sich langsam und mühsam nach oben arbeiten.

DasWolf 26. Sep 2019 14:51

AW: Moderne Softwareentwicklung
 
Zitat:

Zitat von freimatz (Beitrag 1448017)
Einige Schlagworte aus meiner Sicht nach Modernität sortiert:


Auf- oder absteigend sortiert?

Incocnito 26. Sep 2019 15:04

AW: Moderne Softwareentwicklung
 
Assembler Funktionen (und auch Assembler-optimierte Funktionen) werden in der Firma hier (nicht nur von mir) "echt geiler Sch**ß" genannt! :wink:

Es kommt immer darauf an, was ich wo mache. "Selbst" Assambler kann an den richtigen Stellen "richtig" sein, meinst du nicht?

hoika 26. Sep 2019 15:09

AW: Moderne Softwareentwicklung
 
Hallo,
Dependency Injection mag ich persönlich nicht.

mov ah,4ch
int 21h

dummzeuch 26. Sep 2019 15:11

AW: Moderne Softwareentwicklung
 
Wir sind schon bei AI Blockchain angelangt.

Stevie 26. Sep 2019 15:13

AW: Moderne Softwareentwicklung
 
Einfach mal nach Bei Google suchenmodern software development googlen - und die erste Handvoll Artikel lesen - z.B.
What is modern software development?

Dabei geht es weniger um die Details, ob ich assember oder hochabstrakten funktionalen Code schreibe, sondern den Prozess an sich.
Natürlich ist ein Punkt, ob man technisch noch auf der Höhe ist aber auch, ob man aktuelle und bewährte Methoden anwendet.

Und nicht, weil man ja ach so hip sein will mit agile, scrum und wadd nich alles, sondern, weil man qualitativ hochwertigen Code produzieren und mit geringstmöglichen Aufwand warten und erweitern will. Dazu gehört dann auch die ganze DevOps Geschichte wie CI (inklusive Tests). Aber auch so Dinge wie Versionsverwaltung, Issuetracker, Anforderungsmanagement, Codereviews etc

Man könnte auch sagen, desto mehr von Joels Fragen mit Ja beantwortet werden können, desto moderner ist man - und das ist dann erstmal eine ziemlich zeitlose Aussage, die nix mit aktuell gehypten technischen Dingen zu tun hat.

Um das an einem Extrem zu veranschaulichen, könnte man durchaus bei der Wartung einer Legacy Anwendung von anno tuck moderner sein, als wenn man die neusten Microservices mit AI und ML zusammenklöppelt.

freimatz 26. Sep 2019 15:58

AW: Moderne Softwareentwicklung
 
Hm, The Joel Test - danke gleich mal ausprobieren
  1. Do you use source control? Ja
  2. Can you make a build in one step? Was ist damit gemeint? Also wenn ich committe und pushe, dann läuft ein build an und sofern so eingeatellt kommt am ende ein setup raus.
  3. Do you make daily builds? Nein, builds werden nur gemacht wenn sich auch was geändert hat. Also an dern Werktagen ziemlich sicher
  4. Do you have a bug database? Ja
  5. Do you fix bugs before writing new code? Nein. Unser Prozess sieht vor, dass man erst die aktuelle Story fertig macht. Dann kommen in der Regel Fehler schon dran. (Fehler die zu einer neuen Story gehören kommen natürlcih schon vorher dran.)
  6. Do you have an up-to-date schedule? Keine Ahnung was das ist.
  7. Do you have a spec? Ja
  8. Do programmers have quiet working conditions? Einer ja, der Rest Nein ;-)
  9. Do you use the best tools money can buy? Ich schreibe hier in einem Delphi-Forum, also Nein :evil:
  10. Do you have testers? Ja
  11. Do new candidates write code during their interview? Weiss ich nicht.
  12. Do you do hallway usability testing? Nein. Und das ist gut so. Wenn mit "you" ich als Entwickler gemeint bin dann ist das nicht mein Job. Dafür gibts Requirement Engeneers.

Ja, selbst Assembler kann an den richtigen Stellen richtig sein. Ich bezweifle jedoch dass irgendjemand hier diese Stellen hat. :-P
AI, Blockchain, gibt es da einen Verwendungszweck den unseren Kunden nutzt?

Stevie 26. Sep 2019 16:53

AW: Moderne Softwareentwicklung
 
Zitat:

Zitat von freimatz (Beitrag 1448034)
Do you make daily builds? Nein, builds werden nur gemacht wenn sich auch was geändert hat. Also an dern Werktagen ziemlich sicher

Naja, zu nem Daily Build kann ja noch mehr gehören, als am Ende ein Setup rausplumpsen zu lassen. Das geht von excessiven Integrationstests, die man bei einem adhoc build bei jedem commit evtl nicht laufen lassen möchte bis zu automatisiertem Installieren und UI Testing - so dass sich nicht jemand hinsetzen muss und schauen muss ob das ganze Standardzeugs noch funktioniert. Leider ein noch sehr stiefmütterlich behandeltes Gebiet.

Zitat:

Zitat von freimatz (Beitrag 1448034)
Do you do hallway usability testing? Nein. Und das ist gut so. Wenn mit "you" ich als Entwickler gemeint bin dann ist das nicht mein Job. Dafür gibts Requirement Engeneers.

Meiner Meinung nach geht es hier nicht nur um usability testing der Endanwendung oder UI sondern auch um die Verwendung von Code durch andere Entwickler - ich kann aus eigener Erfahrung sagen, dass es nicht selten so ist, dass man denkt man hätte den geilsten Scheiss gebastelt, der den Kollegen das Leben erleichtern wird und denen schauderts jedes mal, wenn sie irgendwas davon benutzen müssen.

freimatz 26. Sep 2019 18:54

AW: Moderne Softwareentwicklung
 
Danke für deine Erklärungen.

Zu "Do you make daily builds?" Immer noch Nein. Das sind bei uns nightlies ;-)
Bei Tag lässt man Tests nach Bedarf laufen.

Zu "hallway usability testing": habe ein bischen gegoogelt. Da ging es meistens um Endanwender. Bei uns sind die Anwender eh alle aus dem technischen Gebiet. Trotzdem halte ich unsere Software für die am Besten bedienbare am Markt.
Wegen "Verwendung von Code durch andere Entwickler" - da gibt es halt CodeReviews

UntoterGeist 26. Sep 2019 21:36

AW: Moderne Softwareentwicklung
 
Bei Objektorientierung steig ich dann mal aus. Den Rest hab ich zum Teil noch nie nicht mal was von gehört. Und mit Blockchain kann ich sowieso nichts anfangen. Wieso soll das ne neue Wissenschaft sein? Gibt's das auch als Studienfach? Oder als Schokoriegel?

Ich hab jetzt Code bekommen der ist von 1990 oder so und wird in der medizinischen Diagnostik eingesetzt. Und der sieht aus wie so vieles was ich schon vorgesetzt bekommen habe. Nicht das ich das nicht lesen und nachvollziehen kann. Aber ist schon sehr .. mir fehl das passende Wort. Sehr komisch, merkwürdig oder .. was auch immer. Ich glaub ja, vieles was so auf dem Markt ist, ist nicht so toll, auch wenn alle rumschreien wie modern und innovativ sie sind. Und wenn dann macht es einfach der Umfang der Projekte es unmöglich, dass nicht irgendwelcher Beifang dabei entsteht.

Ich sitze auch privat an einem Projekt und es ist so, dass man abwägen muss, ob man nun seine ganze Zeit in eine Funktion steckt oder ob man einfach weiter macht um irgendwann mal fertig zu werden.

Gausi 27. Sep 2019 09:38

AW: Moderne Softwareentwicklung
 
Zum Thema Blockchain: Gibt es überhaupt jemanden, der diesen Begriff ernsthaft verwendet, also nicht ironisch? D.h. abgesehen von
  • Crypto-Währungs-Jüngern, also BitCoin und allen anderen, die alles noch "besser" machen als BitCoin, um auch was von dem Schneeballsystem abgreifen zu können?
  • Politiker, die schlaue Sachen sagen wollen, um zu verbergen, dass sie bei "Browser" an das Ding an der Dusche denken, wo das Wasser rausbraust?
  • hippe Startup-Unternehmen, die damit übereifrigen Investoren Geld aus der Tasche ziehen wollen?
  • Grundlagen-Forschern, die sich damit beschäftigen
Als kleine Anekdote: Zur Vorbereitung zu meiner Doktorprüfung (theoretische Informatik, Bereich Algorithmen und Datenstrukturen) meinte mein Prof auf dem Weg in die Mensa, ich solle unbedingt was zu Blockchain lernen. Wir haben dann beide kurz gelacht, kurz noch über "Cyber machine learning in der Cloud" gefaselt, und das Thema war vom Tisch. :lol:

Das Thema Blockchain ist sicherlich nicht uninteressant, gerade auch als Forschungsbereich. Es hat aber in der Praxis längst nicht den Einfluss oder Nutzen, der seitens Medien und Politik herbeifantasiert wird, und wird es imho auch nie haben. Ich vergleiche das gerne mit der Verwendung der Zahl "2000" in den 80er und 90er Jahren. Was früher die "Wunderharke 2000" war, ist aktuell die "Cyberharke Blockchain".

Ansonsten zur Auflistung: Da werden ja einige Konzepte durcheinander gewürfelt. Clean Code z.B. ist sicherlich auch mit prozeduraler Programmierung möglich, und Unit-Tests geht bestimmt auch irgendwie bei Assembler. Dinge wie MVVM beschreiben ja im Wesentlichen die Trennung von Logik und Darstellung (stark vereinfacht). Dass das jemand nicht beachtet, merkt man dann bei Anfängerfragen im Forum, die so anfangen: "Wie kann ich machen, dass X passiert, wenn man auf einen Button klickt ...?" :stupid:

TiGü 27. Sep 2019 11:27

AW: Moderne Softwareentwicklung
 
Passend zu den ersten Teil von Gausis Post:

Fefes neuster Vortrag zum Thema Hype-Tech:

http://ptrace.fefe.de/hype2/#0

Viel Spaß! :-D

dummzeuch 27. Sep 2019 14:17

AW: Moderne Softwareentwicklung
 
Zitat:

Zitat von Gausi (Beitrag 1448138)
Zum Thema Blockchain: Gibt es überhaupt jemanden, der diesen Begriff ernsthaft verwendet, also nicht ironisch?

Es war also trotz fehlender Ironie-Tags erkennbar? Ich machte mir schon Sorgen. Und dabei habe ich sogar extra noch AI als Prefix verwendet.

p80286 27. Sep 2019 17:55

AW: Moderne Softwareentwicklung
 
Zitat:

Zitat von dummzeuch (Beitrag 1448170)
Es war also trotz fehlender Ironie-Tags erkennbar? Ich machte mir schon Sorgen. Und dabei habe ich sogar extra noch AI als Prefix verwendet.

Es gibt so viele Wortgeklingel-Säue die durchs Dorf getrieben werden, da hat auch daß mich nicht gewundert.


Gruß
K-H

UntoterGeist 28. Sep 2019 23:51

AW: Moderne Softwareentwicklung
 
Das ganze moderne Zeug ist aber irgendwie auch alt. Wann wurden die agilen Prinzipien ausgerufen? Wo beginnt OOP? Das gilt auch für andere Mechaniken, die dann plötzlich hip oder als groovie ausgerufen werden. Das nächste Ding ist halt deep-Learning, was schon jetzt an seine Grenzen gerät.

Was ich meinte ist zum einen: Es ist nicht alles Gold was glänzt und es wird nicht so heiß gegessen wie es gekocht wird.

Und diese ganzen neuen Methoden sind ja schön. Aber in wiefern verbessern oder beschleunigen sie was?

p80286 29. Sep 2019 10:01

AW: Moderne Softwareentwicklung
 
Zitat:

Zitat von UntoterGeist (Beitrag 1448309)

Und diese ganzen neuen Methoden sind ja schön. Aber in wiefern verbessern oder beschleunigen sie was?

Naja ich hab versucht mich mit dem "TestDriven" auseinander zu setzen. Letztlich geht es darum sich im Vorfeld darüber klar zu werden was schief gehen kann, und dementsprechend daran orientiert das eigentliche Programm zu schreiben.

Wie sagte mal ein Kollege vor ein paar Jahren "Nur Vollidioten glauben, daß alles so läuft wie der Programmierer es wünscht. Grundsätzlich mußt Du vom schlimmsten ausgehen und Dein Programm daran orientieren."

Der Spruch ist älter als Testdriven und OOP zusammen.

Gruß
K-H

jfheins 29. Sep 2019 21:37

AW: Moderne Softwareentwicklung
 
Moin :-)
Zitat:

Zitat von p80286 (Beitrag 1448345)
Zitat:

Zitat von UntoterGeist (Beitrag 1448309)

Und diese ganzen neuen Methoden sind ja schön. Aber in wiefern verbessern oder beschleunigen sie was?

Naja ich hab versucht mich mit dem "TestDriven" auseinander zu setzen. Letztlich geht es darum sich im Vorfeld darüber klar zu werden was schief gehen kann, und dementsprechend daran orientiert das eigentliche Programm zu schreiben.

Halte ich so für unrichtig.

Test driven sagt ja erstmal, dass die die Anforderungen die du bekommt erst in einen Test gießen sollst und dann umsetzen.
Ergebnis sollte ein Programm sein, dass die Business-Logik nicht nur gemäß den Anforderungen umsetzt, sondern dies (mehr oder weniger beweisbar) tut. Alle Tests grün = alle Anforderungen erfüllt.

Der Benefit ist nun, dass du nach Änderungen (Refactorings, Features, Bugfixes) die Tests laufen lassen kannst und relativ sicher sein kannst, dass die keine neuen Bugs erzeugt hast. Wenn doch, dann war das entweder eine Spezifikationslücke (und deshalb gab es keinen Test) oder der Test hat die Spec nicht ausreichend abgedeckt.

Was natürlich nicht passieren darf ist "ich ändere das mal so und so, um dem Bug zu fixen, und dann schau ich welche Tests kaputt sind um die dann auch anzupassen" - das ist sinnfrei und kein TDD.

p80286 29. Sep 2019 21:55

AW: Moderne Softwareentwicklung
 
Zitat:

Zitat von jfheins (Beitrag 1448391)
Was natürlich nicht passieren darf ist "ich ändere das mal so und so, um dem Bug zu fixen, und dann schau ich welche Tests kaputt sind um die dann auch anzupassen" - das ist sinnfrei und kein TDD.

Nun, gerade um solche cleveren Lösungen zu unterbinden werden wohl Methoden wie TDD propagiert. Das diese dann vom Hilfsmitel zur Quasireligion mutieren nunja.....

Gruß
K-H

Uwe Raabe 29. Sep 2019 23:11

AW: Moderne Softwareentwicklung
 
Zitat:

Zitat von p80286 (Beitrag 1448392)
Nun, gerade um solche cleveren Lösungen zu unterbinden werden wohl Methoden wie TDD propagiert. Das diese dann vom Hilfsmitel zur Quasireligion mutieren nunja.....

Vielleicht braucht es bei TDD ähnlich wie bei der Religion auch sowas wie einen Moment der Erleuchtung. Genauso wird es auch bei TDD wohl niemanden geben der gänzlich frei von Sünde ist.

freimatz 30. Sep 2019 07:32

AW: Moderne Softwareentwicklung
 
Zitat:

Zitat von UntoterGeist (Beitrag 1448309)
Das ganze moderne Zeug ist aber irgendwie auch alt. Wann wurden die agilen Prinzipien ausgerufen? Wo beginnt OOP? Das gilt auch für andere Mechaniken, die dann plötzlich hip oder als groovie ausgerufen werden. Das nächste Ding ist halt deep-Learning, was schon jetzt an seine Grenzen gerät.

Was ich meinte ist zum einen: Es ist nicht alles Gold was glänzt und es wird nicht so heiß gegessen wie es gekocht wird.

Und diese ganzen neuen Methoden sind ja schön. Aber in wiefern verbessern oder beschleunigen sie was?

Wann wurden die agilen Prinzipien ausgerufen? Das Agile Manisfest war von Februar 2001.
Wo beginnt OOP? Ist das eine rhetorische Frage?
Natürlich ist nicht alles Gold was glänzt - viele schauen nicht mal nach ob das was glänzt Gold sein könnte. Es wird nicht so heiß gegessen, ja, aber viele essen nicht mal kalt. :wink:
Und manche fallen auf der andere Seite des Pferdes wieder runter (bin ich auch schon öfters). Andere steigen erst gar nicht auf. :wink:

TDD wurde schon genannt. Ich hatte am Anfang grosse Mühe damit. Inzwischen verwende ich es immer wo ich kann. Wenn es geht habe ich erlebt bin ich schneller fertig und damit schneller beim Kunden. Wenn es nicht geht liegt es meist daran,
1. dass nicht klar ist, was das Ding überhaupt können muss, oder
2. dass der Code an dem ich was ändere gar nicht testbar ist
Beides ist jedoch kein Mangel an TDD selber.

dummzeuch 30. Sep 2019 08:20

AW: Moderne Softwareentwicklung
 
Zitat:

Zitat von jfheins (Beitrag 1448391)
Was natürlich nicht passieren darf ist "ich ändere das mal so und so, um dem Bug zu fixen, und dann schau ich welche Tests kaputt sind um die dann auch anzupassen" - das ist sinnfrei und kein TDD.

Auch das kann legitim sein, wenn sich z.B. herausstellt, dass die Tests nicht korrekt die Anforderung wiedergaben oder selbst fehlerhaft waren. Tests sind schließlich auch nur Code und der kann Bugs enthalten.

Uwe Raabe 30. Sep 2019 08:59

AW: Moderne Softwareentwicklung
 
Zitat:

Zitat von dummzeuch (Beitrag 1448433)
Auch das kann legitim sein, wenn sich z.B. herausstellt, dass die Tests nicht korrekt die Anforderung wiedergaben oder selbst fehlerhaft waren. Tests sind schließlich auch nur Code und der kann Bugs enthalten.

In dem Fall würde man aber erst die Tests korrigieren und danach, wenn die dann fehlschlagen, den eigentlichen Code.

Leider fallen viele Anwender von TDD in die Rot-Grün-Falle: Der Code wird solange angepasst, bis alle Tests grün sind. Dann geht es schon weiter zum nächsten Bug/Feature/Test. Der TDD-Zyklus ist damit aber noch gar nicht abgeschlossen, denn er besteht aus drei Schritten: write the test - write code to make the test green - refactor the code to make it clean. Der letzte Schritt wird leider viel zu oft übersprungen, da er leider sehr zeit-intensiv ist und einen guten Überblick über das Gesamtprojekt erfordert. Übrigens: Das Postulat schreibe nie mehr Code als nötig ist, um den Test grün zu machen ist hierzu kein Widerspruch. Wir schreiben ja nicht mehr Code, sondern ändern lediglich den vorhandenen. Dabei nutzen wir den grünen Test als Hinweis, daß wir beim Refactoring nichts kaputt gemacht haben.

dummzeuch 30. Sep 2019 09:28

AW: Moderne Softwareentwicklung
 
Zitat:

Zitat von Uwe Raabe (Beitrag 1448445)
Zitat:

Zitat von dummzeuch (Beitrag 1448433)
Auch das kann legitim sein, wenn sich z.B. herausstellt, dass die Tests nicht korrekt die Anforderung wiedergaben oder selbst fehlerhaft waren. Tests sind schließlich auch nur Code und der kann Bugs enthalten.

In dem Fall würde man aber erst die Tests korrigieren und danach, wenn die dann fehlschlagen, den eigentlichen Code.

Was voraussetzt, dass man weiß, dass die Tests fehlerhaft sind. Wenn man das aber erst sieht, weil sie nach einer Änderung am Code fehlschlagen, dann kann man sie auch erst dann anpassen.

freimatz 30. Sep 2019 09:46

AW: Moderne Softwareentwicklung
 
Äh, Nein.
Wenn man einen Code zu ändern hat, dann sucht man bei TDD erst den dazugehörigen Test und ändert dann erst den. Und danach dann den produktiven Code.

Uwe Raabe 30. Sep 2019 10:24

AW: Moderne Softwareentwicklung
 
Zitat:

Zitat von freimatz (Beitrag 1448452)
Äh, Nein.
Wenn man einen Code zu ändern hat, dann sucht man bei TDD erst den dazugehörigen Test und ändert dann erst den. Und danach dann den produktiven Code.

Nein, eben nicht! Es ist auch bei TDD nicht nur üblich, sondern auch erwünscht, daß der Code geändert wird. Der Test ist ja gerade dazu da, daß man diese Änderung durchführen kann, ohne die Funktionalität des Codes zu verändern. Nirgendwo steht, daß man den Code nicht mehr ändern darf, sobald der Test auf grün steht. Das wäre genau das Gegenteil von dem, was man mit TDD erreichen will.

In dem Zusammenhang kann es auch vorkommen, daß ein Test verworfen, ersetzt oder verändert wird - z.B. weil er fehlerhaft ist.

freimatz 30. Sep 2019 10:39

AW: Moderne Softwareentwicklung
 
Hm, vermutlich habe ich Euch falsch verstanden. Ich dachte bei den Änderungen vom Code ginge es Änderungen weil das Programm nicht das tut was der Anwender erwartet.
Dass man den produktiven Code refaktorisiert darf und soll ohne die Tests anzupassen ist für mich klar.

dummzeuch 30. Sep 2019 11:08

AW: Moderne Softwareentwicklung
 
Zitat:

Zitat von freimatz (Beitrag 1448461)
Hm, vermutlich habe ich Euch falsch verstanden. Ich dachte bei den Änderungen vom Code ginge es Änderungen weil das Programm nicht das tut was der Anwender erwartet.
Dass man den produktiven Code refaktorisiert darf und soll ohne die Tests anzupassen ist für mich klar.

Es ging darum, dass nach den Anpassungen für eine neue Anforderung (für die zuerst Tests geschrieben wurden) ein anderer Test fehlschlägt und sich dann herausstellt, dass dieser Test fehlerhaft war.

In diesem Fall ist es natürlich korrekt, den Test anzupassen statt den Code so anzupassen, dass zusätzlich zu der neuen Anforderung auch der fehlerhafte Test wieder funktioniert.

twm


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:07 Uhr.

Powered by vBulletin® Copyright ©2000 - 2022, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf