“What is architecture?” As per the dictionary it says “The art and science of designing and giving realistic solutions. It is the style and method of design and construction, by orderly arrangement of parts and structure”. It is the internal organization of a computer’s components with particular reference to the way in which data is transmitted. Architecture is the discipline dealing with the principles of design and construction; “architecture and eloquence are mixed arts whose end is sometimes beauty and sometimes use”.

The software architecture of a system is the set of structures about the system, which comprise software elements, relations among them, and properties. It also refers to documentation of a system’s software architecture. Documenting software architecture facilitates communication between stakeholders, documents early decisions about high-level design, and allows reuse of design components and patterns between projects

The software architecture discipline is centered on the idea of reducing complexity through abstraction and separation of concerns.  The “art” aspect of software architecture is because a commercial software system supports some aspect of a business or a mission. How a system supports key business drivers is described via scenarios as non-functional requirements of a system, also known as quality attributes, determine how a system will behave. Every system is unique due to the nature of the business drivers it supports, as such the degree of quality attributes exhibited by a system such as fault-tolerance, backward compatibility, extensibility, reliability, maintainability, availability, security, usability, and such other –ilities will vary with each implementation.

Look at the picture below. You will understand the difference between architecture and design. I am going to write more on non-functional requirements in near future.