A for Agile, A for Aristotle

[article]
Summary:
Badri Srinivasan explains the link between Aristotle and agile software development methodologies and how agile allows for a higher probability of successful customer delivery.

What do Aristotle (a Greek philosopher who was born around 2,400 years ago) and agile software development methodologies (with origins stemming from the late 1950s and early 1960s) have in common? In order to understand the link between Aristotle and agile, we need to take a step back and look at their respective earlier contemporaries—Plato and the waterfall model of software development.

Plato was a classical Greek philosopher, mathematician, student of Socrates, and a writer of philosophical dialogues. Plato, his student Aristotle, and Socrates helped to lay the foundations of Western philosophy and science. Aristotle was a Greek philosopher and polymath as well as a teacher of Alexander the Great. Aristotle's writings were the first to create a comprehensive system of Western philosophy, encompassing morality and aesthetics, logic and science, and politics and metaphysics.

In the 1970s, Dr. Winston Royce wrote an article called “Managing the Development of Large Software Systems” as part of the IEEE proceedings. Some interpreted his article to mean that a software system should be built in a sequential manner based on the assumption that the requirements first will be clearly defined and then will be executed.

This “waterfall” model is a sequential development process used in the software development life cycle, in which progress is seen as flowing steadily downwards through the phases of conception, initiation, analysis, design, construction, testing, production or implementation, and maintenance.

Agile Software Development Methodologies

Agile software development can be defined as a group of software development methodologies based on iterative and incremental development, where requirements and solutions evolve through collaboration between self-organizing, cross-functional teams. It promotes adaptive planning, evolutionary development and delivery, and a time-boxed iterative approach, and it encourages rapid and flexible response to change. It promotes iterative and incremental development throughout the development cycle and helps teams react to the instability of building software through incremental, iterative work cycles, known as iterations.

Agile software development is undertaken by teams, which are themselves complex adaptive systems. Because they work in a complex environment, they need an empirical process. People cannot decide everything—requirements, design, or any other aspect—up front. This is the core basis for agile development methodologies. Essentially, being agile means that you observe reality and respond to it in an appropriate manner.

Pages

Tags: 

User Comments

1 comment
Susan Thompson's picture

Excellent analysis! I have for some time thought that Agile (and Lean) also resonate with the principles of Austrian economics, which has a similar optimalist bent (see George Reisman, Capitalism).

March 7, 2013 - 11:23am

About the author

Badri N. Srinivasan's picture Badri N. Srinivasan

Badri N. Srinivasan is working as head of quality for Valtech India Systems in Bangalore, India. He has extensive experience in process implementation, organizational change management processes, and process improvement initiatives in the travel, retail, manufacturing, banking, and financial services domains. He is a Certified ScrumMaster (CSM) and Project Management Professional (PMP).

AgileConnection is one of the growing communities of the TechWell network.

Featuring fresh, insightful stories, TechWell.com is the place to go for what is happening in software development and delivery.  Join the conversation now!

Upcoming Events

Sep 22
Sep 24
Oct 12
Nov 09