If the software is a black box to you, dive into this article and get your facts checked and clear. At the end of this article, you will get to know how terms like software architecture, software design, OOPS, functional programming, and design patterns are linked together. You will understand how to start a journey as a software developer without getting lost while interconnecting things.
Writing code is the final stage in software development, akin to mixing cement and sand during the construction of a house.
Let is use the example of building construction. It wouldn’t be wise to start mixing sand and cement on the first day of land purchase without consulting an architect. Although it is possible, it would eventually come to a halt due to a lack of proper planning. Similarly, writing code right away without a plan can lead to issues.
Before we start designing the software, we need to outline the problem is requirements. This process is part of the software development lifecycle (SDLC), where we identify the requirements and plan how to implement the software solution.
There are several software development lifecycles, such as:
Each of these approaches has its advantages and is chosen based on project needs.
After defining the SDLC, we create a software development plan, including selecting appropriate tools like code editors, linting, and service tracking, to streamline the development process.
Moving back to architecture, once we have the requirements, it is time to chart out a plan to build the basic software structure. Just as we have options like plinth or column structures in construction, in software, we have choices like:
Once the basic structure is decided, we can then choose how to implement that architecture, such as using the Three-tier Model-View-Controller (MVC) pattern.
Now that we have completed the architecture, let is choose the programming paradigm to write our code. We have several options, such as:
Like architectural patterns, programming paradigms also have design patterns that have been experimented with and proven to make code reusable. Some examples include:
In conclusion, understanding the interconnections between software architecture, software design, programming paradigms, and design patterns is crucial for embarking on a journey as a software developer and avoiding getting lost in the process. Continuous learning and practice are key to becoming a proficient software developer.