130 likes | 138 Views
Delve into the essence of software architecture, its evolution, and core concepts like structures, mechanisms, and quality attributes. Discover the shift from closed to open systems, individual to social, and local to global in modern architecture practices.
E N D
Space plan Services Stuff Structure Skin Site Software Architecture and Software Architecture Patterns (1)
What is architecture? • an overall blueprint/model describing the structures and properties of a "system" • designed mechanisms (causal chains & loops) which lead to - • emergent (intended) behaviour (but always some unintended behaviour as well) • "mapping" the boundaries (questions about the level of "closure")
Dictionary definition: Architecture n 1: the art of science of building, specifically, the art or practice of designing and building structures and esp. habitable ones 2 a: formation or construction as or as if as the result of conscious act <the ~ of the garden> b: a unifying or coherent form or structure <the novel lacks ~> [Webster’s Colligiate Dictionary - 10th ed.]
Software Architecture defined: • Software architecture encompasses the set of significant decisions about the organization of a software system • selection of the structural elements and their interfaces by which a system is composed • behavior as specified in collaborations among those elements • composition of these structural and behavioral elements into larger subsystem • architectural style that guides this organization [Ref: Grady Booch et. al.]
“Common” assumptions about software architecture: • Architecture and design are the same thing • Architecture and infrastructure are the same thing • <my favorite technology> is the architecture • A good architecture is the work of a single architect • Architecture is flat, one blueprint is enough • Architecture is just structure • System architecture precedes software architecture • Architecture cannot be measured and validated • Architecture is a Science • Architecture is an Art [ref: Philippe Kruchten]
Software Architecture (again) : 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. [Kazman et. al. ref: Wikipedia]
Implies specific questions and answers about: structures, mechanisms, communication, components, resilience, scalability, performance, adaptability, reliability, changeability, maintainability, extensibility, security, technologies, standards, aesthetics, and other key concerns.
The “why” The “what” System Features Architecture Qualities Satisfies S/W Requirements Constrain Architecture Representation System Quality Attributes Technology Produces Defines The “how” The “who” Follows Architect Process Skills Defines role Organization Stakeholders The What, Who, Why & How of SA:
But… A Kuhnian “paradigm shift” since the 90’s… • Architecture breaking out of the enterprise…. “my web is bigger than your enterprise” • from closed to open • from machine to network • from individual to social • from local to global • from platform to application
oh… but there is so much more now in the architecture pie.. towards…