what is software architecture l.
Skip this Video
Loading SlideShow in 5 Seconds..
What is Software Architecture? PowerPoint Presentation
Download Presentation
What is Software Architecture?

Loading in 2 Seconds...

play fullscreen
1 / 34

What is Software Architecture? - PowerPoint PPT Presentation

  • Uploaded on

What is Software Architecture? An Example Architecture??? Control Process (CP) Prop Loss Model (MODP) Reverb Model (MODR) Noise Model (MODN) Why Can the Previous Diagram Be Called an Architecture? It identifies components It indicates relationships among the components.

I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
Download Presentation

PowerPoint Slideshow about 'What is Software Architecture?' - paul2

An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.

- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
an example architecture
An Example Architecture???




Prop Loss









why can the previous diagram be called an architecture
Why Can the Previous Diagram Be Called an Architecture?
  • It identifies components
  • It indicates relationships among the components.
what does this picture fail to show
What Does this Picture Fail to Show?
  • The nature of the elements
    • What is the significance of their separation?
    • Do they run on separate processors?
    • Do they run at different times?
    • Do they represent ways in which the project labor will be divided?
    • Are they objects, tasks, functions, processes, programs, or something else?
what does this picture fail to show cont d
What Does this Picture Fail to Show? (Cont’d)
  • The responsibilities of the elements
    • What do they do?
    • What is their function in the system?
  • The significance of the connections
    • Do the connections mean that the elements communicate with each other, control each other, send data to each other, use each other, invoke each other, synchronize with each other, share some information-hiding secret with each other, or some combination of these relations?
what does this picture fail to show cont d6
What Does this Picture Fail to Show? (Cont’d)
  • The significance of the layout
    • Why is CP on a separate level?
    • Does it call the other three elements, and are they not allowed to call it?
    • Does it contain the other three in an implementation unit sense?
definition of a software architecture
Definition of a Software Architecture

The software architecture of a program or computing system is the structure or structures of the system, which comprise software elements, the externally visible properties of those elements and the relationships among them.

architectures affect the factors that influence them
Architectures Affect the Factors that Influence Them
  • The architecture affects the structure of the developing organization.
  • The architecture can affect the goals of the developing organization.
  • The architecture can affect customer requirements for the next system.
  • The architecture will affect the architectures of future systems.
  • The architecture may affect the software engineering culture.
software architecture specifics
Software Architecture Specifics
  • Architecture defines software elements.
    • It embodies information about how the elements relate to each other.
    • It is an abstraction, i.e., it omits certain information about the elements that does not pertain to their interaction.
  • Architecture is a not a single structure, but a collection of structures
    • E.g., runtime vs. implementation
software architecture specifics cont d
Software Architecture Specifics (Cont’d)
  • All computing systems have architectures.
    • They may not be known to anyone.
    • The architecture of a system is different from its representation.
  • The behavior of each element is part of the architecture.
    • The behavior, and only the behavior, that influences how another element interacts with it or influences the system as a whole, is part of the software architecture.
software architecture specifics cont d11
Software Architecture Specifics (Cont’d)
  • Architectures can be good or bad.
    • The careful design and evaluation of architectures is essential for producing good architectures.
other definitions of software architecture
Other Definitions of Software Architecture
  • Architecture is high level design.
  • Architecture is the overall structure of the system.
  • Architecture is the structure of the components of a program or system, their interrelationships, and the principles and guidelines governing their design and evaluation over time.
  • Architecture is components and connectors
architectural patterns
Architectural Patterns
  • An architectural pattern is a description of element and relation types together with a set of constraints on how they may be used.
  • Client-server is an example of an architectural pattern.
  • Picking a pattern is often the architects first major design choice.
reference models
Reference Models
  • A reference model is a division of functionality together with data flows between the pieces.
  • For example a database management system might have a reference model.
  • It is a standard division of a known problem into parts that cooperatively solve the problem.
reference architecture
Reference Architecture
  • A reference architecture is a reference model mapped onto software elements and the data flows between them.
  • The software elements cooperatively implement the functionality defined in the reference model.
  • That is,it maps the functionality of a reference model onto a system decomposition.
from models and patterns to architecture
From Models and Patterns to Architecture









why is software architecture important
Why is Software Architecture Important?
  • Communication among stakeholders
  • Early design decisions
  • Transferable abstraction of a system
stakeholder communication
Stakeholder Communication
  • Different stakeholders are concerned with different system characteristics.
  • Architecture provides a common language in which different concerns can be expressed, negotiated and resolved.
early design decisions
Early Design Decisions
  • These are the most difficult to get correct.
  • They are the hardest to change later in the development process.
  • They have the most far-reaching effects.
early design decisions20
Early Design Decisions
  • The architecture defines constraints on implementation.
  • The architecture dictates organizational structure.
  • The architecture inhibits or enables a system’s quality attributes.
  • Predicting system qualities by studying architecture.
early design decisions cont d
Early Design Decisions (Cont’d)
  • The architecture makes it easier to reason about and manage change.
  • The architecture helps in evolutionary prototyping.
  • The architecture enables more accurate cost and schedule estimates.
transferability re usability
  • Software product lines share a common architecture.
  • Systems can be built using large, externally developed elements.
  • Less is more: it pays to restrict the vocabulary of design alternatives.
  • An architecture permits template-based development.
  • An architecture can be the basis for training.
architectural views and structures
Architectural Views and Structures
  • Architectural structures can be divided into three groups
    • Module structures – How is the system to be structured as a set of code units?
    • Component-and-connector structures – How is the system to be structured as a set of elements that have running behavior and interactions?
    • Allocation structures – How is the system to relate to nonsoftware structures in its environment?
common software architecture structures
Common Software Architecture Structures



















module based structures
Module-Based Structures
  • Decomposition – the units are modules related by the “is a submodule of” relation.
  • Uses – the units are modules, procedures or resources on the interfaces of modules related by the “uses” relation.
  • Layered – when the uses relations are controlled in a particular way a system of layers emerges in which layer is a coherent set of related functionality.
module based structures cont d
Module-Based Structures (Cont’d)
  • Class or Generalization – the module units are classes and the relation is “inherits-from or “is-an-instance of”.
component and connector structures
Component-and-Connector Structures
  • Process or Communicating Processes– deals with the dynamic aspects of a running system and the relation is “attachment”. It shows how processes (the units) are connected by communication, synchronization, and/or exclusion operations.
  • Currency – the units are components and the connectors are “logical threads”. It allows determination of opportunities for parallelism and locations of resource contention.
component and connector structures cont d
Component-and-Connector Structures (Cont’d)
  • Shared Data or repository – comprises components and connectors that create store and access persistent data.
  • Client-Server – components are the clients and servers and the connectors are the protocols and messages they share.
allocation structures
Allocation Structures
  • Deployment – shows how software is assigned to hardware-processing and communication elements and the relations are “allocated to” and “migrate to”.
  • Implementation – shows how software elements (modules) are mapped to the file structure(s) in the system’s development, integration, or configuration control environments.
allocation structures cont d
Allocation Structures (Cont’d)
  • Work Assignment – assigns responsibility for implementing and integrating the modules to the appropriate development teams.
relating structures to each other
Relating Structures to Each Other
  • Each of these structures provides a different perspective and design handle on a system.
  • Each is valid and potentially useful in its own right
  • They are not independent but highly interrelated.
  • Often the module structure is dominant, but not always.
relating structures to each other cont d
Relating Structures to Each Other (Cont’d)
  • Not all systems warrant consideration of many architectural structures.
  • The larger the systems the more dramatic the differences between these structures tend to be.
  • Structures represent the primary engineering leverage point for satisfying quality attributes.
  • Multiple structures represent a powerful separation-of-concerns approach for creating the architecture.
which structures to choose
Which Structures to Choose?
  • Kruchten’s “four plus one” approach recommends four views (structures):
    • Logical – the elements are “key abstractions” (a module structure)
    • Process – addresses concurrency and distribution of functionality (a component-and-connector structure)
    • Development – organization of software modules, libraries, subsystems, and units of development (an allocation structure)
which structures to choose cont d
Which Structures to Choose? (Cont’d)
  • Kruchten’s approach (cont’d):
    • Physical – maps elements onto processing and communication nodes (a deployment view)
  • The “plus one” is a a set of key use cases that serve to validate that the structures are not in conflict with each other and together describe a system meeting its requirements.