An Introduction to Software Architecture Software Engineering Lab.

Slides:



Advertisements
Similar presentations
Dr. Rogelio Dávila Pérez
Advertisements

Instructor: Tasneem Darwish1 University of Palestine Faculty of Applied Engineering and Urban Planning Software Engineering Department Software Systems.
Software Architecture in Practice (3 rd Ed) Understanding Quality Attributes Understanding the following: How to express the qualities we want our architecture.
By Philippe Kruchten Rational Software
Software Architecture for DSD DSD Team. Overview What is software architecture and why is it so important? The role of architecture in determining system.
Architecture is More Than Just Meeting Requirements Ron Olaski SE510 Fall 2003.
The Architecture Design Process
Software Architecture in Perspective SENG 480/580 (H. Muller) Today: Margaret-Anne Storey
An Introduction to Software Architecture Pejman Salehi
Unified Modeling (Part I) Overview of UML & Modeling
Architectural Design Principles. Outline  Architectural level of design The design of the system in terms of components and connectors and their arrangements.
Software Architecture in Practice
Lecture Nine Database Planning, Design, and Administration
Course Instructor: Aisha Azeem
Chapter 10: Architectural Design
Architectural Design Establishing the overall structure of a software system Objectives To introduce architectural design and to discuss its importance.
Software Architecture. Agenda " Why architect? " What is architecture? " What does an architect do? " What principles guide the process of architecting?
An Introduction to Software Architecture
Software Architecture premaster course 1.  Israa Mosatafa Islam  Neveen Adel Mohamed  Omnia Ibrahim Ahmed  Dr Hany Ammar 2.
Software Architecture for DSD The “Uses” Relation.
Architectural Design.
What is Software Architecture?
Software Architecture in Practice (3rd Ed) Introduction
Chapter 10 Architectural Design
Documenting Software Architectures
What is an Architecture?. An Example? Invoice OrderDelivery Customer.
© Drexel University Software Engineering Research Group (SERG) 1 Based on the paper by Philippe Kruchten from Rational Software.
Database System Development Lifecycle © Pearson Education Limited 1995, 2005.
©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 10Slide 1 Chapter 10 Architectural Design.
An Introduction to Software Architecture
The Architecture Business Cycle. Software Architecture Definition The software architecture of a program or computing system is the structure or structures.
Architecture Business Cycle
SOFTWARE DESIGN AND ARCHITECTURE LECTURE 07. Review Architectural Representation – Using UML – Using ADL.
©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 10Slide 1 Architectural Design l Establishing the overall structure of a software system.
What is Software Architecture? | Website for Students | VTU NOTES | QUESTION PAPERS | NEWS | RESULTS Chapter 2, Authors: Len Bass, Paul,
1 Introduction to Software Architectures Lecture - 3.
SOFTWARE SYSTEMS DEVELOPMENT 4: System Design. Simplified view on software product development process 2 Product Planning System Design Project Planning.
10 Software Architecture CSCU 411 Software Engineering.
Software Architecture and Design Dr. Aldo Dagnino ABB, Inc. US Corporate Research Center October 23 rd, 2003.
Architectural Design lecture 10. Topics covered Architectural design decisions System organisation Control styles Reference architectures.
©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 10Slide 1 Architectural Design l Establishing the overall structure of a software system.
Architectural Design Yonsei University 2 nd Semester, 2014 Sanghyun Park.
Chapter 10 Analysis and Design Discipline. 2 Purpose The purpose is to translate the requirements into a specification that describes how to implement.
SOFTWARE DESIGN AND ARCHITECTURE LECTURE 05. Review Software design methods Design Paradigms Typical Design Trade-offs.
1 Advanced Software Architecture Muhammad Bilal Bashir PhD Scholar (Computer Science) Mohammad Ali Jinnah University.
CPSC 372 John D. McGregor Module 3 Session 1 Architecture.
John D. McGregor Class 4 – Initial decomposition
CPSC 871 John D. McGregor Module 3 Session 1 Architecture.
Chapter 6 – Architectural Design Lecture 1 1Chapter 6 Architectural design.
1 Software Engineering: A Practitioner’s Approach, 6/e Chapter 10a: Architectural Design Software Engineering: A Practitioner’s Approach, 6/e Chapter 10a:
CSC480 Software Engineering Lecture 10 September 25, 2002.
Lecture 18: Object-Oriented Design
Architecture View Models A model is a complete, simplified description of a system from a particular perspective or viewpoint. There is no single view.
Overview of SAIP and LSSA. Software Architecture in Practice Provides a set of techniques, not a prescriptive method for architectural design. Based on.
1 Advanced Software Architecture Muhammad Bilal Bashir PhD Scholar (Computer Science) Mohammad Ali Jinnah University.
Slide 1 Lecture 15 Enterprise Systems Development ( CSC447 ) COMSATS Islamabad Muhammad Usman, Assistant Professor.
CS223: Software Engineering Lecture 13: Software Architecture.
Basic Characteristics of Object-Oriented Systems
1 Advanced Software Architecture Muhammad Bilal Bashir PhD Scholar (Computer Science) Mohammad Ali Jinnah University.
Wrap up. Structures and views Quality attribute scenarios Achieving quality attributes via tactics Architectural pattern and styles.
Software Design and Architecture
Chapter 7: Designing the Architecture
What is an Architecture?
Chapter 5 Designing the Architecture Shari L. Pfleeger Joanne M. Atlee
Design Model Like a Pyramid Component Level Design i n t e r f a c d s
An Introduction to Software Architecture
Software Requirements Specification (SRS) Template.
What is an Architecture?
Chapter 5 Architectural Design.
Design Yaodong Bi.
Presentation transcript:

An Introduction to Software Architecture Software Engineering Lab

Table of content  Introduction  Architecture Business Cycle  Architectural Structures and Views  Quality Attributes  Achieving Qualities  Software Architecture Analysis Method

Introduction

Definition 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.

Externally Visible vs. Internal Properties Externally visible properties are what assumption other elements can make of an element  Provided services (and interface to access those services)  Performance  Fault handling  Shared resource usage … SA intentionally abstracts away internal properties of elements (to better encounter complexity)

Why is architecture important? ► Handling complexity ► Communication among stakeholders  Requirements and concerns of stakeholders  Time  Budget  Other Resources

Why is architecture important? (cont) ► Early Design Decisions  Constraints implementation and implementers  Organizational structure  Enables predicting and ensuring quality attributes  Helps evolutionary prototyping (risk reduction)

Why is architecture important? (cont) ► SA is a transferable, reusable model  Software product lines  Component-based development  Automatic generation of lower-level models  A basis for training

Hazards ► With regards to SA changes are categorized to  Local (a single component)  Non-local (a few components)  Architectural (architectural style) ► Once decided architecture is extremely hard to change ► It impossible to reach to some quality attribute if architecture disallows

Software Arch. vs. System Arch. ► System Arch. is the overall architecture of system including hardware and software architecture ► In assuring quality attributes the architect needs to think about system architecture too (e.g. performance or reliability) ► But architect has more freedom in software architecture than hardware (hardware choices is less under the architects control)

Architecture Business Cycle

Who influences SA?

Summary: Influences on the Architect

Architecture Business Cycle

Architectural Structures and Views

In construction, there are blueprints of  Plan  Different sides of construction  Electrical wiring  Plumbing … Each of these views specifies a single entity (i.e. the construction) from a different perspective (used by a different person, for a different goal). Similarly there are different structures and views in SA.

Structures and Views (cont) ► Structures is a set of coherent elements and the relations among them. For each structure these we can specify: ► Types of elements ► Types of relations ► A set of syntactic constraints ► Semantics of the diagram ► Rationale, principles, and guidelines ► For what purposes it is useful ► View is a representation of software architecture based on an structure as written by the architect and read by stakeholders (an instance of the structure) ► SA is documented by a number of views.

Categorization of Structures 1. Module Structures 2. Component and Connector Structures 3. Allocation Structures

1 Module Structures ► Elements: modules (units of implementation). Modules are a code based way of considering the system ► Specifies:  Functional responsibility of modules  Other elements a module is allowed to use  Generalization and specialization relations ► Run-time operation of software is not a concern from this view

1.1 Decomposition Structure ► Elements: modules in a hierarchy ► Relations: is a sub-module of, shares secret with ► Function Example:  Contributes to system's modifiability, by ensuring that likely changes fall within the scope of at most a few small modules.

1.2 Uses Structure ► Elements: modules, procedures, or resources on the interfaces of modules ► Relations: uses: one unit uses another if the correctness of the first requires the presence of a correct version (not a stub of) of the second. ► Function Example:  Allows incremental development

1.3 Layered Structure ► Is a subclass of uses structure ► Elements: layers: a coherent set of related functionality ► Relations: uses (ideally layer n may only use the services of layer n – 1), provides abstraction to ► Function Example:  Layers are often designed as abstractions (virtual machines) that hide implementation specifics below from the layers above, engendering portability.

1.4 Class Structure ► Elements: classes ► Relations: inherits from, is an instance of ► Function Example:  Allows us to reason about reuse and the incremental addition of functionality

2 Component and Connector Structures ► Elements: run-time components (principal units of computation) and connectors (communication vehicle among components.) ► Specifies:  Major executing components and how they interact  Major shared data-stores  Which part of system is replicated  Flow of data through the system  What parts can run in parallel  How can system structure change as it executes

2.1 Process Structure ► Elements: processes or threads ► Relations: attachment (that allow communication, synchronization, and/or exclusion operations) ► Function Example:  Engineering a system's execution performance and availability.

2.2 Shared Data or Repository Structure ► Elements: data stores, data producers, and data consumers ► Relations: data-flow ► Function Example:  To ensure good performance and data integrity.

2.3 Client-Server Structure ► Elements: clients and servers ► Relations: protocols and message passing infrastructure. ► Function Example:  Separation of concerns (supporting modifiability)  Load balancing (supporting runtime performance)

3 Allocation Structures ► Show the relationship between the software and the elements in one or more external environment in which software is created and executed. ► Specifies:  The processor that executes each software element  The file that stores each software element during development  Assignments of software to development team

3.1 Deployment Structure ► Shows how software is assigned to hardware ► Elements: software (usually a process from a component and connector view), hardware entities, and communication pathways ► Relations: is-allocated-to and migrates-to (for dynamic allocations) ► Function Example:  Allows reasoning about performance, data integrity, availability, and security.

3.2 Implementation Structure ► Shows how software elements (usually modules) are mapped to the file structure(s) in the system's development, integration, or configuration management environments. ► Elements: any logical unit (e.g. module) ► Relations: implemented in ► Function Example:  management of development activities and build process

3.3 Work Assignment Structure ► Assigns responsibility for implementing and integrating the modules to the appropriate development teams ► Elements: any logical unit (e.g. module) ► Relations: is assigned to ► Function Example:  The architect will know the expertise required on each team  The means for factoring functional commonalities and assigning them to a single team, rather than having them implemented by everyone who needs them.

Notes ► Each structure is useful on its own right but not all structures are used in all projects. ► Structures are not independent and must be considered together  e.g. relationship of modules with components (many to many)  Some structures may be the same in some systems  Some structures may be combined (e.g. all component and connector structures may be combined in a single structure)

4 + 1 View Model of Architecture ► Logical: objects and classes (a module view) ► Process: (a component and connector view) ► Development: modules, libraries, subsystems, and units of development (an allocation view) ► Physical: mapping of elements to hardware and communication (an allocation view) ► Scenarios (Use-cases) view is not itself architectural.

Quality Attributes

Traditional Classification of Requirements  Functional  Non-Functional (Quality Attributes) A popular software myth: first we build a software that satisfies functional requirements, then we will add or inject non- functional requirements to it. This idea leads to loss of resources and finally poor quality. This idea leads to loss of resources and finally poor quality. So we should design for qualities from the very beginning (architecture level). So we should design for qualities from the very beginning (architecture level).

Functionality and Architecture ► Functionality and quality attrs are orthogonal [in theory]. But not all qualities are achievable to any level desired with any functionality. ► Functionality may be achieved in many ways (it is not so architectural.) ► Architecture is a means of achieving quality attributes by structuring functionality into elements.

Architecture and Qualities ► Achieving qualities must be considered throughout design (including SA), implementation, and deployment. ► Qualities have both architectural and non- architectural aspects. For example  Performance: amount of communication among components vs. algorithms

Classification of Quality Attributes 1. Qualities of the system: availability, modifiability, performance, security, testability, and usability. 2. Business qualities (such as time to market) that are affected by the architecture. 3. Architecture qualities, such as conceptual integrity.

System Quality Attributes ► Availability (related to Reliability) ► Modifiability (includes Protability and Reusability, Scalability) ► Performance ► Security ► Testability ► Usability (includes Self-Adaptability and User-Adaptability)

Business Qualities ► Time to market ► Cost and benefit ► Predicted lifetime of the system ► Targeted market ► Rollout schedule ► Integration with legacy systems

Qualities of the Architecture ► Conceptual Integrity  Conceptual integrity is the most important consideration in system design. It is better to have a system omit certain anomalous features and improvements, but to reflect one set of design ideas, than to have one that contains many good but independent and uncoordinated ideas. [Brooks 75] Brooks 75Brooks 75 ► Correctness and Completeness ► Buildability

Achieving Qualities

The Whole Story Tactics Selection Quality Requirements Business Requirements Tactics Implementation: Design Patterns & Architectural Patterns

Tactics ► A tactic is a design decision that influences a quality attribute. ► e.g. using redundancy to increase availability ► Tactics can be refined to other tactics to become more concrete; e.g. redundancy: redundancy of data + process

Availability Tactics

Modifiability Tactics

Patterns ► A pattern is a common abstract solution to a common abstract problem that  Can be tailored to a given situation  Has predefined characteristics ► Abstraction level of patterns  Business  Analysis  Architecture  Design  Implementation (Idioms)  Test Patterns (or guideline to testing patterns)

Relationship of Tactics to Patterns ► An architect usually chooses a pattern or a collection of patterns designed to realize one or more tactics. ► However, each pattern implements multiple tactics, whether desired or not.

Famous Pattern (Style) categories Data-centered  Repository  Blackboard (publisher-subscriber) ► Structural solution to integrability of data ► Scalability ► Modifiability Client Shared Data

Dataflow  Bach sequential  Pipes and filters ► Reusability ► Modifiability ► Not interactive ► Poor performance Famous Pattern (Style) categories

Call and Return  Main program and sub-routine ► Modifiability  Remote procedure call ► Performance tuning  Object-oriented or abstract data type ► Modifiability ► Reuse  Layered ► Modifiability ► Portability Famous Pattern (Style) categories

Example: ATM Software Develop 3 different architectures for ATM software and compare them regarding fulfillment of quality attributes. ATM = Automatic Teller Machine User operations:  Insert card and enter PIN  Withdraw money  Check Balance

Shared-Memory Style

Abstract Data Type Style

Layered Style

Analysis and Comparison Shared- Mem ADTLayered Performance321 Change account record format 133 New service: close account and withdraw the remained balance 123 Portability123 Availability and Reliability 222 Buildability and Integrability 123 Sum91315