Map Architecture Frameworks Design Patterns.

Slides:



Advertisements
Similar presentations
COM vs. CORBA.
Advertisements

Chapter 13 Review Questions
Welcome to. Who am I? A better way to code Design Patterns ???  What are design patterns?  How many are there?  How do I use them?  When do I use.
SERL - Software Engineering Research Labslide1 Frameworks and Hooks by Garry Froehlich Paul Sorenson SERL (Software Engineering Research Lab)
Lecturer: Sebastian Coope Ashton Building, Room G.18 COMP 201 web-page: Lecture.
Component-Level Design
DCS Architecture Bob Krzaczek. Key Design Requirement Distilled from the DCS Mission statement and the results of the Conceptual Design Review (June 1999):
Design Patterns CS is not simply about programming
Establishing the overall structure of a software system
Software Architecture Patterns (2). what is architecture? (recap) o an overall blueprint/model describing the structures and properties of a "system"
Chapter 22 Object-Oriented Design
PRESENTED BY SANGEETA MEHTA EECS810 UNIVERSITY OF KANSAS OCTOBER 2008 Design Patterns.
Course Instructor: Aisha Azeem
Architectural Design Establishing the overall structure of a software system Objectives To introduce architectural design and to discuss its importance.
Object Oriented Analysis and Design Using the UML
What is Software Architecture?
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 18 Slide 1 Software Reuse 2.
©Ian Sommerville 2006Software Engineering, 8th edition. Chapter 18 Slide 1 Software Reuse.
Software Engineering Muhammad Fahad Khan
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 18 Slide 1 Software Reuse.
The Design Discipline.
Chapter 13 Starting Design: Logical Architecture and UML Package Diagrams.
Chapter 7: Architecture Design Omar Meqdadi SE 273 Lecture 7 Department of Computer Science and Software Engineering University of Wisconsin-Platteville.
Software Design Refinement Using Design Patterns Instructor: Dr. Hany H. Ammar Dept. of Computer Science and Electrical Engineering, WVU.
©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.
1 CMPT 275 High Level Design Phase Architecture. Janice Regan, Objectives of Design  The design phase takes the results of the requirements analysis.
SWE 316: Software Design and Architecture – Dr. Khalid Aljasser Objectives Lecture 11 : Frameworks SWE 316: Software Design and Architecture  To understand.
An Introduction to Software Architecture
CSE 303 – Software Design and 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.
4/2/03I-1 © 2001 T. Horton CS 494 Object-Oriented Analysis & Design Software Architecture and Design Readings: Ambler, Chap. 7 (Sections to start.
©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 10Slide 1 Architectural Design l Establishing the overall structure of a software system.
SAMANVITHA RAMAYANAM 18 TH FEBRUARY 2010 CPE 691 LAYERED APPLICATION.
Design Patterns Part two. Structural Patterns Concerned with how classes and objects are composed to form larger structures Concerned with how classes.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 18 Slide 1 Software Reuse.
Creational Patterns CSE301 University of Sunderland Harry R Erwin, PhD.
©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 6 Architectural Design.
Object Oriented Analysis and Design using the UML CIS 520 Advanced Object-Oriented Design.
Software Design Patterns (1) Introduction. patterns do … & do not … Patterns do... provide common vocabulary provide “shorthand” for effectively communicating.
Chapter 8 Object Design Reuse and Patterns. Object Design Object design is the process of adding details to the requirements analysis and making implementation.
Systems Analysis and Design in a Changing World, Fourth Edition
9 Systems Analysis and Design in a Changing World, Fourth Edition.
Developing Component- Based Systems X LIU, School of Computing, Napier University TIP This chapter discusses the techniques to develop component-based.
Unit 2 Architectural Styles and Case Studies | Website for Students | VTU NOTES | QUESTION PAPERS | NEWS | RESULTS 1.
1 CMPT 275 High Level Design Phase Modularization.
Chapter 6 CASE Tools Software Engineering Chapter 6-- CASE TOOLS
CSC480 Software Engineering Lecture 10 September 25, 2002.
1 Software Design Lecture What’s Design It’s a representation of something that is to be built. i.e. design  implementation.
REST By: Vishwanath Vineet.
Banaras Hindu University. A Course on Software Reuse by Design Patterns and Frameworks.
Lecture VIII: Software Architecture
CS223: Software Engineering Lecture 13: Software Architecture.
CS223: Software Engineering
Banaras Hindu University. A Course on Software Reuse by Design Patterns and Frameworks.
Slide 1 Chapter 8 Architectural Design. Slide 2 Topics covered l System structuring l Control models l Modular decomposition l Domain-specific architectures.
CLASSIFICATION OF DESIGN PATTERNS Hladchuk Maksym.
System Architecture CS 560. Project Design The requirements describe the function of a system as seen by the client. The software team must design a system.
Why is Design so Difficult? Analysis: Focuses on the application domain Design: Focuses on the solution domain –The solution domain is changing very rapidly.
Chapter 5:Design Patterns
Software Design and Architecture
Part 3 Design What does design mean in different fields?
Chapter 5 Designing the Architecture Shari L. Pfleeger Joanne M. Atlee
Software Architecture
An Introduction to Software Architecture
MORE ON ARCHITECTURES The main reasons for using an architecture are maintainability and performance. We want to structure the software into reasonably.
CMPE 135 Object-Oriented Analysis and Design March 21 Class Meeting
Presentation transcript:

Map Architecture Frameworks Design Patterns

Issues Software systems are complex and are only getting more complex. They encompass a large amount of detail and decisions. There is a need to do such things as make decisions about software projects early, to divide work among teams, to ensure certain qualities in the software product.

Architecture When starting the plans for a new building, the type of faucets to install on the sinks on the 23rd floor is not a key decision. Abstraction of detail to focus on the major requirements. Foundation, size, major materials needed. Estimates of cost and risk.

Software Architecture You may have heard of systems as described as having a two-tiered architecture or a layered architecture. Similar notion: abstraction of detail. Some questions: What are the major components of a system and how do they interact? What are the major properties of the system?

Definition The structure or structures of the system, which comprise software components, the properties of those components, and the relationships among them. The intent is to provide a basis for decision making and risk reduction without having to consider all the detail. The view from several kilometers up.

Why is Architecture Important? A means of dealing with complexity. A basis for decision making. Helps to define the properties and limitations of a system. Aids long term maintenance. It defines the important components and connections (the load-bearing walls). Division of effort. Standard patterns and styles.

Components and Connectors Components: computational components. Clients, servers databases user interface Connectors: the means by which components interact. Procedure calls network protocols

Architectural Styles Systems are often described as having a client-server architecture, or a layered architecture, etc. These are particular styles of architecture. A style is defined by the components, connectors and constraints for a family of architectures. Each style has particular properties, and knowing the properties aids in decisions about which style to use. Hybrids are also common. Examples: pipe and filter, repository, layered.

Pipe and Filter A component (filter) reads a stream of data on its inputs and produces streams of data on its outputs. The streams are the pipes. Filters are independent and do not know the identity of upstream or downstream filters. Very flexible, good for batch operations. Example: Unix pipes.

Repository Two distinct components: a central data repository independent components that operation on the repository Components may run sequentially or be triggered by changes in the repository. Examples: compilers, database systems Repository

Compiler Architecture Translation Scanner, Parser Optimization Symbol Table, Parse Tree Code Generation

Object-Oriented Organization Components are objects and connectors are procedure calls. Objects are responsible for maintaining some amount of data or procedure. Objects need to know the identity of all objects they interact with. There is no limit placed on the amount of interconnectedness. Object Object Object

Layered Systems A hierarchy with each layer providing services to the layer above it and requesting services from the layer below it. Support increasing levels of abstraction, which simplifies each layer. Implementations of the same layer can be used interchangeably. May have performance problems.

Modified Three Tier Arch. User Interface Manager Client Workflow Manager Generic Services (Error Handling, Authentication) Server Business Rules Manager Persistent Object Manager Database Database

Where Does Architecture Fit? Architecture is related to design but is at a higher level of abstraction. When do you define the architecture? Since the architecture captures important decisions about the structure of the software system, it needs to be defined early on in the analysis and design phase (at the same time subsystems are defined). Subsystems are components and connectors. Defines the interfaces between components, and the types of connectors.

CelsiusTech Systems Naval product line (SS2000) for command, control and communication. Architecture defines one family of application components which support multiple ship classes, platforms and operating systems. Lower cost and greater reliability comes from fitting requirements into the context of the product line. 70% reuse for million plus line systems.

Reuse The example makes the point for not only reusing code components as reuse is typically thought of, but also reusing a highly configurable architecture and design of a system.

Domains Functionality that is used across a spectrum of applications (or subsystems) within a domain can be packaged into a single framework. Examples: MFC in user interfaces OSEFA in manufacturing process control Choices in operating systems SEAF in engineering worksheets Applications Abstraction of common operations. Framework

Object-Oriented Frameworks Framework: architecture + implementation + hooks. The framework serves as the basis for many applications. Developers fill in the hooks to produce a new app. Framework Hooks Framework New Applications

Concepts Applications customize and extend frameworks, much like a class inherits from it’s parent class. The architecture and implementation of the framework impose restrictions on the application. Parent Framework Subclass Application

Example: GUI Builders All window systems come with their own set of concepts, implementations, and the means by which those concepts interact. Buttons and sliders in windows, menus that generate events, etc. By buying into those concepts, user interfaces can be built quickly. But it’s not for everything: embedded systems (e.g. robotic soccer players) voice control

Users and Developers of Frameworks There are three main roles associated with frameworks: Framework designers, also called framework developers or framework builders, develop the original framework Framework users, also called framework clients or application developers, use the framework to develop applications. Framework maintainers refine and redevelop the framework to fit new requirements.

Frameworks and Libraries Applications call library functions. Frameworks call application extensions. “Don’t call us, we’ll call you.” Application Library Framework Application Framework Library

Frameworks vs. Applications are complete, executable apply to a single problem Frameworks are incomplete, although they may include sample applications apply to a range of applications within a domain

Ways to use a Framework As is: without any modifications. Complete: add to the framework by filling in parts left open. Customize: replacing part of the framework with custom code.

Strategies for Use Appoint a framework expert. One or two people become familiar with the framework and can then be consulted during the project. Design integration. It is important to fully integrate the design of the application with the design of the framework during the analysis and design phases of development.

Learning to Use the Framework Frameworks can be difficult to learn so a means of lowering the learning curve is needed. Tutorial sessions can be held to allow the framework builders to show users what can be done with the framework. Tools can be used to investigate the operation of the framework and to allow the use of the hooks without learning the whole framework. Documentation can describe the design and intended use of the framework, and provide examples of use.

CSF Overview Java framework that handles communication between client server or peer to peer programs over a TCP/IP network. Has some persistent storage capabilities. Subsystem. Communication Persistence

Framework Concerns Building a framework requires more resources than building a single application. When a framework evolves, all applications built from the framework are affected. A complex framework can take a significant amount of time to learn before it can be used effectively. It isn’t always easy to determine if the framework is compatible with the desired application.

Framework Benefits Reusable implementation and design that captures the expertise of developers within a domain. The framework should have a quality design which will be ‘inherited’ by applications. Decreased development time. Reduced maintenance costs from maintaining a common code base.

Design Patterns Design patterns can and have been used to design object-oriented frameworks. A design pattern is a solution to a common software design problem in a given context. problem: conditions that apply solution: template of classes and collaborations consequences: effect on the overall design The solutions are not new, but ‘tried and tested.’

Observer Pattern Problem: an object needs to monitor the state of another. Solution: make the object an observer. Consequences: simple interface, timely notification, no need for polling object must be able to receive updates at any time Inbox notify Subject Client update Observer

History of Design Patterns Design patterns were inspired by the work of a real architect, Alexander, and his book A Timeless Way of Building. Gamma adapted and applied it to software in his Ph.D. thesis. Gamma and three others, Johnson, Helm, Vlissides, wrote a book called Design Patterns which sparked the patterns movement.

Patterns and Frameworks Design patterns design level constructs small and easily implemented the user must understand the details of the pattern to use it used to help design frameworks Frameworks includes both design and implementation larger and more complex than design patterns the user does not need to understand the framework completely

Proxy Pattern Problem: How can data on a server be represented at a client without having to keep a copy of the entire data object at the client. Solution: create a proxy of the data on the client side. Consequences: the remote proxy hides the fact that the data isn’t local transferring data can occur on demand Data Data Proxy Client

Composite Pattern Problem: clients should be able to ignore the differences between compositions of objects and individual objects. Consequences: makes the client simple can be overly general Solution: Component Operation() Add(Component) Remove(Component) GetChild(int) Composite Leaf Operation() Operation() Add(Component) Remove(Component) GetChild(int)

Pattern Descriptions A full pattern description gives: motivation for and applicability of the pattern (the problem in context) structure, participants and collaborations of the participants consequences, both good and bad, of using the pattern an example showing the implementation of the pattern programs or projects in which it has been used related patterns

Architecture, Frameworks, and Design Patterns Architectures are the overall high-level structure (components and connectors) of a system. Frameworks are reusable designs and implementations of all or part of an architecture. Design patterns can be used to help build architectures and frameworks. Architecture Frameworks Design Patterns