Design and Architecture of Complex Software Systems

Slides:



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

Ch:8 Design Concepts S.W Design should have following quality attribute: Functionality Usability Reliability Performance Supportability (extensibility,
Instructor: Tasneem Darwish1 University of Palestine Faculty of Applied Engineering and Urban Planning Software Engineering Department Software Systems.
Architecture Representation
By Philippe Kruchten Rational Software
L4-1-S1 UML Overview © M.E. Fayad SJSU -- CmpE Software Architectures Dr. M.E. Fayad, Professor Computer Engineering Department, Room #283I.
Architecture-driven Modeling and Analysis By David Garlan and Bradley Schmerl Presented by Charita Feldman.
The Architecture Design Process
Unified Modeling (Part I) Overview of UML & Modeling
Creating Architectural Descriptions. Outline Standardizing architectural descriptions: The IEEE has published, “Recommended Practice for Architectural.
Objectives The key roles an architecture description plays in a software project. The key roles an architecture description plays in a software project.
Software Architecture in Practice
Course Instructor: Aisha Azeem
Architectural Design Establishing the overall structure of a software system Objectives To introduce architectural design and to discuss its importance.
Software Architecture premaster course 1.  Israa Mosatafa Islam  Neveen Adel Mohamed  Omnia Ibrahim Ahmed  Dr Hany Ammar 2.
Basic Concepts The Unified Modeling Language (UML) SYSC System Analysis and Design.
Architectural Design.
What is Software Architecture?
Software Architecture in Practice (3rd Ed) Introduction
Chapter 10 Architectural Design
Design and Architecture of Complex Software Systems Conf.dr.ing. Ioana Şora
An Introduction to Software Architecture
SOFTWARE DESIGN AND ARCHITECTURE LECTURE 07. Review Architectural Representation – Using UML – Using ADL.
Lecture 9: Chapter 9 Architectural Design
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.
Basic Concepts Software Architecture. What is Software Architecture? Definition: – A software architecture is the set of principal design decisions about.
Software Architecture and Design Dr. Aldo Dagnino ABB, Inc. US Corporate Research Center October 23 rd, 2003.
Software Architecture and Patterns
SOFTWARE DESIGN AND ARCHITECTURE LECTURE 05. Review Software design methods Design Paradigms Typical Design Trade-offs.
Unified Modeling Language* Keng Siau University of Nebraska-Lincoln *Adapted from “Software Architecture and the UML” by Grady Booch.
CPSC 372 John D. McGregor Module 3 Session 1 Architecture.
TAL7011 – Lecture 4 UML for Architecture Modeling.
CPSC 871 John D. McGregor Module 3 Session 1 Architecture.
Design and Architecture of Complex Software Systems 3 rd year, Software Engineering Conf.dr.ing. Ioana Şora
Architecture View Models A model is a complete, simplified description of a system from a particular perspective or viewpoint. There is no single view.
1 Software Design Lecture What’s Design It’s a representation of something that is to be built. i.e. design  implementation.
Overview of SAIP and LSSA. Software Architecture in Practice Provides a set of techniques, not a prescriptive method for architectural design. Based on.
Slide 1 Lecture 15 Enterprise Systems Development ( CSC447 ) COMSATS Islamabad Muhammad Usman, Assistant Professor.
Basic Concepts and Definitions
CS223: Software Engineering Lecture 13: Software Architecture.
Chapter 13 설계 개념 Architectural Design 임현승 강원대학교 Revised from the slides by Roger S. Pressman and Bruce R. Maxim for the book “Software Engineering: A Practitioner’s.
OOD OO Design. OOD-2 OO Development Requirements Use case analysis OO Analysis –Models from the domain and application OO Design –Mapping of model.
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.
Chapter 9 Architectural Design. Why Architecture? The architecture is not the operational software. Rather, it is a representation that enables a software.
Design Engineering 1. Analysis  Design 2 Characteristics of good design 3 The design must implement all of the explicit requirements contained in the.
Design Concepts ch-8
Design Patterns-1 7 Hours.
Object-Oriented Analysis and Design
IS301 – Software Engineering Dept of Computer Information Systems
Chapter 13 Architectural Design
OO Methodology OO Architecture.
Part 3 Design What does design mean in different fields?
Software Quality Engineering
CHAPTER 2 CREATING AN ARCHITECTURAL DESIGN.
What is an Architecture?
Chapter 5 Designing the Architecture Shari L. Pfleeger Joanne M. Atlee
Patterns.
Chapter 9 Architectural Design
Software Architecture
Design Model Like a Pyramid Component Level Design i n t e r f a c d s
Chapter 5 Architectural Design.
Analysis models and design models
An Introduction to Software Architecture
Chapter 9 Architectural Design.
What is an Architecture?
Chapter 5 Architectural Design.
Design Yaodong Bi.
Chapter 6: Architectural Design
Presentation transcript:

Design and Architecture of Complex Software Systems Conf.dr.ing. Ioana Şora http://staff.cs.upt.ro/~ioana/arhit-engl/ ioana.sora@cs.upt.ro

What is software architecture ? What is not software architecture ? Bass – fig.2.1 Example: the figure claims to describe the architecture of a system that simulates subaquatic acustics It uses a very popular informal notation - boxes-and-lines “boxology”

What is software architecture ? (cont) What can we not learn from this figure? What is the the type of the elements ? What are the responsibilities of each element? What is the significance of connections? What is the significance of alignment? Conclusion: not a software architecture representation (or at least not a useful representation of a software architecture) Architecture should not be described like this !

Software architecture - definition “The software architecture is the structure or structures of the system, which comprise software elements, the externally visible properties of those elements and the relationships among them” (Bass et al) Structure(s) – there’s more than one

Software architecture definition explained (1) “The software architecture is the structure or structures of the system, which comprise software elements, the externally visible properties of those elements and the relationships among them” (Bass et al) Software elements: (the term of architectural element is preferred instead of architectural component.) Architecture is an abstraction of a system Architecture is hiding certain details Externally visible properties: the provided services, performance characteristics, shared resources, etc.

Software architecture definition explained (2) “The software architecture is the structure or structures of the system, which comprise software elements, the externally visible properties of those elements and the relationships among them” (Bass et al) Structures of the system: Architecture is described by multiple different structures (views): The modules structure - the static structure of a system, results in the design phase The interactions structure – the dynamic structure that can be observed at runtime The allocation/deployment structures – describes how software elements are mapped onto non-software elements (hardware, staff)

Software architecture definition explained (3) “The software architecture is the structure or structures of the system, which comprise software elements, the externally visible properties of those elements and the relationships among them” (Bass et al) Inside each structural view, software elements and relationships among them may have different meanings: Elements can be: objects, classes, functions, processes, programs, libraries, databases, etc. Relationships between elements: part of, synchronization, function call, etc.

Example Describe the architecture of a system doing simple text processing: the lines of the original text are transformed in following way: odd lines are rewritten in upper case and even lines are rewritten in lower case. Two different engineers draw following “boxology” diagrams:

Example – Diagram 1

Example – Diagram 2

Example – The Architecture No one of the 2 diagrams represents the software architecture of the system and neither a rigorous described structural view The software architecture of the system is composed by both views

Multiple Architectural Structures = Architectural Viewpoints Software Architecture = a set of different views of different viewpoints Viewpoints examples: Module (Design/Functional Structure) Component and Connector (Runtime) Allocation (Deployment, Physical Structure, Team Structure) How is each viewpoint described ? Which is the utility of each viewpoint ? How does one chose the relevant viewpoints ?

The Module Structure: Elements & Relations Elements: module Unit of implementation for software, representing a coherent entity from the point of view of functionality Relations: Is-part-of: A is part of B Depends on (Uses or Allowed to use) Is-a: A is a B Elements properties: Name: this is usually the primary information, it helps guessing the role of the element Responsibilities: the role of the module should be described with more details than just its name Clements 50-51

The Module Structure: Concluding remarks The Module Viewpoint can be used for: Construction blueprint Analysis of certain system properties: Impact analysis: predicts the impact of changes in a part of the system based on dependency relationships Traceability to functional requirements: identify the modules where certain functionalities are implemented Communication: Understanding system functionality Relationships between system parts The Module Viewpoint cannot be used for: Behavior at runtime Runtime qualities: performance, reliability, etc. => their analysis can be supported by Component-and-Connector views

Component-and-Connector: Overview Deals with elements that appear at runtime, and not with implementation units Similar in UML: Module Viewpoint <-> Class Diagrams Component&Connector Viewpoint <-> Object (Collaboration) Diagrams Elements are called components and connectors Both categories of elements have well defined semantics Connectors cannot be reduced to a subcategory of components

Component-and-Connector Viewpoint: Components Elements: Components – Processing units or data storage units Appear at runtime, as: processes, objects, clients, servers, data bases, etc. Components have Ports: a port is the runtime interface of a component. It describes a certain way of interaction with its environment. Type of a component: defines its general functionality, number and type of its ports; for example, a “filter” component processes data streams received on input ports, and produces data streams on output ports.

Component-and-Connector Viewpoint: Connectors Elements: Connectors – mechanisms of interaction between components May be: function calls, messages, events, pipes Interactions abstracted as connectors can be also of a complex type, needing support of infrastructures and middleware (client-server connectors, publish-subscribe connectors, etc) Connectors have Roles: Roles correspond to the “interfaces” of connectors; for example, a pipe connector has 2 roles, “writer” and “reader”. Type of a connector: defines the type of interactions, number and type of its roles, and properties

Component-and-Connector Viewpoint: Relations Relationships – attachment relationships define the topology of the system specify which ports of a component are attached to which roles of a connector

Example: C&C viewpoint Clements 102

The C&C Viewpoint Which are the elements that appear at runtime and what are their interactions ? Which is the dynamics of the elements ? Which are the data sources ? Are there replicated parts ? Which are the data flows ? What are the communication protocols ?

Module viewpoint vs C&C viewpoint The same module can be executed in several components The same component may execute code from several modules [Clements] – fig.3.5

Allocation Structures Deployment Structure: Describes how software elements are mapped on hardware elements Elements: Software components, defined in C&C Hardware elements: processors, storage devices, network nodes, etc. Relationships: Allocated-to Migrates-to, copy-migrates-to, execution-migrates-to Used for: analysis: performance, availability, security; cost estimation. Work assignment Structure: Software: modules Environment elements: developers, persons, teams, subcontractors, etc Relationships: Allocated-to Used for: project management

Describing software architectures IEEE/IEC/ISO 42010:2011 “Systems and software engineering – Architecture description” Revises the earlier IEEE Std 1471:2000 “Recommended Practice for Architectural Description of Software-intensive Systems” It specifies the requirements for architectural descriptions It does not specify any description language ADL’s (Architecture Description Languages): Wright, ACME, SysML, Rapide, etc UML

The key principles of the Architecture Description Standard Architecture descriptions should demonstrate how an architecture meets the needs of the system’s diverse stakeholders; The architecture concerns of the diverse stakeholders can be addressed by an architecture description constructed with multiple architecture views of the system, where each view covers a subset of those concerns; The rules for well-formedness, completeness and analyzability of each architecture view should be explicit via an architecture viewpoint;

Why is software architecture important ? Reasons: Communication among stakeholders Early design decision Transferable abstraction of a system

Communication among stakeholders Architecture is the vehicle for stakeholder communication Each stakeholder (customer, user, project manager, tester, etc) is concerned with different characteristics that are affected by the architecture The architect must find strategies to achieve all these goals (sometimes contradictory) Architecture provides a common language in which the different concerns can be expressed, negotiated and resolved Architecture is abstract enough to capture a complex system Architecture is concrete enough to be analyzed for the systems desired characteristics and properties

Early design decisions Architecture manifests the earliest set of design decisions Defines constraints on implementation Dictates organizational structure Enables or inhibits certain quality attributes of the system (modifiability, performance, safety, security, etc) Permits prediction of system qualities by analyzing the architecture Enables cost and schedule estimates

Transferable, reusable model Reuse of architecture = Software product lines Architecture can be realized using externally developed components

Software architecture Represents: Communication between stakeholders Early design decisions Transferable, reusable model Terminology, vocabulary ? Starting points ? Established terminology, good practices, standards, success stories …. PATTERNS

Reference Architecture Architectural Pattern Software Architecture Basic Concepts Reference Model Reference Architecture Design Pattern Architectural Pattern Software Architecture Architectural Style Framework

Architectural Style “An architectural style defines a family of software systems in terms of their structural organization. An architectural style expresses components and the relationships between them, with the constraints of their application, and the associated composition and design rules for their construction.” [POSA1]/pag.394 Example: the Pipes-and-filters architectural style Components: all of the same type, Filter. Components process data flows, have 1 or more input ports and 1 or more output ports Connectors: Pipe Binary unidirectional connector, transmits dataflows from an output port to an input port of another filter Constraints and rules: A filter must not know the identity of the filters it sends or receives data

Architectural Pattern “An architectural pattern expresses a fundamental structural organization schema for software systems. It provides a set of predefined subsystems, specifies their responsibilities, and includes rules and guidelines for organizing the relationships between them.” [POSA1]/pag.12 Examples: Model-View-Controller Broker

Design pattern “A design pattern provides a scheme for refining the subsystems of a software system, or the relationships between them. It describes a commonly-recurring structure of communicating components that solves a general design problem within a particular context. [Go4]” [POSA1]/pag.13 Smaller in scale than architectural patterns, independent of a particular programming language but dependent on a programming paradigm The application of a design pattern has no effect on the fundamental structure of a software system, but may have a strong influence on the architecture of a subsystem.

Reference Models “A reference model is a division of functionality together with data flow between the pieces. It is a standard decomposition of a known problem into parts that cooperatively solve the problem.” [Bass]/&2.3 Results from experience in mature application domains Examples: Compilers: lexical analysis, syntactic analysis, semantic analysis, optimization, code generation Networks: the OSI reference model

Reference Architectures “A reference architecture is a reference model mapped onto software elements (that cooperatively implement the functionality defined in the reference model) and the data flows between them.” [Bass]/&2.3 A reference model defines a way of decomposing functionalities A reference architecture defines a way of mapping a functionalities on subsystems/architectural components Mapping can be 1-1 but not necessarily Example: CORBA (Common Object Request Broker Architecture)

Frameworks “A framework is a partially complete software system that is intended to be instantiated. It defines the architecture for a family of systems and provides the basic building blocks to create them.” [POSA1]/pag.396 Defines places where insertions/adaptations can be done: hot spots Difference framework ↔ reference architecture: a framework is given as code, reference architecture not Difference framework ↔ library: when writing an application: With a library: write the main body and uses elements (functions, classes, etc) from the library With a framework: the framework provides the main body, the application developer provides only concrete elements for some of the hot spots. “inversion of control”

Reference Architecture Architectural Pattern Software Architecture Concepts Reference Model Reference Architecture Design Pattern Architectural Pattern Software Architecture Architectural Style Framework

Course outline Basic concepts Fundamental architectural styles What is software architecture ? Fundamental architectural styles Pipes and filters Layers Blackboard Event-driven Architectural patterns for : Adaptive systems The Reflection Pattern Distributed systems The Broker Pattern Data access patterns Pattern for Object-Relational Mappings Pattern for decoupling data access

(Architectural styles Design problem Our focus in this course Architectural design principles (Architectural styles and patterns) Tehnologies, Frameworks APIs Object Request Broker Pattern RMI, .NET Remoting Metalayer Architecture Reflection (in Java,.NET) Data Access Patterns Object-Relational Mappers

Resources

Course Webpage http://staff.cs.upt.ro/~ioana/arhit-engl/ Lectures slides and schedule Lab assignments Bibliographic pointers and additional resources

Lab Applying the learned concepts in practice is essential 4 projects - design and implementation Final grade = 50% written exam + 50% projects Optional lab assignments can bring bonus points for exam !