170 likes | 280 Views
Architecture Quality. extraordinarily large systems, services, strategic design, scalability and reliability, large datasets, latency, service-oriented systems, manage architectural change, scaling domain driven design. A definition.
E N D
Architecture Quality extraordinarily large systems, services, strategic design, scalability and reliability, large datasets, latency, service-oriented systems, manage architectural change, scaling domain driven design
A definition "Software architecture is the set of design decisions which, if made incorrectly, may cause your project to be cancelled." – Eoin Woods
Intension/Locality Hypothesis Non-local statements: architecture Local and intensional statements: design Local and extensional statements: implementation Amnon Eden, Yoram Hirshfeld, and Rick Kazman
Perry and Wolf In one of the seminal papers on software architecture from 1992, they draw an analogy between building architecture and software architecture to develop an intuition about software architecture Blueprints, skeletons of the big picture etc.
Analogy Similarity in some respects between things that are otherwise dissimilar.
Pantheon Originally built in 27 BC, destroyed (as a prototype should be) and rebuilt in 125 AD. So the real structure of this building is actually only 1882 years old... Originally built as a general purpose church, to all the gods. In 609 converted into a Christian church.
Charles de Gaulle Airport Perfection!
Crash.... 30 years later....
Being John Malkovich I have nothing to add....
Back to the analogy Right, it might not be perfect, but buildings can be used to say something intuitive about software architecture.
The speakers of the track today • “Architectures of extraordinarily large, self-sustaining systems” Richard Gabriel • “Three steps for turning your Tier-Based/Spring-Application into dynamically Scalable Services (without Web Services)” Nati Shalom • “Strategic Design” Eric Evans • “The Top 10 Ways to Botch Enterprise Java Application Scalability and Reliability” Cameron Purdy • “Amazon and Hadoop” Jinesh Varia
Some numbers from Google • 1,750,000 hits on “software architecture” • 33,600 hits on “architecture quality” Should we be worried?
Software architecture definitions The structure or structures of the system, which comprise software components, the externally visible properties of those components, and the relationships between them.
Garlan and Shaw, 1993 ...beyond the algorithms and data structures of the computation; designing and specifying the overall system structure emerges as a new kind of problem. Structural issues include gross organization and global control structure; protocols for communication, synchronization, and data access; assignment of functionality to design elements; physical distribution; composition of design elements; scaling and performance; and selection among design alternatives."
Perry and Wolf, 1992 A set of architectural (or, if you will, design) elements that have a particular form. Perry and Wolf distinguish between processing elements, data elements, and connecting elements, and this taxonomy by and large persists through most other definitions and approaches.
Nice mathematics! No two methods with the same signature are defined in the same class: ∀m1∈Method ∀m2∈Method ∀c∈Class ・ SameSignature(m1,m2)∧Member(m1,c)∧Member(m2,c) ⇒ m = m