SlideShare a Scribd company logo
1 of 15
Download to read offline
An Introduction to Software
            Architecture - Summary
1. Introduction
  ● It is increasingly clear that effective software engineering requires facility in
    architectural software design:




  ●    Common Paradigms                               ●   Get the right architecture
  ●    New systems as evolutions or                   ●   Success of a software system design
       variations of old systems




  ●    Detailed and deep understand help              ●   Architectural System Representation
       decide.                                        ●   Analysis and description of the high-
  ●    Get Alternatives                                   level properties of a complex system.



  ●   In Software Architecture there are a lot of activities
          ○ Module interconnection languages
          ○ Templates
          ○ Frameworks
          ○ Systems that serve the needs of specific

  ● Good software engineers make common use of architectural principles when designing
    complex software.
● Many principles have emerged informally over time. And others are more carefully
     documented as industry and scientific standards.
   ● It is increasingly clear that effective software engineering requires facility in architectural
     software design.
   ● Facility:
           ○ Able to recognize common paradigms so that high-level relationships among
              systems can be understood, and
                  ■ so that new systems can be built as variations on old systems.
          ○ Getting the right architecture is often crucial to the success of a software system
              design (the wrong can lead to disastrous results).
           ○ Detailed understanding of software architectures allows the engineer to make
              principled choices among design alternatives.
           ○ An architectural system representation is often essential to the analysis and
              description to the high-level properties of a complex system.



2. From Programming Languages to Software
Architecture

2.1 High-level Programming Language

Low-level Languages (1950):




Macro processors:
New Patterns:

Method (or procedure) invocation:




Sequence, Conditional and Loop Statements (Corrado Bohm and Giuseppe Jacopini):
2.2 Abstract Data Types (ADT)




2.3 Software Architecture

Just as good programmers recognized useful data structures in the late 1960s, good software
system designers now recognize useful system organization.

We are still far from having a well-accepted taxonomy of such architectural paradigms, let alone
a fully-developed theory of software architecture. But we can now clearly identify a number of
architectural patterns, or styles, that currently form the basic repertoire of a software architect.



3. Common Architectural Styles
To understand the differences between styles, we must choose a framework from which to view
them.

An architecture is a collections of computational components. And a description about
interactions about them (the connectors).
A connector can be:
   ● Procedure call,
   ● Event broadcast,
   ● Database queries, and
   ● pipes.

An architectural style, then, define a family of such systems in terms of a pattern of structural
organization.

An architectural style defines the components and connectors that can be used in instances of
that style, together with a set of constraints on how they can be combined.

Questions about a given framework:

   ●   What is the structural pattern -the components, connectors, and components?
   ●   What is the underlying computational model?
   ●   What are the essential invariants of the style?
   ●   What are some common examples of its use?
   ●   What are the advantages and disadvantages of using that style?
   ●   What are some of the common specializations?




3.1 Pipes and Filters
● The connectors of this style serve as conduits for the streams, transmitting outputs of
  one filter to inputs of another.
● The best known examples of pipe and filter architectures are programs written in the
  Unix shell.
● Examples of pipe style:
     ○ Signal processing,
     ○ functional programming, and
     ○ distributed systems.
     ○ Compilers
               ■ Lexical analysis
               ■ Parsing
               ■ Semantic analysis
               ■ Code generation
               ■ And so on.




●   Pipe and filter systems have a number of nice properties.
       ○ First, they allow the designer to understand the overall input/output behavior of
           a system as a simple composition of the behaviors of the individual filters.
        ○ Second, they support reuse: any two filters can be hooked together, provided
           they agree on the data that is being transmitted between them.
       ○ Third, systems can be easily maintained and enhanced: new filters can be added
           to existing systems and old filters can be replaced by improved ones.
       ○ Fourth, they permit certain kinds of specialized analysis, such as throughout and
           deadlock analysis.
       ○ Finally, they naturally support concurrent execution.

● The designer is forced to think of each filter as providing a complete transformation of
  input data to output data.
      ○ This is not considered for interactive applications.
3.2 Data Abstraction and Object-Oriented Organization

                    data representations and their associated primitive
      ● In this style
       operations are encapsulated in an abstract data type or object.
  ●    The components of this style are the objects -or, if you will, instances of the
    abstract data types.
  ● Objects are examples of a sort of component we call a        manager      because it is
       responsible for preserving the integrity of a resource (here the representation).
  ●    Objects responsibilities:
          ○ ...is responsible for preserving the integrity of its representation
          ○ ...that the representation is hidden from other objects.
●  Variations about Object-Oriented:
        ○ Some systems allow objects to be concurrent tasks,
        ○ Others allow objects to have multiple interfaces.
 ● Object-oriented systems have many nice properties, most of which are well known.
    Because an object hides its representation from its clients, it is possible to change
    the implementation without affecting those clients.
  ● Objects allow the designers to decompose problems into collections of
    interacting agents.
 ● Object-oriented disadvantages:
        ○ Interaction between objects NEEDS to know each other.




3.3. Event-based, Implicit Invocation
 ●   Components interact with each other by explicitly invoking those routines.
 ●   Current alternatives:
         ○ Implicit Invocation
         ○ Reactive Integration
         ○ Selective Broadcast
 ●   The idea behind implicit invocation is that instead of invoking a procedure directly, a
     component can announce (or broadcast) one or more events.
          ○ Other components in the system can register an interest in an event by
              associating a procedure with the event.
          ○ When the event is announced the system itself invokes all of the procedures
              that have been registered for the event.
           ○ Thus an event announcement «implicitly» causes the invocation of
              procedures in other modules.
 ●   The connectors in an implicit invocation system include traditional procedure call as well
     as bindings between event announcements and procedure calls.
 ●   The main invariant of this style is that announcers of events do not know which
     components will be affected by those events.
 ●   Most implicit invocation systems also include explicit invocation (i.e., normal procedure
     call) as a complementary form of interaction.
 ●   Implicit Invocation applications:
         ○ In programming environments to integrate tools,
         ○ in database management systems to ensure consistency constraints,
         ○ in user interfaces to separate presentation of data from applications that manage
              the data,
         ○ and by syntax-directed editors to support incremental semantic checking.

 ●   One the most important benefit of II is that it provides strong support for reuse.
        ○ Any component can be introduced into a system simply by registering it for the
           events of that system.
●   A second benefit is that implicit invocation eases system evolution. Components may be
     replaced by other components without affecting the interfaces of other components in
     the system.

 ● The primary disadvantage of implicit invocation is that components relinquish control
   over the computation performed by the system.
      ○ It does not know when other components listen it up.
      ○ It does not know the order that events are consumed.




3.4. Layered Systems
 ● A layered system is organized hierarchically.
 ● Each layer providing service to the layer above it and serving as a client to layer below.
 ● In these systems the components implement a virtual machine at some layer in the
    hierarchy.
  ● The connectors are defined by the protocols that determine how the layers will
    interact.
 ● Topological constraints include limiting interactions to adjacent layers.




 ● The most widely known examples of this kind of architectural style are layered
   communication protocols.
●   Other application areas for this style include database systems and operating systems.

  ●   Layered systems have several desirable properties:

         ○  Support design based on increasing levels of abstraction.
                ■ This allows implementors to partition a complex problem into a sequence
                   of incremental steps.
  ● Like pipelines, because each layer interacts with at most the layers below and above,
    changes to the function of one layer affect at most two other layers.
  ● Support reuse.

  ●   Disadvantages:

         ○ Not all systems are easily structured in a layered fashion.
         ○ And even if a system can logically be structured as layers, considerations of
           performance may require closer coupling between logically high-level functions
           may require closer coupling between logically high-level functions and their
           lower-level implementations.



3.5. Repositories
  ●   In a repository style there are two quite distinct kinds of components:

         ○   a central data structure represents the current state, and
         ○   a collection of independent components operate on the central data store.

  ●   The choice of control discipline leads to major subcategories:

         ○ If the types of transactions in an input stream of transactions trigger selection
           of processes to execute, the repository can be a traditional database.
         ○ If the current state of the central data structure is the main trigger of selecting
           processes to execute, the repository can be a blackboard.

  ●   Figure 4 illustrates a simple view of a blackboard architecture.
●   The Blackboard model is usually presented with three major parts:

         ○ The Knowledge Sources: separate, independent parcels of application-
            dependent knowledge. Interaction among knowledge sources takes place solely
            through the blackboard.
          ○ The Blackboard data structure: problem-solving state data,
            organized into an application-dependent hierarchy. Knowledge sources make
            changes to the blackboard that lead incrementally to a solution to the problem.
         ○ Control: driven entirely by state of blackboard. Knowledge sources respond
            opportunistically when changes in the blackboard make them applicable.

   ● Blackboard systems have traditionally been used for applications requiring complex
     interpretations of signal processing, such as speech and pattern recognition.

  ●   BB have also appeared in other kinds of systems that involve shared access to data with
      loosely coupled agents.




3.6. Table Driven Interpreters

  ● In an interpreter organization a virtual machine is produced in software.
  ● An interpreter includes the pseudo-program being interpreted and the interpretation
    engine itself.
  ● The interpretation engine includes both the definition of the interpreter and the current
    state of its execution.
●   An interpreter generally has four components:

         1. an interpretation engine to do the work,
         2. la memory that contains the pseudo-code to be interpreted
          3. a representation of the control state of the interpretation engine, and a
             representation of the current state of the program being simulated.




  ●   Interpreters are commonly used to build virtual machines that close the gap between the
      computing engine expected by the semantics of the program and the computing engine
      available in hardware.




3.7 Other Familiar Architectures

  ●   Distributed processes

          ○ One common form of distributed system architecture is a “client-server”
            organization.
               ■ In these systems a server represents a process that provides services to
                   other processes (the clients).
■ Usually the server does not know in advance the identities or number of
               clients that will access it at run time.
             ■ On the other hand, clients know the identity of a server (or can find it out
               through some other server) and access it by remote procedure call.




●   Main program/subroutine organizations

        ○ The primary organization of many systems mirrors the programming
          language in which the system is written.
       ○ For languages without support for modularization this often results in a
          system organized around a main program and a set of subroutines.
       ○ The main program acts as the driver for the subroutines, typically providing a
          control loop for sequencing through the subroutines in some order.
●   Domain-specific software architectures

       ○ Recently there has been considerable interest in developing “reference”
         architectures for specific domains.
       ○ By specializing the architecture to the domain, it is possible to increase
         the descriptive power of structures. Indeed, in many cases the architecture
         is sufficiently constrained that an executable system can be generated
         automatically or semi-automatically from the architectural description itself.




●   State Transition Systems

        ○ These systems are defined in terms a set of states and a set of named
          transitions that move a system from one state to another.
●    Process Control Systems

           ○ These systems are roughly characterized as a feedback loop in which inputs
             from sensors are used by the process control system to determine a set of
             outputs that will produce a new state of the environment.




3.8. Heterogeneous Architectures

  ●    While it is important to understand the individual nature of the above architectural styles,
       most systems typically involve some combination of several styles.
  ●    For example, in a Unix pipeline the individual components may be represented internally
       using virtually any style -including, of course, another pipe and filter, system.

      ● What   is   perhaps   more    surprising   is   that   connectors,   too,   can   often   be
       hierarchically decomposed.
           ○ For example, a pipe connector may be implemented internally as a FIFO queue
             accessed by insert and remove operations.

  ● A second way for styles to be combined is to permit a single component to use a
    mixture of architectural connectors.

           ○ For example, a component might access a repository through part of its
             interface, but interact through pipes with other components in a system, and
             accept control information through another part of its interface.

          ○    In fact, Unix pipe and filter systems do this, the file system playing the role of the
               repository and initialization switches playing the role of control.)

  ● Another example is an “active database”. This is a repository which activates external
    components through implicit invocation.

          ○ In this organization external components register interest in portions of the
             database.
           ○ The database automatically invokes the appropriate tools based on this
             association.
          ○ Blackboards are often constructed this way, knowledge sources are associated
             with specific kinds of data, and are activated whenever that kind of data is
             modified.)

  ●    A third way for styles to be combined is to completely elaborate one level of architectural
       description in a completely different architectural style.

More Related Content

What's hot

component based development model
component based development modelcomponent based development model
component based development modelMuneeba Qamar
 
Fundamentals of Database ppt ch02
Fundamentals of Database ppt ch02Fundamentals of Database ppt ch02
Fundamentals of Database ppt ch02Jotham Gadot
 
Component-based Software Engineering
Component-based Software EngineeringComponent-based Software Engineering
Component-based Software EngineeringSalman Khan
 
Architecture Design in Software Engineering
Architecture Design in Software EngineeringArchitecture Design in Software Engineering
Architecture Design in Software Engineeringcricket2ime
 
Waterfall Model PPT in Software Engineering
Waterfall Model PPT in Software EngineeringWaterfall Model PPT in Software Engineering
Waterfall Model PPT in Software EngineeringRaju Sheoran
 
SDLC Models and Their Implementation
SDLC Models and Their ImplementationSDLC Models and Their Implementation
SDLC Models and Their ImplementationSonal Tiwari
 
Software Engineering - chp5- software architecture
Software Engineering - chp5- software architectureSoftware Engineering - chp5- software architecture
Software Engineering - chp5- software architectureLilia Sfaxi
 
Software Engineering - chp3- design
Software Engineering - chp3- designSoftware Engineering - chp3- design
Software Engineering - chp3- designLilia Sfaxi
 
Software Devlopment Life Cycle
Software Devlopment Life CycleSoftware Devlopment Life Cycle
Software Devlopment Life CycleVivek Gupta
 
Software architectural patterns - A Quick Understanding Guide
Software architectural patterns - A Quick Understanding GuideSoftware architectural patterns - A Quick Understanding Guide
Software architectural patterns - A Quick Understanding GuideMohammed Fazuluddin
 
Architecture design in software engineering
Architecture design in software engineeringArchitecture design in software engineering
Architecture design in software engineeringPreeti Mishra
 
12c (12.1) Database installation on Solaris 11(11.2)
12c (12.1) Database  installation on Solaris 11(11.2)12c (12.1) Database  installation on Solaris 11(11.2)
12c (12.1) Database installation on Solaris 11(11.2)K Kumar Guduru
 

What's hot (20)

What is agile model
What is agile modelWhat is agile model
What is agile model
 
component based development model
component based development modelcomponent based development model
component based development model
 
Fundamentals of Database ppt ch02
Fundamentals of Database ppt ch02Fundamentals of Database ppt ch02
Fundamentals of Database ppt ch02
 
Ch7
Ch7Ch7
Ch7
 
Software Architecture
Software ArchitectureSoftware Architecture
Software Architecture
 
Component-based Software Engineering
Component-based Software EngineeringComponent-based Software Engineering
Component-based Software Engineering
 
Crc cards
Crc cardsCrc cards
Crc cards
 
Ch15 - Software Reuse
Ch15 - Software ReuseCh15 - Software Reuse
Ch15 - Software Reuse
 
Architecture Design in Software Engineering
Architecture Design in Software EngineeringArchitecture Design in Software Engineering
Architecture Design in Software Engineering
 
Software documentation
Software documentationSoftware documentation
Software documentation
 
Waterfall Model PPT in Software Engineering
Waterfall Model PPT in Software EngineeringWaterfall Model PPT in Software Engineering
Waterfall Model PPT in Software Engineering
 
SDLC Models and Their Implementation
SDLC Models and Their ImplementationSDLC Models and Their Implementation
SDLC Models and Their Implementation
 
Software Engineering - chp5- software architecture
Software Engineering - chp5- software architectureSoftware Engineering - chp5- software architecture
Software Engineering - chp5- software architecture
 
Software Engineering - chp3- design
Software Engineering - chp3- designSoftware Engineering - chp3- design
Software Engineering - chp3- design
 
Software Devlopment Life Cycle
Software Devlopment Life CycleSoftware Devlopment Life Cycle
Software Devlopment Life Cycle
 
Software architectural patterns - A Quick Understanding Guide
Software architectural patterns - A Quick Understanding GuideSoftware architectural patterns - A Quick Understanding Guide
Software architectural patterns - A Quick Understanding Guide
 
UML
UMLUML
UML
 
Architecture design in software engineering
Architecture design in software engineeringArchitecture design in software engineering
Architecture design in software engineering
 
12c (12.1) Database installation on Solaris 11(11.2)
12c (12.1) Database  installation on Solaris 11(11.2)12c (12.1) Database  installation on Solaris 11(11.2)
12c (12.1) Database installation on Solaris 11(11.2)
 
Requirement Engineering
Requirement EngineeringRequirement Engineering
Requirement Engineering
 

Viewers also liked

A summary of software architecture guide
A summary of software architecture guideA summary of software architecture guide
A summary of software architecture guideTriet Ho
 
Software Architecture Introduction
Software Architecture IntroductionSoftware Architecture Introduction
Software Architecture IntroductionSARCCOM
 
Software Architecture and Design - An Overview
Software Architecture and Design - An OverviewSoftware Architecture and Design - An Overview
Software Architecture and Design - An OverviewOliver Stadie
 
Fundamentals Of Software Architecture
Fundamentals Of Software ArchitectureFundamentals Of Software Architecture
Fundamentals Of Software ArchitectureMarkus Voelter
 
Rapid Prototyping and Usability Testing - HUXPA
Rapid Prototyping and Usability Testing - HUXPARapid Prototyping and Usability Testing - HUXPA
Rapid Prototyping and Usability Testing - HUXPADerrick Bowen
 
Web services and mobile architecture
Web services and mobile architectureWeb services and mobile architecture
Web services and mobile architectureDimple Chandra
 
Software Architecture Fundamentals Part-1 Architecture soft skill
Software Architecture Fundamentals Part-1 Architecture soft skillSoftware Architecture Fundamentals Part-1 Architecture soft skill
Software Architecture Fundamentals Part-1 Architecture soft skillSARCCOM
 
Software architecture for developers by Simon Brown
Software architecture for developers by Simon BrownSoftware architecture for developers by Simon Brown
Software architecture for developers by Simon BrownCodemotion
 
Mobile application architecture
Mobile application architectureMobile application architecture
Mobile application architectureChristos Matskas
 
Software Engineering - chp0- introduction
Software Engineering - chp0- introductionSoftware Engineering - chp0- introduction
Software Engineering - chp0- introductionLilia Sfaxi
 
User Driven Software Architecture
User Driven Software ArchitectureUser Driven Software Architecture
User Driven Software ArchitectureSimon Guest
 
Agile Software Architecture
Agile Software ArchitectureAgile Software Architecture
Agile Software ArchitectureChris F Carroll
 
Software Architecture for DevOps and Continuous Delivery
Software Architecture for DevOps and Continuous DeliverySoftware Architecture for DevOps and Continuous Delivery
Software Architecture for DevOps and Continuous DeliveryEberhard Wolff
 
Cross Platform Mobile Application Architecture
Cross Platform Mobile Application ArchitectureCross Platform Mobile Application Architecture
Cross Platform Mobile Application ArchitectureDerrick Bowen
 
Software architecture 2
Software architecture 2Software architecture 2
Software architecture 2Ahmad Zee
 
Business Architecture - Paul Turner
Business Architecture - Paul TurnerBusiness Architecture - Paul Turner
Business Architecture - Paul TurnerIIBA UK Chapter
 
Distributed Systems Architecture in Software Engineering SE11
Distributed Systems Architecture in Software Engineering SE11Distributed Systems Architecture in Software Engineering SE11
Distributed Systems Architecture in Software Engineering SE11koolkampus
 
Software Architecture: Test Case Writing
Software Architecture: Test Case WritingSoftware Architecture: Test Case Writing
Software Architecture: Test Case WritingSitdhibong Laokok
 
Software architecture in an agile environment
Software architecture in an agile environmentSoftware architecture in an agile environment
Software architecture in an agile environmentRaffaele Garofalo
 
Transforming Software Architecture for the 21st Century (September 2009)
Transforming Software Architecture for the 21st Century (September 2009)Transforming Software Architecture for the 21st Century (September 2009)
Transforming Software Architecture for the 21st Century (September 2009)Dion Hinchcliffe
 

Viewers also liked (20)

A summary of software architecture guide
A summary of software architecture guideA summary of software architecture guide
A summary of software architecture guide
 
Software Architecture Introduction
Software Architecture IntroductionSoftware Architecture Introduction
Software Architecture Introduction
 
Software Architecture and Design - An Overview
Software Architecture and Design - An OverviewSoftware Architecture and Design - An Overview
Software Architecture and Design - An Overview
 
Fundamentals Of Software Architecture
Fundamentals Of Software ArchitectureFundamentals Of Software Architecture
Fundamentals Of Software Architecture
 
Rapid Prototyping and Usability Testing - HUXPA
Rapid Prototyping and Usability Testing - HUXPARapid Prototyping and Usability Testing - HUXPA
Rapid Prototyping and Usability Testing - HUXPA
 
Web services and mobile architecture
Web services and mobile architectureWeb services and mobile architecture
Web services and mobile architecture
 
Software Architecture Fundamentals Part-1 Architecture soft skill
Software Architecture Fundamentals Part-1 Architecture soft skillSoftware Architecture Fundamentals Part-1 Architecture soft skill
Software Architecture Fundamentals Part-1 Architecture soft skill
 
Software architecture for developers by Simon Brown
Software architecture for developers by Simon BrownSoftware architecture for developers by Simon Brown
Software architecture for developers by Simon Brown
 
Mobile application architecture
Mobile application architectureMobile application architecture
Mobile application architecture
 
Software Engineering - chp0- introduction
Software Engineering - chp0- introductionSoftware Engineering - chp0- introduction
Software Engineering - chp0- introduction
 
User Driven Software Architecture
User Driven Software ArchitectureUser Driven Software Architecture
User Driven Software Architecture
 
Agile Software Architecture
Agile Software ArchitectureAgile Software Architecture
Agile Software Architecture
 
Software Architecture for DevOps and Continuous Delivery
Software Architecture for DevOps and Continuous DeliverySoftware Architecture for DevOps and Continuous Delivery
Software Architecture for DevOps and Continuous Delivery
 
Cross Platform Mobile Application Architecture
Cross Platform Mobile Application ArchitectureCross Platform Mobile Application Architecture
Cross Platform Mobile Application Architecture
 
Software architecture 2
Software architecture 2Software architecture 2
Software architecture 2
 
Business Architecture - Paul Turner
Business Architecture - Paul TurnerBusiness Architecture - Paul Turner
Business Architecture - Paul Turner
 
Distributed Systems Architecture in Software Engineering SE11
Distributed Systems Architecture in Software Engineering SE11Distributed Systems Architecture in Software Engineering SE11
Distributed Systems Architecture in Software Engineering SE11
 
Software Architecture: Test Case Writing
Software Architecture: Test Case WritingSoftware Architecture: Test Case Writing
Software Architecture: Test Case Writing
 
Software architecture in an agile environment
Software architecture in an agile environmentSoftware architecture in an agile environment
Software architecture in an agile environment
 
Transforming Software Architecture for the 21st Century (September 2009)
Transforming Software Architecture for the 21st Century (September 2009)Transforming Software Architecture for the 21st Century (September 2009)
Transforming Software Architecture for the 21st Century (September 2009)
 

Similar to Introduction to Software Architecture Styles

Essential Software Architecture - Chapter 1 Understanding Software Architectu...
Essential Software Architecture - Chapter 1 Understanding Software Architectu...Essential Software Architecture - Chapter 1 Understanding Software Architectu...
Essential Software Architecture - Chapter 1 Understanding Software Architectu...John Ortiz
 
WINSEM2022-23_SWE2004_ETH_VL2022230501954_2023-02-01_Reference-Material-I.pptx
WINSEM2022-23_SWE2004_ETH_VL2022230501954_2023-02-01_Reference-Material-I.pptxWINSEM2022-23_SWE2004_ETH_VL2022230501954_2023-02-01_Reference-Material-I.pptx
WINSEM2022-23_SWE2004_ETH_VL2022230501954_2023-02-01_Reference-Material-I.pptxVivekananda Gn
 
Software archiecture lecture03
Software archiecture   lecture03Software archiecture   lecture03
Software archiecture lecture03Luktalja
 
unit 5 Architectural design
 unit 5 Architectural design unit 5 Architectural design
unit 5 Architectural designdevika g
 
Chapter 3_Architectural Styles.pptx
Chapter 3_Architectural Styles.pptxChapter 3_Architectural Styles.pptx
Chapter 3_Architectural Styles.pptxRushikeshChikane1
 
Chapter 3_Architectural Styles.pptx
Chapter 3_Architectural Styles.pptxChapter 3_Architectural Styles.pptx
Chapter 3_Architectural Styles.pptxRushikeshChikane2
 
Unit iv -Documenting and Implementation of Software Architecture
Unit iv -Documenting and Implementation of Software ArchitectureUnit iv -Documenting and Implementation of Software Architecture
Unit iv -Documenting and Implementation of Software ArchitectureDhivyaa C.R
 
Software Eng S3 ( Software Design ).pptx
Software Eng S3 ( Software Design ).pptxSoftware Eng S3 ( Software Design ).pptx
Software Eng S3 ( Software Design ).pptxgauriVarshney8
 
Software architecture Unit 1 notes
Software architecture Unit 1 notesSoftware architecture Unit 1 notes
Software architecture Unit 1 notesSudarshan Dhondaley
 
Software engineering 17 architectural design
Software engineering 17 architectural designSoftware engineering 17 architectural design
Software engineering 17 architectural designVaibhav Khanna
 
chapter-6-Software_Engineering_P1_MohamedElhawy_19135002.pptx
chapter-6-Software_Engineering_P1_MohamedElhawy_19135002.pptxchapter-6-Software_Engineering_P1_MohamedElhawy_19135002.pptx
chapter-6-Software_Engineering_P1_MohamedElhawy_19135002.pptxMahmoudZidan53
 
Software architecture 4
Software architecture 4Software architecture 4
Software architecture 4Ahmad Zee
 
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
 
Architectural styles class 1
Architectural  styles class 1Architectural  styles class 1
Architectural styles class 1Dr Reeja S R
 
Software Engineering Lec 8-design-
Software Engineering Lec 8-design-Software Engineering Lec 8-design-
Software Engineering Lec 8-design-Taymoor Nazmy
 
Design Engineering and Design concepts
Design Engineering and Design conceptsDesign Engineering and Design concepts
Design Engineering and Design conceptsJigyasaAgrawal7
 
Software Engineering with Objects (M363) Final Revision By Kuwait10
Software Engineering with Objects (M363) Final Revision By Kuwait10Software Engineering with Objects (M363) Final Revision By Kuwait10
Software Engineering with Objects (M363) Final Revision By Kuwait10Kuwait10
 

Similar to Introduction to Software Architecture Styles (20)

Essential Software Architecture - Chapter 1 Understanding Software Architectu...
Essential Software Architecture - Chapter 1 Understanding Software Architectu...Essential Software Architecture - Chapter 1 Understanding Software Architectu...
Essential Software Architecture - Chapter 1 Understanding Software Architectu...
 
WINSEM2022-23_SWE2004_ETH_VL2022230501954_2023-02-01_Reference-Material-I.pptx
WINSEM2022-23_SWE2004_ETH_VL2022230501954_2023-02-01_Reference-Material-I.pptxWINSEM2022-23_SWE2004_ETH_VL2022230501954_2023-02-01_Reference-Material-I.pptx
WINSEM2022-23_SWE2004_ETH_VL2022230501954_2023-02-01_Reference-Material-I.pptx
 
Software archiecture lecture03
Software archiecture   lecture03Software archiecture   lecture03
Software archiecture lecture03
 
unit 5 Architectural design
 unit 5 Architectural design unit 5 Architectural design
unit 5 Architectural design
 
Chapter 3_Architectural Styles.pptx
Chapter 3_Architectural Styles.pptxChapter 3_Architectural Styles.pptx
Chapter 3_Architectural Styles.pptx
 
Chapter 3_Architectural Styles.pptx
Chapter 3_Architectural Styles.pptxChapter 3_Architectural Styles.pptx
Chapter 3_Architectural Styles.pptx
 
Unit iv -Documenting and Implementation of Software Architecture
Unit iv -Documenting and Implementation of Software ArchitectureUnit iv -Documenting and Implementation of Software Architecture
Unit iv -Documenting and Implementation of Software Architecture
 
Software Eng S3 ( Software Design ).pptx
Software Eng S3 ( Software Design ).pptxSoftware Eng S3 ( Software Design ).pptx
Software Eng S3 ( Software Design ).pptx
 
Software architecture Unit 1 notes
Software architecture Unit 1 notesSoftware architecture Unit 1 notes
Software architecture Unit 1 notes
 
Software engineering 17 architectural design
Software engineering 17 architectural designSoftware engineering 17 architectural design
Software engineering 17 architectural design
 
chapter-6-Software_Engineering_P1_MohamedElhawy_19135002.pptx
chapter-6-Software_Engineering_P1_MohamedElhawy_19135002.pptxchapter-6-Software_Engineering_P1_MohamedElhawy_19135002.pptx
chapter-6-Software_Engineering_P1_MohamedElhawy_19135002.pptx
 
Software architecture 4
Software architecture 4Software architecture 4
Software architecture 4
 
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
 
Architectural styles class 1
Architectural  styles class 1Architectural  styles class 1
Architectural styles class 1
 
Ooad
OoadOoad
Ooad
 
Software Engineering Lec 8-design-
Software Engineering Lec 8-design-Software Engineering Lec 8-design-
Software Engineering Lec 8-design-
 
Unit-3.doc
Unit-3.docUnit-3.doc
Unit-3.doc
 
Design Engineering and Design concepts
Design Engineering and Design conceptsDesign Engineering and Design concepts
Design Engineering and Design concepts
 
UNIT 01 SMD.pptx
UNIT 01 SMD.pptxUNIT 01 SMD.pptx
UNIT 01 SMD.pptx
 
Software Engineering with Objects (M363) Final Revision By Kuwait10
Software Engineering with Objects (M363) Final Revision By Kuwait10Software Engineering with Objects (M363) Final Revision By Kuwait10
Software Engineering with Objects (M363) Final Revision By Kuwait10
 

More from John Ortiz

Axiomas de peano para nat
Axiomas de peano para natAxiomas de peano para nat
Axiomas de peano para natJohn Ortiz
 
Características de la información valiosa
Características de la información valiosaCaracterísticas de la información valiosa
Características de la información valiosaJohn Ortiz
 
Ejemplo 1 - Propiedades de las Operaciones entre Conjuntos
Ejemplo 1  - Propiedades de las Operaciones entre ConjuntosEjemplo 1  - Propiedades de las Operaciones entre Conjuntos
Ejemplo 1 - Propiedades de las Operaciones entre ConjuntosJohn Ortiz
 
Operaciones sobre Conjuntos
Operaciones sobre ConjuntosOperaciones sobre Conjuntos
Operaciones sobre ConjuntosJohn Ortiz
 
The Observer Pattern (Definition using UML)
The Observer Pattern (Definition using UML)The Observer Pattern (Definition using UML)
The Observer Pattern (Definition using UML)John Ortiz
 
TI en Las Organizaciones - Cadena de Valor - Actividades de Soporte
TI en Las Organizaciones - Cadena de Valor - Actividades de SoporteTI en Las Organizaciones - Cadena de Valor - Actividades de Soporte
TI en Las Organizaciones - Cadena de Valor - Actividades de SoporteJohn Ortiz
 
Ti en las organizaciones cadena de valor
Ti en las organizaciones   cadena de valorTi en las organizaciones   cadena de valor
Ti en las organizaciones cadena de valorJohn Ortiz
 
TI en las Organizaciones - Objetivos Estratégicos de las TI
TI en las Organizaciones - Objetivos Estratégicos de las TITI en las Organizaciones - Objetivos Estratégicos de las TI
TI en las Organizaciones - Objetivos Estratégicos de las TIJohn Ortiz
 
TI en las Organizaciones - C1 - Entorno y TI - ¿Cómo crea valor?
TI en las Organizaciones - C1 - Entorno y TI - ¿Cómo crea valor?TI en las Organizaciones - C1 - Entorno y TI - ¿Cómo crea valor?
TI en las Organizaciones - C1 - Entorno y TI - ¿Cómo crea valor?John Ortiz
 
TI en las Organizaciones - C1 - Entorno y TI - Dominio Organizacional
TI en las Organizaciones - C1 - Entorno y TI - Dominio OrganizacionalTI en las Organizaciones - C1 - Entorno y TI - Dominio Organizacional
TI en las Organizaciones - C1 - Entorno y TI - Dominio OrganizacionalJohn Ortiz
 
TI en las Organizaciones - C1 - Entorno y TI - Entorno Organizacional
TI en las Organizaciones - C1 - Entorno y TI - Entorno OrganizacionalTI en las Organizaciones - C1 - Entorno y TI - Entorno Organizacional
TI en las Organizaciones - C1 - Entorno y TI - Entorno OrganizacionalJohn Ortiz
 
Manejo de excepciones en Java
Manejo de excepciones en JavaManejo de excepciones en Java
Manejo de excepciones en JavaJohn Ortiz
 
Arquitectura empresarial resumen
Arquitectura empresarial   resumenArquitectura empresarial   resumen
Arquitectura empresarial resumenJohn Ortiz
 
Arquitectura empresarial para ingenieros de sistemas - Resumen
Arquitectura empresarial para ingenieros de sistemas  - ResumenArquitectura empresarial para ingenieros de sistemas  - Resumen
Arquitectura empresarial para ingenieros de sistemas - ResumenJohn Ortiz
 
Lactancia materna
Lactancia maternaLactancia materna
Lactancia maternaJohn Ortiz
 
Brigada de salud
Brigada de saludBrigada de salud
Brigada de saludJohn Ortiz
 

More from John Ortiz (16)

Axiomas de peano para nat
Axiomas de peano para natAxiomas de peano para nat
Axiomas de peano para nat
 
Características de la información valiosa
Características de la información valiosaCaracterísticas de la información valiosa
Características de la información valiosa
 
Ejemplo 1 - Propiedades de las Operaciones entre Conjuntos
Ejemplo 1  - Propiedades de las Operaciones entre ConjuntosEjemplo 1  - Propiedades de las Operaciones entre Conjuntos
Ejemplo 1 - Propiedades de las Operaciones entre Conjuntos
 
Operaciones sobre Conjuntos
Operaciones sobre ConjuntosOperaciones sobre Conjuntos
Operaciones sobre Conjuntos
 
The Observer Pattern (Definition using UML)
The Observer Pattern (Definition using UML)The Observer Pattern (Definition using UML)
The Observer Pattern (Definition using UML)
 
TI en Las Organizaciones - Cadena de Valor - Actividades de Soporte
TI en Las Organizaciones - Cadena de Valor - Actividades de SoporteTI en Las Organizaciones - Cadena de Valor - Actividades de Soporte
TI en Las Organizaciones - Cadena de Valor - Actividades de Soporte
 
Ti en las organizaciones cadena de valor
Ti en las organizaciones   cadena de valorTi en las organizaciones   cadena de valor
Ti en las organizaciones cadena de valor
 
TI en las Organizaciones - Objetivos Estratégicos de las TI
TI en las Organizaciones - Objetivos Estratégicos de las TITI en las Organizaciones - Objetivos Estratégicos de las TI
TI en las Organizaciones - Objetivos Estratégicos de las TI
 
TI en las Organizaciones - C1 - Entorno y TI - ¿Cómo crea valor?
TI en las Organizaciones - C1 - Entorno y TI - ¿Cómo crea valor?TI en las Organizaciones - C1 - Entorno y TI - ¿Cómo crea valor?
TI en las Organizaciones - C1 - Entorno y TI - ¿Cómo crea valor?
 
TI en las Organizaciones - C1 - Entorno y TI - Dominio Organizacional
TI en las Organizaciones - C1 - Entorno y TI - Dominio OrganizacionalTI en las Organizaciones - C1 - Entorno y TI - Dominio Organizacional
TI en las Organizaciones - C1 - Entorno y TI - Dominio Organizacional
 
TI en las Organizaciones - C1 - Entorno y TI - Entorno Organizacional
TI en las Organizaciones - C1 - Entorno y TI - Entorno OrganizacionalTI en las Organizaciones - C1 - Entorno y TI - Entorno Organizacional
TI en las Organizaciones - C1 - Entorno y TI - Entorno Organizacional
 
Manejo de excepciones en Java
Manejo de excepciones en JavaManejo de excepciones en Java
Manejo de excepciones en Java
 
Arquitectura empresarial resumen
Arquitectura empresarial   resumenArquitectura empresarial   resumen
Arquitectura empresarial resumen
 
Arquitectura empresarial para ingenieros de sistemas - Resumen
Arquitectura empresarial para ingenieros de sistemas  - ResumenArquitectura empresarial para ingenieros de sistemas  - Resumen
Arquitectura empresarial para ingenieros de sistemas - Resumen
 
Lactancia materna
Lactancia maternaLactancia materna
Lactancia materna
 
Brigada de salud
Brigada de saludBrigada de salud
Brigada de salud
 

Recently uploaded

08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking MenDelhi Call girls
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slidespraypatel2
 
Azure Monitor & Application Insight to monitor Infrastructure & Application
Azure Monitor & Application Insight to monitor Infrastructure & ApplicationAzure Monitor & Application Insight to monitor Infrastructure & Application
Azure Monitor & Application Insight to monitor Infrastructure & ApplicationAndikSusilo4
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsEnterprise Knowledge
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticscarlostorres15106
 
Benefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other FrameworksBenefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other FrameworksSoftradix Technologies
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesSinan KOZAK
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure servicePooja Nehwal
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdfhans926745
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxMalak Abu Hammad
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountPuma Security, LLC
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking MenDelhi Call girls
 
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024BookNet Canada
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking MenDelhi Call girls
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsMemoori
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreternaman860154
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machinePadma Pradeep
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...shyamraj55
 
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Alan Dix
 

Recently uploaded (20)

08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slides
 
Azure Monitor & Application Insight to monitor Infrastructure & Application
Azure Monitor & Application Insight to monitor Infrastructure & ApplicationAzure Monitor & Application Insight to monitor Infrastructure & Application
Azure Monitor & Application Insight to monitor Infrastructure & Application
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
 
Benefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other FrameworksBenefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other Frameworks
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen Frames
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptx
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path Mount
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
 
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial Buildings
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machine
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
 
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
 

Introduction to Software Architecture Styles

  • 1. An Introduction to Software Architecture - Summary 1. Introduction ● It is increasingly clear that effective software engineering requires facility in architectural software design: ● Common Paradigms ● Get the right architecture ● New systems as evolutions or ● Success of a software system design variations of old systems ● Detailed and deep understand help ● Architectural System Representation decide. ● Analysis and description of the high- ● Get Alternatives level properties of a complex system. ● In Software Architecture there are a lot of activities ○ Module interconnection languages ○ Templates ○ Frameworks ○ Systems that serve the needs of specific ● Good software engineers make common use of architectural principles when designing complex software.
  • 2. ● Many principles have emerged informally over time. And others are more carefully documented as industry and scientific standards. ● It is increasingly clear that effective software engineering requires facility in architectural software design. ● Facility: ○ Able to recognize common paradigms so that high-level relationships among systems can be understood, and ■ so that new systems can be built as variations on old systems. ○ Getting the right architecture is often crucial to the success of a software system design (the wrong can lead to disastrous results). ○ Detailed understanding of software architectures allows the engineer to make principled choices among design alternatives. ○ An architectural system representation is often essential to the analysis and description to the high-level properties of a complex system. 2. From Programming Languages to Software Architecture 2.1 High-level Programming Language Low-level Languages (1950): Macro processors:
  • 3. New Patterns: Method (or procedure) invocation: Sequence, Conditional and Loop Statements (Corrado Bohm and Giuseppe Jacopini):
  • 4. 2.2 Abstract Data Types (ADT) 2.3 Software Architecture Just as good programmers recognized useful data structures in the late 1960s, good software system designers now recognize useful system organization. We are still far from having a well-accepted taxonomy of such architectural paradigms, let alone a fully-developed theory of software architecture. But we can now clearly identify a number of architectural patterns, or styles, that currently form the basic repertoire of a software architect. 3. Common Architectural Styles To understand the differences between styles, we must choose a framework from which to view them. An architecture is a collections of computational components. And a description about interactions about them (the connectors).
  • 5. A connector can be: ● Procedure call, ● Event broadcast, ● Database queries, and ● pipes. An architectural style, then, define a family of such systems in terms of a pattern of structural organization. An architectural style defines the components and connectors that can be used in instances of that style, together with a set of constraints on how they can be combined. Questions about a given framework: ● What is the structural pattern -the components, connectors, and components? ● What is the underlying computational model? ● What are the essential invariants of the style? ● What are some common examples of its use? ● What are the advantages and disadvantages of using that style? ● What are some of the common specializations? 3.1 Pipes and Filters
  • 6. ● The connectors of this style serve as conduits for the streams, transmitting outputs of one filter to inputs of another. ● The best known examples of pipe and filter architectures are programs written in the Unix shell. ● Examples of pipe style: ○ Signal processing, ○ functional programming, and ○ distributed systems. ○ Compilers ■ Lexical analysis ■ Parsing ■ Semantic analysis ■ Code generation ■ And so on. ● Pipe and filter systems have a number of nice properties. ○ First, they allow the designer to understand the overall input/output behavior of a system as a simple composition of the behaviors of the individual filters. ○ Second, they support reuse: any two filters can be hooked together, provided they agree on the data that is being transmitted between them. ○ Third, systems can be easily maintained and enhanced: new filters can be added to existing systems and old filters can be replaced by improved ones. ○ Fourth, they permit certain kinds of specialized analysis, such as throughout and deadlock analysis. ○ Finally, they naturally support concurrent execution. ● The designer is forced to think of each filter as providing a complete transformation of input data to output data. ○ This is not considered for interactive applications.
  • 7. 3.2 Data Abstraction and Object-Oriented Organization data representations and their associated primitive ● In this style operations are encapsulated in an abstract data type or object. ● The components of this style are the objects -or, if you will, instances of the abstract data types. ● Objects are examples of a sort of component we call a manager because it is responsible for preserving the integrity of a resource (here the representation). ● Objects responsibilities: ○ ...is responsible for preserving the integrity of its representation ○ ...that the representation is hidden from other objects.
  • 8. ● Variations about Object-Oriented: ○ Some systems allow objects to be concurrent tasks, ○ Others allow objects to have multiple interfaces. ● Object-oriented systems have many nice properties, most of which are well known. Because an object hides its representation from its clients, it is possible to change the implementation without affecting those clients. ● Objects allow the designers to decompose problems into collections of interacting agents. ● Object-oriented disadvantages: ○ Interaction between objects NEEDS to know each other. 3.3. Event-based, Implicit Invocation ● Components interact with each other by explicitly invoking those routines. ● Current alternatives: ○ Implicit Invocation ○ Reactive Integration ○ Selective Broadcast ● The idea behind implicit invocation is that instead of invoking a procedure directly, a component can announce (or broadcast) one or more events. ○ Other components in the system can register an interest in an event by associating a procedure with the event. ○ When the event is announced the system itself invokes all of the procedures that have been registered for the event. ○ Thus an event announcement «implicitly» causes the invocation of procedures in other modules. ● The connectors in an implicit invocation system include traditional procedure call as well as bindings between event announcements and procedure calls. ● The main invariant of this style is that announcers of events do not know which components will be affected by those events. ● Most implicit invocation systems also include explicit invocation (i.e., normal procedure call) as a complementary form of interaction. ● Implicit Invocation applications: ○ In programming environments to integrate tools, ○ in database management systems to ensure consistency constraints, ○ in user interfaces to separate presentation of data from applications that manage the data, ○ and by syntax-directed editors to support incremental semantic checking. ● One the most important benefit of II is that it provides strong support for reuse. ○ Any component can be introduced into a system simply by registering it for the events of that system.
  • 9. A second benefit is that implicit invocation eases system evolution. Components may be replaced by other components without affecting the interfaces of other components in the system. ● The primary disadvantage of implicit invocation is that components relinquish control over the computation performed by the system. ○ It does not know when other components listen it up. ○ It does not know the order that events are consumed. 3.4. Layered Systems ● A layered system is organized hierarchically. ● Each layer providing service to the layer above it and serving as a client to layer below. ● In these systems the components implement a virtual machine at some layer in the hierarchy. ● The connectors are defined by the protocols that determine how the layers will interact. ● Topological constraints include limiting interactions to adjacent layers. ● The most widely known examples of this kind of architectural style are layered communication protocols.
  • 10. Other application areas for this style include database systems and operating systems. ● Layered systems have several desirable properties: ○ Support design based on increasing levels of abstraction. ■ This allows implementors to partition a complex problem into a sequence of incremental steps. ● Like pipelines, because each layer interacts with at most the layers below and above, changes to the function of one layer affect at most two other layers. ● Support reuse. ● Disadvantages: ○ Not all systems are easily structured in a layered fashion. ○ And even if a system can logically be structured as layers, considerations of performance may require closer coupling between logically high-level functions may require closer coupling between logically high-level functions and their lower-level implementations. 3.5. Repositories ● In a repository style there are two quite distinct kinds of components: ○ a central data structure represents the current state, and ○ a collection of independent components operate on the central data store. ● The choice of control discipline leads to major subcategories: ○ If the types of transactions in an input stream of transactions trigger selection of processes to execute, the repository can be a traditional database. ○ If the current state of the central data structure is the main trigger of selecting processes to execute, the repository can be a blackboard. ● Figure 4 illustrates a simple view of a blackboard architecture.
  • 11. The Blackboard model is usually presented with three major parts: ○ The Knowledge Sources: separate, independent parcels of application- dependent knowledge. Interaction among knowledge sources takes place solely through the blackboard. ○ The Blackboard data structure: problem-solving state data, organized into an application-dependent hierarchy. Knowledge sources make changes to the blackboard that lead incrementally to a solution to the problem. ○ Control: driven entirely by state of blackboard. Knowledge sources respond opportunistically when changes in the blackboard make them applicable. ● Blackboard systems have traditionally been used for applications requiring complex interpretations of signal processing, such as speech and pattern recognition. ● BB have also appeared in other kinds of systems that involve shared access to data with loosely coupled agents. 3.6. Table Driven Interpreters ● In an interpreter organization a virtual machine is produced in software. ● An interpreter includes the pseudo-program being interpreted and the interpretation engine itself. ● The interpretation engine includes both the definition of the interpreter and the current state of its execution.
  • 12. An interpreter generally has four components: 1. an interpretation engine to do the work, 2. la memory that contains the pseudo-code to be interpreted 3. a representation of the control state of the interpretation engine, and a representation of the current state of the program being simulated. ● Interpreters are commonly used to build virtual machines that close the gap between the computing engine expected by the semantics of the program and the computing engine available in hardware. 3.7 Other Familiar Architectures ● Distributed processes ○ One common form of distributed system architecture is a “client-server” organization. ■ In these systems a server represents a process that provides services to other processes (the clients).
  • 13. ■ Usually the server does not know in advance the identities or number of clients that will access it at run time. ■ On the other hand, clients know the identity of a server (or can find it out through some other server) and access it by remote procedure call. ● Main program/subroutine organizations ○ The primary organization of many systems mirrors the programming language in which the system is written. ○ For languages without support for modularization this often results in a system organized around a main program and a set of subroutines. ○ The main program acts as the driver for the subroutines, typically providing a control loop for sequencing through the subroutines in some order.
  • 14. Domain-specific software architectures ○ Recently there has been considerable interest in developing “reference” architectures for specific domains. ○ By specializing the architecture to the domain, it is possible to increase the descriptive power of structures. Indeed, in many cases the architecture is sufficiently constrained that an executable system can be generated automatically or semi-automatically from the architectural description itself. ● State Transition Systems ○ These systems are defined in terms a set of states and a set of named transitions that move a system from one state to another.
  • 15. Process Control Systems ○ These systems are roughly characterized as a feedback loop in which inputs from sensors are used by the process control system to determine a set of outputs that will produce a new state of the environment. 3.8. Heterogeneous Architectures ● While it is important to understand the individual nature of the above architectural styles, most systems typically involve some combination of several styles. ● For example, in a Unix pipeline the individual components may be represented internally using virtually any style -including, of course, another pipe and filter, system. ● What is perhaps more surprising is that connectors, too, can often be hierarchically decomposed. ○ For example, a pipe connector may be implemented internally as a FIFO queue accessed by insert and remove operations. ● A second way for styles to be combined is to permit a single component to use a mixture of architectural connectors. ○ For example, a component might access a repository through part of its interface, but interact through pipes with other components in a system, and accept control information through another part of its interface. ○ In fact, Unix pipe and filter systems do this, the file system playing the role of the repository and initialization switches playing the role of control.) ● Another example is an “active database”. This is a repository which activates external components through implicit invocation. ○ In this organization external components register interest in portions of the database. ○ The database automatically invokes the appropriate tools based on this association. ○ Blackboards are often constructed this way, knowledge sources are associated with specific kinds of data, and are activated whenever that kind of data is modified.) ● A third way for styles to be combined is to completely elaborate one level of architectural description in a completely different architectural style.