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.

Slides:



Advertisements
Similar presentations
System Analysis & Design Methods V Extreme Programming XP/dX.
Advertisements

© AgiliX Agile Development Consulting Agile Software Architecture Cesario Ramos.
Alternate Software Development Methodologies
General OO Concepts and Principles CSE301 University of Sunderland Harry R. Erwin, PhD.
Software Engineering and Design Principles Chapter 1.
Agile Methods and Extreme Programming CSSE 376, Software Quality Assurance Rose-Hulman Institute of Technology March 23, 2007.
Chapter 6 Prototyping, RAD, and Extreme Programming
Reasons to study concepts of PL
Design Patterns Module Name - Object Oriented Modeling By Archana Munnangi S R Kumar Utkarsh Batwal ( ) ( ) ( )
Software Issues Derived from Dr. Fawcett’s Slides Phil Pratt-Szeliga Fall 2009.
1 An introduction to design patterns Based on material produced by John Vlissides and Douglas C. Schmidt.
UML and Object Oriented Concepts
CIT241 Prerequisite Knowledge ◦ Variables ◦ Operators ◦ C++ Syntax ◦ Program Structure ◦ Classes  Basic Structure of a class  Concept of Data Hiding.
13 Jul 2006CSE403, Summer'06, Lecture10 Lifecycle Architecture Review: Preliminary Feedback Valentin Razmov.
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.
Chapter 3 – Agile Software Development 1Chapter 3 Agile software development.
1/19 Component Design On-demand Learning Series Software Engineering of Web Application - Principles of Good Component Design Hunan University, Software.
Todd Snyder Development Team Lead Infragistics Experience Design Group.
02/10/2015 Page 1 R. Theeuws Siemens Atea Filename: CBD_ervaring Werkgroep Component Based Developments Ervaring CBD.
Chapter 1 Object-Oriented Analysis and Design. Disclaimer Slides come from a variety of sources: –Craig Larman-developed slides; author of this classic.
Course Overview & Topics CSc 335: Object-Oriented Programming and Design © Rick Mercer 1.
1-1 C Sc 335 Course Overview Object-Oriented Programming and Design Rick Mercer.
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.
CSE 403, Spring 2008, Alverson Software Design “There are two ways of constructing a software design: one way is to make it so simple that there are obviously.
Software Design 1.1 CPS 108, Spring 2004 l Software Design and Implementation  Object oriented programming and design Language independent concepts including.
C++ and Ubuntu Linux Review and Practice CS 244 Brent M. Dingle, Ph.D. Game Design and Development Program Department of Mathematics, Statistics, and.
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.
CS3100 Software Project Management Agile Approaches.
Elements of OO Abstraction Encapsulation Modularity Hierarchy: Inheritance & Aggregation 4 major/essential elements3 minor/helpful elements Typing Concurrency.
1 Venkat Subramaniam Quality of Software Design Good design is critical to a software application A good design has following characteristics –Specific.
1 CSCD 326 Data Structures I Software Design. 2 The Software Life Cycle 1. Specification 2. Design 3. Risk Analysis 4. Verification 5. Coding 6. Testing.
AP-1 4. Agile Processes. AP-2 Agile Processes Focus on creating a working system Different attitude on measuring progress XP Scrum.
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.
Chapter 17 – Object- Oriented Design. Chapter Goals To learn about the software life cycle To learn about the software life cycle To learn how to discover.
Refactoring - 1 CS494: Intro. to Refactoring Readings: –Refactoring for everyone: How and why to use Eclipse's automated refactoring features. By David.
12 OBJECT-ORIENTED DESIGN CHAPTER
PC204 Lecture 5 Programming Methodologies Copyright 2000 by Conrad Huang and the Regents of the University of California. All rights reserved.
Design Patterns Introduction “Patterns are discovered, not invented” Richard Helm.
Design and Planning Or: What’s the next thing we should do for our project?
AGILE XP AND SCRUM © University of LiverpoolCOMP 319slide 1.
Design. Practices Principles Patterns What are the characteristics of good design? What are good solutions to common design problems? How do we go about.
Design Patterns in Context ©SoftMoore ConsultingSlide 1.
Extreme Programming. Extreme Programming (XP) Formulated in 1999 by Kent Beck, Ward Cunningham and Ron Jeffries Agile software development methodology.
EXtreme Programming and Open Source engineering paradigm A comparison
Information Architecture 2 Mailing List? No Class Scheduled October 23 Books? -Beck, K. (1999). Extreme Programming Explained: Embrace Change.Extreme Programming.
Watching the movie the hard way…. Page 256 – Head First Design Patterns.
CS 210 Proxy Pattern Nov 16 th, RMI – A quick review A simple, easy to understand tutorial is located here:
Continuous Improvement. Start Simple and Continually Improve E.g., Gmail Labels 1.
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.
1 Introduction to eXtreme Programming Remko Popma Azzurri Ltd.
Software Development. The Software Life Cycle Encompasses all activities from initial analysis until obsolescence Analysis of problem or request Analysis.
Project Management Software development models & methodologies
CSC 222: Object-Oriented Programming
CSC 222: Computer Programming II
Low Budget Productions, LLC
CSE687 - Object Oriented Design class notes Survey of the C++ Programming Language Jim Fawcett Spring 2004.
Chapter 1 Reasons to study concepts of PLs Programming Domains
CMPE 135: Object-Oriented Analysis and Design October 24 Class Meeting
1.1 Reasons to study concepts of PLs
Extreme Programming.
Objects First with Java A Practical Introduction using BlueJ
Why Object-oriented Programming?
Objects First with Java A Practical Introduction using BlueJ
Refactoring.
CMPE 135 Object-Oriented Analysis and Design March 21 Class Meeting
Objects First with Java A Practical Introduction using BlueJ
Continuous Integration
Chapter 8 - Design Strategies
Jim Fawcett CSE687 – Object Oriented Design Spring 2015
Presentation transcript:

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 patterns, e.g., command, iterator, factory, strategy, …  Design independent concepts, e.g., coupling, cohesion, testing, refactoring, profiling, … l Non OO programming and design, we'll use C++ (and its C-subset)  From Java/ArrayList to C++/vector to C/int *  From classes to functions, from references to pointers

Software Design 1.2 Goals for students in CompSci 108 l Adept at solving problems requiring programming  Design, test, implement, release, revise, maintain l Reasonably facile with basic Java idioms/libraries  How to read the API, knowing what to ignore  Basic language features, basic libraries l Basic knowledge of C++ (and C) programming  Beyond the old CompSci 100  Java-style use of STL

Software Design 1.3 More goals for 108 students l Know patterns catalog, vocabulary and use  HFDP rather than GOF (and more TLAs/FLAs) l Experience working in teams  How to accommodate team needs, balance against individual needs (and goals) l Comfort in working alone, how to get and use help  Peers, UTAs, TA, prof, Internet, …

Software Design 1.4 Administrivia l check website and bulletin board regularly   See links to bulletin board and other stuff l Grading (see web pages)  group projects: small, medium, large  mastery programs (solo or semi-solo endeavors)  readings and summaries  tests (primarily take-home)

Software Design 1.5 Administrivia (continued) l Evaluating team projects, role of TA, UTA, consultants  face-to-face evaluation, early feedback l Compiling, tools, environments, Linux, Windows, Mac  g++ 3.3, 3.4, 4.0?,  Java 5 (requires 10.4 on Mac)  Eclipse in all environments  Command-line tools

Software Design 1.6 Classes: Review/Overview l A class encapsulates state and behavior  Behavior first when designing a class  Information hiding: who knows state/behavior? l State is private; some behavior is public  Private/protected helper functions  A class is called an object factory, creates lots of instances

Software Design 1.7 How do classes and objects work? l Classes communicate and collaborate  Parameters: use-a (send and receive)  Containment: has-a (aggregate of parts, responsible for)  Inheritance: is-a (extends and specializes) l Understanding inheritance and interfaces  What is polymorphism?  When is polymorphism not appropriate?  What is an interface in Java, what about C++?

Software Design 1.8 Design Criteria Good design comes from experience, experience comes from bad design Fred Brooks l Design with goals:  ease of use  portability  ease of re-use  efficiency  first to market  ?????

Software Design 1.9 How to code l Coding/Implementation goals:  Make it run  Make it right  Make it fast  Make it small l spiral design (or RAD or !waterfall or...)  what’s the design methodology? specification design implementation

Software Design 1.10 XP and Refactoring (See books by Kent Beck (XP) and Martin Fowler (refactoring)) l eXtreme Programming (XP) is an agile design process  Communication: unit tests, pair programming, estimation  Simplicity: what is the simplest approach that works?  Feedback: system and clients; programs and stories  Courage: throw code away, dare to be great/different l Refactoring  Change internal structure without changing observable behavior  Don’t worry (too much) about upfront design  Simplicity over flexibility (see XP)

Software Design 1.11 Modules, design, coding, refactor, XP l Make it run, make it right, make it fast, make it small l Do the simplest thing that can possibly work (XP)  Design so that refactoring is possible  Don’t lose sight of where you’re going, keep change in mind, but not as the driving force [it will evolve] l Refactor: functionality doesn’t change, code does  Should mean that new tests aren’t written, just re-run  Depends on modularity of code, testing in pieces l What’s a module in Java?  Could be a class, a file, a directory, a package, a jar file  We should, at least, use classes and packages

Software Design 1.12 Design Heuristics: class/program/function (see text by Arthur Riel) l Coupling  classes/modules are independent of each other  goal: minimal, loose coupling  do classes collaborate and/or communicate? l Cohesion  classes/modules capture one abstraction/model  keep things as simple as possible, but no simpler  goal: strong cohesion (avoid kitchen sink) l The open/closed principle  classes/programs: open to extensibility, closed to modification