Skip to content

Software Architecture

August 5, 2009

Software Architecture

Architecture:

Architecture is the art and science of design and structure. Here both the terms art and science are used to define the architecture because it involves technology as well as some personel creativity. Defining architecture as an art is suitable because there may be more than one design for the same problem and each desing with their own ideas.

Architecture is not some standard process. It is continuously growing one.

Software Architecture:
Software Architecture is the design of components (software components) and relations between them to meet the specified requirement and provide solution to the given problem.
Software Architecture is not tied to a specified technology. It may be implemented using a wide range of technologies.
Software Architecture is set of decisions made by a Software Architect.
Who is a Software Architect and what decisions does he make?
The role of the Software Architect involves,
1) To convert the functional specification into a technical design
2) To create model, components and interface specifications,
3) To compare with different architecutes,
4) To validate the architecture against the business requirement
The role does not stop only with these technical activities. It also includes areas that are more political and
strateryical in nature.
His role includes
Organization Roles
1) Creating High Level Desings
Stock holder and high level manages need to understand the system fairly at a gross level. Low level technical detains should be hidden in this.
2) Defining the System Context
Though the developer work on their individual modules, they need to understand the overall system. Otherwise there will be problem which integrating the different modules. The System Context provide this visibility.
3) Split the work
The system should has to be split up into individual independant compents which can communicate with each other through well defined interfaces. This gives way to parallel and more efficient developement.
Technical Roles
1) Meet the System Requirements
This involves prioritinzing the functional requirement and giving importance to the quality in that order.
2) Flexible Design Structure
The system should be designed in such a way that the different components of the system can be partitioned in many different processors without any redesign.
3) Reduce Maintanance Cost
The system should be designed in such a way that any business changes in future can be brought in the system easily at low cost
4) Easy to Integrate with legacy and third party tools
The architecture should be designed in such a way the system facilates the integration other framework, tools and API’s  easily
He need to mingle with and co-ordinate different people such as
1) Stake holder
2) Management people at different levels
3) Business analysts
4) Marketing people
5) Developer
Who can become a Software Architect?
In most cases the senior developers who have some years of experience are promoted as Software Architect. But this does not work well in many situation. Because the Software Architect is not role which only need more technical knowledge though  also it is primary requirement.
In addition to technical knowledge more leadership qualities are need to become a Software Architect. He should be able to withstand the organizational politics. He should command over his communication both with the technical and the business people.

Need for Software Architecture:

As the complexity of the application increases, it can not be solved only with the algorithms and data structures. And here comes the need for the Software Architecture. The Software Architecture of a software system has a key influence on the quality attributes of the software, such as performance, usability, maintainability, flexibility, reliability, etc.
Software Architecute is needed to meet the requirement of different people which are as follows
End Customer Requirements:
– Performance
– Availability
– Usability
– Security
Developer Requirements:
– Maintainablity
– Portability
– Reusablity
– Testability
Business People Requirements:
– Time
– Cost
– Market
– Integration with legacy system
– Roll back schedule
Advertisements
No comments yet

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: