Home‎ > ‎Design‎ > ‎

Software design: Basics are important

posted May 31, 2020, 2:29 PM by Jageshwar Tripathi
"Basics are important": [{
"Perceptions in software development": [
"We have to do Microservices using SpringBoot",
"We have to learn these two"

"Reality": [
"We have to implement solution of a requirement",
"Requirements are complex as a whole",
"Finding solution of a requirement as a whole is difficult",
"If somehow we implement a system, it becomes complex, difficult to change and                 maintain",
"Knowledge of NodeJS, SpringBoot doesn't help us"

"Result": "We fail a project",

"Why": [
"Because requirement is a complexity and",
"We have to reduce this complexity by dividing it in to smaller parts",
"We have to analyse the requirement"

"Our perception of the solution": [

"What are we missing?": [
"We can't jump to the design before analysis",
"We can't find out classes from the air",
"We can't solve this complexity without taking a step by step computational                   thinking"


"What is the right approach": {
"Use cases or scenarios": "Helps finding what a user requires or does with the                                         system. This will help finding responsibilities                                             later",
"Domain Objects": "Real world entities, vocabulary of the domain, nouns or                                     noun phrases. These objects will take responsibility of                                     achieving what user wants",
"CRC Card": "A good technique to find out responsibilities of Domain classes                             and any other class they will collaborate to achieve the                                     scenarios",
"Object responsibility assignment principles": "Certain principles help us                                                                     assigning right                                                                         responsibility to the right                                                                     object",
"Collaboration diagram": "For more complex scenarios to showcase collaboration                                            of more than two objects",
"Software classes": "Applying patters which are solution of recurring                                             problems, we add more classes which are not domain                                         objects but are software classes",
"Class diagram": "Now you can have static view of the classes and their                                         association without their properties and behaviors                                         (responsibilities) in a model",
"Iterate": "This is not a one time activity, in agile world you may have to                             iterate your model, starting with a small slice"