I am still in a state of mind that Agile does not solve 100% of all the software development problems. This article is my effort to highlight few of my view points on this subject.
Agile : I would not go any deep in to this topic as it is a known and a well established topic.
If would like to know more about Agile, there are tons of articles on this subject. All you would need to do is google or (in Microsoft terms) bing it :-)
The Agile Mantra says...
- Individuals and Interactions - over process and tolls
- Working software - over comprehensive documentation
- Customer collaboration - over contract negotiation
- Responding to change over following a plan
In short Agile means - "Iterative Design & development".
So far so good.
But the key point to note here is - its "Design & Development". The process starts at "Design".
For large scale systems such as high availability, high concurrency, highly scalable systems, the key way forward starts at "Architecture". May be there are cases where a good Design does not require a strong architecture pre-thought but not always the case.
Architecture is NOT Design. Architecture is a process of looking at the entire system from a high level and providing a blueprint of how large scale systems are built.
Architecting a complex product such as a SAAS offering goes beyond just designing. SAAS systems invariably has stringent Non Functional requirements such as Availability (99.99% uptime), Scalability (x Thousand Concurrent users), High Performance response times (X transactions per second), Configurability (Meta data driven configuration), Extensibility (NOT CODE extensibility but product extensibility).
All the above elements have to be well thought of for a successful implementation of a high performance solution such as a SAAS offering.
As the name suggests, these are "NON-FUNCTIONAL REQUIREMENTS". They cannot be "automatically" captured as "User stories". Even if we capture these things as a part of User stories, which sprint do these stories belong to? How do we cater to this in a particular sprint? Should this be pushed to the last sprint? How do you split these requirements within each sprint? Most applications (even enterprise scale) may not worry much about these non-functional requirements. An enterprise application can wait for a half hour down time but a SAAS system, these things are fundamental. A SAAS system is a different game all-together.
There is no doubt that Design and development is key to any software development. But equally important is Architecture. This makes me wonder if there is something called as a 100% pure Agile project? If there is a 100% pure agile project, can this be used to build a SAAS solution with stringent NFRs?
To my mind the answer is NO. The first 10-20% of the time goes in conceptualising and "architecting" the system and then the system can be developed in Sprints (which is rest of the 80%). Architectural Patterns such as Zachman, RM-ODP, Rational Unified Process etc. (or fr that matter any Architectural patterns) wouldn't have existed if it had no use and the same can be done using a Agile methodology by directly jumping into design and development.
I am not sure how this article will be received, but this is just an attempt I thought I should make share my mind to fellow architects in the software world. I do love Agile. Agile is the way to go. There is no doubt about that.
The attempt here is to highlight the fact that - "There is nothing called as 100% agile software development"
Especially if you are thinking of developing a SAAS solution with extremely stringent NFRs, ensure you cover these NFRs within your Architecture and then start development using any Agile methodology.
For an Agile evangelist, a product development life cycle is - Sprint + Spint + Sprint + Sprint.
To my mind it is - Conceptualising & Detailed Architecture + Sprint + Sprint + Sprint + Sprint.
As I have been emphasizing, I am not sure if this arcticle would be well received by Agile Evangelist, but I thought this could be a good food for thought.
I have been involved in building SAAS applications with Stringent NFRs and hence I am able to relate this to agile development.
Await for my next blog on NFRs and its importance in designing a software solution.
You knew you would provoke me and so you have. When you talk about any requirements, be they functional or NFR, the key question is "Who cares about them ?" If your business owner cannot articulate the reasons why something is important, then it stands to reason that it is probably not a priority. Agile does not dictate an order neither does it disregard any Architectural framework. It does not always talk about bottom up design leading to architecture - it only questions whether something is worth thinking about if nobody cares. Example - In a real time trading system, speed of execution is very important and hence, one of the fundamental things that gets developed first is the architecture for that. You have to prove the business value of each requirement. Happy to discuss this to death over a beer
ReplyDeleteThank you for your comments.
ReplyDeleteThe key here is a SAAS solution. For a SAAS solution, NFRs are extremely important. Not just speed of execution as you mentioned, this is just one of them. Developing a SAAS system gives a different dimension to the product.
Yes let's discuss this over a beer :)
ReplyDeleteI appreciate that you produced this wonderful article to help us get more knowledge about this topic.
I know, it is not an easy task to write such a big article in one day, I've tried that and I've failed. But, here you are, trying the big task and finishing it off and getting good comments and ratings. That is one hell of a job done!
Selenium training in bangalore
Selenium training in Chennai
Selenium training in Bangalore
Selenium training in Pune
Selenium Online training
I appreciate that you produced this wonderful article to help us get more knowledge about this topic.
ReplyDeletedata science training in chennai
data science training in omr
android training in chennai
android training in omr
devops training in chennai
devops training in omr
artificial intelligence training in chennai
artificial intelligence training in omr
.Excellent Blog! I would like to thank for the efforts you have made in writing this post. I am hoping the same best work from you in the future as well. I wanted to thank you for this websites!
ReplyDeletehardware and networking training in chennai
hardware and networking training in velachery
xamarin training in chennai
xamarin training in velachery
ios training in chennai
ios training in velachery
iot training in chennai
iot training in velachery
Tül Perde Modelleri
ReplyDeletesms onay
Türk telekom mobil ödeme bozdurma
nft nasıl alınır
Ankara Evden Eve Nakliyat
trafik sigortası
DEDEKTÖR
WEBSİTE KURMA
aşk romanları
lisans satın al
ReplyDeleteuc satın al
en son çıkan perde modelleri
en son çıkan perde modelleri
minecraft premium
yurtdışı kargo
özel ambulans
nft nasıl alınır
Hello, Thanks for your Awesome post! I quite Satisfied reading it, you are a good author.I will Make sure to bookmark your blog and definitely will come back from now on. I want to encourage that you continue your great job, have a nice day.
ReplyDeletePower BI Training In Hyderabad
Power BI Online Training
Power BI Training In Ameerpet
The knowledge of technology you have been sharing thorough this post is very much helpful to develop new idea. here by i also want to share this.
ReplyDeleteADF Training In Hyderabad
ADF Online Training
ADF Training
ADF Training Online
Very Useful article, Thanks For Sharing With Us
ReplyDeleteHere a related Stuff:
Informatica Training In Hyderabad
Informatica Online Training
Informatica Training In Ameerpet
Informatica Online Training
Very Useful article, Thanks For Sharing With Us
ReplyDeleteHere a related Stuff:
Informatica Training In Hyderabad
Informatica Online Training
Informatica Training In Ameerpet
Informatica Online Training