World is not enough, the
definition looks familiar to lot of people in this world. But once we go inside
we really feel the fact of depth of this statement. Now, do we find that deepness while we define Software Architecture? Similarly, in software development, Software Architecture typifies a complex design artifact. Do we really need to dive in to find the exact answer. Yes we should;
What
I have experienced is, people used to struggle alot to get the
exact meaning of software architecture though they are really good
Developers, Project Managers and Business Analysts. People who are
experienced understand the meaning but who don’t will struggle for sure.
At this point the software architecture is important for :
- Increases prognostication.
- Supremacy over the complex structure.
- Yield equilibrium and uniformity.
- Implement best practices.
- Re-usability.
Now,
if you go through all the definitions given on Internet I cannot reach
any final conclusion which again gives me a road block. What we gain
from our learning experience is the most important part of understanding
and the clear meaning of software architecture. As an IT professional
you need to envisage how, why, when and what you want the application to
do considering the Business Acumen. Basically you need a silhouette or
outline of the system in context to what you are willing to design.
At
this point of time we have
functional and non functional requirements/constraints. The software
architecture defines non functional requirements/constraints. And from
the
environment which is surrounding our system context you need to figure
out the
functional behavior of the system as well. Before we find out the
solution, we
normally jump into the discussion about OOP concepts, start learning
Programming Languages and the Database. These are the prerequisites,
but after understanding the architecture. And normally we are lost
behind lots
of questions; that is what we call an unbalanced knowledge discriminated
in a
software development scenario. In accordance to my experience I find the
following heuristics which define Software Architecture or you can say
which
govern Software Architecture:
- Follow the rule of software world, “Divide and Conquer” for instance segregating the system to be built into discrete nuggets.
- Mechanism considering the techniques to create interfaces between these nuggets.
- Managing structure and the flow of the system to be built.
- Construction of the system to be built from the irrelevant environment.
- Proper utilization of development and delivery slants, techniques and tools.
No comments:
Post a Comment