Software developmet is a multi-step process
Each step needs to be managed well.
The software architech has overall responsible for driving the major technical
decisions expressed as the software architecture. This typically includes identifying
and documenting the architecturally significant aspects of the system, including the
requirements, design,implementation, and deployment,and deployment "views" of the
Every software system has an architecture, but not every software architecture is defined. While there is structure to most software systems,
sometimes that structure has been explicitly thought about and sometimes it isn't. Software Architecture is the logical design of interconnected components
that work toward the objective of an existing or potential system, given the required resources. It is important because:
Imposes best practices
Provides consistency and standardization
Regardless of the development process that you use, a description of the software architecture can be essential for any project, big or small.
If software architecture is about the structure of a system and is the vehicle for satisfying the requirements, then the software architecture document is a written description of this.
Simplified view of the content included in a software architecture document is :
1. An outline description of the software architecture, including major software components and their interactions.
2. A common understanding of the architectural principles used during design and implementation.
3. A description of the hardware and software platforms on which the system is built and deployed.
4. Explicit justification of how the architecture meets the non-functional requirements.
There are many common ways of designing computer software modules and their communications, among them:
Clientserver model (2-tier, n-tier, peer-to-peer, cloud computing all use this model)
Database-centric architecture (broad division can be made for programs which have database at its center and applications which don't have to rely on databases, E.g. desktop application programs, utility programs etc.)
Front end and back end
Pipes and filters
Representational State Transfer
Search-oriented architecture (A pure SOA implements a service for every data access point.)
Shared nothing architecture
Software componentry (strictly module-based, usually object-oriented programming within modules, slightly less monolithic)
Space based architecture
Structured (module-based but usually monolithic within modules)
Three-tier model (An architecture with Presentation, Business Logic and Database tiers)