Tag Archives: Evolution

The Minimum Viable Product and Incremental Software Development

The concept of the Minimum Viable Product (MVP) was popularized by Eric Ries in his bestselling book “The Lean Startup: How Today’s Entrepreneurs Use Continuous Innovation to Create Radically Successful Businesses”. According to Ries, the MVP is the “version of … Continue reading

Posted in Agile, Lean Development, Software Evolution | Tagged , , | 13 Comments

On Agile Architecture, Emergent Design and Framework-Based Design

I recently read the very interesting Ph.D. thesis of Michael Waterman on the topic of Agile Software Architecture. Michael investigated how professional software engineers in the industry are applying Agile principles to software architecture and design. His conclusions are that … Continue reading

Posted in Adaptable Design, Agile, Software Architecture, Software Evolution, Software Reuse | Tagged , , , , | 11 Comments

Antifragility and Component-Based Software Development

In his book “Antifragile: Things That Gain From Disorder”, Nassim Taleb introduces the concept of Antifragility, which is the opposite of Fragility. Antifragile things are able to benefit from volatility. In a previous post, I explained how in the field of … Continue reading

Posted in Antifragility, Software Architecture, Software Evolution, Software Reuse | Tagged , , , | 16 Comments

The End of Agile: Death by Over-Simplification

There is something basically wrong with the current adoption of Agile methods. The term Agile was abused, becoming the biggest ever hype in the history of software development, and generating a multi-million dollar industry of self-proclaimed Agile consultants and experts … Continue reading

Posted in Agile, Refactoring, Software Evolution | Tagged , , | 96 Comments

Coping with Change in Agile Software Development

Traditional software development methodologies, such as Waterfall, tried to follow a series of isolated steps: First you define all the system requirements, then you devise a detailed system design that satisfies these requirements, and then you implement the system according … Continue reading

Posted in Adaptable Design, Agile, Refactoring, Requirements Specification, Software Architecture, Software Evolution | Tagged , , , , , | 4 Comments

Software Product Line Engineering

Last week I had the opportunity to participate in a Product Line Engineering (PLE) seminar by Dr. Paul Clements, who is one of the global experts on this subject and author of the book “Software Product Lines: Practices and Patterns” … Continue reading

Posted in Adaptable Design, Software Architecture, Software Evolution | Tagged , , | 3 Comments

Avoiding Technical Debt: How to Accumulate Technical Savings

The metaphor of Technical Debt has been widely accepted as part of the current reality of software development. Programmers agree that they frequently need to make sacrifices in order to meet deadlines, and the consequences of these sacrifices are modules … Continue reading

Posted in Adaptable Design, Refactoring, Software Evolution, Software Reuse, Technical Savings | Tagged , , , | 24 Comments

IASA Israel meeting – Hayim Makabee on Adaptable Design Up Front

The International Association of Software Architects (IASA) in Israel organized a special event with the participation of Hayim Makabee, who talked about “ADUF – Adaptable Design Up Front”. Synopsis: This talk tries to answer the question: “How much Design Up … Continue reading

Posted in Adaptable Design, Agile, IASA Israel, Software Architecture, Software Evolution | Tagged , , , , | Leave a comment

Adaptable Design Up Front and the Open/Closed Principle

The Open/Closed principle is one of the SOLID principles of software design: “The Open/Closed Principle states that the design and writing of the code should be done in a way that new functionality should be added with minimum changes in … Continue reading

Posted in Adaptable Design, Design Patterns, OOD, Software Architecture, Software Evolution | Tagged , , , , | 11 Comments

The Myth of Emergent Design and the Big Ball of Mud

Software developers following Agile methodologies often ask themselves how to adapt the traditional Design phase to an iterative software lifecycle. The basic question is how much design should be done before starting the implementation. There seems to be a consensus … Continue reading

Posted in Adaptable Design, Agile, Refactoring, Software Architecture, Software Evolution | Tagged , , , , | 26 Comments