SlideShare a Scribd company logo
Essential Software Architecture

    Chapter 1: Understanding Software Architecture

                                                   Summary

1.1 What is software Architecture
     ● During the last fifteen years we have seen how software architecture is topic of
       relevant importance.

     ● IASA (International Association of Software Architects) is an association for Software
        Architects.
      ● Architecture is an overused and least understood term in professional software
        development circles.
     ● A term is gradually becoming vacuous when it becomes part of the vernacular of the
        software industry sales force.



1.2 Definitions of Software Architecture
    ●    Define a term like Software Architecture is always a potentially dangerous activity.
            ○ There really is no widely accepted definition by the industry.

    ●    Definitions of Software Architecture:

               ○ IEEE: Architecture is defined by the recommended practice as the fundamental
                 organization of a system, embodied in its components, their relationships to each
                 other and the environment, and the principles governing its design and evolution.

                        ■ Architecture captures system structure in terms of components and how
                          they interact.
                        ■ It also define system-wide design rules and considers how a system may
                          change.

              ○    Software Architecture in Practice (2nd Edition)1:

                         ■ 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
1 [L.Bass, P.Clements, R.Kazman, Software Architecture in Practice (2nd edition), Addison-Wesley 2003]
relationships among them.

              ○    From Garlan and Shaw’s early influential work:

                         ■ Software Architecture goes beyond the algorithms and data structures
                           of the computation; designing and specifying the overall system structure
                           emerges as a new kind of problem. Structural issues include gross
                           organization and blog control structure; protocols for communication,
                           synchronization, and data access; assignment of functionality to design
                           elements; physical distribution; composition of design elements; scaling
                           performance; and selection among design alternatives.




1.2.1 Architecture Defines Structure

     ● Much of an architect’s time is concerned with how to sensibly partition and application
       into a set of interrelated components, modules, objects or whatever unit of software
       partitioning works for you.
     ● An architecture must be designed to meet the specific requirements and constraints of
       the application it is intended for.

    ●  For example:
            ○ A requirement for an information management system may be that the
               application is distributed across multiple sites, and a constraint is that certain
               functionality and data must reside at each site.
           ○ An application’s functionality must be accessible from a web browser.
    ● All these impose some structural constraints:
           ○ Site-specific,
           ○ Web server hosted
     ● ...and simultaneously open up avenues for considerable design creativity in
       partitioning functionality across a collection of related components.

     ● In partitioning an application, the architect assigns responsibilities (the tasks a
       component can be relied upon to perform within the application) to each constituent
       component.
    ● All the chunks, then, must be ensamble to provide the required functionality.

     ● Responsibility-driven design2 is a technique from object-orientation that can be used
       effectively to help define the key components in an architecture.
            ○ This approach provides the tools and techniques that emphasize behavioral
               modeling using objects, responsibilities and collaborations.

     ● A key structural issue for nearly all applications is minimizing dependencies between
       components, creating a loosely coupled architecture from a set of highly cohesive
       components.
     ● A dependency exists between components when a change in one potentially forces a
       change in others. By eliminating unnecessary dependencies, changes are localized

2 http://www.wirfs-brock.com/Design.html
and do not propagate throughout an architecture.




  ●   Excessive dependencies are simple a bad thing.
         ○ They make it difficult to make changes to systems,
         ○ More expensive to test changes,
         ○ they increase build times, and
         ○ They make concurrent, team-based development harder.




1.2.2 Architecture Specifies Component Communication

  ●   When an application is divided into a set of components, it becomes necessary to think
      about how these components communicate data and control information.
  ●   Components can communicate through:
         ○ Straightforward method calls
         ○ Implicit method innvocation
         ○ Remote method invocation, and so on.

   ● They may execute in different threads or processes, and communicate through
     synchronization mechanisms.
  ● Or multiple components may need to be simultaneously informed when an event occurs
     in the application’s environment.
● Architectural patterns and styles3 has catalogued a number of successfully used
        structures that facilitate certain kinds of component communication.
      ● Patterns provides a well-known and accepted reusable architectural blueprints that
        describe the structure and interaction between collections of participating components.

     ● Each pattern has characteristics that make it appropriate to use in satisfying particular
       types of requirements. For example:
           ○ The client-server pattern has several useful characteristics, such as synchronous
              request-reply communications from client to server, and servers supporting one
              or more clients through a published interface.
           ○ Client-server architectures must also provide a mechanism for clients to locate
              servers, handle errors, and optionally provide security on server access.

     ● The power of architecture pattern stems from their utility, and ability to convey design
       information.

      ● Large systems tend to use multiple patterns, combined in ways that satisfy the
        architecture requirements.
      ● When an architecture is based around patterns, it also becomes easy for team
        members to:
           ○ understand a design,
           ○ as the patterns infers component,
           ○ communications, and
           ○ abstract mechanisms that must be provided




1.3 Architecture Addresses Nonfunctional Requirements

     ● Nonfunctional requirements are the ones that don’t appear in use cases.
      ● Rather than define what the application does, they are concerned with how the
        application provides the required functionality.

     ●    There are three distinct areas of nonfuncional requirements:

               ○    Technical constraints:
                       ■ They constrain design options by specifying certain technologies that the
                           application must use:
                               ● “We have only Java developers, so we must develop in Java”
                               ● “The existing database runs on Windows XP only”
                       ■ These are usually nonnegotiable.

               ○    Business constraints:
                        ■ These too constraint design options, but for business, not technical
                          reasons. e.g.:


3 Patterns and styles are essentially the same thing.
● “In order to widen our potential customer base, we must interface
                                      with XYZ tools”.
                                  ● “The supplier of our middleware has raised prices prohibitively,
                                      so we’re moving to an open source version”.
                          ■    Most of the time, these too are nonnegotiable.

               ○    Quality attributes:
                       ■ These define an application’s requirements in terms of:
                                ● Scalability,
                                ● Availability,
                                ● Ease of change,
                                ● Portability,
                                ● Usability,
                                ● Performance, and so on.

     ● An application architecture must therefore explicitly address these aspects of the design.
     ● Architects need to understand the functional requirements, and create a platform that
       supports these and simultaneously satisfies the nonfunctional requirements.




1.3.1 Architecture Is an Abstraction

     ●    A marketecture4 is an excellent vehicle for facilitating discussion by stakeholders during
          design, build, review, and of course the sales process.
     ●    It’s easy to understand and explain and serves as a starting point for deeper analysis.

     ● A thoughtfully crafted marketecture is particularly useful because it is an abstract
       description of the system.
     ● In reality, any architectural description must employ abstraction in order to be
       understandable by team members and project stakeholders.
           ○ This means that unnecessary details are suppressed or ignored in order to focus
               attention and analysis on the salient architectural issues.
           ○ This is typically done by describing the components in the architecture as black
               boxes, specifying only their externally visible properties.

     ● One of the most powerful mechanisms for describing and architecture is hierarchical
       decomposition.
           ○ Components that appear in one level of description are decomposed in more
               detail in accompanying design documentation.
     ● Fig. 1.2 depicts a very simple two-level hierarchy using an informal notation, with two of
       the components in the top-level diagram decomposed further.




4 http://en.wikipedia.org/wiki/Marchitecture
● Different levels of description in the hierarchy tend to be of interest to different
     developers in a project.
   ● The architecture clearly partitions the responsibilities of each team, defining the
     dependencies between them.

   ● In this hypothetical example, the architect has refined the design of two of the
     components, presumably because some nonfunctional requirements dictate that
     further definition is necessary.
   ● Perhaps an existing security service must be used, or the Broker must provide a
     specific message routing function requiring a directory service that has a known level
     of request throughput.

  ● In the above example, the Client component is not partitioned, because the internal
    structure and behavior of the client is not significant in achieving the application’s overall
    nonfunctional requirements.
         ○ The Client component could possibly be the most complex in the application.
             It might have an internal architecture defined by its design team, which meets
             specific goals for the Client component.
  ● It’s not necessary for the architect to complicate the application architecture with such
    issues, as they can be safely left to the Client design team to resolve.




1.3.2 Architecture Views

  ● A software architecture represents a complex design artifact.
  ● The term “architecture views” is a way of describing and understanding an architecture
    based on the following four views:

         ○   Logical View:
■ This describes the architecturally significant elements of the architecture
                and the relationship between them.
              ■ The logical view essentially captures the structure of the application using
                class diagrams or equivalents.

       ○   Process view:
               ■ This focuses on describing the concurrency and communications
                 elements of an architecture.
               ■ In IT applications, the main concerns are describing multithreaded
                 or replicated components, and the synchronous or asynchronous
                 communication mechanisms used.

       ○   Physical view:
              ■ This depicts how the major processes and components are mapped on to
                  applications hardware.
              ■ It might show, for example, how the database and web servers for an
                  application are distributed across a number of server machines.

       ○   Development view:
              ■ This captures the internal organization of the software components,
                 typically as they are held in a development environment or configuration
                 management tool.
              ■ For example, the depiction of a nested package class hierarchy for a Java
                 application would represent the development view of an architecture.

● These views are tied together by the architecturally significant use cases: often called
  scenarios.
● By working through the steps in a particular use case, the architecture can be “tested”,
  by explaining how the design elements in the architecture respond to the behaviour
  required in the use case.

● Krutche’s paper and other works, recommend capturing an architecture model using
  three different views [alternative approach]:

       ○   Module:
              ■ This is a structural view of the architecture, comprising the code modules
                 such as classes, packages, and subsystems in the design.
             ■ It also captures:
                    ● module decomposition,
                    ● inheritance,
                    ● associations, and
                    ● aggregations.

       ○   Component and connector:
             ■ This view describes the behavioral aspects of the architecture.
             ■ Components are typically:
                   ● Objects,
                   ● threads or processes.
             ■ Connectors describe how the components interact.
● Common connectors are sockets, middleware like CORBA or
                           shared memory.

         ○   Allocation:
                 ■ This view shows how the processes in the architecture are mapped to
                     hardware, and how they communicate using networks and/or databases.
                  ■ It also captures a view of the source code in the configuration
                     managements systems, and who in the development group has
                     responsibility for each modules.

  ● The terminology used in “Views and Beyond” is strongly influenced by the architecture
    description language (ADL) research community.




1.4 What Does a Software Architect Do?
  ●   The environment that a software architect works in tends to define their exact roles and
      responsibilities.
  ●   FOUR (4) skills for a software architect, regardless of their professional environment:

         ○   Liaison:
                 ■ Architects play many liaison roles.
                 ■ They liaise with:
                      ● Customers
                      ● Clients
                      ● Technical team
                      ● Business and requirements analysts.

                  ■ They justify designs, decisions and cost with the management
                    deparment.
                 ■ They liaise with sales, to help promote a system to potential purchasers
                    or investors.

                 ■   Software architect must a simple terminology depending the stakeholder.

         ○   Software Engineering:
                 ■ Deep understanding of the technology domains (relevant to context of
                    applications they work on).
                 ■ Know how to exploit new technologies and features into the working
                    application.
                 ■ Just as importantly, good architects know what they don’t know, and
                    ask other with greater expertise when they need information.

         ○   Risk Management:
                ■ Good architects tend to be cautious.
                 ■ They are constantly enumerating and evaluating the risks associated
                   with the design and technology choices they make.
                 ■ They document manage these risks in conjunction with project sponsors
                   and management.
■   They try to make sure no unexpected disaster occur.

  ● Architects play a central role in software development, and must be multiskilled in
    software engineering, technology, management and communication.




1.5 Architects and Technologies
  ● Architect must make design decisions early in a project lifecycle.
  ● That decisions are so difficult.
  ● Due to the difficulty of validating early design decisions, architects sensibly rely on
    tried and tested approaches for solving certain classes of problems.
  ● Through architectural patterns architects can reduce risk leveraging successful designs
    with known engineering attributes.

  ● Patterns are an abstract representation of an architecture. They can be realized in
    multiple concrete forms.
  ● Patterns only describe solutions in abstract terms.
  ● Frameworks are implementation of design patterns. They come to rescue.

  ● As Fig. 1.3 depicts, several classes of COTS technologies are used in practice to
    provide packaged implementations of architectural patterns for use in IT systems.




  ● Different COTS technology implementations have different sets of strengths and
    weakness and costs, and consequently will be better suited to some types of
    applications than others.

  ● The difficulty for architects is in understanding these strengths and weakness early
    in the development cycle for a project.
         ○ ...and choosing an appropriate reification of the architectural patterns they
            need.
  ● The history of the software industry is littered with poor choices and subsequent failes
    projects.
●   Eoin Woods says:
          ○ Software architecture is the set of design decisions which, if made incorrectly,
            may cause your project to be cancelled.




1.6 Architect Title Soup
  ●   Scan job advertisements:

         ○   Chief Architect:
                ■ Typically a senior position who manages a team of architects within an
                    organization.
                ■ Operates at:
                        ● a broad
                        ● organizational level
                         ● and coordinates efforts across system applications, and product
                            lines.
                ■ Very experienced.
                ■ Rare combination of deep technical and business knowledge.

         ○   Product/Technical/Solution Architect:
                ■ Have a deep knowledge of how some important piece of software really
                   works.

         ○   Enterprise Architect:
                ■ More business-focus role.
                ■ Use various business methods and tools to understand, document, and
                    plan the structure of the major systems in an enterprise.




1.8 Further Reading

1.8.1 General Architecture
5




1.8.2 Architecture Requirements

I. Jacobson, M. Christerson, P. Jonsson, G. Overgaard. Object-Oriented Software Engineering:
A Use Case Driven Approach. Addison-Wesley, 1992.

R. Wirfs-Brock, A. McKean. Object Design: Roles, Responsibilities, and Collaborations.
Addison-Wesley, 2002.




1.8.3 Architecture Patterns

F. Buschmann, R. Meunier, H. Rohnert, P. Sommerlad, M. Stal,. Pattern-Oriented Software
Architecture, Volume 1: A System of Patterns. John Wiley & Sons,
1996.
D. Schmidt, M. Stal, H. Rohnert, F. Buschmann. Pattern-Oriented Software Architecture,
Volume 2, Patterns for Concurrent and Networked Objects. John Wiley & Sons, 2000.




5   From Essential Software Architecture by Ian Gorton
Two recent books that focus more on patterns for enterprise systems, especially enterprise
application integrations, are well worth a read.

M. Fowler. Patterns of Enterprise Application Architecture. Addison-Wesley, 2002.

G. Hohpe, B. Woolf. Enterprise Integration Patterns: Designing, Building, and Deploying
Messaging Solutions. Addison-Wesley, 2003.




1.8.4 Technology Comparisons

P. Tran, J. Gosper, I. Gorton. Evaluating the Sustained Performance of COTS based Messaging
Systems. in Software Testing, Verification and Reliability, vol 13, pp 229–240, Wiley and Sons,
2003.

I. Gorton, A. Liu. Performance Evaluation of Alternative Component Architectures for Enterprise
JavaBean Applications, in IEEE Internet Computing, vol.7, no. 3, pages 18–23, 2003.

A. Liu, I. Gorton. Accelerating COTS Middleware Technology Acquisition: the i-MATE Process.
in IEEE Software, pages 72–79,volume 20, no. 2, March/April 2003.

More Related Content

What's hot

Architecture vs Design
Architecture vs DesignArchitecture vs Design
Architecture vs Design
Luc Trudeau
 
Software Architecture: views and viewpoints
Software Architecture: views and viewpointsSoftware Architecture: views and viewpoints
Software Architecture: views and viewpoints
Henry Muccini
 
Documenting Software Architectures
Documenting Software ArchitecturesDocumenting Software Architectures
Documenting Software Architectures
Paulo Gandra de Sousa
 
Unified process Model
Unified process ModelUnified process Model
Unified process Model
University of Haripur
 
Class notes
Class notesClass notes
Pressman ch-1-software
Pressman ch-1-softwarePressman ch-1-software
Pressman ch-1-software
AlenaDion
 
Introduction to Modern Software Architecture
Introduction to Modern Software ArchitectureIntroduction to Modern Software Architecture
Introduction to Modern Software Architecture
Jérôme Kehrli
 
Software Architecture and Design - An Overview
Software Architecture and Design - An OverviewSoftware Architecture and Design - An Overview
Software Architecture and Design - An Overview
Oliver Stadie
 
Lecture 2: The Concept of Enterprise Architecture
Lecture 2: The Concept of Enterprise ArchitectureLecture 2: The Concept of Enterprise Architecture
Lecture 2: The Concept of Enterprise Architecture
Svyatoslav Kotusev
 
Software Architecture Design for Begginers
Software Architecture Design for BegginersSoftware Architecture Design for Begginers
Software Architecture Design for Begginers
Chinh Ngo Nguyen
 
Documenting software architecture
Documenting software architectureDocumenting software architecture
Documenting software architectureHimanshu
 
Enterprise Architecture, Project Management & Digital Transformation
Enterprise Architecture, Project Management & Digital TransformationEnterprise Architecture, Project Management & Digital Transformation
Enterprise Architecture, Project Management & Digital Transformation
Riaz A. Khan, OpenCA, TOGAF
 
Unit iii(part d - component level design)
Unit   iii(part d - component level design)Unit   iii(part d - component level design)
Unit iii(part d - component level design)
BALAJI A
 
unit 5 Architectural design
 unit 5 Architectural design unit 5 Architectural design
unit 5 Architectural design
devika g
 
Software architecture and software design
Software architecture and software designSoftware architecture and software design
Software architecture and software design
Mr. Swapnil G. Thaware
 
overview of analysis, architecture and design process
overview of analysis, architecture and design processoverview of analysis, architecture and design process
overview of analysis, architecture and design process
csk selva
 
Software Architecture
Software ArchitectureSoftware Architecture
Software Architecture
Prabhat gangwar
 
Project Planning in Software Engineering
Project Planning in Software EngineeringProject Planning in Software Engineering
Project Planning in Software Engineering
Fáber D. Giraldo
 
User Interface Design in Software Engineering SE15
User Interface Design in Software Engineering SE15User Interface Design in Software Engineering SE15
User Interface Design in Software Engineering SE15koolkampus
 

What's hot (20)

Architecture vs Design
Architecture vs DesignArchitecture vs Design
Architecture vs Design
 
Software Architecture: views and viewpoints
Software Architecture: views and viewpointsSoftware Architecture: views and viewpoints
Software Architecture: views and viewpoints
 
Documenting Software Architectures
Documenting Software ArchitecturesDocumenting Software Architectures
Documenting Software Architectures
 
Unified process Model
Unified process ModelUnified process Model
Unified process Model
 
Class notes
Class notesClass notes
Class notes
 
Pressman ch-1-software
Pressman ch-1-softwarePressman ch-1-software
Pressman ch-1-software
 
Introduction to Modern Software Architecture
Introduction to Modern Software ArchitectureIntroduction to Modern Software Architecture
Introduction to Modern Software Architecture
 
Software Architecture and Design - An Overview
Software Architecture and Design - An OverviewSoftware Architecture and Design - An Overview
Software Architecture and Design - An Overview
 
Lecture 2: The Concept of Enterprise Architecture
Lecture 2: The Concept of Enterprise ArchitectureLecture 2: The Concept of Enterprise Architecture
Lecture 2: The Concept of Enterprise Architecture
 
Software Architecture Design for Begginers
Software Architecture Design for BegginersSoftware Architecture Design for Begginers
Software Architecture Design for Begginers
 
Documenting software architecture
Documenting software architectureDocumenting software architecture
Documenting software architecture
 
Enterprise Architecture, Project Management & Digital Transformation
Enterprise Architecture, Project Management & Digital TransformationEnterprise Architecture, Project Management & Digital Transformation
Enterprise Architecture, Project Management & Digital Transformation
 
Unit iii(part d - component level design)
Unit   iii(part d - component level design)Unit   iii(part d - component level design)
Unit iii(part d - component level design)
 
unit 5 Architectural design
 unit 5 Architectural design unit 5 Architectural design
unit 5 Architectural design
 
Software architecture and software design
Software architecture and software designSoftware architecture and software design
Software architecture and software design
 
User centered Design
User centered DesignUser centered Design
User centered Design
 
overview of analysis, architecture and design process
overview of analysis, architecture and design processoverview of analysis, architecture and design process
overview of analysis, architecture and design process
 
Software Architecture
Software ArchitectureSoftware Architecture
Software Architecture
 
Project Planning in Software Engineering
Project Planning in Software EngineeringProject Planning in Software Engineering
Project Planning in Software Engineering
 
User Interface Design in Software Engineering SE15
User Interface Design in Software Engineering SE15User Interface Design in Software Engineering SE15
User Interface Design in Software Engineering SE15
 

Similar to Essential Software Architecture - Chapter 1 Understanding Software Architecture - Summary

An Introduction to Software Architecture - Summary
An Introduction to Software Architecture - SummaryAn Introduction to Software Architecture - Summary
An Introduction to Software Architecture - Summary
John Ortiz
 
Software archiecture lecture03
Software archiecture   lecture03Software archiecture   lecture03
Software archiecture lecture03Luktalja
 
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
 
Design Engineering and Design concepts
Design Engineering and Design conceptsDesign Engineering and Design concepts
Design Engineering and Design concepts
JigyasaAgrawal7
 
Sda 1
Sda   1Sda   1
Design Concepts in Software Engineering-1.pptx
Design Concepts in Software Engineering-1.pptxDesign Concepts in Software Engineering-1.pptx
Design Concepts in Software Engineering-1.pptx
KarthigaiSelviS3
 
Introduction to Software Engineering
Introduction to Software EngineeringIntroduction to Software Engineering
Introduction to Software Engineering
SADEED AMEEN
 
Object oriented sad-5 part i
Object oriented sad-5 part iObject oriented sad-5 part i
Object oriented sad-5 part i
Bisrat Girma
 
B19CA4020_SE_Unit3.pptx
B19CA4020_SE_Unit3.pptxB19CA4020_SE_Unit3.pptx
B19CA4020_SE_Unit3.pptx
DrPreethiD1
 
CHAPTER12.ppt
CHAPTER12.pptCHAPTER12.ppt
CHAPTER12.ppt
CharenReposposa
 
Software design
Software designSoftware design
Software design
Benazir Fathima
 
UNIT-4design-concepts-se-pressman-ppt.PPT
UNIT-4design-concepts-se-pressman-ppt.PPTUNIT-4design-concepts-se-pressman-ppt.PPT
UNIT-4design-concepts-se-pressman-ppt.PPT
malathijanapati1
 
1 introduction to sa
1 introduction to sa1 introduction to sa
1 introduction to sadavid10hm
 
Software architecture slides chap1 .pptx
Software architecture slides chap1 .pptxSoftware architecture slides chap1 .pptx
Software architecture slides chap1 .pptx
alimunawar4316
 
Clean architecture
Clean architectureClean architecture
Clean architecture
.NET Crowd
 
Architectural design
Architectural designArchitectural design
Architectural design
SHREEHARI WADAWADAGI
 
Assessing Component based ERP Architecture for Developing Organizations
Assessing Component based ERP Architecture for Developing OrganizationsAssessing Component based ERP Architecture for Developing Organizations
Assessing Component based ERP Architecture for Developing Organizations
IJCSIS Research Publications
 
Software architecture Unit 1 notes
Software architecture Unit 1 notesSoftware architecture Unit 1 notes
Software architecture Unit 1 notesSudarshan Dhondaley
 
Software Project management
Software Project managementSoftware Project management
UNIT 01 SMD.pptx
UNIT 01 SMD.pptxUNIT 01 SMD.pptx
UNIT 01 SMD.pptx
Kalpna Saharan
 

Similar to Essential Software Architecture - Chapter 1 Understanding Software Architecture - Summary (20)

An Introduction to Software Architecture - Summary
An Introduction to Software Architecture - SummaryAn Introduction to Software Architecture - Summary
An Introduction to Software Architecture - Summary
 
Software archiecture lecture03
Software archiecture   lecture03Software archiecture   lecture03
Software archiecture lecture03
 
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
 
Design Engineering and Design concepts
Design Engineering and Design conceptsDesign Engineering and Design concepts
Design Engineering and Design concepts
 
Sda 1
Sda   1Sda   1
Sda 1
 
Design Concepts in Software Engineering-1.pptx
Design Concepts in Software Engineering-1.pptxDesign Concepts in Software Engineering-1.pptx
Design Concepts in Software Engineering-1.pptx
 
Introduction to Software Engineering
Introduction to Software EngineeringIntroduction to Software Engineering
Introduction to Software Engineering
 
Object oriented sad-5 part i
Object oriented sad-5 part iObject oriented sad-5 part i
Object oriented sad-5 part i
 
B19CA4020_SE_Unit3.pptx
B19CA4020_SE_Unit3.pptxB19CA4020_SE_Unit3.pptx
B19CA4020_SE_Unit3.pptx
 
CHAPTER12.ppt
CHAPTER12.pptCHAPTER12.ppt
CHAPTER12.ppt
 
Software design
Software designSoftware design
Software design
 
UNIT-4design-concepts-se-pressman-ppt.PPT
UNIT-4design-concepts-se-pressman-ppt.PPTUNIT-4design-concepts-se-pressman-ppt.PPT
UNIT-4design-concepts-se-pressman-ppt.PPT
 
1 introduction to sa
1 introduction to sa1 introduction to sa
1 introduction to sa
 
Software architecture slides chap1 .pptx
Software architecture slides chap1 .pptxSoftware architecture slides chap1 .pptx
Software architecture slides chap1 .pptx
 
Clean architecture
Clean architectureClean architecture
Clean architecture
 
Architectural design
Architectural designArchitectural design
Architectural design
 
Assessing Component based ERP Architecture for Developing Organizations
Assessing Component based ERP Architecture for Developing OrganizationsAssessing Component based ERP Architecture for Developing Organizations
Assessing Component based ERP Architecture for Developing Organizations
 
Software architecture Unit 1 notes
Software architecture Unit 1 notesSoftware architecture Unit 1 notes
Software architecture Unit 1 notes
 
Software Project management
Software Project managementSoftware Project management
Software Project management
 
UNIT 01 SMD.pptx
UNIT 01 SMD.pptxUNIT 01 SMD.pptx
UNIT 01 SMD.pptx
 

More from John Ortiz

Axiomas de peano para nat
Axiomas de peano para natAxiomas de peano para nat
Axiomas de peano para nat
John 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 valiosa
John 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 Conjuntos
John Ortiz
 
Operaciones sobre Conjuntos
Operaciones sobre ConjuntosOperaciones sobre Conjuntos
Operaciones sobre Conjuntos
John 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 Soporte
John 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 valor
John 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 TI
John 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 Organizacional
John 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 Organizacional
John Ortiz
 
Manejo de excepciones en Java
Manejo de excepciones en JavaManejo de excepciones en Java
Manejo de excepciones en Java
John Ortiz
 
Arquitectura empresarial resumen
Arquitectura empresarial   resumenArquitectura empresarial   resumen
Arquitectura empresarial resumen
John 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 - Resumen
John Ortiz
 
Lactancia materna
Lactancia maternaLactancia materna
Lactancia materna
John Ortiz
 
Brigada de salud
Brigada de saludBrigada de salud
Brigada de salud
John 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

UiPath Test Automation using UiPath Test Suite series, part 3
UiPath Test Automation using UiPath Test Suite series, part 3UiPath Test Automation using UiPath Test Suite series, part 3
UiPath Test Automation using UiPath Test Suite series, part 3
DianaGray10
 
The Art of the Pitch: WordPress Relationships and Sales
The Art of the Pitch: WordPress Relationships and SalesThe Art of the Pitch: WordPress Relationships and Sales
The Art of the Pitch: WordPress Relationships and Sales
Laura Byrne
 
FIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance Osaka Seminar: Overview.pdfFIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance
 
PCI PIN Basics Webinar from the Controlcase Team
PCI PIN Basics Webinar from the Controlcase TeamPCI PIN Basics Webinar from the Controlcase Team
PCI PIN Basics Webinar from the Controlcase Team
ControlCase
 
When stars align: studies in data quality, knowledge graphs, and machine lear...
When stars align: studies in data quality, knowledge graphs, and machine lear...When stars align: studies in data quality, knowledge graphs, and machine lear...
When stars align: studies in data quality, knowledge graphs, and machine lear...
Elena Simperl
 
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdfFIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance
 
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
UiPathCommunity
 
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered Quality
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered QualitySoftware Delivery At the Speed of AI: Inflectra Invests In AI-Powered Quality
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered Quality
Inflectra
 
Accelerate your Kubernetes clusters with Varnish Caching
Accelerate your Kubernetes clusters with Varnish CachingAccelerate your Kubernetes clusters with Varnish Caching
Accelerate your Kubernetes clusters with Varnish Caching
Thijs Feryn
 
Elevating Tactical DDD Patterns Through Object Calisthenics
Elevating Tactical DDD Patterns Through Object CalisthenicsElevating Tactical DDD Patterns Through Object Calisthenics
Elevating Tactical DDD Patterns Through Object Calisthenics
Dorra BARTAGUIZ
 
Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...
Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...
Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...
Ramesh Iyer
 
Transcript: Selling digital books in 2024: Insights from industry leaders - T...
Transcript: Selling digital books in 2024: Insights from industry leaders - T...Transcript: Selling digital books in 2024: Insights from industry leaders - T...
Transcript: Selling digital books in 2024: Insights from industry leaders - T...
BookNet Canada
 
Connector Corner: Automate dynamic content and events by pushing a button
Connector Corner: Automate dynamic content and events by pushing a buttonConnector Corner: Automate dynamic content and events by pushing a button
Connector Corner: Automate dynamic content and events by pushing a button
DianaGray10
 
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
Product School
 
Knowledge engineering: from people to machines and back
Knowledge engineering: from people to machines and backKnowledge engineering: from people to machines and back
Knowledge engineering: from people to machines and back
Elena Simperl
 
Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !
KatiaHIMEUR1
 
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
Thierry Lestable
 
Mission to Decommission: Importance of Decommissioning Products to Increase E...
Mission to Decommission: Importance of Decommissioning Products to Increase E...Mission to Decommission: Importance of Decommissioning Products to Increase E...
Mission to Decommission: Importance of Decommissioning Products to Increase E...
Product School
 
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
Product School
 
State of ICS and IoT Cyber Threat Landscape Report 2024 preview
State of ICS and IoT Cyber Threat Landscape Report 2024 previewState of ICS and IoT Cyber Threat Landscape Report 2024 preview
State of ICS and IoT Cyber Threat Landscape Report 2024 preview
Prayukth K V
 

Recently uploaded (20)

UiPath Test Automation using UiPath Test Suite series, part 3
UiPath Test Automation using UiPath Test Suite series, part 3UiPath Test Automation using UiPath Test Suite series, part 3
UiPath Test Automation using UiPath Test Suite series, part 3
 
The Art of the Pitch: WordPress Relationships and Sales
The Art of the Pitch: WordPress Relationships and SalesThe Art of the Pitch: WordPress Relationships and Sales
The Art of the Pitch: WordPress Relationships and Sales
 
FIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance Osaka Seminar: Overview.pdfFIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance Osaka Seminar: Overview.pdf
 
PCI PIN Basics Webinar from the Controlcase Team
PCI PIN Basics Webinar from the Controlcase TeamPCI PIN Basics Webinar from the Controlcase Team
PCI PIN Basics Webinar from the Controlcase Team
 
When stars align: studies in data quality, knowledge graphs, and machine lear...
When stars align: studies in data quality, knowledge graphs, and machine lear...When stars align: studies in data quality, knowledge graphs, and machine lear...
When stars align: studies in data quality, knowledge graphs, and machine lear...
 
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdfFIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
 
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
 
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered Quality
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered QualitySoftware Delivery At the Speed of AI: Inflectra Invests In AI-Powered Quality
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered Quality
 
Accelerate your Kubernetes clusters with Varnish Caching
Accelerate your Kubernetes clusters with Varnish CachingAccelerate your Kubernetes clusters with Varnish Caching
Accelerate your Kubernetes clusters with Varnish Caching
 
Elevating Tactical DDD Patterns Through Object Calisthenics
Elevating Tactical DDD Patterns Through Object CalisthenicsElevating Tactical DDD Patterns Through Object Calisthenics
Elevating Tactical DDD Patterns Through Object Calisthenics
 
Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...
Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...
Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...
 
Transcript: Selling digital books in 2024: Insights from industry leaders - T...
Transcript: Selling digital books in 2024: Insights from industry leaders - T...Transcript: Selling digital books in 2024: Insights from industry leaders - T...
Transcript: Selling digital books in 2024: Insights from industry leaders - T...
 
Connector Corner: Automate dynamic content and events by pushing a button
Connector Corner: Automate dynamic content and events by pushing a buttonConnector Corner: Automate dynamic content and events by pushing a button
Connector Corner: Automate dynamic content and events by pushing a button
 
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
 
Knowledge engineering: from people to machines and back
Knowledge engineering: from people to machines and backKnowledge engineering: from people to machines and back
Knowledge engineering: from people to machines and back
 
Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !
 
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
 
Mission to Decommission: Importance of Decommissioning Products to Increase E...
Mission to Decommission: Importance of Decommissioning Products to Increase E...Mission to Decommission: Importance of Decommissioning Products to Increase E...
Mission to Decommission: Importance of Decommissioning Products to Increase E...
 
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
 
State of ICS and IoT Cyber Threat Landscape Report 2024 preview
State of ICS and IoT Cyber Threat Landscape Report 2024 previewState of ICS and IoT Cyber Threat Landscape Report 2024 preview
State of ICS and IoT Cyber Threat Landscape Report 2024 preview
 

Essential Software Architecture - Chapter 1 Understanding Software Architecture - Summary

  • 1. Essential Software Architecture Chapter 1: Understanding Software Architecture Summary 1.1 What is software Architecture ● During the last fifteen years we have seen how software architecture is topic of relevant importance. ● IASA (International Association of Software Architects) is an association for Software Architects. ● Architecture is an overused and least understood term in professional software development circles. ● A term is gradually becoming vacuous when it becomes part of the vernacular of the software industry sales force. 1.2 Definitions of Software Architecture ● Define a term like Software Architecture is always a potentially dangerous activity. ○ There really is no widely accepted definition by the industry. ● Definitions of Software Architecture: ○ IEEE: Architecture is defined by the recommended practice as the fundamental organization of a system, embodied in its components, their relationships to each other and the environment, and the principles governing its design and evolution. ■ Architecture captures system structure in terms of components and how they interact. ■ It also define system-wide design rules and considers how a system may change. ○ Software Architecture in Practice (2nd Edition)1: ■ 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 1 [L.Bass, P.Clements, R.Kazman, Software Architecture in Practice (2nd edition), Addison-Wesley 2003]
  • 2. relationships among them. ○ From Garlan and Shaw’s early influential work: ■ Software Architecture goes beyond the algorithms and data structures of the computation; designing and specifying the overall system structure emerges as a new kind of problem. Structural issues include gross organization and blog control structure; protocols for communication, synchronization, and data access; assignment of functionality to design elements; physical distribution; composition of design elements; scaling performance; and selection among design alternatives. 1.2.1 Architecture Defines Structure ● Much of an architect’s time is concerned with how to sensibly partition and application into a set of interrelated components, modules, objects or whatever unit of software partitioning works for you. ● An architecture must be designed to meet the specific requirements and constraints of the application it is intended for. ● For example: ○ A requirement for an information management system may be that the application is distributed across multiple sites, and a constraint is that certain functionality and data must reside at each site. ○ An application’s functionality must be accessible from a web browser. ● All these impose some structural constraints: ○ Site-specific, ○ Web server hosted ● ...and simultaneously open up avenues for considerable design creativity in partitioning functionality across a collection of related components. ● In partitioning an application, the architect assigns responsibilities (the tasks a component can be relied upon to perform within the application) to each constituent component. ● All the chunks, then, must be ensamble to provide the required functionality. ● Responsibility-driven design2 is a technique from object-orientation that can be used effectively to help define the key components in an architecture. ○ This approach provides the tools and techniques that emphasize behavioral modeling using objects, responsibilities and collaborations. ● A key structural issue for nearly all applications is minimizing dependencies between components, creating a loosely coupled architecture from a set of highly cohesive components. ● A dependency exists between components when a change in one potentially forces a change in others. By eliminating unnecessary dependencies, changes are localized 2 http://www.wirfs-brock.com/Design.html
  • 3. and do not propagate throughout an architecture. ● Excessive dependencies are simple a bad thing. ○ They make it difficult to make changes to systems, ○ More expensive to test changes, ○ they increase build times, and ○ They make concurrent, team-based development harder. 1.2.2 Architecture Specifies Component Communication ● When an application is divided into a set of components, it becomes necessary to think about how these components communicate data and control information. ● Components can communicate through: ○ Straightforward method calls ○ Implicit method innvocation ○ Remote method invocation, and so on. ● They may execute in different threads or processes, and communicate through synchronization mechanisms. ● Or multiple components may need to be simultaneously informed when an event occurs in the application’s environment.
  • 4. ● Architectural patterns and styles3 has catalogued a number of successfully used structures that facilitate certain kinds of component communication. ● Patterns provides a well-known and accepted reusable architectural blueprints that describe the structure and interaction between collections of participating components. ● Each pattern has characteristics that make it appropriate to use in satisfying particular types of requirements. For example: ○ The client-server pattern has several useful characteristics, such as synchronous request-reply communications from client to server, and servers supporting one or more clients through a published interface. ○ Client-server architectures must also provide a mechanism for clients to locate servers, handle errors, and optionally provide security on server access. ● The power of architecture pattern stems from their utility, and ability to convey design information. ● Large systems tend to use multiple patterns, combined in ways that satisfy the architecture requirements. ● When an architecture is based around patterns, it also becomes easy for team members to: ○ understand a design, ○ as the patterns infers component, ○ communications, and ○ abstract mechanisms that must be provided 1.3 Architecture Addresses Nonfunctional Requirements ● Nonfunctional requirements are the ones that don’t appear in use cases. ● Rather than define what the application does, they are concerned with how the application provides the required functionality. ● There are three distinct areas of nonfuncional requirements: ○ Technical constraints: ■ They constrain design options by specifying certain technologies that the application must use: ● “We have only Java developers, so we must develop in Java” ● “The existing database runs on Windows XP only” ■ These are usually nonnegotiable. ○ Business constraints: ■ These too constraint design options, but for business, not technical reasons. e.g.: 3 Patterns and styles are essentially the same thing.
  • 5. ● “In order to widen our potential customer base, we must interface with XYZ tools”. ● “The supplier of our middleware has raised prices prohibitively, so we’re moving to an open source version”. ■ Most of the time, these too are nonnegotiable. ○ Quality attributes: ■ These define an application’s requirements in terms of: ● Scalability, ● Availability, ● Ease of change, ● Portability, ● Usability, ● Performance, and so on. ● An application architecture must therefore explicitly address these aspects of the design. ● Architects need to understand the functional requirements, and create a platform that supports these and simultaneously satisfies the nonfunctional requirements. 1.3.1 Architecture Is an Abstraction ● A marketecture4 is an excellent vehicle for facilitating discussion by stakeholders during design, build, review, and of course the sales process. ● It’s easy to understand and explain and serves as a starting point for deeper analysis. ● A thoughtfully crafted marketecture is particularly useful because it is an abstract description of the system. ● In reality, any architectural description must employ abstraction in order to be understandable by team members and project stakeholders. ○ This means that unnecessary details are suppressed or ignored in order to focus attention and analysis on the salient architectural issues. ○ This is typically done by describing the components in the architecture as black boxes, specifying only their externally visible properties. ● One of the most powerful mechanisms for describing and architecture is hierarchical decomposition. ○ Components that appear in one level of description are decomposed in more detail in accompanying design documentation. ● Fig. 1.2 depicts a very simple two-level hierarchy using an informal notation, with two of the components in the top-level diagram decomposed further. 4 http://en.wikipedia.org/wiki/Marchitecture
  • 6. ● Different levels of description in the hierarchy tend to be of interest to different developers in a project. ● The architecture clearly partitions the responsibilities of each team, defining the dependencies between them. ● In this hypothetical example, the architect has refined the design of two of the components, presumably because some nonfunctional requirements dictate that further definition is necessary. ● Perhaps an existing security service must be used, or the Broker must provide a specific message routing function requiring a directory service that has a known level of request throughput. ● In the above example, the Client component is not partitioned, because the internal structure and behavior of the client is not significant in achieving the application’s overall nonfunctional requirements. ○ The Client component could possibly be the most complex in the application. It might have an internal architecture defined by its design team, which meets specific goals for the Client component. ● It’s not necessary for the architect to complicate the application architecture with such issues, as they can be safely left to the Client design team to resolve. 1.3.2 Architecture Views ● A software architecture represents a complex design artifact. ● The term “architecture views” is a way of describing and understanding an architecture based on the following four views: ○ Logical View:
  • 7. ■ This describes the architecturally significant elements of the architecture and the relationship between them. ■ The logical view essentially captures the structure of the application using class diagrams or equivalents. ○ Process view: ■ This focuses on describing the concurrency and communications elements of an architecture. ■ In IT applications, the main concerns are describing multithreaded or replicated components, and the synchronous or asynchronous communication mechanisms used. ○ Physical view: ■ This depicts how the major processes and components are mapped on to applications hardware. ■ It might show, for example, how the database and web servers for an application are distributed across a number of server machines. ○ Development view: ■ This captures the internal organization of the software components, typically as they are held in a development environment or configuration management tool. ■ For example, the depiction of a nested package class hierarchy for a Java application would represent the development view of an architecture. ● These views are tied together by the architecturally significant use cases: often called scenarios. ● By working through the steps in a particular use case, the architecture can be “tested”, by explaining how the design elements in the architecture respond to the behaviour required in the use case. ● Krutche’s paper and other works, recommend capturing an architecture model using three different views [alternative approach]: ○ Module: ■ This is a structural view of the architecture, comprising the code modules such as classes, packages, and subsystems in the design. ■ It also captures: ● module decomposition, ● inheritance, ● associations, and ● aggregations. ○ Component and connector: ■ This view describes the behavioral aspects of the architecture. ■ Components are typically: ● Objects, ● threads or processes. ■ Connectors describe how the components interact.
  • 8. ● Common connectors are sockets, middleware like CORBA or shared memory. ○ Allocation: ■ This view shows how the processes in the architecture are mapped to hardware, and how they communicate using networks and/or databases. ■ It also captures a view of the source code in the configuration managements systems, and who in the development group has responsibility for each modules. ● The terminology used in “Views and Beyond” is strongly influenced by the architecture description language (ADL) research community. 1.4 What Does a Software Architect Do? ● The environment that a software architect works in tends to define their exact roles and responsibilities. ● FOUR (4) skills for a software architect, regardless of their professional environment: ○ Liaison: ■ Architects play many liaison roles. ■ They liaise with: ● Customers ● Clients ● Technical team ● Business and requirements analysts. ■ They justify designs, decisions and cost with the management deparment. ■ They liaise with sales, to help promote a system to potential purchasers or investors. ■ Software architect must a simple terminology depending the stakeholder. ○ Software Engineering: ■ Deep understanding of the technology domains (relevant to context of applications they work on). ■ Know how to exploit new technologies and features into the working application. ■ Just as importantly, good architects know what they don’t know, and ask other with greater expertise when they need information. ○ Risk Management: ■ Good architects tend to be cautious. ■ They are constantly enumerating and evaluating the risks associated with the design and technology choices they make. ■ They document manage these risks in conjunction with project sponsors and management.
  • 9. They try to make sure no unexpected disaster occur. ● Architects play a central role in software development, and must be multiskilled in software engineering, technology, management and communication. 1.5 Architects and Technologies ● Architect must make design decisions early in a project lifecycle. ● That decisions are so difficult. ● Due to the difficulty of validating early design decisions, architects sensibly rely on tried and tested approaches for solving certain classes of problems. ● Through architectural patterns architects can reduce risk leveraging successful designs with known engineering attributes. ● Patterns are an abstract representation of an architecture. They can be realized in multiple concrete forms. ● Patterns only describe solutions in abstract terms. ● Frameworks are implementation of design patterns. They come to rescue. ● As Fig. 1.3 depicts, several classes of COTS technologies are used in practice to provide packaged implementations of architectural patterns for use in IT systems. ● Different COTS technology implementations have different sets of strengths and weakness and costs, and consequently will be better suited to some types of applications than others. ● The difficulty for architects is in understanding these strengths and weakness early in the development cycle for a project. ○ ...and choosing an appropriate reification of the architectural patterns they need. ● The history of the software industry is littered with poor choices and subsequent failes projects.
  • 10. Eoin Woods says: ○ Software architecture is the set of design decisions which, if made incorrectly, may cause your project to be cancelled. 1.6 Architect Title Soup ● Scan job advertisements: ○ Chief Architect: ■ Typically a senior position who manages a team of architects within an organization. ■ Operates at: ● a broad ● organizational level ● and coordinates efforts across system applications, and product lines. ■ Very experienced. ■ Rare combination of deep technical and business knowledge. ○ Product/Technical/Solution Architect: ■ Have a deep knowledge of how some important piece of software really works. ○ Enterprise Architect: ■ More business-focus role. ■ Use various business methods and tools to understand, document, and plan the structure of the major systems in an enterprise. 1.8 Further Reading 1.8.1 General Architecture
  • 11. 5 1.8.2 Architecture Requirements I. Jacobson, M. Christerson, P. Jonsson, G. Overgaard. Object-Oriented Software Engineering: A Use Case Driven Approach. Addison-Wesley, 1992. R. Wirfs-Brock, A. McKean. Object Design: Roles, Responsibilities, and Collaborations. Addison-Wesley, 2002. 1.8.3 Architecture Patterns F. Buschmann, R. Meunier, H. Rohnert, P. Sommerlad, M. Stal,. Pattern-Oriented Software Architecture, Volume 1: A System of Patterns. John Wiley & Sons, 1996. D. Schmidt, M. Stal, H. Rohnert, F. Buschmann. Pattern-Oriented Software Architecture, Volume 2, Patterns for Concurrent and Networked Objects. John Wiley & Sons, 2000. 5 From Essential Software Architecture by Ian Gorton
  • 12. Two recent books that focus more on patterns for enterprise systems, especially enterprise application integrations, are well worth a read. M. Fowler. Patterns of Enterprise Application Architecture. Addison-Wesley, 2002. G. Hohpe, B. Woolf. Enterprise Integration Patterns: Designing, Building, and Deploying Messaging Solutions. Addison-Wesley, 2003. 1.8.4 Technology Comparisons P. Tran, J. Gosper, I. Gorton. Evaluating the Sustained Performance of COTS based Messaging Systems. in Software Testing, Verification and Reliability, vol 13, pp 229–240, Wiley and Sons, 2003. I. Gorton, A. Liu. Performance Evaluation of Alternative Component Architectures for Enterprise JavaBean Applications, in IEEE Internet Computing, vol.7, no. 3, pages 18–23, 2003. A. Liu, I. Gorton. Accelerating COTS Middleware Technology Acquisition: the i-MATE Process. in IEEE Software, pages 72–79,volume 20, no. 2, March/April 2003.