2AuthorshipThe notes we introduce for this course consist of my personal abstraction of the material presented in the book:Software Architecture in Practice, Second edition. Len Bass, Paul Clements and Rick Kazman, SEI Series in Software Engineering, Addison-Wesley CoAnything appart from the book’s material comes from my personal point of view on the topics presented.
3Software Architecture “If a project has not achieved a system architecture, including its rationale, the project should not proceed to full-scale system development. Specifying the architecture as a deliverable enables its use throughout the development and maintenance process.”— Barry Boehm [Boe95]
4Software Architecture Architecture has emerged as a crucial part of the design process.Software architectures (SA) encompasses the structures of large software systems.The architectural view of a system is abstract, distilling away details of implementation, algorithm and data representation.A software architecture is developed as the first step toward designing a system that has a collection of desired properties.
5Software Architecture A building architect must design a building that provides accessibility, aesthetics, light, maintainability, and so on.A software architect must design a system that provides concurrency, portability, modifiability, usability, security, and the like, and that reflects consideration of the tradeoffs among these needs.
6Software Architecture The software architecture of a program or computing system is the structure or structures of the system, which comprise software elements, the externally visible properties of those elements, and the relationships among them.
7Software Architecture Where:Externally visible are those assumptions other elements can make of an element, such as:- provided services,- performance characteristics,- fault handling,- shared resource usageand so on.
8Software Architecture Important remarksArchitecture defines software elements.An architecture is an abstraction of a system that suppresses details of elements that do not affect how they use, are used by, relate to, or interact with other elements.Systems normally comprise more than one structure.A structure may express the implementation relations among the elements of the system.Another structure can show the way in which different components interact at running time.And so on.
9Software Architecture Important remarks (cont.)Every computing system has a software architecture.Every system comprise elements and relations among them.The behavior of each element is part of the architecture.To the extent that an element’s behavior influences how another element must be written to interact with it or influences the acceptability of the system as a whole, this behavior is part of the software architecture.
10Architectural Structures Different stages in developing a software architectureArchitectural PatternAn architectural pattern is a description of element and relation types together with a set of constraints on how they may be used.Reference ModelA reference model is a division of functionality together with data flow between the pieces.Reference ArchitectureA reference architecture is a reference model mapped onto software elements and the data flows between them. A reference architecture is the mapping of the functionality onto a system decomposition.
11Architectural Structures Relationship among stagesReferenceModelReferenceArchitectureSoftwareArchitectureArchitecturalPattern
12Importance of Software Architecture (SA) Communication among stakeholders.Stakeholders of the system – customer, user, project manager, coder, tester, and so on.SA represents a common abstraction of the system that can be used as a basis for understanding, negotiation, consensus, and communication.Early design decisionSA manifest the earliest design decisions about a system. It is also the earliest point at which design decisions governing the system to be built can be analyzed.Transferable abstraction of a system.A SA constitutes model of the structure and functionalities of the system. This model is transferable across systems when they exhibit similar quality attribute an functional requirements and promote large-scale re-use.
13Architecture manifest the earliest design decisions What happen when I push this button?(presentar el caso pag , libro [Bass03])
14Architecture manifest the earliest design decisions The architecture defines constraints on implementation.The architecture defines organizational structure.The architecture inhibits or enables a system’s quality attributes.Predicting system qualities by studying the architecture.The architecture makes it easier to reason about and manage change.The architecture helps in evolutionary prototyping.The architecture enables more accurate cost and schedule estimates.
15Architecture as a transferable, re-usable model Systems can be built using large, externally developed elements.Less is More: It pays to restrict the vocabulary to design alternatives.An architecture permits template-based development.An architecture can be the basis for training.
16Architectural structures an views Communication among stakeholders.Stakeholders of the system – customer, user, project manager, coder, tester, and so on.SA represents a common abstraction of the system that can be used as a basis for understanding, negotiation, consensus, and communication.Early design decisionSA manifest the earliest design decisions about a system. It is also the earliest point at which design decisions governing the system to be built can be analyzed.Transferable abstraction of a system.A SA constitutes model of the structure and functionalities of the system. This model is transferable across systems when they exhibit similar quality attribute an functional requirements and promote large-scale re-use.
17Some remarksA software architecture describes elements of a system and the relation among them.Every system has many kinds of elements.Different architectural structures are useful, even necessary, to present a complete picture of the architecture of a system.Each structure concentrates on one aspect of the architecture.