Sunday, January 17, 2016

Seven Ps in SDLC

 All I was trying to do was just reorganize my thoughts on what drives us to use certain approaches, tools and techniques during building the software products. I know it's the way we understand the nature of problem dictates everything what we do to solve the problem.  And everything is about making the choices.  It starts with the development/design approaches. Test Driven Development, Behavior Driven Development, Object Oriented Analysis and Design,  Domain Driven Design,   Data Driven Design, Responsibility Driven Design are few to list and you should be able to follow multiple approaches in a project as some of them are just extension of others. Choosing these approaches mean you decided how you want to view your problem, what is in the center of problem solving? What kind of questions you will start asking?

Next, is paradigm, once you decide certain way to approach the problem, it will give you certain way to think about the solution. Imperative paradigm: thinking like steps of commands, "First do this, then do that" style. Functional paradigm: thinking y = f(x), x is input and y is output of function f, Function are first class citizen. Object-Oriented paradigm: thinking and comparing every entities and actors in the solution similar to real world objects, which will have certain properties and certain behaviours. And these object interacts to resolve the problem.

Third is Programming, We will choose programming language. Some programming languages support multiple paradigm while other specialize on only one.

After this everything like, principles and patterns should fall into the place. You recognize recurring sub-problems in your program, know corresponding design patterns to apply, design patterns will then promise certain principles along with it. Simple right?



Ok, let's get back to original reason why I wanted to reorganize my thoughts. Data Driven Design. These days, due to enormous  amount of digital data available which just seems like keep growing, we are introduced to a new discipline: data science. Every applications we think of are data driven and it is nothing new. Data driven approach has been there as common sense as well as contextual sense. We have been using so many tools and techniques evolve from data driven approach without putting too much thought on it. That's why I decided to put some thought how data driven approach relates to programming paradigm, does this approach even care how you organize your code, or are there any specific patterns like domain driven suggests. does this approach is just with regards to improving user experiences. How this is different from OOD and Data oriented Design, where data is still the centric. Am I even asking right questions? Is there even a right answer that everybody could agree? I kept reading about those and more I read I find myself brain-fucked!! I have been discussing with colleagues and forums.  I hope to find the common ground soon and will share.


No comments: