Skip to main content

Strategic Design Vs Tactical Design.


Strategic Design Vs Tactical Design.

We all have known or Unknowingly be part of Designing in the Strategic and Tactical Design in one or the other way to solve a problem on our hands.

This Blog will get the Feeling of approaching a Design and make you aware of Strategic Design and Tactical Design in detail.

We have all solved a problem in one are the other way and make them work, isn’t it. Yes, we exist sooner or later one thing we get to know we Just really sucks at coding. We make noise on the code we have written. 

Before knowing how to avoid those things in first lets us know, how to approach a problem through Strategic Design and Tactical Design .let us see what are they all about. How to approach it? What are all the difference between Strategic and Tactical Design.there is no single way of doing the design I let u remains you this initially there can be multiple ways to do a single task in multiple different ways. But these approaches are strategically well accepted / Followed by the industry we are in and using these guidelines, principles will defiantly let us raise our bar on what we do.

  1. Levels of Design.
What are the levels of Design? What is their Hierarchy? Is it really any Hierarchy present in design yes they do.  we see the different levels/phases in SDLC. The Design phase has two subdivision of what they call. 
  • High-level Design 
  • Low-level Design.
Yes, we do agree with it then what is it really mean. does HLD and LLD is same as Strategic Design and Tactical Design.the answer is some were yes. But they Differ slightly a way. As we don’t do Big Up Front Design as we do in the waterfall model.
Here we are just approaching a small or say little Upfront Design. what does it really mean? By doing this we collectively know what are knowns ( What are all the problems we have solutions in the context of already written classes and methods.)and Unknowns. (what are all the things going to implement for the Problem we are solving in.)
It's is that we do not straightly sit and do all the design and Coding on a single sitting which is an ideal thing which doesn’t work that way. Instead of that we really care about a series of known and Unknown. Collectively sit together in a series of design discussion with Developers and Domain Experts(Architects, Consultants what have you) separate out the series of Knowns and Unknowns make a decision on the problem/requirements we have on the table to solve.


        2.Knowns and Unknowns

What are these known and Unknowns in a project?
Knowns are the problems that are already solved. Say a class which already in production. The problem well stated and Understood then implemented on the right context on the domain we are working on say a Banking Application which allows you to do online transaction people know who are already worked on it what are all the class it contains what are the relationship between the class how many interfaces are used and so on .these are problem Known and solved.
Whenever there is a new Requirement or add on feature arises we are responsible to make a keen decision on what we already knew to say do we add some methods to a class ?. Do we write a new Class or Interface.how do we relate a particular class to extend a feature all these decisions are taken on the basis of thing what we already have known. Typically we have more Unknown than the thing we know. One thing for sure we Grow with the problems we solve.


        3.Purpose of Strategic Design.

Now, what is Strategic Design? What is the purpose of using Strategic design?
Strategic Design is a High-level OverView of problem. Say it's just like a map path to solving a problem. For eg. 
What are all classes does it need. Shall we introduce an Interface or an Abstract Classes what Are the relationship between them? Do I use inheritance or delegation? How do the Classes communicate with each other and so on? These are all the Questions or decision we take during Strategic Design.
How Do we Document it?
Drawing a UML Diagram by naming classes and interfaces and showing the relationship between them would be the greater Communication option to us which can also help us during design discussion also.
To Create a Design let it has a multiple iterations or Evolve as the time progress the design what we discussed and started at the start of sprint is quite different when we observe at the end of it do evolve there is difference in actual design we are planned initially we might have eliminated the class or an Interface or say we collectively introduce new feature which is closely related to the problem we are solving in and have most valuable to add it on it depends on the context or the problem we are solving on the table 



        4.Purpose of Tactical Design.

Now, What is Tactical Design is all about? What is the purpose of using it?
Tactical design is Low-level design of a Problem. Say it is a clear way of solving a problem. What are the methods should present in the class? What is their name? What are the parameters we pass to those methods what are their type? What are states or a variable present in the class.how do we override a method.what are the contracts should be written in a particular interface and how can we eliminate a class does this class necessary and what have you.
Making a granular level of  details on classes or interface.
How do we Document Tactical Design.
By writing good Test cases (unit test and Functional test).
These test cases give us a good overview of the corresponding class or method what are they clearly intend to do. We can say Good design is easy to test, easy to maintain, easy to read.
Really a test case will really give us the functionality of a method what it really meant to do. And it also a kind of documentation which helps us to understand by looking a the test cases. 


        5.From Requirement to Design.

Now, how do we Design a requirement given to us?
The requirement is given is separated to the series of known and unknowns
What are the requirement we can practically approach? What is all already implemented? What are the things which is most valuable things which we need to implement these are valued/ ranked under 1-10 the most valuable feature (must-have feature ) is taken into consideration and (nice to have features ) are Postponed or kept under discussion whether the business/ a Service really need it and take into consideration in later sprints.

At the beginning of the sprint, the most valued requirement is taken Strategical Design Implementation is done and let to the discussion between the business analyst domain Experts/developers. after several iterations, the further Tactical design decisions are taken to Implement a feature or a problem.

NOTE: You might be thinking what about the standard design principle and pattern. Helps us to develop good software. It's a wrong perspective to think most often that way because most of the time design principles and patterns are brutally misused don’t be eager to apply a certain design pattern for a problem. A problem should emerge or give some clue to apply the respective design pattern. It's really good to avoid readily go and applying a certain Design pattern instead of that it has to good communication tools it should tell us or guide us to certain pattern we are should be used in.


6.UseCase/UserStories.
Is a Requirement are the only way to design a certain application. We can also design based on use cases/user stories. User Stories / User Case is a scenario that the user encounter while using a problem its a series of step that the user encounters while using an application or it might be a review / Error Reports that the user encounters. Else the bug needs to be Fixed. These are the reviews that we encountered while a user is using or it might be some nice to have a feature that the user expects in the application. Based on the value or necessity of the particular feature it is implemented as discussed in the above Requirement to Design module. In a similar way, strategical and Tactical design is performed during this phase of using Use Cases and User Stories.
Instead of Implementing a whole UserStories on single shot its good to create a prototype and dogFeed (given the application to used by the internal employe and taken a quick feedback from them and correct those from their feedback).

7.Architecture
 A series of Strategic Designs which have on the single Umbrella can be called as Architecture. Its has a wider scope and understanding the Systems and Sub-Systems Of a Project.

Comments

Popular posts from this blog

Taking command of command line - 7

Taking command of command line - 7 Current Directory: Knowing current working directory in Unix-like system. The command that will print us the current directory is pwd - print working directory. On Windows The plain cd command in windows will print the current working directory.   In,Cygwin its is as same as in Unix like system just use pwd to get the current working directory on windows.

Taking command of the command line - 8

  Taking command of the command line - 8   Changing directory Changing around the different directory is what we always wanted to do most often.There are lot of cool way to do that other than cd lets have a look at them in details. Cd command   First and for most the cd <directory-name> command will change the   directory. Same stands true on windows to just use cd<directory-name> . Previous Directory. For both windows and Unix-like system use cd .. to go back to the previous directory. Returning back to the current directory. It's more often people use cd .. to again. Na !! But using this you go off to the root. Of your system again its a bit far root to come along the directory we are in . Instead use cd -   — cd <minus - > command return back to current directory you're previously in . For ex: cd   /<dir1>/<dir2> Pwd   User/dir1/dir2: By using cd - you’ll again brin...

Taking command of command Line - 6

Taking command of command Line - 6 Changing Prompt Why change prompt? Whenever we open the terminal or command line in windows we see a long path where we are sometimes it helps. Some time the length of the prompt make us annoying isn’t it.lets see how to change the prompt and then customise the name what you like. On Unix-Like machines. Just use export PS1=“> ” this will come up with a   > instead of showing the file path you're in. It is not mandatory to give > in “” give what ever you like give the user name and so on .   For eg export PS1=“USER:>”   this will give you USER:> for line of the input. This stands good for bash shell please find   other tricks for different shells. In Cygwin its stands the same as in Mac.   For Windows   Its an easy trick here just use prompt $G will give you the > symbol Or say prompt user   where user - is give the option of your choice. Eg Before using se...