Blog Objective

This is a blog that attempts to make life easier by noting down the author's accrued knowledge and experiences.
The author has dealt with several IT projects (in Java EE and .NET) and is a specialist in system development.

29 September 2011

Constraints in the forms of Triangles, Squares …

Life is full of constraints. It seems like you can never simply "have your cake and eat it".

service triangle


In Product Development, we have the following Project Triangle:

  • Good - quality of the delivered product
  • Fast – time taken to deliver the product
  • Cheap – cost of designing/ developing/ delivering the final product
We are told to pick any two!

In System Development, the Project Management Triangle follows:
  • Scope – the set of functionality for the system or the work to be performed
  • Schedule – time taken to complete the project
  • Cost – cost of implementing/ delivering the final system
We are told to pick any two!

A variant in System Development, a Project Management Triangle (more like a Square) follows:
  • Scope – the set of functionality for the system
  • Schedule – time taken to complete the project
  • Cost – cost of implementing/ delivering the final system
  • Performance – the ability of the system to take load and be responsive
We are told to pick any three!

For distributed systems using shared data among nodes, a similar triangle – known as CAP theorem or Brewer’s Conjecture – exists. The three constraints are:
  • Consistency – all distributed nodes are in-sync and consistent and “sees” the same data
  • Availability – every client’s request will receive a response, whether successful or not
  • Partition tolerance – system continues to operate despite
    • arbitrary messages between nodes dropping or arriving late; or
    • nodes becoming unavailable (due to crashes)
We are told to pick any two!

No comments: