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. |
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. |
AW: Moderne Softwareentwicklung
Zitat:
Auf- oder absteigend sortiert? |
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? |
AW: Moderne Softwareentwicklung
Hallo,
Dependency Injection mag ich persönlich nicht. mov ah,4ch int 21h |
AW: Moderne Softwareentwicklung
Wir sind schon bei AI Blockchain angelangt.
|
AW: Moderne Softwareentwicklung
Einfach mal nach modern 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. |
AW: Moderne Softwareentwicklung
Hm, The Joel Test - danke gleich mal ausprobieren
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? |
AW: Moderne Softwareentwicklung
Zitat:
Zitat:
|
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 |
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. |
AW: Moderne Softwareentwicklung
Zum Thema Blockchain: Gibt es überhaupt jemanden, der diesen Begriff ernsthaft verwendet, also nicht ironisch? D.h. abgesehen von
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: |
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 |
AW: Moderne Softwareentwicklung
Zitat:
|
AW: Moderne Softwareentwicklung
Zitat:
Gruß K-H |
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? |
AW: Moderne Softwareentwicklung
Zitat:
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 |
AW: Moderne Softwareentwicklung
Moin :-)
Zitat:
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. |
AW: Moderne Softwareentwicklung
Zitat:
Gruß K-H |
AW: Moderne Softwareentwicklung
Zitat:
|
AW: Moderne Softwareentwicklung
Zitat:
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. |
AW: Moderne Softwareentwicklung
Zitat:
|
AW: Moderne Softwareentwicklung
Zitat:
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. |
AW: Moderne Softwareentwicklung
Zitat:
|
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. |
AW: Moderne Softwareentwicklung
Zitat:
In dem Zusammenhang kann es auch vorkommen, daß ein Test verworfen, ersetzt oder verändert wird - z.B. weil er fehlerhaft ist. |
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. |
AW: Moderne Softwareentwicklung
Zitat:
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 02:52 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz