What is software architecture design ?
Filed Under Design, Architecture, Techniques, Model, Development, Process, Software | Posted on September 23, 2007
“Architecture is concerned with the selection of architectural elements, their interaction, and the constraints on those elements and their interactions… Design is concerned with the modularization and detailed interfaces of the design elements, their algorithms and procedures, and the data types needed to support the architecture and to satisfy the requirements.”
Software architecture is commonly defined in terms of components and connectors. Components are identified and assigned responsibilities that client components interact with through “contracted” interfaces. Component interconnections specify communication and control mechanisms, and support all component interactions needed to accomplish system behavior.
The software architecture of a program or computing system is the structure or structures of the system, which comprise software components, the externally visible properties of those components, and the relationships between them. The term 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.
Software architecture is really the amalgamation of the multiple perspectives a system always embodies. The fact that those several different perspectives can be put together into a software architecture stands as the vindication of the need and justification of creation of software architecture before the software development in a project attains maturity.
How do you fit the software architecture process in the overall development process ? Refer to the diagram below.

How is software architecture different from detailed design ?
Software architecture, also described as strategic design, is an activity concerned with global design constraints, such as programming paradigms, architectural styles, component-based software engineering standards, design principles, and law-governed regularities. Detailed design, also described as tactical design, is an activity concerned with local design constraints, such as design patterns, programming idioms, and refactorings.
Leave a Reply