Fundamentals of Software Architecture
In the world of technology, starting from small children to young people and starting from young to old people everyone using their Smartphones, Laptops, Computers, PDAs etc to solve any simpler or complex task online by using some software programs, there everything looks very simple to user. Also that’s the purpose of a good software to provide good quality of services in a user-friendly environment. There the overall abstraction of any software product makes it looks like simple and very easier for user to use. But in back if we will see building a complex software application includes complex processes which comprises of a number of elements of which coding is a small part.
After gathering of business requirement by a business analyst then developer team starts working on the Software Requirement Specification (SRS), sequentially it undergoes various steps like testing, acceptance, deployment, maintenance etc. Every software development process is carried out by following some sequential steps which comes under this Software Development Life Cycle (SDLC).
In the design phase of Software Development Life Cycle the software architecture is defined and documented. So in this article we will clearly discuss about one of significant element of Software Development Life Cycle (SDLC) i.e the Software Architecture.
Software Architecture :
Software Architecture defines fundamental organization of a system and more simply defines a structured solution. It defines how components of a software system are assembled, their relationship and communication between them. It serves as a blueprint for software application and development basis for developer team.
Software architecture defines a list of things which results in making many things easier in the software development process.
- A software architecture defines structure of a system.
- A software architecture defines behavior of a system.
- A software architecture defines component relationship.
- A software architecture defines communication structure.
- A software architecture balances stakeholder’s needs.
- A software architecture influences team structure.
- A software architecture focuses on significant elements.
- A software architecture captures early design decisions.
Characteristics of Software Architecture :
Architects separate architecture characteristics into broad categories depending upon operation, rarely appearing requirements, structure etc. Below some important characteristics which are commonly considered are explained.
- Operational Architecture Characteristics :
- Low fault tolerance
- Structural Architecture Characteristics :
- Cross-Cutting Architecture Characteristics :
SOLID principles of Software architecture :
Each character of the word SOLID defines one principle of software architecture. This SOLID principle is followed to avoid product strategy mistakes. A software architecture must adhere to SOLID principle to avoid any architectural or developmental failure.
- Single Responsibility –
Each services should have a single objective.
- Open-Closed Principle –
Software modules should be independent and expandable.
- Liskov Substitution Principle –
Independent services should be able to communicate and substitute each other.
- Interface Segregation Principle –
Software should be divided into such microservices there should not be any redundancies.
- Dependency Inversion Principle –
Higher-levels modules should not be depending on low-lower-level modules and changes in higher level will not affect to lower level.
Importance of Software Architecture :
Software architecture comes under design phase of software development life cycle. It is one of initial step of whole software development process. Without software architecture proceeding to software development is like building a house without designing architecture of house.
So software architecture is one of important part of software application development. In technical and developmental aspects point of view below are reasons software architecture are important.
- Selects quality attributes to be optimized for a system.
- Facilitates early prototyping.
- Allows to be built a system in component wise.
- Helps in managing the changes in System.
Besides all these software architecture is also important for many other factors like quality of software, reliability of software, maintainability of software, Supportability of software and performance of software and so on.
Advantages of Software Architecture :
- Provides a solid foundation for software project.
- Helps in providing increased performance.
- Reduces development cost.
Disadvantages of Software Architecture :
- Sometimes getting good tools and standardization becomes a problem for software architecture.
- Initial prediction of success of project based on architecture is not always possible.
From above it’s clear how much important a software architecture for the development of a software application. So a good software architecture is also responsible for delivering a good quality software product.