CSC450 Software Engineering

Slides:



Advertisements
Similar presentations
Mastering Object-Oriented Analysis and Design with UML Module 4: Analysis and Design Overview.
Advertisements

Lecturer: Sebastian Coope Ashton Building, Room G.18 COMP 201 web-page: Lecture.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 11 Slide 1 Architectural Design.
SWE Introduction to Software Engineering
Modified from Sommerville’s originalsSoftware Engineering, 7th edition. Chapter 11 Slide 1 Architectural Design.
Establishing the overall structure of a software system
SWE Introduction to Software Engineering
Architectural Design, Distributed Systems Architectures
Course Instructor: Aisha Azeem
Architectural Design Establishing the overall structure of a software system Objectives To introduce architectural design and to discuss its importance.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 11 Slide 1 Architectural Design.
Chapter 6: Architectural Design
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 11 Slide 1 Architectural Design.
Software Engineering Architectural Design
Chapter 7: Architecture Design Omar Meqdadi SE 273 Lecture 7 Department of Computer Science and Software Engineering University of Wisconsin-Platteville.
©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 10Slide 1 Architectural Design l Establishing the overall structure of a software system.
CS451 Lecture 13: Architectural Design Chapter 10
Chap 8. Architectural Design
Architectural Design. Recap Introduction to design Design models Characteristics of good design Design Concepts.
©Ian Sommerville 1995 Software Engineering, 5th edition. Chapter 13Slide 1 Architectural Design u Establishing the overall structure of a software system.
©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 10Slide 1 Chapter 10 Architectural Design.
Programming Or Software Engineering?
Architectural Design, Distributed Systems Architectures
An Introduction to Software Architecture
Architectural Design portions ©Ian Sommerville 1995 Establishing the overall structure of a software system.
SOFTWARE DESIGN AND ARCHITECTURE LECTURE 07. Review Architectural Representation – Using UML – Using ADL.
Architectural Design To explain the advantages and disadvantages of different distributed systems architectures To discuss client-server and distributed.
©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 10Slide 1 Architectural Design l Establishing the overall structure of a software system.
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 10/24/2015ICS 413 – Software Engineering1.
Architectural Design Yonsei University 2 nd Semester, 2014 Sanghyun Park.
Chapter 6 Architectural Design.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 11 Slide 1 Architectural Design.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 11 Slide 1 Architectural Design.
CS.436 Software Engineering By Ajarn..Sutapart Sappajak,METC,MSIT Chapter 8 Architectural Design Slide 1 1 Chapter 8 Architectural Design.
 Repository Model  Client-Server Model  Layered Model  Modular decomposition styles  Object Models  Function Oriented Pipelining  Control Styles.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 11 Slide 1 Architectural Design.
Chapter 6 – Architectural Design Lecture 1 1Chapter 6 Architectural design.
©Ian Sommerville 2006Software Engineering, 8th edition. Chapter 11 Slide 1 Architectural Design.
Chapter 7: Architectural Design Chapter 11 in textbook 1.
CSC480 Software Engineering Lecture 10 September 25, 2002.
©Ian Sommerville, Robin Abraham 2004CS 361, Summer 2004 Slide 1 Architectural 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.
Devon M. Simmonds Computer Science Department, CSC592 1 CSC550 Software Engineering Devon M. Simmonds Computer Science Department University of North Carolina,
CS223: Software Engineering Lecture 14: Architectural Patterns.
1 IBM Software Group ® Mastering Object-Oriented Analysis and Design with UML 2.0 Module 4: Analysis and Design Overview.
Slide 1 Chapter 8 Architectural Design. Slide 2 Topics covered l System structuring l Control models l Modular decomposition l Domain-specific architectures.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 11 Slide 1 Architectural Design.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 11 Slide 1 Architectural Design.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 11 Slide 1 Architectural Design.
BZUPAGES.COMSoftware Engineering, 7th edition. Chapter 11 Slide 1 Architectural Design.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 11 Slide 1 Architectural Design.
©Ian Sommerville 2006Software Engineering, 8th edition. Chapter 11 Slide 1 Architectural Design.
©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 10Slide 1 Chapter 5:Architectural Design l Establishing the overall structure of a software.
1 Advanced Software Architecture Muhammad Bilal Bashir PhD Scholar (Computer Science) Mohammad Ali Jinnah University.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 11 Slide 1 Architectural Design.
IS301 – Software Engineering Dept of Computer Information Systems
Software Engineering Architectural Design Chapter 6 Dr.Doaa Sami
OO Methodology OO Architecture.
Part 3 Design What does design mean in different fields?
Software Engineering Architectural Design Chapter 6 Dr.Doaa Samy
Chapter 5 Designing the Architecture Shari L. Pfleeger Joanne M. Atlee
Software Architecture
Architectural Design.
Chapter 6 – Architectural Design
Chapter 5 Architectural Design.
An Introduction to Software Architecture
Chapter 6 – Architectural Design
Presentation transcript:

CSC450 Software Engineering Devon M. Simmonds University of North Carolina, Wilmington Architectural Design Some slides adapted from various sources

Requirements Analysis Outline Requirements Analysis Software Design Implementation Testing Deployment Evolution Systems Engineering This lecture will provide: An introduction to software architecture. A definition of software architecture Architectural styles Architecture as a process Architectural views Benefits of software architecture summary Software Design – bridging the gap between requirements & Implementation

Requirements Analysis Outline Requirements Analysis Software Design Implementation Testing Deployment Evolution Systems Engineering In this session we address: An introduction to software architecture. A definition of software architecture Architectural styles Architecture as a process Architectural views Benefits of software architecture Summary Software Design – bridging the gap between requirements & Implementation

What is Software Design? Software design expresses a solution to a problem in programming language independent terms. This permits a design to be implemented in any programming language.

Moving from problem to Architecture Requirements Spec Design Spec System attributes, anticipated changes, design constraints Design goals Use Cases Contracts Architecture subsystem structure subsystem interfaces etc. Class Diagrams Other models

The Place of Architecture in Design Phases Architectural Design Identify subsystems and the services they provide Describe interactions across subsystems Subsystem Design: Define classes Describe how objects interact to accomplish subsystem services Sequence diagrams, state machines, etc. User Interface Design Data structures/Database Design Algorithm Design Pre and post conditions Test Case Design

UML Diagram Types for Architectural Design Package diagrams Component diagrams Deployment diagrams

Architecture defined Architecture n (1555) 1: the art or science of building; specifically: the art or practice of designing and building structures and esp. habitable ones. 2 a: formation or construction resulting from or as if from a conscious act <the architecture of the garden> b: a unifying or coherent form or structure <the novel lacks architecture> 4: a method or style of building. Merriam Webster’s Collegiate Dictionary

Architecting a dog house Can be built by one person Requires Minimal modeling Simple process Simple tools

Architecting a house Built most efficiently and timely by a team Requires Modeling Well-defined process Power tools

Architecting a high rise The more complex the problem the greater the need for: Teams of developers Modeling Well-defined processes Significant tool support

Computer Architecture is not Software Architecture The assembly of logical elements into a computing device. Specifying the relations between parts of a computer system.

What is Software Architecture? (a model that) describes the overall structure of the software subsystems, the relationships among subsystems and the behavior of subsystems (i.e. how subsystems interact). M B C A P K

What are the goals of Software Architecture? The goal of architectural design is to meet present and future demands on the architecture. M B C A P K 14

Software Architecture in UML In UML, the architecture of a software may be described using: Package diagrams Component diagrams Deployment diagrama 15

Requirements Analysis Outline Requirements Analysis Software Design Implementation Testing Deployment Evolution Systems Engineering In this session we address: An introduction to software architecture. A definition of software architecture Architectural styles Architecture as a process Architectural views Benefits of software architecture Summary Software Design – bridging the gap between requirements & Implementation

How do we go about creating an architecture for a system? Exploring architectural Styles

Architectural styles Architectural Styles An architecture style is a specification of how subsystems in a software may be organized. Specification of architectural components Specification of architectural connectors Specification of constraints on how components can be combined Specification of component interaction (data exchange) Specification of component configuration to form a system Specification of one or more semantic models that specify how a system’s overall properties can be determined from the properties of its parts Each architectural style defines a class of architectures. Component N Component N-1 Component 2 Component 1 18

Components & Connectors What is an architectural component/subsystem? A modular unit with well defined provided and required interfaces that is replaceable. What is an architectural connector? A mechanism that mediates communication, coordination or cooperation among components. e.g. remote procedure calls, message passing Component N Component N-1 Component 2 Component 1

Popular architecture styles Layered Client-server Peer-to-peer Model-view controller Pipe and Filter Shared Repository

A Layered Architectural Style Layered Architectures, cont. A Layered Architectural Style Figure 2-1. Tanenbaum et al. 21

Rationale for Layered Architectures Separate presentation and application logic, and other areas of concern. UI Layer “Domain” or “Application Logic” Layer Services Layer Persistence Subsystem Logging . . . 22

Classical Three-Tiered Architecture Layered Architectures, cont. Classical Three-Tiered Architecture Figure 2-4 (Tanenbaum). The simplified organization of an Internet search engine into three different layers. 23

Benefits of layered Architectures Layered Architectures, cont. Benefits of layered Architectures Clear separation of parts/roles/subsystems. Easy to plug and play components. Relatively simple to implement as either a concurrent or sequential system. 24

Popular architecture styles Layered Shared Repository Client-Server Peer-to-peer Model-view controller Pipe and Filter 25

Shared repository architectures K A T Multiple sub-systems share a common database.

Repository model characteristics Advantages Efficient way to share large amounts of data; Sub-systems need not be concerned with how data is produced Centralised management e.g. backup, security, etc. Sharing model is published as the repository schema. Disadvantages Sub-systems must agree on a repository data model. Inevitably a compromise; Data evolution is difficult and expensive; No scope for specific management policies; Difficult to distribute efficiently.

Popular architecture styles Layered Shared Repository Client-Server Peer-to-peer Model-view controller Pipe and Filter 28

Client-server (“two-tier”) architectures A network architecture in which each computer or process on the network is either a client or a server. 29

The client/Server Model Architectural Styles The client/Server Model Fig. 2.2 Coulouris et al.: Clients invoke individual servers

A service provided by multiple servers Coulouris etal.Distributed Systems: Concepts and Design Edn. 3 © Addison-Wesley Publishers 2000 Client/Server Model, cont. A service provided by multiple servers Fig. 2.3 Coulouris et al.

Web proxy servers and caches Coulouris etal.Distributed Systems: Concepts and Design Edn. 3 © Addison-Wesley Publishers 2000 Client/Server Model, cont. Web proxy servers and caches Fig. 2.4 Coulouris et al.: Web proxy servers

Peer-to-peer (P2P) architectures Each network node has equivalent responsibilities – is both a client and a server. B A C 33

Client-server characteristics Coulouris etal.Distributed Systems: Concepts and Design Edn. 3 © Addison-Wesley Publishers 2000 Client/Server Model, cont. Client-server characteristics Advantages Distribution of data is straightforward; Makes effective use of networked systems. May require cheaper hardware; Easy to add new servers or upgrade existing servers. Disadvantages No shared data model so sub-systems use different data organisation. Data interchange may be inefficient; Redundant management in each server; No central register of names and services - it may be hard to find out what servers and services are available. 34

Popular architecture styles Layered Shared Repository Client-Server Peer-to-peer Model-view controller Pipe and Filter 35

The Model-view-controller architecture Data Functionality Model change Controller notifies query change View User Interface Separates the application object (model) from The way it is presented to the user (view), from The way in which the user controls it (controller).

Popular architecture styles Layered Shared Repository Client-Server Peer-to-peer Model-view controller Pipe and Filter 37

Pipe and Filter architectures K T Input to one subsystem is processed and the output is passed to another subsystem for processing. E.g. program compilation using the multi-phase translator architecture Compilation of a program is divided into Lexical analysis lex Syntax analysis Semantic analysis optimization Code generation yacc – a tool for generating compilers

Pipe and Filter Characteristics Advantages Supports transformation reuse. Intuitive organization for stakeholder communication. Easy to add new transformations. Relatively simple to implement as either a concurrent or sequential system. Disadvantages Requires a common format for data transfer along the pipeline and difficult to support event-based interaction.

Architecture styles Summary An architecture style provides a standardized vocabulary for communication An architecture style defines a family of systems sharing similar characteristics. An awareness of these styles can simplify the problem of defining system architectures. However, large systems are heterogeneous and may use a combination of architectural styles.

Architectural Design Process Identify potential subsystems Select architectural styles Arrange subsystems to fit architectural styles Identify subsystem dependencies

Lets do an example!

Architectural Design Exercise Draw layered, client-server, shared repository and pipe-and-filter architectures using this description The BirdCage Corporation needs software to aid the management of its business. The corporation builds its business around domestic birds. BirdCage arranges its business around different services with each service being managed by a different company making BirdCage a group of companies. Companies are divided into departments. Services include veterinary services, safekeeping of birds, bird calisthenics and a bird competitions service. In order to streamline its business, BirdCage classifies the veterinary and safekeeping services as medical services. The other two services are regarded as entertainment services. In the future the company hopes to add a number of “Nutritional” services to address the production and sales of food for birds. The corporation classifies birds as either exotic or non-exotic. BirdCage does not provide entertainment services for exotic birds. Owls and crows are non-exotic birds, while macaws, cockatoos and green quakers are exotic. BirdCage seeks to maintain a minimum stock of at least 10 of each type of exotic bird.

Requirements Analysis Outline Requirements Analysis Software Design Implementation Testing Deployment Evolution Systems Engineering In this session we address: An introduction to software architecture. A definition of software architecture Architectural styles Architecture as a process Architectural views Benefits of software architecture Summary Software Design – bridging the gap between requirements & Implementation

Architecture as a process Mary Shaw, CMU Grady Booch, Philippe Kruchten, Rich Reitman Kurt Bittner, Rational Architecture as a process Software architecture encompasses the set of significant decisions about the organization of a software system selection of the structural elements and their interfaces by which a system is composed behavior as specified in collaborations among those elements composition of these structural and behavioral elements into larger subsystem architectural style that guides this organization The output of this design process is a description of the software architecture.

Requirements Analysis Outline Requirements Analysis Software Design Implementation Testing Deployment Evolution Systems Engineering In this session we address: An introduction to software architecture. A definition of software architecture Architectural styles Architecture as a process Architectural views Benefits of software architecture Summary Software Design – bridging the gap between requirements & Implementation

Many stakeholders, many views Architecture is many things to many different interested parties customer project manager architect developer maintainer etc. Multiple stakeholders  many views

Architectural view An architectural view is a simplified description (an abstraction) of a system from a particular perspective or vantage point, covering particular concerns, and omitting entities that are not relevant to this perspective.

Models, Views, and Diagrams A model is a complete description of a system from a particular perspective Models, Views, and Diagrams Use Case Diagrams State Diagrams Class State Diagrams Object Use Case Diagrams Sequence Scenario Diagrams Collaboration State Diagrams Component Models Scenario Diagrams Statechart Component Diagrams Deployment Activity Diagrams

Diagrams A diagram is a view into a model UML diagrams Presented from the aspect of a particular stakeholder Provides a partial representation of the system Is semantically consistent with other views UML diagrams Static views: use case, class, object, component, deployment Dynamic views: sequence, statechart, activity

The 4 + 1 View Model – Philippe Kruchten(95) Logical view Development view Programmers . Software management End-user Functionality Use case view Process view System integrators: Performance, Scalability, Throughput Physical view System topology, Delivery, installation Contrast logical & development view Development: directories, names Logical: source code analysis. Conceptual Physical

Example Logical Architecture System Static Structural Diagram Customer Care Order Processing Domain Accounts Receivables invoice query order customer update order update bill order

Deployment Diagram Captures the topology of a system’s hardware

Requirements Analysis Outline Requirements Analysis Software Design Implementation Testing Deployment Evolution Systems Engineering In this session we address: An introduction to software architecture. A definition of software architecture Architectural styles Architecture as a process Architectural views Benefits of software architecture summary Software Design – bridging the gap between requirements & Implementation

Advantages of explicit architecture Stakeholder communication Architecture may be used as a focus of discussion by system stakeholders. System analysis Means that analysis of whether the system can meet its non-functional requirements is possible. Large-scale reuse The architecture may be reusable across a range of systems.

Architecting system characteristics Performance Localize critical operations and minimize communications. Use large rather than fine-grain components. Security Use a layered architecture with critical assets in the inner layers. Safety Localize safety-critical features in a small number of sub-systems. Availability Include redundant components and mechanisms for fault tolerance. Maintainability Use fine-grain, replaceable components.

Requirements Analysis Outline Requirements Analysis Software Design Implementation Testing Deployment Evolution Systems Engineering In this session we address: An introduction to software architecture. A definition of software architecture Architectural styles Architecture as a process Architectural views Benefits of software architecture Summary Software Design – bridging the gap between requirements & Implementation

Architectural design decisions Summary Architectural design decisions Is there a generic application architecture that can be used? How will the system be distributed? What architectural styles are appropriate? What approach will be used to structure the system? How will the system be decomposed into modules? What control strategy should be used? How will the architectural design be evaluated? How should the architecture be documented?

Summary Key points The software architecture is the fundamental framework for structuring the system. Architectural design decisions include decisions on the application architecture, the distribution and the architectural styles to be used. Different architectural models such as a structural model, a control model and a decomposition model may be developed. System organisational models include repository models, client-server models and pipe-and-filter models.

The End Qu es ti ons? ______________________ Devon M. Simmonds Computer Science Department University of North Carolina Wilmington _____________________________________________________________

Architectural Design Exercise Draw layered, client-server, shared repository and pipe-and-filter architectures using this description The Exotic Sunshine Corporation needs software to aid the management of its business. The corporation is made up of several different companies each having at least three divisions. The corporation classifies divisions as either production, sales or marketing. The sales and marketing divisions are given jurisdiction for a specific geographic region. This region must include the company that owns the division. Regions have managers, however, an employee may only manage two or more regions if he/she has in excess of ten years experience with the company, or ten years in a comparable position. Managers with more than ten years service and managers in the head office are allowed thirty days of paid vacation per year. In addition, they may have up to three company vehicles assigned and one of the vehicles may be a luxury vehicle. Other managers are not allowed luxury vehicles and cannot be allocated in excess of one vehicle. The corporation manufactures and sells boats, electronic equipment, fruit juices and paper.