Software Design 14.1 CPS 108 l Object oriented design and programming of medium-sized projects in groups using modern tools and practices in meaningful.

Slides:



Advertisements
Similar presentations
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.
Advertisements

Dept. of Computer Engineering, Amirkabir University of Tech. 1 Design Patterns Dr. Noorhosseini Introduction.
Design Patterns. What are design patterns? A general reusable solution to a commonly occurring problem. A description or template for how to solve a problem.
Copyright © The McGraw-Hill Companies, Inc. Permission required for reproduction or display. Design Patterns.
Design Patterns Module Name - Object Oriented Modeling By Archana Munnangi S R Kumar Utkarsh Batwal ( ) ( ) ( )
Object-oriented design CS 345 September 20,2002. Unavoidable Complexity Many software systems are very complex: –Many developers –Ongoing lifespan –Large.
Design Patterns academy.zariba.com 1. Lecture Content 1.What are Design Patterns? 2.Creational 3.Structural 4.Behavioral 5.Architectural 6.Design Patterns.
1 An introduction to design patterns Based on material produced by John Vlissides and Douglas C. Schmidt.
INFLUENCE OF UNDERGRADUATE COURSE SOFTWARE DESIGN AND ARCHITECTURE TO POSTGRADUATE COURSE ARCHITECTURE, DESIGN AND PATTERNS Magdalena Kostoska Nevena Ackovska.
Introducing Computer Science in the Classroom
CPS 108 : Spring What is Computer Science? What is it that distinguishes it from the separate subjects with which it is related? What is the linking.
Compsci 101, Spring COMPSCI 101, Spring 2012 Introduction to Computer Science Owen Astrachan
CS1101: Programming Methodology
CPS What is Computer Science? What is it that distinguishes it from the separate subjects with which it is related? What is the linking thread.
Compsci 06/101, Fall COMPSCI 06/101, Fall 2010 Owen Astrachan Robert Duvall
Sadegh Aliakbary Sharif University of Technology Fall 2012.
CompSci Topics since midterm l Java  Methods  Sound  Graphics l Software design  Recursion  Arrays  Copyright issues l Computer systems.
ISP666 MVC & Design Patterns. Outline Review Event Programming Model Model-View-Controller Revisit Simple Calculator Break Design Patterns Exercise.
January 12, Introduction to Design Patterns Tim Burke References: –Gamma, Erich, et. al. (AKA, The Gang of Four). Design Patterns: Elements of Reusable.
Patterns in programming 1. What are patterns? “A design pattern is a general, reusable solution to a commonly occurring problem in software. A design.
SOFTWARE DESIGN AND ARCHITECTURE LECTURE 27. Review UML dynamic view – State Diagrams.
BLU-ICE and the Distributed Control System Constraints for Software Development Strategies Timothy M. McPhillips Stanford Synchrotron Radiation Laboratory.
Software Design 4.1 Tell, Don't Ask l Tell objects what you want them to do, do not ask questions about state, make a decision, then tell them what to.
Course Overview & Topics CSc 335: Object-Oriented Programming and Design © Rick Mercer 1.
CPS Topics since last test l Recursion l Software design  Object-oriented  Copyright issues l Computer systems  Hardware  Architecture  Operating.
Objected Oriented Programming & Design JAVA Shishir Gupta (704) (704)
Guide to Programming with Python Chapter One Getting Started: The Game Over Program.
DAAD project “Joint Course on OOP using Java” On Object Oriented modeling in Java (Why & How) Ana Madevska Bogdanova Institute of informatics Faculty of.
1-1 C Sc 335 Course Overview Object-Oriented Programming and Design Rick Mercer.
CompSci CompSci 6 Programming Design and Analysis I Dietolf (Dee) Ramm
Software Design 8.1 Compsci 108 l Object oriented design and programming of medium-sized projects in groups using modern tools and practices in meaningful.
Software Design 1.1 CPS 108, Spring 2004 l Software Design and Implementation  Object oriented programming and design Language independent concepts including.
Software Design 18.1 CPS 108 l Object oriented design and programming of medium-sized projects in groups using modern tools and practices in meaningful.
CPS 108/ola.1 From XP to javax.swing.* l What parts of embracing change can we embrace in 108?  Evolutionary design, small releases, iterative enhancement.
CPS Topics since last test l Recursion l Sound l Graphics l Software design  Object-oriented  Copyright issues l Computer systems  Hardware 
Appreciating OO Design Principles & Patterns Dale Skrien Dept of Computer Science Colby College Waterville, ME 04901
Software Design Patterns Curtsy: Fahad Hassan (TxLabs)
CPS What is Computer Science? What is it that distinguishes it from the separate subjects with which it is related? What is the linking thread.
Design Reuse Earlier we have covered the re-usable Architectural Styles as design patterns for High-Level Design. At mid-level and low-level, design patterns.
Design Patterns. 1 Paradigm4 Concepts 9 Principles23 Patterns.
Scott Cate CloudDB.com Session Code: DPR401.
CS251 – Software Engineering Lectures 18: Intro to DP Slides by Rick Mercer, Christian Ratliff, Oscar Nierstrasz and others 1 و ابتغ فيما آتاك الله الدار.
Software Design 1.1 CPS 108, Spring 2006 l Object oriented programming and design, we'll use Java and C++  Language independent concepts including design.
More Patterns CS 124. More Basic Patterns Patterns you’ve already seen (without knowing it) Observer / Listener Wrapper Composite Decorator / Filter Patterns.
Banaras Hindu University. A Course on Software Reuse by Design Patterns and Frameworks.
Compsci 06/101, Spring COMPSCI 06/101, Spring 2011 Introduction to Computer Science Owen Astrachan
Genome Revolution: COMPSCI 006G 15.1 Recursion and Recursive Structures l Definition in the dictionary: in mathematics an expression in which a value is.
Duke CPS CPS 108, Spring 1998 l Software Design and Implementation ä Object oriented programming and design ä good design helps do away with late.
Duke CPS Programming Heuristics l Identify the aspects of your application that vary and separate them from what stays the same ä Take what varies.
Duke University Computer Science 1 Topics since last test l More invariants l Pixmap l Sorting & Templates  Selection sort  Insertion sort  Quicksort.
Software Design 17.1 Aside: ethics of software l What is intellectual property, why is it important?  what about FSF, GPL, copy-left, open source, … 
CPS What is Computer Science? What is it that distinguishes it from the separate subjects with which it is related? What is the linking thread.
CLASSIFICATION OF DESIGN PATTERNS Hladchuk Maksym.
CSC 222: Object-Oriented Programming
CSC 222: Computer Programming II
Common Design Patterns
Plan for the week Working in groups/teams, horrible bosses?
CompSci 6 Introduction to Computer Science
CSC 222: Object-Oriented Programming
Plan for today Refactoring and Design Patterns
CompSci 101 Introduction to Computer Science
How to be a Good Developer
SOEN 343 Software Design Computer Science and Software Engineering Department Concordia University Fall 2005 Instructor: Patrice Chalin.
Week 1 Gates Introduction to Information Technology cosc 010 Week 1 Gates
Kontrak Kuliah Web Service.
EECE 310 Software Engineering
08/15/09 Design Patterns James Brucker.
Design Patterns Part 2: Factory, Builder, & Memento
CS 2530 Intermediate Computing Dr. Schafer
Chapter 8, DesignPatterns Facade
Presentation transcript:

Software Design 14.1 CPS 108 l Object oriented design and programming of medium-sized projects in groups using modern tools and practices in meaningful ways l High level OO concepts  XP: Extreme Programming: simplicity, refactor, grow code  Tell, don't ask: designing classes  Open/Closed: open to extension, closed to modification l Learn to manage time, improve coding methods, e.g., can you really code effectively at 3:00 am?

Software Design 14.2 Essential Design Patterns (by name) l MVC, aka Observer/Observable  Separate concerns, especially important for GUIs l Composite  Container is/contains JComponent: File/Directory l Factory  Separate creation from class, install new creators l Proxy/Adapter  Stand-in with same interface, adapt interface as needed l Decorator  Is-a and Has-a, e.g., Filters and java I/O l Command  Function/request object, undoable action

Software Design 14.3 Patterns continued l Singleton  Enforce single point of creation, conserve resources l Template method  Hooks filled in by sublcasses l Iterator  Common from previous courses, essential in Java l Strategy  Human player, AI, change algorithm l Forces in a problem lead to solution via appropriate pattern  Should know what GOF is: gang of four

Software Design 14.4 Something old, something new l CPS 108 has used Java since 1996 always with C++  Before ’96 used Tcl/Tk or Python  Starting with Java is problematic, what to read?  What if 6/100 move to Java? l Is Unix an issue? More time with Windows programming environments? Linux or Mac?  Eclipse as cross-platform environment l What about groups?  110 model, keep same group always  108 model, chaotic? Re-randomize? Always choice?

Software Design 14.5 OOGA l Architectural issues important, leverage a good system-level architecture into easier-to-develop games/programs  Ambitious groups can get away without an architecture, but a good architecture really helped ease development  MVC really worked, better than in the past? l Networking comes too late? Not next time? l Should require an AI for some games, talk about this or provide code? l Card games would also be architecturally interesting  Solitaire? Other games? Build on freecell?

Software Design 14.6 Post-mortem evaluation l Need smaller programs ? Mastery projects?  C++ inheritance, templates, low-level C, sockets  Java GUI, threads, web, network l Success: OOGA, Freecell (kind of) l Failure: Hyperwag l Success: Set your own standards, don’t meet my requirements l Failure: Reading about software, aesthetics, ethics, … l Failure: feedback l Success: coding examples, MVC l Failure: feedback l Success/Failure: understanding group dynamics l Failure: coding standards l Failure: using books l Success: pattern examples l Failure: pattern re-use l Success: tell don't ask l Overall grade: _______

Software Design 14.7 Why is programming fun? What delights may its practitioner expect as a reward? First is the sheer joy of making things Second is the pleasure of making things that are useful Third is the fascination of fashioning complex puzzle-like objects of interlocking moving parts Fourth is the joy of always learning Finally, there is the delight of working in such a tractable medium. The programmer, like the poet, works only slightly removed from pure thought-stuff. Fred Brooks

Software Design 14.8 Fred Brooks l … on computing pioneer Howard Aiken "the problem was not to keep people from stealing your ideas, but to make them steal them." l Duke valedictorian 1953, started UNC Computer Science Dept in 1964, won Turing Award in 1999 l Mythical-Man Month, "Adding man-power to a late project makes it later", … "There is no silver-bullet for Software Engineering… [because of essential complexity]" l Chaired Executive Committee of the Central-Carolina Billy Graham Crusade in 1973