CS291 Software Design Studio Dr. Douglas C. Schmidt Professor of EECS Vanderbilt University.

Slides:



Advertisements
Similar presentations
Object-Oriented Application Frameworks Much of the cost and effort stems from the continuous re- discovery and re-invention of core concepts and components.
Advertisements

A component- and message-based architectural style for GUI software
CS590L - Lecture 6 1 CS590L Distributed Component Architecture References: - E. Gamma, R. Helm, R. Johnson, J. Vlissides, Design Patterns: Elements of.
By Xiangzhe Li Thanh Nguyen.  Components and connectors are composed in a specific way in a given system’s architecture to accomplish that system’s objective.
SOEN 343 Software Design Section H Fall 2006 Dr Greg Butler
Applying Architectural Styles and Patterns. Outline  Defining Architectural Patterns and Style The activation model Styles and Quality Attributes  Common.
Dept. of Computer Engineering, Amirkabir University of Tech. 1 Design Patterns Dr. Noorhosseini Introduction.
Software Architecture Design Instructor: Dr. Jerry Gao.
R R R CSE870: Advanced Software Engineering: Frameworks (Cheng, Sp2003)1 Frameworks A Brief Introduction.
Unified Modeling (Part I) Overview of UML & Modeling
CS261 Data Structures Winter 2011 Professor Timothy Budd.
Using Architecture Frameworks
Creating Architectural Descriptions. Outline Standardizing architectural descriptions: The IEEE has published, “Recommended Practice for Architectural.
Feb. 23, 2004CS WPI1 CS 509 Design of Software Systems Lecture #5 Monday, Feb. 23, 2004.
Developed by Reneta Barneva, SUNY Fredonia Component Level Design.
Reuse Activities Selecting Design Patterns and Components
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.
1 An introduction to design patterns Based on material produced by John Vlissides and Douglas C. Schmidt.
COMP 6471 Software Design Methodologies Winter 2006 Dr Greg Butler
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 18 Slide 1 Software Reuse.
Design Patterns.
Patterns, Frameworks, & Middleware: Their Synergistic Relationships Douglas C. Schmidt Professor of EECS Vanderbilt University.
1/19 Component Design On-demand Learning Series Software Engineering of Web Application - Principles of Good Component Design Hunan University, Software.
Software Design Refinement Using Design Patterns Instructor: Dr. Hany H. Ammar Dept. of Computer Science and Electrical Engineering, WVU.
An Introduction to Software Architecture
Pattern Oriented Software Architecture for Networked Objects Based on the book By Douglas Schmidt Michael Stal Hans Roehnert Frank Buschmann.
1 5/18/2007ã 2007, Spencer Rugaber Software Architecture (Informal Definition) The organization of a system into component subsystems or modules Box and.
Towards Pattern Languages for Distributed Real-time & Embedded Systems Associate Professor Electrical & Computing Engineering Dept. The.
Chapter 1 Object-Oriented Analysis and Design. Disclaimer Slides come from a variety of sources: –Craig Larman-developed slides; author of this classic.
An Introduction to Design Patterns. Introduction Promote reuse. Use the experiences of software developers. A shared library/lingo used by developers.
SAMANVITHA RAMAYANAM 18 TH FEBRUARY 2010 CPE 691 LAYERED APPLICATION.
Unified Modeling Language, Version 2.0
101 User Interface Patterns and its applications Tonya Groover Department of Computer Science.
SOEN 6011 Software Engineering Processes Section SS Fall 2007 Dr Greg Butler
R R R 1 Frameworks III Practical Issues. R R R 2 How to use Application Frameworks Application developed with Framework has 3 parts: –framework –concrete.
Patterns and Reuse. Patterns Reuse of Analysis and Design.
Architectural Design lecture 10. Topics covered Architectural design decisions System organisation Control styles Reference architectures.
SOFTWARE DESIGN AND ARCHITECTURE LECTURE 05. Review Software design methods Design Paradigms Typical Design Trade-offs.
Chapter 8 Object Design Reuse and Patterns. Object Design Object design is the process of adding details to the requirements analysis and making implementation.
L6-S1 UML Overview 2003 SJSU -- CmpE Advanced Object-Oriented Analysis & Design Dr. M.E. Fayad, Professor Computer Engineering Department, Room #283I College.
07/09/04 Johan Muskens ( TU/e Computer Science, System Architecture and Networking.
ECE450 - Software Engineering II1 ECE450 – Software Engineering II Today: Introduction to Software Architecture.
University of Toronto at Scarborough © Kersti Wain-Bantin CSCC40 system architecture 1 after designing to meet functional requirements, design the system.
CSC480 Software Engineering Lecture 10 September 25, 2002.
Copyright © Active Frameworks Inc. - All Rights Reserved - V2.0Design Pattern Catalog - Page L3-1 PS95&96-MEF-L10-1 Dr. M.E. Fayad Creationa.
Csci 490 / Engr 596 Special Topics / Special Projects Software Design and Scala Programming Spring Semester 2010 Lecture Notes.
12 Chapter 12: Advanced Topics in Object-Oriented Design Systems Analysis and Design in a Changing World, 3 rd Edition.
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 Lecture 3 Major Architectural Models View (Cont’d) Architectural Models/Patterns Architecture Case Study Software Architecture & Design Pattern.
Software Reuse Course: # The Johns-Hopkins University Montgomery County Campus Fall 2000 Session 4 Lecture # 3 - September 28, 2004.
Lecture 21: Component-Based Software Engineering
Engr 691 Special Topics in Engineering Science Software Architecture Spring Semester 2004 Lecture Notes.
Object Design More Design Patterns Object Constraint Language Object Design Specifying Interfaces Review Exam 2 CEN 4010 Class 18 – 11/03.
1 Good Object-Oriented Design Dr. Radu Marinescu Lecture 4 Introduction to Design Patterns.
Architectural Mismatch: Why reuse is so hard? Garlan, Allen, Ockerbloom; 1994.
Basic Concepts of Software Architecture. What is Software Architecture? Definition: – A software system’s architecture is the set of principal design.
Benefits & Limitations of Patterns & Frameworks: Part 1 Douglas C. Schmidt Professor of Computer.
Design Engineering 1. Analysis  Design 2 Characteristics of good design 3 The design must implement all of the explicit requirements contained in the.
Design Patterns-1 7 Hours.
Review of last class Software Engineering Modeling Problem Solving
CSc 020: Programming Concepts and Methodology II
Introduction to Design Patterns
OO Methodology OO Architecture.
Chapter 5 Designing the Architecture Shari L. Pfleeger Joanne M. Atlee
Patterns.
An Introduction to Software Architecture
SAMANVITHA RAMAYANAM 18TH FEBRUARY 2010 CPE 691
Architectural Mismatch: Why reuse is so hard?
Presentation transcript:

CS291 Software Design Studio Dr. Douglas C. Schmidt Professor of EECS Vanderbilt University Nashville, Tennessee

2 CS 291 Course Philosophy Good design and programming is not learned by generalities, but by seeing how significant programs can be made clean, easy to read, easy to maintain and modify, human-engineered, efficient, and reliable, by the application of good design and programming practices. Careful study and imitation of good designs and programs significantly improves development skills. - Kernighan and Plauger

3 Required textbooks CS 291 Course Information CS 291 class web page ~schmidt/cs291/ My office hours in Featheringill Hall room 226 are MW 2:15-4:15 TA: Stoyan Paunov Stoyan’s office hours will be announced shortly Please send all questions to and I’ll send the answers to the class mailing list

4 CS 291 Course Contents Focus on topics important to developing & maintaining quality software: Reuse of patterns & software components Developing, documenting, testing, & applying reusable classes & object- oriented frameworks using C++ Patterns will be taught to provide good role models for software designs & to clearly articulate design tradeoffs Object-oriented techniques will be taught to show how to build software architectures that decouple inter- dependencies between components I assume you already know C++!!! The course will cover object- oriented techniques that address: Decentralized software architecture Architectural and design patterns Class interface definition Component reuse Module decomposition Hierarchical classification Extensible object-oriented application frameworks Several case studies will be used in class to illustrate the OO design & programming process

5 CS 291 Course Work There will be 5-6 programming assignments Can be done on Windows or Linux Must be done individually Programs will be graded as follows: 40% execution correctness 30% structure (e.g., modularization, information hiding, etc.) 10% insightful programming (e.g., developing reusable class components, etc.) 10% Consistent style (e.g., capitalization, indenting, etc.) 10% appropriate commenting style There will be a 5 point deduction (out of a possible 100 points) for each day that your program is late Programs turned in later than two calendar days after the due date will receive a 0 There will be weekly quizzes (starting today) There will be a comprehensive final exam The relative weighting of each portion of the course is : 40% Programming projects 35% Quizzes 25% Final Exam

6 Present solutions to common software problems arising within a certain context Overview of Patterns Capture recurring structures & dynamics among software participants to facilitate reuse of successful designs The Proxy Pattern 11 Proxy service Service service AbstractService service Client Help resolve key software design forces Flexibility Extensibility Dependability Predictability Scalability Efficiency Generally codify expert knowledge of design strategies, constraints & “best practices”

7 Overview of Pattern Languages Benefits of Pattern Languages Define a vocabulary for talking about software development problems Provide a process for the orderly resolution of these problems Help to generate & reuse software architectures Motivation Individual patterns & pattern catalogs are insufficient Software modeling methods & tools largely just illustrate how – not why – systems are designed

8 Taxonomy of Patterns & Idioms TypeDescriptionExamples IdiomsRestricted to a particular language, system, or tool Scoped locking Design patterns Capture the static & dynamic roles & relationships in solutions that occur repeatedly Active Object, Bridge, Proxy, Wrapper Façade, & Visitor Architectural patterns Express a fundamental structural organization for software systems that provide a set of predefined subsystems, specify their relationships, & include the rules and guidelines for organizing the relationships between them Half-Sync/Half- Async, Layers, Proactor, Publisher- Subscriber, & Reactor Optimization principle patterns Document rules for avoiding common design & implementation mistakes that degrade performance Optimize for common case, pass information between layers

9 Overview of Frameworks Framework Characteristics Application-specific functionality Frameworks exhibit “inversion of control” at runtime via callbacks Networking Database GUI Frameworks provide integrated domain-specific structures & functionality Mission Computing E-commerce Scientific Visualization Frameworks are “semi-complete” applications

10 Comparing Class Libraries, Frameworks, & Components Class Libraries Frameworks Macro-levelMeso-levelMicro-level Borrow caller’s thread Inversion of control Borrow caller’s thread Domain-specific or Domain-independent Domain- specific Domain- independent Stand-alone composition entities “Semi- complete” applications Stand-alone language entities Components Class Library Architecture ADTs Strings Locks IPC Math LOCAL INVOCATIONS APPLICATION- SPECIFIC FUNCTIONALITY EVENT LOOP GLUE CODE Files GUI A class is a unit of abstraction & implementation in an OO programming language Framework Architecture ADTs Locks Strings Files INVOKES A framework is an integrated set of classes that collaborate to produce a reusable architecture for a family of applications Reactor GUI DATABASE NETWORKING APPLICATION- SPECIFIC FUNCTIONALITY CALLBACKS Middleware Bus Component Architecture A component is an encapsulation unit with one or more interfaces that provide clients with access to its services Naming Locking Logging Events

11 Overview of the ACE Frameworks Features Open-source 6+ integrated frameworks 250,000+ lines of C person-years of effort Ported to Windows, UNIX, & real-time operating systems e.g., VxWorks, pSoS, LynxOS, Chorus, QNX Large user community Acceptor Connector Component Configurator Stream Reactor Proactor Task Application- specific functionality

12 Pattern Benefits Preserve crucial design information used by applications & middleware frameworks & components Facilitate reuse of proven software designs & architectures Guide design choices for application developers The POSA2 Pattern Language