SlideShare a Scribd company logo
SOFTWARE ARCHITECTURES (MODULE VIEWS AND STYLES)
                                        INAM SOOMRO

GENERALIZATION STYLE
      The concept of generalization arises when a relationship between a set of similar entities
      conceptualizing the common properties and attributes from other entities are used. It
      emphasizes on “IS- A” relationship between the entities. The “IS- A” relationship is a powerful
      mechanism that helps to reduce the complexity of models and redundancy in specifications
      and allows reuse of software components. The generalization style is an abstraction principle
      which software architects use for the development and extension of the architecture and
      individual components. The components capture the commonalities and variations in the
      generalization style. When the module has generalization relationship, the type is more
      general or parent type and all the extending types are its subtypes or children and are
      considered to be the specialization of the parent type. A parent module contains all the
      commonalities while the children manifest the variations. Changes made to the parent will
      reflect automatically to all the children that inherit from it. Architecture defines sharing and
      reusing on interface, not on implementation.

  -   ELEMENTS , RELATIONS AND PROPERTIES

      Module: Generally an abstract and independent unit that can be used to construct more
      complex units. Abstract Modules may provide a little implementation but the child that
      extends abstract module must provide the implementation of the parent module or they
      should be abstract as well. Children and parents are often referred to
      as derived and base modules or descendent and ancestor, respectively. A module cannot be
      a descendent or ancestor to itself.

      Relations: The relation between the modules is “generalization” which is specialization of
      “IS- A” relation. The relation can be specified as class inheritance, interface inheritance, or
      interface realization.

      Constraints: In generalizing the modules, one module can have more than one parent,
      means it support the idea of multiple inheritances but it is considered to be an evil design
      decision and can lead to the ambiguity of deadly diamond of death. A child module cannot
      be a generalization of its parent.

      Generalization in software architectures is used for:
         - Object Oriented Design                           -         Local Change and Variation
         - Extension                                        -         Reuse

      NOTATION FOR THE GENERALIZATION STYLE

  -   UML: In UML modules are typically shown as classes or interfaces. Class and interface
      inheritance is represented as a solid line with a closed hollow arrowhead. For example,
Shape is a more general type, Circle or polygon or any other shape that satisfy the shape
        criteria can be inherited from the shape where arrow points towards the more general type.
        Interface realization is also a kind of generalization and in UML it is represented as a dashed
        line with a closed hollow arrowhead pointing towards the interface it realizes, it can also be
        expressed with a lollipop interface connected towards the module that implements it.

    -   SEI Architecture Expert(ArchE) is a tool and method for architects to define the
        architectural design of the system from new requirements and already existing piece of
        components. It is an approach to defining software architectures by constructing the design
        process on the architecture’s quality attribute requirements. It follows a recursive
        decomposition process where, at each stage in the decomposition, tactics and architectural
        patterns are chosen to satisfy a set of quality attribute scenarios.

LAYERED STYLE
         Layer is an architectural design pattern that helps to construct software applications so that
they can be decomposed into subgroups so that each subgroup is at a particular level of abstraction.
In this case subgroups are also layers where each layer provides a cohesive set of services. One layer
is linked to other layer with the constraint of “allowed to use” in unidirectional top to down way.
Layered architectures provide modifiability and portability.

Layers have been a source of ambiguity because the architects allow the lower layers to
communicate with layers in upward direction while the usage usually flows in downward direction.
Systems with the upward direction are not strictly according to the definition, layered. The relation
in layers is “allowed to use”. For example, layer A and B are said to be in a relation “allowed to use”
when implementation of layer A is allowed to use the services provided by layer B. Software architect
must provide the description of the exceptions in the layering style, if any, to the usage rules implied
by the geometry. Layering style has evolved from time to time and contains different styles that will
be discussed below.

ELEMENTS, RELATION AND P ROPERTIES

 Layers: A cohesive collection of modules. A module can be a web service, a routine in assembly
language. A module needs to provide an interface from where the services can be invoked.

Elements: The modules that a layer contains are said to be the elements of a layer. Architects are
supposed to provide the description and guideline of the contents and implementation of layers.

Relation: The relation is “allowed to use” where a layer can use the other layer in downward
unidirectional style.

Constraints: Allowed to use must satisfy the layering definition criteria and there are supposed to
be at least two or more layers, it must not contain any loopholes or backward flows.


What Is It for

Layers are a principal way of information hiding, a change to a lower layer, can be hidden behind its
interface and cannot impact the upper layer. Layering approach has been successfully used to
support portability, scalability and modifiability, it promote reuse and addresses separation of
concern. Layers may also define the task assignment within the development teams, for example, the
modules with presentation, business logic and model layers can be assigned to frontend developers
and backend developers respectively. Organizing the modules into layers with interfaces is an
important tool for managing complexity and communicating the structure to developers.

NOTATION FOR THE LAYERED STYLE

   -   Stack: An orderly pile of boxes that is denoted by geometric adjacency with allowed to use
       relationship that can only be read unidirectional from top to down. A connection between
       the stacks of layers can also be shown symbolically with arrow.

   -   Segmented Layers: Division of sections inside layers that signify fine-grained aggregation
       between modules. It uses the allowed to use relationship with preexistent modules
       (imported modules). Architects must specify the description of rules between the segments.
       Top layer Segments are not allowed to use each other but the segments in bottom layers
       can.

   -   Rings: Layers are represented as a set of concentric circles where the innermost circle
       resembles a lower layer and the outmost layer resembles the top level layer. Ring layers can
       be segmented inside the circle but the only difference from the segmented layers is, they are
       not permitted to practice “allow to use” relation within the layer.

   -   Layers with a Sidecar: A layered diagram like stack layered diagram with an exception of
       module or layer attached to the side of the diagram. These types of diagram can be read in
       two ways. Let A, B, and C be a stacked layered diagram with D layer attached to it as a
       sidecar, (i) it may mean that a layers A, B, C are allowed to use the D(sidecar) layer, or (ii) D
       can use the layers A, B, and C. Or they can mean both, which is not a good layered
       architectural design, architects must specify the rules for such kind of design, and ambiguity
       and it must be resolved with annotations. In some cases, layered architecture can be
       represented three dimensionally that can be accessible to all other layers. These kinds of
       design often represent utility libraries or special platform services like operating system.

   -    UML: UML do not have the syntactic elements for layering architecture but they can be
       expressed by stereotyped package notation with stereotyped allow to use relation to show
       the dependency between the layers. Dependencies are not transitive.

ASPECTS STYLE
An architectural style used to isolate the modules that are responsible for crosscutting concerns.
Aspects are modular units that complement objects to modularize the cross cutting concerns. Cross
cutting concerns are aspects or logical parts of a program that crosscut other concerns or modules.
Cross cutting concerns often cannot be clearly decomposed and usually result in code duplication
and dependencies between different modules, resulting in loss of modularity. During software
development, the business logic ends up mingled with code that deals with crosscutting concerns.
The implementation of a concern is duplicated if its code is spread out over multiple modules. The
implementation of a concern is dependent if its code is intermixed with code that implements other
concerns. The module in which duplication occurs is not cohesive. For example, in a banking
Management System, the modules can be Account, Customer and Bank Employee, the account
module will contain the code to deal with account’s business logic related to open/close account,
deposit, transfer and withdraw money, but practically we need to handle crosscutting concerns such
as security, transaction management, and logging. Logging exemplifies a crosscutting concern
because logging affects every logged part of the system. Logging in that way crosscuts all logged
classes and methods.

 The purpose of Aspect-Oriented design is to provide a systematic means to modularize components
by allowing separation of crosscutting concerns. The modules are called aspects. The aspects view
contains the information to wire each aspect module to other modules. The goal of applying aspects
style is to allow separation of cross cutting concerns to improve the modifiability of modules that
deals with business domain functionality. Thus logging, security and transaction management
concerns can be easily implemented without cluttering the business logic code with details of the
crosscutting concerns.

ELEMENTS, RELATION AND PROPERTIES

Elements: Aspect modules are the elements of Aspects Style which is a special type of module
introduced in Aspect Oriented Programming.

Relation: The relation in Aspect Oriented Paradigm is considerably is crosscuts. An aspect crosscuts
a module if it contains crosscutting functionality.

Properties: Pointcut, point of execution in the application at which cross-cutting concern needs to
be applied. Pointcuts are used primarily by advice (additional code that we want to apply to our
existing model).

What Is It for

Aspects style is used to address the implementation of crosscutting concerns; it promotes modularity
and achieves modularity by allowing separation of concerns. It avoids tangling and scattering of code
between the modules.

NOTATIONS FOR ASPECTS STYLE

UML: UML does not have any syntactical elements to represent aspects, but aspects types are
symbolized in UML as classes with stereotypes because aspects are similar to classes and they may
contain attribute, operations and inheritance hierarchy. Crosscut relation can also be represented as
a stereotyped dependency to the modules it crosscut. Drawing a line for crosscut is impractical and
would clutter the diagrams, instead of drawing a line from each aspect to every module it crosscuts
simply add comment box that characterizes what other modules will be crosscut.
References

    Documenting Software Architectures: Views and Beyond
     By: Paul Clements; Felix Bachmann; Len Bass; David Garlan; James Ivers; Reed Little; Robert Nord;
     Judith Stafford

More Related Content

What's hot

Object oriented software engineering
Object oriented software engineeringObject oriented software engineering
Object oriented software engineering
Varsha Ajith
 
On the Composition and Reuse of Viewpoints
On the Composition and Reuse of ViewpointsOn the Composition and Reuse of Viewpoints
On the Composition and Reuse of Viewpoints
Henry Muccini
 
Oop09 6
Oop09 6Oop09 6
Oop09 6
schwaa
 
ITU - MDD – Modeling Techniques
ITU - MDD – Modeling TechniquesITU - MDD – Modeling Techniques
ITU - MDD – Modeling Techniques
Tonny Madsen
 
Architectural structures and views
Architectural structures and viewsArchitectural structures and views
Architectural structures and views
Dr Reeja S R
 
Design concept -Software Engineering
Design concept -Software EngineeringDesign concept -Software Engineering
Design concept -Software Engineering
Varsha Ajith
 
Design techniques
Design techniquesDesign techniques
Design techniques
Amit Debnath
 
Devnology Back to School: Empirical Evidence on Modeling in Software Development
Devnology Back to School: Empirical Evidence on Modeling in Software DevelopmentDevnology Back to School: Empirical Evidence on Modeling in Software Development
Devnology Back to School: Empirical Evidence on Modeling in Software Development
Devnology
 
Software Design and Modularity
Software Design and ModularitySoftware Design and Modularity
Software Design and Modularity
Danyal Ahmad
 
Ooad static diagram
Ooad static diagramOoad static diagram
Ooad static diagram
TSubashiniAPIICSE
 
05 inheritance
05 inheritance05 inheritance
05 inheritance
thirumuru2012
 
Architecture Extraction From Code
Architecture Extraction From CodeArchitecture Extraction From Code
Architecture Extraction From Code
sanyamgoyal
 
Unified Modeling Language
Unified Modeling LanguageUnified Modeling Language
Unified Modeling Language
surana college
 
Sda 7
Sda   7Sda   7
Aspect oriented software development
Aspect oriented software developmentAspect oriented software development
Aspect oriented software development
Maryam Malekzad
 
Software Architecture: views and viewpoints
Software Architecture: views and viewpointsSoftware Architecture: views and viewpoints
Software Architecture: views and viewpoints
Henry Muccini
 
Object oriented analysis and design unit- iii
Object oriented analysis and design unit- iiiObject oriented analysis and design unit- iii
Object oriented analysis and design unit- iii
Shri Shankaracharya College, Bhilai,Junwani
 
Architectural views
Architectural viewsArchitectural views
Architectural views
Saleem Khan
 
Software design
Software designSoftware design
Software design
Zulqarnaintayyab
 
an analysis and new methodology for reverse engineering of uml behavioral
an analysis and new methodology for reverse engineering of uml behavioralan analysis and new methodology for reverse engineering of uml behavioral
an analysis and new methodology for reverse engineering of uml behavioral
INFOGAIN PUBLICATION
 

What's hot (20)

Object oriented software engineering
Object oriented software engineeringObject oriented software engineering
Object oriented software engineering
 
On the Composition and Reuse of Viewpoints
On the Composition and Reuse of ViewpointsOn the Composition and Reuse of Viewpoints
On the Composition and Reuse of Viewpoints
 
Oop09 6
Oop09 6Oop09 6
Oop09 6
 
ITU - MDD – Modeling Techniques
ITU - MDD – Modeling TechniquesITU - MDD – Modeling Techniques
ITU - MDD – Modeling Techniques
 
Architectural structures and views
Architectural structures and viewsArchitectural structures and views
Architectural structures and views
 
Design concept -Software Engineering
Design concept -Software EngineeringDesign concept -Software Engineering
Design concept -Software Engineering
 
Design techniques
Design techniquesDesign techniques
Design techniques
 
Devnology Back to School: Empirical Evidence on Modeling in Software Development
Devnology Back to School: Empirical Evidence on Modeling in Software DevelopmentDevnology Back to School: Empirical Evidence on Modeling in Software Development
Devnology Back to School: Empirical Evidence on Modeling in Software Development
 
Software Design and Modularity
Software Design and ModularitySoftware Design and Modularity
Software Design and Modularity
 
Ooad static diagram
Ooad static diagramOoad static diagram
Ooad static diagram
 
05 inheritance
05 inheritance05 inheritance
05 inheritance
 
Architecture Extraction From Code
Architecture Extraction From CodeArchitecture Extraction From Code
Architecture Extraction From Code
 
Unified Modeling Language
Unified Modeling LanguageUnified Modeling Language
Unified Modeling Language
 
Sda 7
Sda   7Sda   7
Sda 7
 
Aspect oriented software development
Aspect oriented software developmentAspect oriented software development
Aspect oriented software development
 
Software Architecture: views and viewpoints
Software Architecture: views and viewpointsSoftware Architecture: views and viewpoints
Software Architecture: views and viewpoints
 
Object oriented analysis and design unit- iii
Object oriented analysis and design unit- iiiObject oriented analysis and design unit- iii
Object oriented analysis and design unit- iii
 
Architectural views
Architectural viewsArchitectural views
Architectural views
 
Software design
Software designSoftware design
Software design
 
an analysis and new methodology for reverse engineering of uml behavioral
an analysis and new methodology for reverse engineering of uml behavioralan analysis and new methodology for reverse engineering of uml behavioral
an analysis and new methodology for reverse engineering of uml behavioral
 

Similar to Software architecture

Object oriented analysis and design unit- iv
Object oriented analysis and design unit- ivObject oriented analysis and design unit- iv
Object oriented analysis and design unit- iv
Shri Shankaracharya College, Bhilai,Junwani
 
Uml - An Overview
Uml - An OverviewUml - An Overview
Uml - An Overview
Raj Thilak S
 
Introduction to UML
Introduction to UMLIntroduction to UML
Introduction to UML
yndaravind
 
Apostila UML
Apostila UMLApostila UML
Apostila UML
landergustavo
 
OOP_Module 2.pptx
OOP_Module 2.pptxOOP_Module 2.pptx
OOP_Module 2.pptx
PrasenjitKumarDas2
 
Interfaces & Packages V2
Interfaces & Packages V2Interfaces & Packages V2
Interfaces & Packages V2
Dr Anjan Krishnamurthy
 
Uml
UmlUml
UML-Advanced Software Engineering
UML-Advanced Software EngineeringUML-Advanced Software Engineering
UML-Advanced Software Engineering
Amit Singh
 
Mca 504 dotnet_unit4
Mca 504 dotnet_unit4Mca 504 dotnet_unit4
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
Dhivyaa C.R
 
uml2-1214558329929112-8.ppt
uml2-1214558329929112-8.pptuml2-1214558329929112-8.ppt
uml2-1214558329929112-8.ppt
AleksandarUrdarevski
 
Uml Explained Step ByStep
Uml Explained Step ByStepUml Explained Step ByStep
Uml Explained Step ByStep
Waseem Khan
 
ap assignmnet presentation.pptx
ap assignmnet presentation.pptxap assignmnet presentation.pptx
ap assignmnet presentation.pptx
AwanAdhikari
 
Ooad lab manual
Ooad  lab manualOoad  lab manual
Ooad lab manual
Praseela R
 
Diagramming the Class Diagram: Toward a Unified Modeling Methodology
Diagramming the Class Diagram: Toward a Unified Modeling Methodology Diagramming the Class Diagram: Toward a Unified Modeling Methodology
Diagramming the Class Diagram: Toward a Unified Modeling Methodology
IJCSIS Research Publications
 
Design Principles to design Patterns
Design Principles to design PatternsDesign Principles to design Patterns
Design Principles to design Patterns
Faizan Haider
 
Rbce
Rbce Rbce
Aspect Oriented Programming
Aspect Oriented ProgrammingAspect Oriented Programming
Aspect Oriented Programming
mukhtarhudaya
 
Assignment 1 SYD601 2012 rick_danby completed with audio
Assignment 1 SYD601 2012 rick_danby completed with audioAssignment 1 SYD601 2012 rick_danby completed with audio
Assignment 1 SYD601 2012 rick_danby completed with audio
RickNZ
 
Uml Presentation
Uml PresentationUml Presentation
Uml Presentation
anasz3z3
 

Similar to Software architecture (20)

Object oriented analysis and design unit- iv
Object oriented analysis and design unit- ivObject oriented analysis and design unit- iv
Object oriented analysis and design unit- iv
 
Uml - An Overview
Uml - An OverviewUml - An Overview
Uml - An Overview
 
Introduction to UML
Introduction to UMLIntroduction to UML
Introduction to UML
 
Apostila UML
Apostila UMLApostila UML
Apostila UML
 
OOP_Module 2.pptx
OOP_Module 2.pptxOOP_Module 2.pptx
OOP_Module 2.pptx
 
Interfaces & Packages V2
Interfaces & Packages V2Interfaces & Packages V2
Interfaces & Packages V2
 
Uml
UmlUml
Uml
 
UML-Advanced Software Engineering
UML-Advanced Software EngineeringUML-Advanced Software Engineering
UML-Advanced Software Engineering
 
Mca 504 dotnet_unit4
Mca 504 dotnet_unit4Mca 504 dotnet_unit4
Mca 504 dotnet_unit4
 
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
 
uml2-1214558329929112-8.ppt
uml2-1214558329929112-8.pptuml2-1214558329929112-8.ppt
uml2-1214558329929112-8.ppt
 
Uml Explained Step ByStep
Uml Explained Step ByStepUml Explained Step ByStep
Uml Explained Step ByStep
 
ap assignmnet presentation.pptx
ap assignmnet presentation.pptxap assignmnet presentation.pptx
ap assignmnet presentation.pptx
 
Ooad lab manual
Ooad  lab manualOoad  lab manual
Ooad lab manual
 
Diagramming the Class Diagram: Toward a Unified Modeling Methodology
Diagramming the Class Diagram: Toward a Unified Modeling Methodology Diagramming the Class Diagram: Toward a Unified Modeling Methodology
Diagramming the Class Diagram: Toward a Unified Modeling Methodology
 
Design Principles to design Patterns
Design Principles to design PatternsDesign Principles to design Patterns
Design Principles to design Patterns
 
Rbce
Rbce Rbce
Rbce
 
Aspect Oriented Programming
Aspect Oriented ProgrammingAspect Oriented Programming
Aspect Oriented Programming
 
Assignment 1 SYD601 2012 rick_danby completed with audio
Assignment 1 SYD601 2012 rick_danby completed with audioAssignment 1 SYD601 2012 rick_danby completed with audio
Assignment 1 SYD601 2012 rick_danby completed with audio
 
Uml Presentation
Uml PresentationUml Presentation
Uml Presentation
 

Recently uploaded

What is an RPA CoE? Session 1 – CoE Vision
What is an RPA CoE?  Session 1 – CoE VisionWhat is an RPA CoE?  Session 1 – CoE Vision
What is an RPA CoE? Session 1 – CoE Vision
DianaGray10
 
Digital Banking in the Cloud: How Citizens Bank Unlocked Their Mainframe
Digital Banking in the Cloud: How Citizens Bank Unlocked Their MainframeDigital Banking in the Cloud: How Citizens Bank Unlocked Their Mainframe
Digital Banking in the Cloud: How Citizens Bank Unlocked Their Mainframe
Precisely
 
Taking AI to the Next Level in Manufacturing.pdf
Taking AI to the Next Level in Manufacturing.pdfTaking AI to the Next Level in Manufacturing.pdf
Taking AI to the Next Level in Manufacturing.pdf
ssuserfac0301
 
The Microsoft 365 Migration Tutorial For Beginner.pptx
The Microsoft 365 Migration Tutorial For Beginner.pptxThe Microsoft 365 Migration Tutorial For Beginner.pptx
The Microsoft 365 Migration Tutorial For Beginner.pptx
operationspcvita
 
Dandelion Hashtable: beyond billion requests per second on a commodity server
Dandelion Hashtable: beyond billion requests per second on a commodity serverDandelion Hashtable: beyond billion requests per second on a commodity server
Dandelion Hashtable: beyond billion requests per second on a commodity server
Antonios Katsarakis
 
Fueling AI with Great Data with Airbyte Webinar
Fueling AI with Great Data with Airbyte WebinarFueling AI with Great Data with Airbyte Webinar
Fueling AI with Great Data with Airbyte Webinar
Zilliz
 
HCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAU
HCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAUHCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAU
HCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAU
panagenda
 
Mutation Testing for Task-Oriented Chatbots
Mutation Testing for Task-Oriented ChatbotsMutation Testing for Task-Oriented Chatbots
Mutation Testing for Task-Oriented Chatbots
Pablo Gómez Abajo
 
Biomedical Knowledge Graphs for Data Scientists and Bioinformaticians
Biomedical Knowledge Graphs for Data Scientists and BioinformaticiansBiomedical Knowledge Graphs for Data Scientists and Bioinformaticians
Biomedical Knowledge Graphs for Data Scientists and Bioinformaticians
Neo4j
 
Principle of conventional tomography-Bibash Shahi ppt..pptx
Principle of conventional tomography-Bibash Shahi ppt..pptxPrinciple of conventional tomography-Bibash Shahi ppt..pptx
Principle of conventional tomography-Bibash Shahi ppt..pptx
BibashShahi
 
Northern Engraving | Nameplate Manufacturing Process - 2024
Northern Engraving | Nameplate Manufacturing Process - 2024Northern Engraving | Nameplate Manufacturing Process - 2024
Northern Engraving | Nameplate Manufacturing Process - 2024
Northern Engraving
 
Energy Efficient Video Encoding for Cloud and Edge Computing Instances
Energy Efficient Video Encoding for Cloud and Edge Computing InstancesEnergy Efficient Video Encoding for Cloud and Edge Computing Instances
Energy Efficient Video Encoding for Cloud and Edge Computing Instances
Alpen-Adria-Universität
 
How to Interpret Trends in the Kalyan Rajdhani Mix Chart.pdf
How to Interpret Trends in the Kalyan Rajdhani Mix Chart.pdfHow to Interpret Trends in the Kalyan Rajdhani Mix Chart.pdf
How to Interpret Trends in the Kalyan Rajdhani Mix Chart.pdf
Chart Kalyan
 
[OReilly Superstream] Occupy the Space: A grassroots guide to engineering (an...
[OReilly Superstream] Occupy the Space: A grassroots guide to engineering (an...[OReilly Superstream] Occupy the Space: A grassroots guide to engineering (an...
[OReilly Superstream] Occupy the Space: A grassroots guide to engineering (an...
Jason Yip
 
Introduction of Cybersecurity with OSS at Code Europe 2024
Introduction of Cybersecurity with OSS  at Code Europe 2024Introduction of Cybersecurity with OSS  at Code Europe 2024
Introduction of Cybersecurity with OSS at Code Europe 2024
Hiroshi SHIBATA
 
Nordic Marketo Engage User Group_June 13_ 2024.pptx
Nordic Marketo Engage User Group_June 13_ 2024.pptxNordic Marketo Engage User Group_June 13_ 2024.pptx
Nordic Marketo Engage User Group_June 13_ 2024.pptx
MichaelKnudsen27
 
HCL Notes and Domino License Cost Reduction in the World of DLAU
HCL Notes and Domino License Cost Reduction in the World of DLAUHCL Notes and Domino License Cost Reduction in the World of DLAU
HCL Notes and Domino License Cost Reduction in the World of DLAU
panagenda
 
GNSS spoofing via SDR (Criptored Talks 2024)
GNSS spoofing via SDR (Criptored Talks 2024)GNSS spoofing via SDR (Criptored Talks 2024)
GNSS spoofing via SDR (Criptored Talks 2024)
Javier Junquera
 
Your One-Stop Shop for Python Success: Top 10 US Python Development Providers
Your One-Stop Shop for Python Success: Top 10 US Python Development ProvidersYour One-Stop Shop for Python Success: Top 10 US Python Development Providers
Your One-Stop Shop for Python Success: Top 10 US Python Development Providers
akankshawande
 
Crafting Excellence: A Comprehensive Guide to iOS Mobile App Development Serv...
Crafting Excellence: A Comprehensive Guide to iOS Mobile App Development Serv...Crafting Excellence: A Comprehensive Guide to iOS Mobile App Development Serv...
Crafting Excellence: A Comprehensive Guide to iOS Mobile App Development Serv...
Pitangent Analytics & Technology Solutions Pvt. Ltd
 

Recently uploaded (20)

What is an RPA CoE? Session 1 – CoE Vision
What is an RPA CoE?  Session 1 – CoE VisionWhat is an RPA CoE?  Session 1 – CoE Vision
What is an RPA CoE? Session 1 – CoE Vision
 
Digital Banking in the Cloud: How Citizens Bank Unlocked Their Mainframe
Digital Banking in the Cloud: How Citizens Bank Unlocked Their MainframeDigital Banking in the Cloud: How Citizens Bank Unlocked Their Mainframe
Digital Banking in the Cloud: How Citizens Bank Unlocked Their Mainframe
 
Taking AI to the Next Level in Manufacturing.pdf
Taking AI to the Next Level in Manufacturing.pdfTaking AI to the Next Level in Manufacturing.pdf
Taking AI to the Next Level in Manufacturing.pdf
 
The Microsoft 365 Migration Tutorial For Beginner.pptx
The Microsoft 365 Migration Tutorial For Beginner.pptxThe Microsoft 365 Migration Tutorial For Beginner.pptx
The Microsoft 365 Migration Tutorial For Beginner.pptx
 
Dandelion Hashtable: beyond billion requests per second on a commodity server
Dandelion Hashtable: beyond billion requests per second on a commodity serverDandelion Hashtable: beyond billion requests per second on a commodity server
Dandelion Hashtable: beyond billion requests per second on a commodity server
 
Fueling AI with Great Data with Airbyte Webinar
Fueling AI with Great Data with Airbyte WebinarFueling AI with Great Data with Airbyte Webinar
Fueling AI with Great Data with Airbyte Webinar
 
HCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAU
HCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAUHCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAU
HCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAU
 
Mutation Testing for Task-Oriented Chatbots
Mutation Testing for Task-Oriented ChatbotsMutation Testing for Task-Oriented Chatbots
Mutation Testing for Task-Oriented Chatbots
 
Biomedical Knowledge Graphs for Data Scientists and Bioinformaticians
Biomedical Knowledge Graphs for Data Scientists and BioinformaticiansBiomedical Knowledge Graphs for Data Scientists and Bioinformaticians
Biomedical Knowledge Graphs for Data Scientists and Bioinformaticians
 
Principle of conventional tomography-Bibash Shahi ppt..pptx
Principle of conventional tomography-Bibash Shahi ppt..pptxPrinciple of conventional tomography-Bibash Shahi ppt..pptx
Principle of conventional tomography-Bibash Shahi ppt..pptx
 
Northern Engraving | Nameplate Manufacturing Process - 2024
Northern Engraving | Nameplate Manufacturing Process - 2024Northern Engraving | Nameplate Manufacturing Process - 2024
Northern Engraving | Nameplate Manufacturing Process - 2024
 
Energy Efficient Video Encoding for Cloud and Edge Computing Instances
Energy Efficient Video Encoding for Cloud and Edge Computing InstancesEnergy Efficient Video Encoding for Cloud and Edge Computing Instances
Energy Efficient Video Encoding for Cloud and Edge Computing Instances
 
How to Interpret Trends in the Kalyan Rajdhani Mix Chart.pdf
How to Interpret Trends in the Kalyan Rajdhani Mix Chart.pdfHow to Interpret Trends in the Kalyan Rajdhani Mix Chart.pdf
How to Interpret Trends in the Kalyan Rajdhani Mix Chart.pdf
 
[OReilly Superstream] Occupy the Space: A grassroots guide to engineering (an...
[OReilly Superstream] Occupy the Space: A grassroots guide to engineering (an...[OReilly Superstream] Occupy the Space: A grassroots guide to engineering (an...
[OReilly Superstream] Occupy the Space: A grassroots guide to engineering (an...
 
Introduction of Cybersecurity with OSS at Code Europe 2024
Introduction of Cybersecurity with OSS  at Code Europe 2024Introduction of Cybersecurity with OSS  at Code Europe 2024
Introduction of Cybersecurity with OSS at Code Europe 2024
 
Nordic Marketo Engage User Group_June 13_ 2024.pptx
Nordic Marketo Engage User Group_June 13_ 2024.pptxNordic Marketo Engage User Group_June 13_ 2024.pptx
Nordic Marketo Engage User Group_June 13_ 2024.pptx
 
HCL Notes and Domino License Cost Reduction in the World of DLAU
HCL Notes and Domino License Cost Reduction in the World of DLAUHCL Notes and Domino License Cost Reduction in the World of DLAU
HCL Notes and Domino License Cost Reduction in the World of DLAU
 
GNSS spoofing via SDR (Criptored Talks 2024)
GNSS spoofing via SDR (Criptored Talks 2024)GNSS spoofing via SDR (Criptored Talks 2024)
GNSS spoofing via SDR (Criptored Talks 2024)
 
Your One-Stop Shop for Python Success: Top 10 US Python Development Providers
Your One-Stop Shop for Python Success: Top 10 US Python Development ProvidersYour One-Stop Shop for Python Success: Top 10 US Python Development Providers
Your One-Stop Shop for Python Success: Top 10 US Python Development Providers
 
Crafting Excellence: A Comprehensive Guide to iOS Mobile App Development Serv...
Crafting Excellence: A Comprehensive Guide to iOS Mobile App Development Serv...Crafting Excellence: A Comprehensive Guide to iOS Mobile App Development Serv...
Crafting Excellence: A Comprehensive Guide to iOS Mobile App Development Serv...
 

Software architecture

  • 1. SOFTWARE ARCHITECTURES (MODULE VIEWS AND STYLES) INAM SOOMRO GENERALIZATION STYLE The concept of generalization arises when a relationship between a set of similar entities conceptualizing the common properties and attributes from other entities are used. It emphasizes on “IS- A” relationship between the entities. The “IS- A” relationship is a powerful mechanism that helps to reduce the complexity of models and redundancy in specifications and allows reuse of software components. The generalization style is an abstraction principle which software architects use for the development and extension of the architecture and individual components. The components capture the commonalities and variations in the generalization style. When the module has generalization relationship, the type is more general or parent type and all the extending types are its subtypes or children and are considered to be the specialization of the parent type. A parent module contains all the commonalities while the children manifest the variations. Changes made to the parent will reflect automatically to all the children that inherit from it. Architecture defines sharing and reusing on interface, not on implementation. - ELEMENTS , RELATIONS AND PROPERTIES Module: Generally an abstract and independent unit that can be used to construct more complex units. Abstract Modules may provide a little implementation but the child that extends abstract module must provide the implementation of the parent module or they should be abstract as well. Children and parents are often referred to as derived and base modules or descendent and ancestor, respectively. A module cannot be a descendent or ancestor to itself. Relations: The relation between the modules is “generalization” which is specialization of “IS- A” relation. The relation can be specified as class inheritance, interface inheritance, or interface realization. Constraints: In generalizing the modules, one module can have more than one parent, means it support the idea of multiple inheritances but it is considered to be an evil design decision and can lead to the ambiguity of deadly diamond of death. A child module cannot be a generalization of its parent. Generalization in software architectures is used for: - Object Oriented Design - Local Change and Variation - Extension - Reuse NOTATION FOR THE GENERALIZATION STYLE - UML: In UML modules are typically shown as classes or interfaces. Class and interface inheritance is represented as a solid line with a closed hollow arrowhead. For example,
  • 2. Shape is a more general type, Circle or polygon or any other shape that satisfy the shape criteria can be inherited from the shape where arrow points towards the more general type. Interface realization is also a kind of generalization and in UML it is represented as a dashed line with a closed hollow arrowhead pointing towards the interface it realizes, it can also be expressed with a lollipop interface connected towards the module that implements it. - SEI Architecture Expert(ArchE) is a tool and method for architects to define the architectural design of the system from new requirements and already existing piece of components. It is an approach to defining software architectures by constructing the design process on the architecture’s quality attribute requirements. It follows a recursive decomposition process where, at each stage in the decomposition, tactics and architectural patterns are chosen to satisfy a set of quality attribute scenarios. LAYERED STYLE Layer is an architectural design pattern that helps to construct software applications so that they can be decomposed into subgroups so that each subgroup is at a particular level of abstraction. In this case subgroups are also layers where each layer provides a cohesive set of services. One layer is linked to other layer with the constraint of “allowed to use” in unidirectional top to down way. Layered architectures provide modifiability and portability. Layers have been a source of ambiguity because the architects allow the lower layers to communicate with layers in upward direction while the usage usually flows in downward direction. Systems with the upward direction are not strictly according to the definition, layered. The relation in layers is “allowed to use”. For example, layer A and B are said to be in a relation “allowed to use” when implementation of layer A is allowed to use the services provided by layer B. Software architect must provide the description of the exceptions in the layering style, if any, to the usage rules implied by the geometry. Layering style has evolved from time to time and contains different styles that will be discussed below. ELEMENTS, RELATION AND P ROPERTIES Layers: A cohesive collection of modules. A module can be a web service, a routine in assembly language. A module needs to provide an interface from where the services can be invoked. Elements: The modules that a layer contains are said to be the elements of a layer. Architects are supposed to provide the description and guideline of the contents and implementation of layers. Relation: The relation is “allowed to use” where a layer can use the other layer in downward unidirectional style. Constraints: Allowed to use must satisfy the layering definition criteria and there are supposed to be at least two or more layers, it must not contain any loopholes or backward flows. What Is It for Layers are a principal way of information hiding, a change to a lower layer, can be hidden behind its interface and cannot impact the upper layer. Layering approach has been successfully used to
  • 3. support portability, scalability and modifiability, it promote reuse and addresses separation of concern. Layers may also define the task assignment within the development teams, for example, the modules with presentation, business logic and model layers can be assigned to frontend developers and backend developers respectively. Organizing the modules into layers with interfaces is an important tool for managing complexity and communicating the structure to developers. NOTATION FOR THE LAYERED STYLE - Stack: An orderly pile of boxes that is denoted by geometric adjacency with allowed to use relationship that can only be read unidirectional from top to down. A connection between the stacks of layers can also be shown symbolically with arrow. - Segmented Layers: Division of sections inside layers that signify fine-grained aggregation between modules. It uses the allowed to use relationship with preexistent modules (imported modules). Architects must specify the description of rules between the segments. Top layer Segments are not allowed to use each other but the segments in bottom layers can. - Rings: Layers are represented as a set of concentric circles where the innermost circle resembles a lower layer and the outmost layer resembles the top level layer. Ring layers can be segmented inside the circle but the only difference from the segmented layers is, they are not permitted to practice “allow to use” relation within the layer. - Layers with a Sidecar: A layered diagram like stack layered diagram with an exception of module or layer attached to the side of the diagram. These types of diagram can be read in two ways. Let A, B, and C be a stacked layered diagram with D layer attached to it as a sidecar, (i) it may mean that a layers A, B, C are allowed to use the D(sidecar) layer, or (ii) D can use the layers A, B, and C. Or they can mean both, which is not a good layered architectural design, architects must specify the rules for such kind of design, and ambiguity and it must be resolved with annotations. In some cases, layered architecture can be represented three dimensionally that can be accessible to all other layers. These kinds of design often represent utility libraries or special platform services like operating system. - UML: UML do not have the syntactic elements for layering architecture but they can be expressed by stereotyped package notation with stereotyped allow to use relation to show the dependency between the layers. Dependencies are not transitive. ASPECTS STYLE An architectural style used to isolate the modules that are responsible for crosscutting concerns. Aspects are modular units that complement objects to modularize the cross cutting concerns. Cross cutting concerns are aspects or logical parts of a program that crosscut other concerns or modules. Cross cutting concerns often cannot be clearly decomposed and usually result in code duplication and dependencies between different modules, resulting in loss of modularity. During software development, the business logic ends up mingled with code that deals with crosscutting concerns. The implementation of a concern is duplicated if its code is spread out over multiple modules. The
  • 4. implementation of a concern is dependent if its code is intermixed with code that implements other concerns. The module in which duplication occurs is not cohesive. For example, in a banking Management System, the modules can be Account, Customer and Bank Employee, the account module will contain the code to deal with account’s business logic related to open/close account, deposit, transfer and withdraw money, but practically we need to handle crosscutting concerns such as security, transaction management, and logging. Logging exemplifies a crosscutting concern because logging affects every logged part of the system. Logging in that way crosscuts all logged classes and methods. The purpose of Aspect-Oriented design is to provide a systematic means to modularize components by allowing separation of crosscutting concerns. The modules are called aspects. The aspects view contains the information to wire each aspect module to other modules. The goal of applying aspects style is to allow separation of cross cutting concerns to improve the modifiability of modules that deals with business domain functionality. Thus logging, security and transaction management concerns can be easily implemented without cluttering the business logic code with details of the crosscutting concerns. ELEMENTS, RELATION AND PROPERTIES Elements: Aspect modules are the elements of Aspects Style which is a special type of module introduced in Aspect Oriented Programming. Relation: The relation in Aspect Oriented Paradigm is considerably is crosscuts. An aspect crosscuts a module if it contains crosscutting functionality. Properties: Pointcut, point of execution in the application at which cross-cutting concern needs to be applied. Pointcuts are used primarily by advice (additional code that we want to apply to our existing model). What Is It for Aspects style is used to address the implementation of crosscutting concerns; it promotes modularity and achieves modularity by allowing separation of concerns. It avoids tangling and scattering of code between the modules. NOTATIONS FOR ASPECTS STYLE UML: UML does not have any syntactical elements to represent aspects, but aspects types are symbolized in UML as classes with stereotypes because aspects are similar to classes and they may contain attribute, operations and inheritance hierarchy. Crosscut relation can also be represented as a stereotyped dependency to the modules it crosscut. Drawing a line for crosscut is impractical and would clutter the diagrams, instead of drawing a line from each aspect to every module it crosscuts simply add comment box that characterizes what other modules will be crosscut.
  • 5. References  Documenting Software Architectures: Views and Beyond By: Paul Clements; Felix Bachmann; Len Bass; David Garlan; James Ivers; Reed Little; Robert Nord; Judith Stafford