Architecture - Repository UNIKOM
Architecture Architecture
Arnon Rotem-Gal-Oz Arnon Rotem-Gal-Oz
Product Line Architect Product Line Architect http://www.rgoarchitects.com http://www.rgoarchitects.com Agenda Agenda
Why Software Architecture?
Why Software Architecture?
What’s Software Architecture? What’s Software Architecture?
Architecture types ? Levels ??? Architecture types ? Levels ???
Introduction to Architecture
Introduction to Architecture
Documentation Documentation Discussion Discussion
What’s Software Architecture What’s Software Architecture Architecting a dog house Architecting a dog house
Can be built by one person Requires Minimal modeling Simple process Simple tools
Kruchten
Architecting a house
Architecting a house
Built most efficiently and timely by a team Requires Modeling Well-defined process Kruchten Power tools
Architecting a high rise Architecting a high rise
Kruchten
D D ifferences ifferences
Scale Scale
Process Process
Cost Cost
Schedule Schedule
Skills and development teams Skills and development teams
Materials and technologies
Materials and technologies
Stakeholders Stakeholders
Risks Risks Agenda Agenda
Why Software Architecture?
Why Software Architecture?
What’s Software Architecture? What’s Software Architecture?
Architecture types ? Levels ??? Architecture types ? Levels ???
Introduction to Architecture
Introduction to Architecture
Documentation Documentation
Architecture defined
Architecture defined
Software architecture is what Software architecture is what software architects do software architects do
Beck
Architecture defined Architecture defined
Formal Definition Formal Definition
Software architecture is the Software architecture is the fundamental fundamental organization organization of a system, embodied in its of a system, embodied in its components components
, their , their relationships relationships to each to each
other and the environment, and the
other and the environment, and the principles principles governing its design and evolution governing its design and evolution Software architecture encompasses the Software architecture encompasses the set of significant decisions about the set of significant decisions about the organization of a software system organization of a software system
Selection of the structural elements and Selection of the structural elements and their interfaces by which a system is their interfaces by which a system is composed composed
Behavior as specified in collaborations Behavior as specified in collaborations among those elements among those elements
Composition of these structural and Composition of these structural and
behavioral elements into larger
behavioral elements into larger
subsystems subsystemsArchitectural style that guides this Architectural style that guides this organization organization
Architecture defined Architecture defined
Another Go Another Go
Perry and Wolf, 1992 Perry and Wolf, 1992 A set of architectural (or design) A set of architectural (or design) elements elements that have a particular form that have a particular form
Boehm et al., 1995 Boehm et al., 1995 A software system architecture comprises A software system architecture comprises A collection of software and system A collection of software and system components, connections, and constraints components, connections, and constraints
A collection of A collection of system stakeholders' system stakeholders' need statements need statements A A rationale rationale which demonstrates that the components, connections, and constraints which demonstrates that the components, connections, and constraints define a system that, if implemented, would satisfy the collection of system define a system that, if implemented, would satisfy the collection of system stakeholders' need statements stakeholders' need statements Clements et al., 1997
Clements et al., 1997
The software architecture of a program or computing system is the
The software architecture of a program or computing system is the
structure or structures of the system, which comprise structure or structures of the system, which comprise software components software components , , the externally visible properties of those components, and the relationships the externally visible properties of those components, and the relationships among them among themArchitecture defined Architecture defined
Few More Few More
Common elements 1/2 Common elements 1/2
Architecture defines major Architecture defines major components components
Architecture defines component Architecture defines component relationships relationships
(structures) and (structures) and interactions interactions
Architecture omits content Architecture omits content information about components that information about components that does not pertain to their interactions does not pertain to their interactions
Behavior of components is a part of Behavior of components is a part of architecture insofar as it can be architecture insofar as it can be discerned from the point of view of discerned from the point of view of Common elements 2/2 Common elements 2/2
Every system has an architecture Every system has an architecture
(even a system composed of one (even a system composed of one component) component)
Architecture defines the Architecture defines the rationale rationale behind the components and the behind the components and the structure structure
Architecture definitions do not define Architecture definitions do not define what a component is what a component is
Architecture is not a single structure Architecture is not a single structure
- no single structure is
- no single structure is
the the architecture architecture Architecture is Early Architecture is Early
Architecture represents the set of earliest Architecture represents the set of earliest design decisions design decisions
Hardest to change Hardest to change
Most critical to get right Most critical to get right
Architecture is the first design artifact
Architecture is the first design artifact
where a system’s quality attributes are
where a system’s quality attributes are addressed addressed Architecture Drives Architecture Drives
Architecture serves as the blueprint Architecture serves as the blueprint for the system but also the project: for the system but also the project:
Team structure Team structure
Documentation organization Documentation organization
Work breakdown structure Work breakdown structure
Scheduling, planning, budgeting Scheduling, planning, budgeting
Unit testing, integration Unit testing, integration
Architecture establishes the Architecture establishes the
communication and coordination
communication and coordination
mechanisms among components mechanisms among components Architecture vs. Design Architecture vs. Design non-functional requirements (“ilities”) functional requirements (domains)
Important : this is a general guideline – sometimes the borders are Important : this is a general guideline – sometimes the borders are Architecture: Architecture: where non-functional decisions are cast, where non-functional decisions are cast, and functional requirements are partitioned and functional requirements are partitioned Design: Design: where functional requirements are where functional requirements are accomplished accomplished architecture architecture design design
System Quality Attribute System Quality Attribute
Performance Performance Availability Availability Usability Usability Security Security Maintainabili Maintainabili ty ty Portability Portability Reusability Reusability Testability Testability End User’s view Developer’s view Time To Time To Market Market Cost and Cost and Benefits Benefits Projected life Projected life time time Targeted Targeted Market Market Integration Integration with Legacy with Legacy System System Roll back Roll back
Schedule Schedule Business Community view A list of quality attributes exists in A list of quality attributes exists in ISO/IEC 9126-2001 Information Technology – Software Product Quality ISO/IEC 9126-2001 Information Technology – Software Product Quality Agenda Agenda
Why Software Architecture?
Why Software Architecture?
What’s Software Architecture? What’s Software Architecture?
Software Architecture types ? Software Architecture types ?
Levels ??? Levels ???
Introduction to Architecture Introduction to Architecture
Documentation Documentation Business Architecture Business Architecture
Concerned with the business model Concerned with the business model as it relates to an automated as it relates to an automated solution. solution.
E-business is a good candidate E-business is a good candidate
Structural part of requirements Structural part of requirements analysis. analysis.
Domain Specific Domain Specific Technical Architecture Technical Architecture
Specific to technology and the use of Specific to technology and the use of this technology to structure the this technology to structure the technical points (Technology technical points (Technology
Mapping) of an architecture Mapping) of an architecture
.NET .NET
J2EE J2EE Hardware architects
Hardware architects Solutions Architecture Solutions Architecture
Specific to a particular business area Specific to a particular business area
(or project) but still reliant on being a (or project) but still reliant on being a technical focal point for technical focal point for communications between the domain communications between the domain architect, business interests and architect, business interests and development. development. Enterprise Architecture Enterprise Architecture
The organizing logic for a firm’s core The organizing logic for a firm’s core business processes and IT business processes and IT capabilities captured in a capabilities captured in a set of set of principles principles
, , policies policies and and technical technical choices choices to achieve the business to achieve the business standardization and integration standardization and integration requirements of the firm’s operating requirements of the firm’s operating model. model.
Concerned with cross project/solution Concerned with cross project/solution architecture and communication architecture and communication between different practices in between different practices in
Product Line Architecture
Product Line Architecture
Common Architecture for a set of Common Architecture for a set of products or systems developed by products or systems developed by an organization an organization Product Line - Initiation Product Line - Initiation
Evolutionary Evolutionary
Product line architecture and Product line architecture and components evolve with the components evolve with the requirements posed by new product requirements posed by new product line members. line members.
Revolutionary Revolutionary
Product line architecture and components Product line architecture and components developed to match requirements of all developed to match requirements of all expected product-line members expected product-line members Agenda Agenda
Why Software Architecture?
Why Software Architecture?
What’s Software Architecture? What’s Software Architecture?
Architecture types ? Levels ??? Architecture types ? Levels ???
Introduction to Architecture
Introduction to Architecture
Documentation Documentation IEEE 1471 - Recap
IEEE 1471 - Recap Recommended Practice for
Recommended Practice for Architectural Description of
Architectural Description of Architectural Description of
Architectural Description of Software-Intensive Systems
Software-Intensive Systems Define the Relations between
Define the Relations between Stakeholders
Stakeholders Concerns
Concerns Views
Views Viewpoint
Viewpoint Models
Models Architectural Description
Architectural Description Documentation Conceptual Documentation Conceptual
Model Model Stakeholders & their Stakeholders & their Maintainer Maintainer Functionality Functionality concerns concerns End User End User Price Price Customer Customer Dev Costs Dev Costs On Time Delivery On Time Delivery
Sales Sales Stability & Maintainability Stability & Maintainability Performance Performance Dev Manager Dev Manager Developer Developer Ease of Debugging Ease of Debugging Ease of Use Ease of Use Sys Admin Sys Admin Testability & Traceability Testability & Traceability Modifiability Modifiability Structure & dependency between component Structure & dependency between component Ease of Installation Ease of Installation Documentation Conceptual Documentation Conceptual
Model Model
Discussion Discussion
What views do you know / use What views do you know / use
Views, Views and more
Views, Views and more
Views Views
RUP – 4 + 1 RUP – 4 + 1
RM-ODP – 5 RM-ODP – 5
DODAF – 3 (top level) DODAF – 3 (top level)
Zachman – 36(!) Zachman – 36(!)
MS – Well… MS – Well…
RUP – 4+1
RUP – 4+1
RM-ODP Viewpoints RM-ODP Viewpoints
(2001) (2001)
Manager Business model Database Modeler
Enterprise
Logical, data modeling Logical view of services DesignersInformation Computational
Operating Sys. Engineer Servers, Comm, Developer data and services Physical view of
(IDL, WSDL) Technology Engineering
DODAF (3 Main Views)
DODAF (3 Main Views)
DoDAF Products 1/2
DoDAF Products 1/2
DoDAF Products 2/2
DoDAF Products 2/2
Zachman Framework
Zachman Framework
Scope (Ballpark) view Scope (Ballpark) view Owners View (Enterprise Model) Owners View (Enterprise Model) Designers View (System Model) Designers View (System Model) Builder’s View (Technology Model) Builder’s View (Technology Model) Out of Context View (Detailed Model) Out of Context View (Detailed Model) Operational View (Functioning) Operational View (Functioning) Data Data (What) (What) Function Function (How) (How) Network Network (Where) (Where) People People (Who) (Who) Time Time (When) (When) Motivation Motivation (Why) (Why)
Old Model Old Model
MSF 3.0 + Views MSF 3.0 + Views
Contextual Contextual Conceptual Conceptual Logical Logical Physical Physical Aimed at business
Aimed at business executives executives
Aimed at business Aimed at business process owners process owners
Aimed at Aimed at architects and architects and designers designers
Aimed at Aimed at designers and designers and Business strategies & Business strategies & processes processes
Applications to Applications to facilitate business facilitate business process process
Information needed to Information needed to manage business manage business
Technology to support Technology to support business & business & application needs application needs
Contextual Contextual Conceptual Conceptual Logical Logical Physical Physical B u si n es s
V ie w A p p li ca ti o n s
V ie w In fo rm at io n
V ie w T e ch n o lo g y
V ie w Old Model
Old Model MSF 3.0 + Views
MSF 3.0 + Views
New Model New Model set of views and artifacts - set of views and artifacts -
Logical Data Center
DBs, Classes, Code
XML, Projects,
XML, Projects, DBs, Classes, Code
DBs, Classes, Code Logical
Logical Data Center
Data Center Logical
Data Center Physical servers Physical servers & segments & segments
XML, Projects,
Deployment Deployment
Units Units
Deployment Deployment
Units Units Abstraction/ Abstraction/ Refinement Refinement Constraints Constraints packaged into packaged into deployed on deployed on
Business Processes Business Processes and Entities and Entities
Business Processes Business Processes and Entities Reconciliation and Entities Reconciliation
XML, Projects, DBs, Classes, Code
Applications, Endpoints Applications, Endpoints
Business Business
Procedures Procedures
Capabilities Capabilities
Business Business
Capabilities Capabilities
Manual Manual
Procedures Procedures
Manual Manual
Technology Technology
Services, Messages, Services, Messages,
Architecture Architecture
Technology Technology
Architecture Architecture
Constraints Constraints Reconciliation Reconciliation
Services, Messages, Services, Messages,
Applications, Endpoints Applications, Endpoints
Abstraction/ Abstraction/ Refinement Refinement
Can be mapped… Can be mapped…
Logical Data Center
Services, Messages, Services, Messages,
Applications, Endpoints Applications, Endpoints
XML, Projects,
XML, Projects, DBs, Classes, Code
DBs, Classes, Code
XML, Projects,
XML, Projects, DBs, Classes, Code
DBs, Classes, Code Logical
Data Center Logical
Services, Messages, Services, Messages,
Logical Data Center
Data Center Physical servers Physical servers & segments & segments
Deployment Deployment
Units Units
Deployment Deployment
Units Units Abstraction/ Abstraction/ Refinement Refinement Constraints Constraints packaged into packaged into deployed on deployed on
Business Processes Business Processes and Entities and Entities
Business Processes Business Processes and Entities Reconciliation and Entities Reconciliation
Applications, Endpoints Applications, Endpoints
Constraints Constraints Reconciliation Reconciliation
Contextual Contextual Conceptual
Capabilities Capabilities
Conceptual Logical
Logical Physical
Physical Business
Business Applications
Applications Information
Information Technology
Technology
Business Business
Business Business
Architecture Architecture
Capabilities Capabilities
Manual Manual
Procedures Procedures
Manual Manual
Procedures Procedures
Technology Technology
Architecture Architecture
Technology Technology
Abstraction/ Abstraction/ Refinement Refinement Documentation Conceptual Documentation Conceptual
Model Model
Models Models
Non-standard Models Non-standard Models
ADL ADL UML UML DSL DSL
“ Non Standard” - Block “ Non Standard” - Block
Diagrams Diagrams
Rich UI Web UI Controls E xc on n Service Interface M L ep C io tio on g ti og
Activity Business Rules
on at& ca fig in ti iz n M u ito gn or
T ra Si th en th Human Workflow Workflow rin ra g ag an u tio u ce n A A Service Agents DAL em E-Publish EAI ECM DW OLTP t en An ADL Example (in An ADL Example (in
ACME) ACME) System simple_cs = { System simple_cs = { Component client = {Port send-request} Component client = {Port send-request}
Component server = {Port receive-request}
Component server = {Port receive-request}
Connector rpc = {Roles {caller, callee}}
Connector rpc = {Roles {caller, callee}} Attachments : {client.send-request to rpc.caller; Attachments : {client.send-request to rpc.caller; server.receive-request to rpc.callee} server.receive-request to rpc.callee} } } System simple_cs = { System simple_cs = { Component client = {Port send-request} Component client = {Port send-request}
Component server = {Port receive-request}
Component server = {Port receive-request}
Connector rpc = {Roles {caller, callee}}
Connector rpc = {Roles {caller, callee}} Attachments : {client.send-request to rpc.caller; Attachments : {client.send-request to rpc.caller; server.receive-request to rpc.callee} server.receive-request to rpc.callee} } } client send-request server receive-request caller callee rpc ADL - Pros ADL - Pros
ADLs represent a formal way of ADLs represent a formal way of representing architecture representing architecture
ADLs are intended to be both human and ADLs are intended to be both human and machine readable machine readable
ADLs support describing a system at a
ADLs support describing a system at a
higher level than previously possible higher level than previously possible
ADLs permit analysis of architectures –
ADLs permit analysis of architectures –
completeness, consistency, ambiguity,
completeness, consistency, ambiguity,
and performance and performanceADLs can support automatic generation of ADLs can support automatic generation of simulations / software systems simulations / software systems ADL - Cons ADL - Cons
There is not universal agreement on what There is not universal agreement on what
ADLs should represent, particularly as
ADLs should represent, particularly as
regards the behavior of the architecture regards the behavior of the architectureRepresentations currently in use are Representations currently in use are
relatively difficult to parse and are not
relatively difficult to parse and are not
supported by commercial tools supported by commercial toolsMost ADLs tend to be very vertically Most ADLs tend to be very vertically optimized toward a particular kind of optimized toward a particular kind of analysis analysis
Most ADL work today has been Most ADL work today has been
undertaken with academic rather than
undertaken with academic rather than commercial goals in mind commercial goals in mind UML 2.0 UML 2.0 13 diagram types
13 diagram types
UML
UML
DSL DSL
Logical Data Center
DBs, Classes, Code
XML, Projects,
XML, Projects, DBs, Classes, Code
DBs, Classes, Code Logical
Logical Data Center
Data Center Logical
Data Center Physical servers Physical servers & segments & segments
XML, Projects,
Deployment Deployment
Units Units
Deployment Deployment
Units Units Abstraction/ Abstraction/ Refinement Refinement Constraints Constraints packaged into packaged into deployed on deployed on
Business Processes Business Processes and Entities and Entities
Business Processes Business Processes and Entities Reconciliation and Entities Reconciliation
XML, Projects, DBs, Classes, Code
Applications, Endpoints Applications, Endpoints
Business Business
Procedures Procedures
Capabilities Capabilities
Business Business
Capabilities Capabilities
Manual Manual
Procedures Procedures
Manual Manual
Technology Technology
Services, Messages, Services, Messages,
Architecture Architecture
Technology Technology
Architecture Architecture
Constraints Constraints Reconciliation Reconciliation
Services, Messages, Services, Messages,
Applications, Endpoints Applications, Endpoints
Abstraction/ Abstraction/ Refinement Refinement
ADL - revisited ADL - revisited
ADLs are essentially a DSL for ADLs are essentially a DSL for architecture architecture
The Architecture DSLs in VSTS – can The Architecture DSLs in VSTS – can be considered as an ADL be considered as an ADL
The difference – VSTS has a set of
The difference – VSTS has a set of languages instead of one trying to languages instead of one trying to encompass all views encompass all views Discussion Discussion
What’s the “best” modeling What’s the “best” modeling techniques techniques Documentation Conceptual Documentation Conceptual
Model Model