Connect with us

Entwicklung & Code

Warum objektive Schätzungen in der Softwareentwicklung nicht funktionieren


Kann man den Aufwand eines Softwareprojekts objektiv schätzen? Solche Zahlen als Ergebnis würden klären, wie lange die Implementierung einer Funktionalität dauert und was sie kostet. Das könnte bei der Beauftragung von Entwicklungsdienstleistungen helfen.

Weiterlesen nach der Anzeige


Eberhard Wolff

Eberhard Wolff

(Bild: 

Eberhard Wolff

)

Eberhard Wolff ist Head of Architecture bei SWAGLab und arbeitet seit mehr als zwanzig Jahren als Architekt und Berater, oft an der Schnittstelle zwischen Business und Technologie. Er ist Autor zahlreicher Artikel und Bücher, u.a. zu Microservices und trägt regelmäßig als Sprecher auf internationalen Konferenzen vor. Sein technologischer Schwerpunkt sind moderne Architektur- und Entwicklungsansätze wie Cloud, Domain-driven Design und Microservices.

Bei agilen Methoden kann der Aufwand einer Funktionalität als Story in Planungsmeetings abgeschätzt werden, um zu entscheiden, ob eine Story implementiert werden soll. Das ist optional: Das Schlagwort NoEstimates beschreibt Projekte ganz ohne Aufwandsschätzungen. Vorteil davon: Der Aufwand für die Schätzungen entfällt und kann in die Entwicklung von Storys fließen. Es reicht aus, wenn alle im Team gerade am wertvollsten Feature arbeiten. Woody Zuill ist ein Pionier auf diesem Gebiet und hat noch nie anders gearbeitet.

Eine Abschätzung von Storys basiert meistens auf einer Referenz-Story oder einer Funktionalität, der die Größe eins zugewiesen wird. Andere Storys werden relativ zu dieser Referenz abgeschätzt, und zwar durch und für das Team, das die Storys abschätzt. Hinzu kommt die Velocity (Geschwindigkeit) des Teams. Sie wird in implementierten Story Points pro Iteration gemessen und kann sich über den Projektverlauf ändern.

Also ist die Schätzung nicht objektiv, weil sie das jeweilige Team einbezieht und sich zudem die Velocity mit der Zeit ändert. Die Schätzungsmethodik erreicht aber das Ziel: Sie erlaubt eine Planung der Arbeit für Teams. Durch die Analogieschätzung zur Referenz-Story und die Velocity ist auch eine relativ gute Schätzung dazu möglich, was das Team leisten kann.

Natürlich kann man versuchen, diese Messungen zu objektivieren. Beispielsweise kann man eine einheitliche Referenz-Story wählen. Es gibt Ansätze, die noch deutlich weitergehen. Das Function-Point-Verfahren versucht, eine objektive Komplexität einer fachlichen Anforderung in Function Points zu messen. Auch diese Verfahren haben aber eine Streuung in der Abschätzung. Außerdem erfordern sie Erfahrung beim Schätzen und sind aufwendig. Verfahren wie COCOMO warnen sogar davor, dass die Ergebnisse nur grobe Richtungen und keine präzisen Schätzungen sind.

Weiterlesen nach der Anzeige

Die Nützlichkeit dieser Abschätzungen ist fragwürdig: Projekte ändern immer den Scope. Wenn Software in der Praxis genutzt wird, ergeben sich neue Wünsche. Softwareentwicklung ist ein Prozess, bei dem Technikerinnen und Nutzer gemeinsam lernen, wie man die Geschäftsprozesse am besten mit Software unterstützt. Wenn man etwas Neues lernt, wird man den Scope ändern. Dann sind präzise Abschätzungen über den ursprünglichen Scope nicht mehr viel wert und der Aufwand für die zusätzliche Präzision ist nicht sinnvoll investiert. Vielleicht ist das der Grund, warum man in der Praxis zwar agiles Schätzen genutzt wird, aber kaum ausgefeiltere Methoden.

Überhaupt ist der Fokus auf die Aufwandsseite bei Projekten oft übertrieben. Wie jedes Investment muss auch ein Investment in Software einen Wert erzeugen, der höher ist als das Investment – idealerweise um ein Vielfaches. Das Abschätzen des Werts scheint jedoch oft gegenüber dem Aufwand stiefmütterlich betrachtet zu werden.

Es gibt sehr kleine Teams, die extreme erfolgreiche Software entwickelt haben. Solche Ausreißer werfen die Frage auf, ob eine objektive Schätzung überhaupt machbar ist. Instagram war vor der Akquisition eine Milliarde Dollar wert, betrieb ein weltweit skaliertes System und das mit nur 13 Mitarbeitern und Mitarbeiterinnen. WhatsApp hatte vor der Akquisition 900 Millionen User; 50 Engineers haben dieses System entwickelt und betrieben. Das ist ein Bruchteil dessen, was viele IT-Projekte in etablierten Unternehmen an Personal hat.

Diese Anwendungen waren scheinbar aber nur eine einfache Foto-Sharing-App bzw. Messaging-App. Erklärt das den niedrigen Personalaufwand? Auch eine Versicherung oder ein Sparvertrag sind einfach: Man zahlt Geld ein und unter bestimmten Bedingungen bekommt man Geld zurück. Suchmaschinen sind auch einfach: Es gibt sogar Software von der Stange, mit der man Dokumente indizieren und durchsuchen kann.

Auf der oberflächlichen Ebene erscheint alles einfach. Die Komplexität des Problems wird erst klar, wenn man die Details betrachtet und das Problem wirklich versteht.

Unabhängig von der Komplexität: Der ökonomische Erfolg eines Projekts ist das eigentlich wichtigste Ergebnis. In diesem Bereich überzeugen Instagram und WhatsApp wirklich: Sie haben Milliarden an Werten geschaffen. Das ist fast nur für erfolgreiche Start-ups möglich. Auf jedes erfolgreiche Start-up kommen zahlreiche, die nicht erfolgreich sind.

Nehmen wir an, ein etabliertes Unternehmen würde eine Foto-Sharing-App oder Messaging-App bauen. Sie würde es mit ihren typischen Mechanismen bauen: potenziell Hundertschaften an Developern, ausgefeiltes Projektmanagement und Projektpläne. 13 Menschen, die ein zentrales System für den Durchbruch am Markt entwickeln, würden eher als ein Risiko wahrgenommen werden. Große Teams und Projekte führen außerdem zu viel Prestige – für alle Beteiligten, für Manager, aber auch Technikerinnen. Und schließlich haben etablierte Unternehmen meist viele Softwareprojekte und meist hängt von keinem das Überleben der Firma ab – anders als bei einem Start-up. Der Druck ist also objektiv geringer.

Es gibt also genügend Mechanismen, die zu einem ganz anderen Aufwand führen. Ein etabliertes Unternehmen wird also ein Softwaresystem mit den Mechanismen entwickeln, die es typischerweise nutzt, und findet sich in einer anderen Wettbewerbssituation als ein Start-up. In einem Start-up sind die wirtschaftlichen Bedingungen hingegen so, dass möglichst schnell irgendwas live gehen muss – mit den entsprechenden Konsequenzen.

Es ist außerdem unwahrscheinlich, dass ein etabliertes Unternehmen genau dieselbe Anwendung für ein Problem wie Foto-Sharing oder Messaging bauen würde. Die IT-Landschaft, in die sich die Anwendungen integrieren müssen, ist anders. Die Anforderungen können erweitert werden, was ein Start-up wegen der wirtschaftlichen Rahmenbedingungen nicht kann.

Ein Start-up würde daher vermutlich auch in Bereichen, die klassisch mit komplexen Softwaresystemen implementiert werden, eine viel einfachere Lösung entwickeln – weil sie eben schnell auf den Markt kommen müssen und ein sehr begrenztes Budget haben.

Den objektiven Aufwand bewerten zu wollen, ist dann noch weniger sinnvoll: Software löst ein Problem, das eine Organisation hat. Beispielsweise will die Organisation ein neues Produkt etablieren. Dazu greift es auf soziale Prozesse zurück, wie sie in der Organisation verankert sind. Für ein Start-up ist das Vorgehen eines etablierten Unternehmens genauso fremdartig, wie das Vorgehen eines Start-ups fremdartig für ein etabliertes Unternehmen ist. Das umfasst nicht nur das Vorgehen bei der Entwicklung, sondern auch das Produkt.

Am Ende sollte uns das auch nicht interessieren. Es geht nur darum, wie wir in der jeweiligen Situation bessere Software entwickeln können. Und dafür gibt es immer zahlreiche, spannende Möglichkeiten.

Objektiv den Aufwand für ein Feature festzustellen, ist vielleicht mit viel Aufwand möglich. Da es jedoch für die Planung unnötig und aufwendig ist, nutzen die meisten Projekte solche Techniken gar nicht erst. Software ist außerdem „nur“ eine Implementierung der Lösung eines Businessproblems. Organisationen gehen Probleme anders an, sodass alleine schon deswegen die Lösung und der Aufwand unterschiedlich sein werden. Dennoch kann und sollte man die Frage nach der Produktivität und einem besseren Vorgehen stellen.


(rme)



Source link

Entwicklung & Code

Fachbücher zu .NET 10.0, C# 14.0, Entity Framework Core 10.0 und Blazor 10.0


Dr. Holger Schwichtenberg ist technischer Leiter des Expertennetzwerks www.IT-Visions.de, das mit 53 renommierten Experten zahlreiche mittlere und große Unternehmen durch Beratungen und Schulungen sowie bei der Softwareentwicklung unterstützt. Durch seine Auftritte auf zahlreichen nationalen und internationalen Fachkonferenzen sowie mehr als 90 Fachbücher und mehr als 1500 Fachartikel gehört Holger Schwichtenberg zu den bekanntesten Experten für .NET und Webtechniken in Deutschland.



Source link

Weiterlesen

Entwicklung & Code

.NET 10.0 ist fertig | heise online


Die fertige Version von .NET 10.0 steht seit den Abendstunden des 11. November 2025 auf der Downloadseite kostenfrei zur Verfügung. Für .NET 10.0 benötigen Entwicklerinnen und Entwickler die Entwicklungsumgebung Visual Studio 2026 (alias Version 18.0), die ebenfalls gestern erstmals in einer stabilen Version erschienen ist.

Weiterlesen nach der Anzeige

Microsoft gewährt für .NET 10.0 einen Long-Term Support (LTS) von 36 Monaten, also von November 2025 bis November 2028. Für die vorherige Version .NET 9.0 endet der Support ebenfalls im November 2028, nachdem Microsoft im September bekanntgab, den ursprünglich auf 18 Monate begrenzten Support auf 24 Monate zu erweitern.

Diese Erweiterung gilt ab .NET 9.0 für alle Versionen mit Standard-Term Support (STS). .NET 11.0, das im November 2026 erscheinen soll (voraussichtlich wieder am zweiten Dienstag im November, also am 10.11.2026), wird wieder eine solche Version mit Standard-Term Support sein.


Der aktuelle Standard-Term und Long-Term Support für .NET

Der aktuelle Standard-Term und Long-Term Support für .NET

Der aktuelle Standard-Term und Long-Term Support für .NET

(Bild: Microsoft)

Der Aufbau von .NET 10.0 ist fast der gleiche wie bei .NET 9.0 (siehe Abbildung): zahlreiche Anwendungsarten laufen auf Basis eines gemeinsamen Software Development Kit (SDK), einer gemeinsamen Basisklassenbibliothek, den Sprachen C#, F# und Visual Basic .NET sowie dem in (fast) allen Anwendungsarten verwendbaren objektrelationalen Mapper Entity Framework Core. Anders als der Vorgänger Entity Framework Core 9.0, der auf .NET 8.0 und .NET 9.0 nutzbar war, läuft die Version 10.0 des objektrelationalen Mappers ausschließlich auf .NET 10.0. Im Untergrund von .NET 10.0 wirken weiterhin zwei verschiedene Runtimes, abhängig von Anwendungsart und Betriebssystem: die .NET Core Runtime und die Mono Runtime.

Weiterlesen nach der Anzeige


Aufbau von .NET 10.0

Aufbau von .NET 10.0

Aufbau von .NET 10.0

(Bild: Dr. Holger Schwichtenberg)

Neu in .NET 10.0 ist, dass Android-Anwendungen nicht nur wie bisher auf der Mono Runtime, sondern auch auf der .NET Core Runtime laufen können. Dieses Feature gilt aber in .NET 10.0 als experimentell. Ebenso gilt die Kompilierung von Konsolenanwendungen und Browseranwendungen (außer innerhalb von Blazor) zu WebAssembly weiterhin als experimentelles Feature.

Umsteiger von älteren .NET-Versionen auf .NET 10.0 müssen nicht nur das Target-Framework in der Projektdatei bzw. zentralen Build-Konfigurationsdatei Directory.Build.props auf net10.0 ändern, sondern auch einige Breaking Changes berücksichtigen.

Die Breaking Changes, von denen es in .NET 10.0 weniger als in den letzten Versionen gibt, dokumentiert Microsoft in drei Listen:

Wie in den letzten Versionen hat Microsoft zahlreiche Leistungsverbesserungen eingebaut. Insbesondere sind das in .NET 10.0 Verbesserungen der Ausführungszeit und Speicherallokation bei zahlreichen .NET-Basisklassen, was sich positiv auf viele Anwendungen auswirkt. Erläuterungen zu den Performance- und Speicherverbrauchsverbesserungen und genaue Zahlen findet man in einem sehr langen Dokument.




(Bild: coffeemill/123rf.com)

Verbesserte Klassen in .NET 10.0, Native AOT mit Entity Framework Core 10.0 und mehr: Darüber informieren Dr. Holger Schwichtenberg und weitere Speaker der Online-Konferenz betterCode() .NET 10.0 am 18. November 2025. Nachgelagert gibt es sechs ganztägige Workshops zu Themen wie C# 14.0, KI-Einsatz und Web-APIs.

In .NET 10.0 gibt es viele neue Funktionen in allen Bereichen: bei der Programmiersprache C#, in der Basisklassenbibliothek, beim objektrelationalen Mapping mit Entity Framework Core, bei der JSON-Serialisierung mit System.Text.Json, den Webframeworks ASP.NET Core und Blazor sowie bei dem Cross-Platform-UI .NET MAUI. Auch bei den alten Windows-Desktop-Frameworks Windows Forms und WPF gibt es einzelne Verbesserungen.

heise Developer hatte über die Neuerungen in .NET 10.0 jeweils anhand der Preview- und Release-Candidate-1-Versionen berichtet, sofern es dort signifikante Neuerungen gab.

Lesen Sie auch



Source link

Weiterlesen

Entwicklung & Code

Linux: KI-Richtlinien für Kernel-Entwickler in der Diskussion


KI-nutzende Entwicklertools sind laut Linus Torvalds auch nur Werkzeuge, daher bedürfen sie keiner neuen Regeln bei der Kernel-Entwicklung – und auch bei Copyright-Fragen greift das Gewohnte. Das ist die Kurz- und Grobform einiger Aussagen, die der Linux-Erfinder diese Woche im Rahmen einer noch laufenden Diskussion getätigt hat.

Weiterlesen nach der Anzeige

Anlass für die Aussagen war ein zur Begutachtung eingereichter Text, der Richtlinien zum Einsatz von KI-Tools bei der Entwicklung von Torvalds‘ Kernel definiert. Mitglieder des Linux Technical Advisory Board haben ihn ausgearbeitet, nachdem es vor einigen Monaten eine Debatte um Auszeichnungen beim Einsatz von KI-Werkzeugen gab, als ein Entwickler des Stable-Teams von Linux hier vorgeprescht war. Letzterer nutzt schon eine Weile Machine Learning und mittlerweile AI-Tools, um Patches zu identifizieren, die ein Zurückportieren in ältere Versionen wert sind.

Entschieden ist bezüglich der KI-Richtlinien aber noch nichts. Der Text und die Diskussionen sollen die Basis für eine Entscheidung beim diesjährigen Linux Kernel Maintainer Summit Anfang Dezember in Tokio bilden, zu dem jährlich zirka 30 der wichtigsten Linux-Entwickler eingeladen werden.

Torvalds Aussage zur Einstufung von KI-Tools als normale Werkzeuge ist vom Grundton der vorgestellten Richtlinien gar nicht so weit weg. Dieser stuft KI-nutzende Entwicklerwerkzeuge als eine noch gewieftere Form von komplexen und schon länger eingesetzten Werkzeugen ein – etwa das schon seit Jahren bei der Linux-Entwicklung gelegentlich verwendete Refactoring-Tool Coccinelle. Wie zuvor sollten Entwickler daher exakt dokumentieren, welche solcher Tools sie wie bei der Entwicklung eines Patches eingesetzt haben.

Laut dem Richtlinien-Vorschlag soll das allerdings nicht für einfache Tools gelten, etwa solche zum Umformatieren des Codes oder zum Suchen-und-Ersetzen. Daran hat sich Torvalds gestört, denn er will deren Einsatz genauso dokumentiert wissen – und verweist auf einige ältere Änderungen, wo die Patch-Beschreibung beschreibt, wie Entwickler mithilfe von ’sed‘ komplexere Umbenennungen durchgeführt haben. Dabei betont er, KI-Tools bräuchten keine Sonderbehandlung.

Weiterlesen nach der Anzeige

Ähnlich sieht Torvalds es bei der Copyright-Frage, wie er in einem späteren Diskussionsbeitrag erläutert: Der Urheberrecht-Aspekt gelte für anderen Code genauso. So führt er an, dass der Kernel schon allerlei von einem Computer generierten Code enthält, wie Millionen von Zeilen in Headern des Amdgpu-Treibers. Was er nicht sagt, aber damit offenbar meint: Die Verantwortung liegt am Ende beim Entwickler, der den Code einreicht.

In ebendieser Mail teilt Torvalds aber auch in Richtung KI aus und merkt an, das Besondere an KI sei „der Hype und die Milliarden und Abermilliarden von Dollar“. Später schließt er mit „KI ist nur ein weiteres Werkzeug, Leute. Eines, mit dem manche Leute viel Geld verdienen. Und ja, es wird die Gesellschaft verändern. Aber es ist und bleibt nur ein Werkzeug“.


(dmk)



Source link

Weiterlesen

Beliebt