SlideShare una empresa de Scribd logo
1 de 42
Descargar para leer sin conexión
Software architecture
      Paolo Ciancarini
Agenda
    Software architecture: standard definitions
    Architectural assets
    Architectural theories




                                                   2
What is the role of architecture?
Development lifecycle



                               Architecture sets system structure


                                           First iteration implements system core




An iterative lifecycle model




 Architecture plays a vital role in establishing the structure of
        the system, early in the development lifecycle
System lifetime




Architecture is about decisions that affect
    the whole lifetime of the system
Architecture = design decisions
 Software                          Software
Architecture                        design
                                                           Decisions
                                                       “Design” decisions
                                                     Architectural decisions
                                                   “Requirements constraints”
Requireme
   nts




                                      Code etc.



            A choice that is binding in the final product
Architecture = Design? No!


                 “Do not dilute the meaning
                   of the term architecture
                 by applying it to everything
                           in sight.”
                            Mary Shaw
Twin peaks model




                   8
Definitions…
                                      …and form a whole
                                         that fulfils a
  A system is a
                                      designed purpose
  collection of
      parts
                   The parts have
                  relations to each
                       other…
Definition: Wikipedia
    The software architecture of a program or
     computing system is the structure of the system,
     which comprises its software components, the
     externally visible properties of those
     components, and the relationships between them
    The term also refers to the documentation of a
     system's software architecture.
     Documenting a software architecture facilitates the
     communication between stakeholders, documents
     the early decisions about high-level design, and
     allows the reuse of the components and patterns
     across projects
                                                     10
Brief history
    The basics of software architecture were introduced by
     Dijkstra (1968) and Parnas (1970). They studied:
         The key role of the structure of a software system, and
         How tricky the definition of the right structure for a given system is
    A great deal of research has been conducted on software
     architectures starting from the ’90s, mainly focusing on:
         How to solve recurrent architectural problems (patterns)
         Architectural styles
         The definition of languages to describe software architectures (ADL)
         Documentation of the architecture of a system
    … claimed to give rise to the definition of a discipline
         See: Shaw and Garlan Software Architecture: Perspectives on an
          Emerging Discipline, 1996


                                                                              11
Standard
    The main standard in the field of software
     architectures is the ANSI/IEEE 1471-2000:
     Recommended Practice for Architecture
     Description of Software-Intensive Systems
         better known as IEEE 1471 standard
    In fact it is a “recommended practice”
         the “weakest” type of IEEE standards, whose adoption
          and interpretation are the responsibility of the using
          organization
    It has been adopted by ISO/IEC JTC1/SC7 as ISO/
     IEC 42010:2007, in 2007

                                                               12
Definition: IEEE 1471
    Intuitively, the architecture of a software system
     represents its internal structure, in terms of the
     single components of which it is made up and of
     the interactions among them
    According to the IEEE 1471-2000 standard, the
     architecture of a software system is its basic
     organization, in terms of its components, of the
     interactions among components and with the
     external environments, as well as of the basic,
     driving, principles for system design and evolution


                                                      13
IEEE 1471
    It focuses on the description of an architecture as the
     concrete artifact representing the abstraction that is
     “software architecture” or “system architecture”
    IEEE 1471's contributions:
         It provides the definitions and a conceptual model for the description
          of a software architecture
         It states that an architecture goal is to respond to specific
          stakeholders’ concerns about the software system being described
         It asserts that architecture descriptions are inherently multi-view, as
          no single view can capture all stakeholders’ concerns about an
          architecture
         It separates the notion of a view from a viewpoint, which identifies
          the set of concerns and the representations/modeling techniques,
          etc. used to describe the architecture to address those concerns
         It establishes that a conforming architecture description has a 1-to-1
          correspondence between its viewpoints and its views

                                                                             14
IEEE1471 Conceptual Model for Sw Architectures
16
Standard
    2000: IEEE 1471
    2001: ANSI
    2007: ISO/IEC 42010

    Next version: architecture frameworks &
     conformance

    www.iso-architecture.org/ieee-1471/



                                               17
Defining a software architecture
    The definition of the architecture is an important
     step of system design (i.e., architectural design)
    Its aim is the structural decomposition of a system
     into sub-systems:
         Divide et impera approach: to develop single sub-entities
          is simpler than to develop an entire system
         It allows to perform several development activities at the
          same time (different entities can be developed in parallel)
         It fosters the modifiability, the reusability, and the
          portability of a system



                                                                 18
Defining the system architecture
    The definition of the criteria for the identification of
     sub-entities is a preliminary step:
         A typical criterion is the functional one, i.e., a sub-entity
          may be identified by mapping software functionalities to
          its parts:
               E.g., user interface, database access, security management…
    High Cohesion and Low Coupling among
     components are key guidelines
         Each sub-system has to contain cohesive components
          (e.g., modules providing services which are strictly
          related one to each other)
         Minimize interactions among subsystems, that should
          result scarcely coupled

                                                                         19
Software module
    A module is a piece of software that:
         Provides an abstraction (on data, on function)
         Clearly separates the interface from the body
                                                               Module

                                                           Interface
    The interface specifies “what” the                    (visible from outside)
     module is (the abstraction provided) and
     “how” it can be used                                  Body
         The interface is the contract between a user     (hidden and
          and the provider of the abstraction              protected)
    The body describes “how” the
     abstraction is implemented




                                                                            20
Key architectural design principles
    Simplicity                Modularity
                               Low coupling
                               Separation of concerns



    Abstraction               Postponing decisions
                               Encapsulation
                               Information hiding
                               Clear interface
                               High cohesion


                                                       21
Sources of Architecture
    Theft
         From a previous system or from technical literature
    Method
         An approach to deriving the architecture from the requirements
    Intuition
         The experience of the architect




              From “Mommy, Where Do Software Architectures Come From?”, Philippe Kruchten
              1st International Workshop on Architectures for Software Systems, Seattle, 1995
What Types of Architectural Asset are there?

                           Reference        Design
                          Architecture      Pattern

                            Legacy        Architectural
                          Application      Mechanism

                            Pattern         Packaged
                           Language        Application

                          Development      Reference
                            Method           Model

                          Architectural   Programming
                            Decision         Pattern

                            Pattern       Component
                                            Library

                          Component       Architectural
                                            Pattern

                          Architectural   Application
                             Style        Framework
Pattern
    [A pattern is] a common solution to a common
     problem in a given context. [UML User Guide]
    Pattern types
         Architectural Patterns
               Distribution patterns
               Security Patterns
               …
         Design Patterns
         Programming Patterns
         Requirements Patterns
         Testing Patterns
         Project Management Patterns
         Process Patterns
         Organizational Patterns
         …
Architectural Pattern
    An architectural pattern expresses a fundamental structural
     organization schema for software systems. It provides a set
     of predefined subsystems, specifies their responsibilities,
     and includes rules and guidelines for organizing the
     relationships between them. [Buschmann]
    Example:
      Pattern: Layers

      Context
      A system that requires decomposition

      Problem
      High-level elements rely on lower-level elements and the following forces must
      be balanced:

      - Interfaces should be stable
      - Parts of the system should be exchangeable
      - Source code changes should not ripple through the system

      Solution
      25
      Structure the system into layers
Architectural pattern – Layers
          ISO OSI 7-Layer Model
Layer 7    Application    Provides application facilities


Layer 6    Presentation   Structures information as required


Layer 5      Session      Manages the connection               Personal Organizer
Layer 4     Transport     Creates packets of data


Layer 3     Network       Routes packets of data


Layer 2     Data Link     Detects and corrects errors


Layer 1      Physical     Transmits bits
Design Pattern
    A design pattern provides a scheme for refining the subsystems or
     components of a software system, or the relationships between them. It
     describes a commonly-recurring structure of communicating
     components that solves a general design problem within a particular
     context. [Gamma]




                                            Observer Pattern
Programming Pattern
    An idiom is a low-level pattern specific to a
     programming language. An idiom describes how to
     implement particular aspects of components or the
     relationships between them using the features of
     the given language. [Buschmann]

                // Swap the values of 2 variables
                temp = a;
                a = b;
                b = temp;
Architectural Style
    [An architectural style] defines a family of systems in terms
     of a pattern of structural organization. More specifically, an
     architectural style defines a vocabulary of components and
     connector types, and a set of constraints on how they can
     be combined. [Shaw]
    Client-server
         Supports the physical separation of client-side processing (such as
          a browser) and server-side processing (such as an application
          server that accesses a database)
    Event-based
         Promotes a publish-subscribe way of working, applied strategically
          across large areas of the architecture
    Pipes-and-filters
         A series of filters that provide data transformation, and pipes that
          connect the filters. Examples include compilers, signal processing
Pattern Language
    A pattern language defines a collection
     of patterns and the rules to combine
     them. Pattern languages are often
     used to describe a family of systems
    IBM Patterns for e-Business
          A set of architectural patterns that
         describe various web-based
         applications
          Includes a pattern selection process

         that drives:
                  Selection of a business,
                   integration or composite pattern
                  Selection of application
                   patterns
                  Selection of runtime patterns
                  Identification of product
                   mappings




                                                      *See http://www.ibm.com/developerworks/patterns

                                                                                                   30
Reference Architecture
    A reference architecture is an architecture representation of
     a particular domain of interest. It typically includes many
     different architectural patterns, applied in different areas of
     its structure
    Examples include J2EE and .NET




      31
Reference Model
    A reference model is an abstract representation of entities,
     their relationships and behavior, in a given domain of
     interest, and which typically forms the conceptual basis for
     the development of more concrete elements
    Examples include a business model, an information model
     and a glossary of terms
                                IBM Information FrameWork (IFW)
                  IFW Information Models (Banking Data Warehouse)   IFW Process & Integration Models

                   IFW Foundation Models

                                                                         Financial              Financial
                                                                         Services               Services
                        Financial Services Data Model
                                                                         Function               Workflow
                                                                           Model                  Model



                       Business              Application                                         Business
                                                                        Business
                       Solution               Solution                                           Process
                                                                       Object Model
                       Templates              Templates                                           Model




                       Banking Data Warehouse Model                          Interface Design Model
Application Framework
    An application framework represents the partial
     implementation of a specific area of an application
    Most widely-known frameworks support user interfaces
         Java Server Pages
         ASP.NET

              Client                                     Server
                       HTTP              HTTP
              URL
                                                Web
                              Internet
                                                Server




                                                Scripting
                                                container




                                                            Script
Architectural Mechanism
    Architectural mechanisms represent common
     concrete solutions to frequently encountered
     problems. They may be patterns of structure,
     patterns of behavior, or both. [RUP]
    Often characterized as
         “the mechanism for achieving X”
         “this element is underpinned by mechanism Y”
    Examples
         Persistency mechanism
         Error logging mechanism
         Communication mechanism
         Shopping cart
Packaged Application
    A packaged application is a large-grained
     Commercial-Off-The-Shelf (COTS) product that
     provides a significant amount of capability (and
     reuse)
    Examples
         Customer Relationship Management (CRM) application
          (e.g. Siebel)
         Enterprise Resource Planning (ERP) application (e.g.
          SAP)
    The amount of custom development required is
     greatly reduced
    Primary focus is on configuring the application
Component & component library
    Component examples
         GUI widget (such as a table)
         Service



    Component library examples
         Class libraries (e.g. Java class library)
         Procedure libraries
Legacy Application
    A legacy application is a system that continues to
     be used because the owning organization cannot
     replace or redesign it
    Tends to be a focus on integration rather than new
     development
    Often results in a focus on enterprise application
     integration (EAI)
Architectural Decision
    [Architectural decisions are] conscious
     design decisions concerning a software
     system as a whole, or one or more of
     its core components. These decisions
     determine the non-functional
     characteristics and quality factors of
     the system. [Zimmermann]
    Decision rationale may come from
     experience, method or some other
     asset




                                               38
Self questions
    What is a software architecture?
    What is an architectural asset?
    What is an architectural concern?
    What is an architectural view?
    What is a component?
    What is a connector?




                                         39
References
    Shaw & Garlan Software Architecture: Perspectives on an
     Emerging Discipline, Prentice Hall, 1996
    Bass, Clemens & Kazman, Software Architecture in
     Practice, 2nd ed, Addison Wesley, 2003
     softarchpract.tar.hu!
    Garland, Large-Scale Software Architecture: A Practical
     Guide using UML, Addison-Wesley, 2005
    Clements, Documenting Software Architectures: Views and
     Beyond, The SEI Series in Software Engineering, 2002




                                                         40
Blogs and wikis
    enterprise-architecture-wiki.nl/mediawiki/index.php/Main_Page
    www.bredemeyer.com/definiti.htm!
    www.sei.cmu.edu/architecture!




                                                                     41
Questions?

Más contenido relacionado

La actualidad más candente

Thesis presentation: Middleware for Ubicomp - A Model Driven Development Appr...
Thesis presentation: Middleware for Ubicomp - A Model Driven Development Appr...Thesis presentation: Middleware for Ubicomp - A Model Driven Development Appr...
Thesis presentation: Middleware for Ubicomp - A Model Driven Development Appr...Till Riedel
 
Paper Prototyping and Wireframes
Paper Prototyping and WireframesPaper Prototyping and Wireframes
Paper Prototyping and WireframesItamar Medeiros
 
Domain Analysis & Data Modeling
Domain Analysis & Data ModelingDomain Analysis & Data Modeling
Domain Analysis & Data ModelingEelco Visser
 
Implementation issues software engineering
Implementation issues software engineeringImplementation issues software engineering
Implementation issues software engineeringrishi ram khanal
 
Needs challenges and_opportunites_in_architectural_languages (bolzano_dec2013)
Needs challenges and_opportunites_in_architectural_languages (bolzano_dec2013)Needs challenges and_opportunites_in_architectural_languages (bolzano_dec2013)
Needs challenges and_opportunites_in_architectural_languages (bolzano_dec2013)Henry Muccini
 
Data Designs (Software Engg.)
Data Designs (Software Engg.)Data Designs (Software Engg.)
Data Designs (Software Engg.)Arun Shukla
 
BARRIERS SURROUNDING KNOWLEDGE TRANSFER IN NON-COLLOCATED SOFTWARE ARCHITECTU...
BARRIERS SURROUNDING KNOWLEDGE TRANSFER IN NON-COLLOCATED SOFTWARE ARCHITECTU...BARRIERS SURROUNDING KNOWLEDGE TRANSFER IN NON-COLLOCATED SOFTWARE ARCHITECTU...
BARRIERS SURROUNDING KNOWLEDGE TRANSFER IN NON-COLLOCATED SOFTWARE ARCHITECTU...IJASCSE
 
Aspect Oriented Programming
Aspect Oriented ProgrammingAspect Oriented Programming
Aspect Oriented Programmingmukhtarhudaya
 
Software architecture Unit 1 notes
Software architecture Unit 1 notesSoftware architecture Unit 1 notes
Software architecture Unit 1 notesSudarshan Dhondaley
 
Architectural Design
Architectural DesignArchitectural Design
Architectural DesignJay Thakkar
 
Software Architecture
Software ArchitectureSoftware Architecture
Software ArchitectureVikas Dhyani
 

La actualidad más candente (20)

1010 chapter10
1010 chapter101010 chapter10
1010 chapter10
 
Thesis presentation: Middleware for Ubicomp - A Model Driven Development Appr...
Thesis presentation: Middleware for Ubicomp - A Model Driven Development Appr...Thesis presentation: Middleware for Ubicomp - A Model Driven Development Appr...
Thesis presentation: Middleware for Ubicomp - A Model Driven Development Appr...
 
Paper Prototyping and Wireframes
Paper Prototyping and WireframesPaper Prototyping and Wireframes
Paper Prototyping and Wireframes
 
Domain Analysis & Data Modeling
Domain Analysis & Data ModelingDomain Analysis & Data Modeling
Domain Analysis & Data Modeling
 
Class notes
Class notesClass notes
Class notes
 
Implementation issues software engineering
Implementation issues software engineeringImplementation issues software engineering
Implementation issues software engineering
 
Needs challenges and_opportunites_in_architectural_languages (bolzano_dec2013)
Needs challenges and_opportunites_in_architectural_languages (bolzano_dec2013)Needs challenges and_opportunites_in_architectural_languages (bolzano_dec2013)
Needs challenges and_opportunites_in_architectural_languages (bolzano_dec2013)
 
Data Designs (Software Engg.)
Data Designs (Software Engg.)Data Designs (Software Engg.)
Data Designs (Software Engg.)
 
BARRIERS SURROUNDING KNOWLEDGE TRANSFER IN NON-COLLOCATED SOFTWARE ARCHITECTU...
BARRIERS SURROUNDING KNOWLEDGE TRANSFER IN NON-COLLOCATED SOFTWARE ARCHITECTU...BARRIERS SURROUNDING KNOWLEDGE TRANSFER IN NON-COLLOCATED SOFTWARE ARCHITECTU...
BARRIERS SURROUNDING KNOWLEDGE TRANSFER IN NON-COLLOCATED SOFTWARE ARCHITECTU...
 
99 103
99 10399 103
99 103
 
24 27
24 2724 27
24 27
 
System design
System designSystem design
System design
 
7 13
7 137 13
7 13
 
Aspect Oriented Programming
Aspect Oriented ProgrammingAspect Oriented Programming
Aspect Oriented Programming
 
Software architecture Unit 1 notes
Software architecture Unit 1 notesSoftware architecture Unit 1 notes
Software architecture Unit 1 notes
 
Articulo acm
Articulo acmArticulo acm
Articulo acm
 
Legacy Systems
Legacy SystemsLegacy Systems
Legacy Systems
 
Architectural Design
Architectural DesignArchitectural Design
Architectural Design
 
Software Architecture
Software ArchitectureSoftware Architecture
Software Architecture
 
Scurtis 2009 Book
Scurtis 2009 BookScurtis 2009 Book
Scurtis 2009 Book
 

Destacado

21 security and_trust
21 security and_trust21 security and_trust
21 security and_trustMajong DevJfu
 
22 deployment and_mobility
22 deployment and_mobility22 deployment and_mobility
22 deployment and_mobilityMajong DevJfu
 
20 nfp design_techniques
20 nfp design_techniques20 nfp design_techniques
20 nfp design_techniquesMajong DevJfu
 
24 dssa and_product_lines
24 dssa and_product_lines24 dssa and_product_lines
24 dssa and_product_linesMajong DevJfu
 
19 designing for_nf_ps
19 designing for_nf_ps19 designing for_nf_ps
19 designing for_nf_psMajong DevJfu
 
25 architectural adaptation
25 architectural adaptation25 architectural adaptation
25 architectural adaptationMajong DevJfu
 
2 - Architetture Software - Software architecture
2 - Architetture Software - Software architecture2 - Architetture Software - Software architecture
2 - Architetture Software - Software architectureMajong DevJfu
 
5 - Architetture Software - Metamodelling and the Model Driven Architecture
5 - Architetture Software - Metamodelling and the Model Driven Architecture5 - Architetture Software - Metamodelling and the Model Driven Architecture
5 - Architetture Software - Metamodelling and the Model Driven ArchitectureMajong DevJfu
 
4 - Architetture Software - Architecture Portfolio
4 - Architetture Software - Architecture Portfolio4 - Architetture Software - Architecture Portfolio
4 - Architetture Software - Architecture PortfolioMajong DevJfu
 
10 - Architetture Software - More architectural styles
10 - Architetture Software - More architectural styles10 - Architetture Software - More architectural styles
10 - Architetture Software - More architectural stylesMajong DevJfu
 
1 - Architetture Software - Software as a product
1 - Architetture Software - Software as a product1 - Architetture Software - Software as a product
1 - Architetture Software - Software as a productMajong DevJfu
 

Destacado (20)

21 security and_trust
21 security and_trust21 security and_trust
21 security and_trust
 
Tmd template-sand
Tmd template-sandTmd template-sand
Tmd template-sand
 
1
11
1
 
22 deployment and_mobility
22 deployment and_mobility22 deployment and_mobility
22 deployment and_mobility
 
6
66
6
 
20 nfp design_techniques
20 nfp design_techniques20 nfp design_techniques
20 nfp design_techniques
 
24 dssa and_product_lines
24 dssa and_product_lines24 dssa and_product_lines
24 dssa and_product_lines
 
19 designing for_nf_ps
19 designing for_nf_ps19 designing for_nf_ps
19 designing for_nf_ps
 
5
55
5
 
Uml2
Uml2Uml2
Uml2
 
Uml3
Uml3Uml3
Uml3
 
25 architectural adaptation
25 architectural adaptation25 architectural adaptation
25 architectural adaptation
 
2 - Architetture Software - Software architecture
2 - Architetture Software - Software architecture2 - Architetture Software - Software architecture
2 - Architetture Software - Software architecture
 
23 intro to_dsse
23 intro to_dsse23 intro to_dsse
23 intro to_dsse
 
5 - Architetture Software - Metamodelling and the Model Driven Architecture
5 - Architetture Software - Metamodelling and the Model Driven Architecture5 - Architetture Software - Metamodelling and the Model Driven Architecture
5 - Architetture Software - Metamodelling and the Model Driven Architecture
 
4 - Architetture Software - Architecture Portfolio
4 - Architetture Software - Architecture Portfolio4 - Architetture Software - Architecture Portfolio
4 - Architetture Software - Architecture Portfolio
 
4 (uml basic)
4 (uml basic)4 (uml basic)
4 (uml basic)
 
10 - Architetture Software - More architectural styles
10 - Architetture Software - More architectural styles10 - Architetture Software - More architectural styles
10 - Architetture Software - More architectural styles
 
1 - Architetture Software - Software as a product
1 - Architetture Software - Software as a product1 - Architetture Software - Software as a product
1 - Architetture Software - Software as a product
 
26 standards
26 standards26 standards
26 standards
 

Similar a 2

Sa 008 architecture_views
Sa 008 architecture_viewsSa 008 architecture_views
Sa 008 architecture_viewsFrank Gielen
 
Software Architecture: views and viewpoints
Software Architecture: views and viewpointsSoftware Architecture: views and viewpoints
Software Architecture: views and viewpointsHenry Muccini
 
Architectural design
Architectural designArchitectural design
Architectural designHuda Alameen
 
Lecture-2-Architectural_Concepts.pdf
Lecture-2-Architectural_Concepts.pdfLecture-2-Architectural_Concepts.pdf
Lecture-2-Architectural_Concepts.pdfAkilaGamage2
 
Software Architecture
Software Architecture Software Architecture
Software Architecture ssuser9d62d6
 
Architectural Styles And The Design Of Network-Based Software Architectures
Architectural Styles And The Design Of Network-Based Software ArchitecturesArchitectural Styles And The Design Of Network-Based Software Architectures
Architectural Styles And The Design Of Network-Based Software ArchitecturesAndrea Porter
 
Se ii unit2-software_design_principles
Se ii unit2-software_design_principlesSe ii unit2-software_design_principles
Se ii unit2-software_design_principlesAhmad sohail Kakar
 
Lecture-_-5-_SDA_software design and architecture.doc
Lecture-_-5-_SDA_software design and architecture.docLecture-_-5-_SDA_software design and architecture.doc
Lecture-_-5-_SDA_software design and architecture.docesrabilgic2
 
The critical need for software architecture practices in software development...
The critical need for software architecture practices in software development...The critical need for software architecture practices in software development...
The critical need for software architecture practices in software development...Alexander Decker
 
Object oriented sad-5 part i
Object oriented sad-5 part iObject oriented sad-5 part i
Object oriented sad-5 part iBisrat Girma
 
02_Architectures_In_Context.ppt
02_Architectures_In_Context.ppt02_Architectures_In_Context.ppt
02_Architectures_In_Context.pptRohanBorgalli
 
Software Architecture and Design
Software Architecture and DesignSoftware Architecture and Design
Software Architecture and DesignRa'Fat Al-Msie'deen
 
ch6 ArchitecturalDesign (NTU)
ch6 ArchitecturalDesign (NTU)ch6 ArchitecturalDesign (NTU)
ch6 ArchitecturalDesign (NTU)Rida Sajid
 

Similar a 2 (20)

What is Software Architecture?
What is Software Architecture?What is Software Architecture?
What is Software Architecture?
 
Sa 008 architecture_views
Sa 008 architecture_viewsSa 008 architecture_views
Sa 008 architecture_views
 
Software Architecture: views and viewpoints
Software Architecture: views and viewpointsSoftware Architecture: views and viewpoints
Software Architecture: views and viewpoints
 
Architectural design
Architectural designArchitectural design
Architectural design
 
Se lec6
Se lec6Se lec6
Se lec6
 
Lecture-2-Architectural_Concepts.pdf
Lecture-2-Architectural_Concepts.pdfLecture-2-Architectural_Concepts.pdf
Lecture-2-Architectural_Concepts.pdf
 
Slides chapter 10
Slides chapter 10Slides chapter 10
Slides chapter 10
 
Unit 3
Unit 3Unit 3
Unit 3
 
Software Architecture
Software Architecture Software Architecture
Software Architecture
 
SA_UNIT_1.pptx
SA_UNIT_1.pptxSA_UNIT_1.pptx
SA_UNIT_1.pptx
 
Architectural Styles And The Design Of Network-Based Software Architectures
Architectural Styles And The Design Of Network-Based Software ArchitecturesArchitectural Styles And The Design Of Network-Based Software Architectures
Architectural Styles And The Design Of Network-Based Software Architectures
 
Se ii unit2-software_design_principles
Se ii unit2-software_design_principlesSe ii unit2-software_design_principles
Se ii unit2-software_design_principles
 
Lecture-_-5-_SDA_software design and architecture.doc
Lecture-_-5-_SDA_software design and architecture.docLecture-_-5-_SDA_software design and architecture.doc
Lecture-_-5-_SDA_software design and architecture.doc
 
Chapter 08
Chapter 08Chapter 08
Chapter 08
 
The critical need for software architecture practices in software development...
The critical need for software architecture practices in software development...The critical need for software architecture practices in software development...
The critical need for software architecture practices in software development...
 
Chapter1
Chapter1Chapter1
Chapter1
 
Object oriented sad-5 part i
Object oriented sad-5 part iObject oriented sad-5 part i
Object oriented sad-5 part i
 
02_Architectures_In_Context.ppt
02_Architectures_In_Context.ppt02_Architectures_In_Context.ppt
02_Architectures_In_Context.ppt
 
Software Architecture and Design
Software Architecture and DesignSoftware Architecture and Design
Software Architecture and Design
 
ch6 ArchitecturalDesign (NTU)
ch6 ArchitecturalDesign (NTU)ch6 ArchitecturalDesign (NTU)
ch6 ArchitecturalDesign (NTU)
 

Más de Majong DevJfu

9 - Architetture Software - SOA Cloud
9 - Architetture Software - SOA Cloud9 - Architetture Software - SOA Cloud
9 - Architetture Software - SOA CloudMajong DevJfu
 
8 - Architetture Software - Architecture centric processes
8 - Architetture Software - Architecture centric processes8 - Architetture Software - Architecture centric processes
8 - Architetture Software - Architecture centric processesMajong DevJfu
 
7 - Architetture Software - Software product line
7 - Architetture Software - Software product line7 - Architetture Software - Software product line
7 - Architetture Software - Software product lineMajong DevJfu
 
6 - Architetture Software - Model transformation
6 - Architetture Software - Model transformation6 - Architetture Software - Model transformation
6 - Architetture Software - Model transformationMajong DevJfu
 
3 - Architetture Software - Architectural styles
3 - Architetture Software - Architectural styles3 - Architetture Software - Architectural styles
3 - Architetture Software - Architectural stylesMajong DevJfu
 
18 applied architectures_part_2
18 applied architectures_part_218 applied architectures_part_2
18 applied architectures_part_2Majong DevJfu
 
17 applied architectures
17 applied architectures17 applied architectures
17 applied architecturesMajong DevJfu
 
16 implementation techniques
16 implementation techniques16 implementation techniques
16 implementation techniquesMajong DevJfu
 
15 implementing architectures
15 implementing architectures15 implementing architectures
15 implementing architecturesMajong DevJfu
 

Más de Majong DevJfu (10)

9 - Architetture Software - SOA Cloud
9 - Architetture Software - SOA Cloud9 - Architetture Software - SOA Cloud
9 - Architetture Software - SOA Cloud
 
8 - Architetture Software - Architecture centric processes
8 - Architetture Software - Architecture centric processes8 - Architetture Software - Architecture centric processes
8 - Architetture Software - Architecture centric processes
 
7 - Architetture Software - Software product line
7 - Architetture Software - Software product line7 - Architetture Software - Software product line
7 - Architetture Software - Software product line
 
6 - Architetture Software - Model transformation
6 - Architetture Software - Model transformation6 - Architetture Software - Model transformation
6 - Architetture Software - Model transformation
 
3 - Architetture Software - Architectural styles
3 - Architetture Software - Architectural styles3 - Architetture Software - Architectural styles
3 - Architetture Software - Architectural styles
 
3
33
3
 
18 applied architectures_part_2
18 applied architectures_part_218 applied architectures_part_2
18 applied architectures_part_2
 
17 applied architectures
17 applied architectures17 applied architectures
17 applied architectures
 
16 implementation techniques
16 implementation techniques16 implementation techniques
16 implementation techniques
 
15 implementing architectures
15 implementing architectures15 implementing architectures
15 implementing architectures
 

2

  • 1. Software architecture Paolo Ciancarini
  • 2. Agenda   Software architecture: standard definitions   Architectural assets   Architectural theories 2
  • 3. What is the role of architecture?
  • 4. Development lifecycle Architecture sets system structure First iteration implements system core An iterative lifecycle model Architecture plays a vital role in establishing the structure of the system, early in the development lifecycle
  • 5. System lifetime Architecture is about decisions that affect the whole lifetime of the system
  • 6. Architecture = design decisions Software Software Architecture design Decisions “Design” decisions Architectural decisions “Requirements constraints” Requireme nts Code etc. A choice that is binding in the final product
  • 7. Architecture = Design? No! “Do not dilute the meaning of the term architecture by applying it to everything in sight.” Mary Shaw
  • 9. Definitions… …and form a whole that fulfils a A system is a designed purpose collection of parts The parts have relations to each other…
  • 10. Definition: Wikipedia   The software architecture of a program or computing system is the structure of the system, which comprises its software components, the externally visible properties of those components, and the relationships between them   The term also refers to the documentation of a system's software architecture. Documenting a software architecture facilitates the communication between stakeholders, documents the early decisions about high-level design, and allows the reuse of the components and patterns across projects 10
  • 11. Brief history   The basics of software architecture were introduced by Dijkstra (1968) and Parnas (1970). They studied:   The key role of the structure of a software system, and   How tricky the definition of the right structure for a given system is   A great deal of research has been conducted on software architectures starting from the ’90s, mainly focusing on:   How to solve recurrent architectural problems (patterns)   Architectural styles   The definition of languages to describe software architectures (ADL)   Documentation of the architecture of a system   … claimed to give rise to the definition of a discipline   See: Shaw and Garlan Software Architecture: Perspectives on an Emerging Discipline, 1996 11
  • 12. Standard   The main standard in the field of software architectures is the ANSI/IEEE 1471-2000: Recommended Practice for Architecture Description of Software-Intensive Systems   better known as IEEE 1471 standard   In fact it is a “recommended practice”   the “weakest” type of IEEE standards, whose adoption and interpretation are the responsibility of the using organization   It has been adopted by ISO/IEC JTC1/SC7 as ISO/ IEC 42010:2007, in 2007 12
  • 13. Definition: IEEE 1471   Intuitively, the architecture of a software system represents its internal structure, in terms of the single components of which it is made up and of the interactions among them   According to the IEEE 1471-2000 standard, the architecture of a software system is its basic organization, in terms of its components, of the interactions among components and with the external environments, as well as of the basic, driving, principles for system design and evolution 13
  • 14. IEEE 1471   It focuses on the description of an architecture as the concrete artifact representing the abstraction that is “software architecture” or “system architecture”   IEEE 1471's contributions:   It provides the definitions and a conceptual model for the description of a software architecture   It states that an architecture goal is to respond to specific stakeholders’ concerns about the software system being described   It asserts that architecture descriptions are inherently multi-view, as no single view can capture all stakeholders’ concerns about an architecture   It separates the notion of a view from a viewpoint, which identifies the set of concerns and the representations/modeling techniques, etc. used to describe the architecture to address those concerns   It establishes that a conforming architecture description has a 1-to-1 correspondence between its viewpoints and its views 14
  • 15. IEEE1471 Conceptual Model for Sw Architectures
  • 16. 16
  • 17. Standard   2000: IEEE 1471   2001: ANSI   2007: ISO/IEC 42010   Next version: architecture frameworks & conformance   www.iso-architecture.org/ieee-1471/ 17
  • 18. Defining a software architecture   The definition of the architecture is an important step of system design (i.e., architectural design)   Its aim is the structural decomposition of a system into sub-systems:   Divide et impera approach: to develop single sub-entities is simpler than to develop an entire system   It allows to perform several development activities at the same time (different entities can be developed in parallel)   It fosters the modifiability, the reusability, and the portability of a system 18
  • 19. Defining the system architecture   The definition of the criteria for the identification of sub-entities is a preliminary step:   A typical criterion is the functional one, i.e., a sub-entity may be identified by mapping software functionalities to its parts:   E.g., user interface, database access, security management…   High Cohesion and Low Coupling among components are key guidelines   Each sub-system has to contain cohesive components (e.g., modules providing services which are strictly related one to each other)   Minimize interactions among subsystems, that should result scarcely coupled 19
  • 20. Software module   A module is a piece of software that:   Provides an abstraction (on data, on function)   Clearly separates the interface from the body Module Interface   The interface specifies “what” the (visible from outside) module is (the abstraction provided) and “how” it can be used Body   The interface is the contract between a user (hidden and and the provider of the abstraction protected)   The body describes “how” the abstraction is implemented 20
  • 21. Key architectural design principles   Simplicity   Modularity   Low coupling   Separation of concerns   Abstraction   Postponing decisions   Encapsulation   Information hiding   Clear interface   High cohesion 21
  • 22. Sources of Architecture   Theft   From a previous system or from technical literature   Method   An approach to deriving the architecture from the requirements   Intuition   The experience of the architect From “Mommy, Where Do Software Architectures Come From?”, Philippe Kruchten 1st International Workshop on Architectures for Software Systems, Seattle, 1995
  • 23. What Types of Architectural Asset are there? Reference Design Architecture Pattern Legacy Architectural Application Mechanism Pattern Packaged Language Application Development Reference Method Model Architectural Programming Decision Pattern Pattern Component Library Component Architectural Pattern Architectural Application Style Framework
  • 24. Pattern   [A pattern is] a common solution to a common problem in a given context. [UML User Guide]   Pattern types   Architectural Patterns   Distribution patterns   Security Patterns   …   Design Patterns   Programming Patterns   Requirements Patterns   Testing Patterns   Project Management Patterns   Process Patterns   Organizational Patterns   …
  • 25. Architectural Pattern   An architectural pattern expresses a fundamental structural organization schema for software systems. It provides a set of predefined subsystems, specifies their responsibilities, and includes rules and guidelines for organizing the relationships between them. [Buschmann]   Example: Pattern: Layers Context A system that requires decomposition Problem High-level elements rely on lower-level elements and the following forces must be balanced: - Interfaces should be stable - Parts of the system should be exchangeable - Source code changes should not ripple through the system Solution 25 Structure the system into layers
  • 26. Architectural pattern – Layers ISO OSI 7-Layer Model Layer 7 Application Provides application facilities Layer 6 Presentation Structures information as required Layer 5 Session Manages the connection Personal Organizer Layer 4 Transport Creates packets of data Layer 3 Network Routes packets of data Layer 2 Data Link Detects and corrects errors Layer 1 Physical Transmits bits
  • 27. Design Pattern   A design pattern provides a scheme for refining the subsystems or components of a software system, or the relationships between them. It describes a commonly-recurring structure of communicating components that solves a general design problem within a particular context. [Gamma] Observer Pattern
  • 28. Programming Pattern   An idiom is a low-level pattern specific to a programming language. An idiom describes how to implement particular aspects of components or the relationships between them using the features of the given language. [Buschmann] // Swap the values of 2 variables temp = a; a = b; b = temp;
  • 29. Architectural Style   [An architectural style] defines a family of systems in terms of a pattern of structural organization. More specifically, an architectural style defines a vocabulary of components and connector types, and a set of constraints on how they can be combined. [Shaw]   Client-server   Supports the physical separation of client-side processing (such as a browser) and server-side processing (such as an application server that accesses a database)   Event-based   Promotes a publish-subscribe way of working, applied strategically across large areas of the architecture   Pipes-and-filters   A series of filters that provide data transformation, and pipes that connect the filters. Examples include compilers, signal processing
  • 30. Pattern Language   A pattern language defines a collection of patterns and the rules to combine them. Pattern languages are often used to describe a family of systems   IBM Patterns for e-Business  A set of architectural patterns that describe various web-based applications  Includes a pattern selection process that drives:   Selection of a business, integration or composite pattern   Selection of application patterns   Selection of runtime patterns   Identification of product mappings *See http://www.ibm.com/developerworks/patterns 30
  • 31. Reference Architecture   A reference architecture is an architecture representation of a particular domain of interest. It typically includes many different architectural patterns, applied in different areas of its structure   Examples include J2EE and .NET 31
  • 32. Reference Model   A reference model is an abstract representation of entities, their relationships and behavior, in a given domain of interest, and which typically forms the conceptual basis for the development of more concrete elements   Examples include a business model, an information model and a glossary of terms IBM Information FrameWork (IFW) IFW Information Models (Banking Data Warehouse) IFW Process & Integration Models IFW Foundation Models Financial Financial Services Services Financial Services Data Model Function Workflow Model Model Business Application Business Business Solution Solution Process Object Model Templates Templates Model Banking Data Warehouse Model Interface Design Model
  • 33. Application Framework   An application framework represents the partial implementation of a specific area of an application   Most widely-known frameworks support user interfaces   Java Server Pages   ASP.NET Client Server HTTP HTTP URL Web Internet Server Scripting container Script
  • 34. Architectural Mechanism   Architectural mechanisms represent common concrete solutions to frequently encountered problems. They may be patterns of structure, patterns of behavior, or both. [RUP]   Often characterized as   “the mechanism for achieving X”   “this element is underpinned by mechanism Y”   Examples   Persistency mechanism   Error logging mechanism   Communication mechanism   Shopping cart
  • 35. Packaged Application   A packaged application is a large-grained Commercial-Off-The-Shelf (COTS) product that provides a significant amount of capability (and reuse)   Examples   Customer Relationship Management (CRM) application (e.g. Siebel)   Enterprise Resource Planning (ERP) application (e.g. SAP)   The amount of custom development required is greatly reduced   Primary focus is on configuring the application
  • 36. Component & component library   Component examples   GUI widget (such as a table)   Service   Component library examples   Class libraries (e.g. Java class library)   Procedure libraries
  • 37. Legacy Application   A legacy application is a system that continues to be used because the owning organization cannot replace or redesign it   Tends to be a focus on integration rather than new development   Often results in a focus on enterprise application integration (EAI)
  • 38. Architectural Decision   [Architectural decisions are] conscious design decisions concerning a software system as a whole, or one or more of its core components. These decisions determine the non-functional characteristics and quality factors of the system. [Zimmermann]   Decision rationale may come from experience, method or some other asset 38
  • 39. Self questions   What is a software architecture?   What is an architectural asset?   What is an architectural concern?   What is an architectural view?   What is a component?   What is a connector? 39
  • 40. References   Shaw & Garlan Software Architecture: Perspectives on an Emerging Discipline, Prentice Hall, 1996   Bass, Clemens & Kazman, Software Architecture in Practice, 2nd ed, Addison Wesley, 2003 softarchpract.tar.hu!   Garland, Large-Scale Software Architecture: A Practical Guide using UML, Addison-Wesley, 2005   Clements, Documenting Software Architectures: Views and Beyond, The SEI Series in Software Engineering, 2002 40
  • 41. Blogs and wikis   enterprise-architecture-wiki.nl/mediawiki/index.php/Main_Page   www.bredemeyer.com/definiti.htm!   www.sei.cmu.edu/architecture! 41