Lädt...


🔧 On Commercial Software Evolution


Nachrichtenbereich: 🔧 Programmierung
🔗 Quelle: dev.to

Cover image by Wikimedia Commons.

This article models the free market using Stuart Kauffman's Fitness Landscape to understand its influence upon, and from, commercial software products.

Bolded vocabulary terms are used across article sections.

Fitness Landscape

From Wikipedia:

In evolutionary biology, fitness landscapes or adaptive landscapes (types of evolutionary landscapes) are used to visualize the relationship between genotypes and reproductive success.

A few key points:

  • a genotype is a collection of features intrinsic to some individual or population.
  • reproductive success can be generalized as fitness value.

Here's an example of a fitness landscape visualization:

visualization of fitness landscape

In this example, the 2D horizontal axes represent the genotype, and the 1D vertical axis represents the fitness value. In reality, the genotype may be more than 2 dimensions. It may be useful to imagine the genotype as an N-dimensional collection of various qualities.

From Wikipedia:

Genotypes which are similar are said to be "close" to each other, while those that are very different are "far" from each other.

This helps us compare different genotypes across the landscape.

Dynamic Structure

Ann evolution function defines the fitness value for every distinct genotype.

Here's one example of an evolution function moving and resizing the hills on a fitness landscape:

animated visualization of a static and dynamic fitness landscape

A few observations:

  • The evolution function doesn't introduce any "cliffs" or "holes" in the fitness landscape.
  • The evolution function is perpetual, and does not stop at any time.

We also see a collection of distinct gray species on the landscape's surface.

  • Each species corresponds with some unique genotype at any point in time.
  • Each species can move across the landscape by changing its genotype.

From now on, the landscape function is the evolution function that changes the surface of the fitness landscape, and the species function is the evolution function that moves species across the surface of the landscape.

The Commercial Software Market

The below translation is generally a gross over-simplification, but for the purposes of this article, it'll do just fine.

Fitness Landscape Commercial Software Market
Species Software product
Genotypes Features
Fitness value Feature/product value
Species function Producer behavior
Landscape function Consumer behavior

⬆️ You can ignore this table, it's just for reference.

Some key points:

  • A software product is a collection of features
  • Consumer behavior affects feature value, and transitively, product value

As with evolutionary biology, producers must evolve their software products to stay in business, or else they die. The ability of a producer to evolve their products over time is more necessary to their long-term survival than having maximally-valuable products.

For this reason, it's important for producers to have some control over their species function so they can remain in business.

Fun fact: some producers are able to routinely ship poor-quality software products, because their species function is just adaptive enough to keep them alive.

Since we're modeling producer and consumer behavior using evolution functions, we can explore the mathematical structure of these functions to better understand the market.

Producers and Consumers

Consumer demand evolves smoothly and continuously over time. Software, however, is shipped and released on a discrete time schedule. Consumers perceive spontaneous "jumps" as new features are introduced or removed from a software product.

Producers dislike this asymmetry, because a set of features under development may become less valuable by the time they are released. When producers cannot react quickly or regularly to consumers, the landscape function has outpaced the species function.

This is evident from the growing popularity of Agile Software Development, a methodology for producers to accelerate their species function and keep pace with the consumer landscape.

Agile Software Development

The four main principles of Agile, according to Wikipedia:

  • Individuals and interactions over processes and tools
  • Working software over comprehensive documentation
  • Customer collaboration over contract negotiation
  • Responding to change over following a plan

The critical point is responding to change. Agile places a great emphasis on

  • detecting change in the fitness landscape
  • nudging your genotype towards areas with a higher fitness

In effect, Agile allows producers to be more confident that whatever features they ship will be in demand by the time they are released.

While this is generally effective, there are some interesting costs associated with having a higher-pace evolution function.

Technical Debt

This section is subjective.

For software, it is faster and easier to expand an existing product, than to build a new one entirely. Producers are generally suspicious of building new products in existing high-fitness areas, and will prefer to push an existing software product towards locally-fit areas whenever possible.

Even when expanding to new consumer markets (new "hills" on the fitness landscape), a producer will opt to Frankenstein-surgery their existing software onto that hill, and will only create a new product if absolutely necessary.

What happens is the species function slows as the number of features becomes larger. The high-paced species function that once benefited our species has since become cancerous, chaining the software product's ability to evolve with consumer demand.

Companies experience this as technical debt, and it's generally difficult to solve because of how immensely complex their software has become.

A Solution

If you've made it this far, thank you.

I believe, but am not certain, there is no "golden pace" for software development to avoid technical debt. I believe that every commercial software product will encounter it in some form, by virtue of the discrete evolution function.

I believe, but am not certain, that we can develop software without technical debt. And for as long as I strive to build better software, I will continue to believe that.

From Sofia Konobievska: How to Sell Technical Debt from a DevOps Perspective?.

Thank you for reading, and enjoy your next day.

...

🔧 On Commercial Software Evolution


📈 26.25 Punkte
🔧 Programmierung

🔧 CSfC Commercial Solutions for Classified - Securing Classified Data with Commercial Tech


📈 25.62 Punkte
🔧 Programmierung

🔧 Difference between Commercial and Non-commercial Sources of Energy


📈 25.62 Punkte
🔧 Programmierung

🐧 I wrote a script for importing OPML feeds into Evolution's RSS reader because I love Evolution too much


📈 19.47 Punkte
🐧 Linux Tipps

🕵️ Go-evolution evolution-data-server 2.24.4 e-vcard.c memory corruption


📈 19.47 Punkte
🕵️ Sicherheitslücken

📰 Destructive Mac ransomware spread as cracks to pirate commercial software


📈 16.51 Punkte
📰 IT Security Nachrichten

📰 Ask Slashdot: Should Commercial Software Prices Be Pegged To a Country's GDP?


📈 16.51 Punkte
📰 IT Security Nachrichten

📰 Ask Slashdot: Should Commercial Software Prices Be Pegged To a Country's GDP?


📈 16.51 Punkte
📰 IT Security Nachrichten

🎥 Commercial RAG on Intel® Tiber™ AI Cloud | Intel Software


📈 16.51 Punkte
🎥 Video | Youtube

🐧 Flathub need support payments for get popular and commercial software


📈 16.51 Punkte
🐧 Linux Tipps

🔧 Understanding Software Licenses: Open-Source vs. Commercial


📈 16.51 Punkte
🔧 Programmierung

📰 Open source code for commercial software applications is ubiquitous, but so is the risk


📈 16.51 Punkte
📰 IT Security Nachrichten

📰 Citadel launches AI software to protect troops and critical infrastructure from commercial drones


📈 16.51 Punkte
📰 IT Security Nachrichten

📰 Abandoned Open Source Code Heightens Commercial Software Security Risks


📈 16.51 Punkte
📰 IT Nachrichten

📰 Next US Elections: Open Source vs. Commercial Software?


📈 16.51 Punkte
📰 IT Nachrichten

📰 Report: Commercial Software Riddled With Open Source Code Flaws


📈 16.51 Punkte
📰 IT Nachrichten

🔧 Evolution of Software Architecture: From Monoliths to Microservices and Beyond


📈 13.43 Punkte
🔧 Programmierung

🔧 Evolution of Java Development Practices Since Java 8: Impact on Enterprise Software Architecture


📈 13.43 Punkte
🔧 Programmierung

🔧 The Evolution of Test Case Generators: Empowering Modern Software Development


📈 13.43 Punkte
🔧 Programmierung

📰 Security beyond software: The open source hardware security evolution


📈 13.43 Punkte
📰 IT Security Nachrichten

🔧 From APIs to ACIs: The Next Evolution in Software Interaction


📈 13.43 Punkte
🔧 Programmierung

📰 The Evolution of Antivirus Software to Face Modern Threats


📈 13.43 Punkte
📰 IT Security Nachrichten

🔧 The Evolution of Hardware vs. Software Speed: Analyzing the Growing Gap Over Time


📈 13.43 Punkte
🔧 Programmierung

📰 Application Security Testing Evolution and How a Software Bill of Materials Can Help


📈 13.43 Punkte
📰 IT Security Nachrichten

🔧 Evolution of Software Architecture: From Mainframes and Monoliths to Distributed Computing


📈 13.43 Punkte
🔧 Programmierung

🔧 The Evolution of AI and Its Impact on Software Development


📈 13.43 Punkte
🔧 Programmierung

🔧 One possible evolution of software development industry thanks to LLM


📈 13.43 Punkte
🔧 Programmierung

matomo