Questions First On class? On project? On material we’ve discussed?

Slides:



Advertisements
Similar presentations
Software Engineering Key design concepts Design heuristics Design practices.
Advertisements

Since 1995, we’ve been building innovative custom solutions specifically designed to meet the unique needs of America’s most recognized companies. If you.
By Justin Hendrix. Design Challenges Design is the activity that links requirements to coding and debugging. Good design is useful on small project and.
High Quality Code Why it matters. By Ryan Ruzich.
General OO Concepts and Principles CSE301 University of Sunderland Harry R. Erwin, PhD.
Lecture 9 Improving Software Design CSC301-Winter 2011 – University of Toronto – Department of Computer Science Hesam C. Esfahani
High Quality Code – Style Matters  Chapter 5. Design in Construction  Chapter 31. Layout and Style Software Construction by Jeff Nogy.
Common mistakes Basic Design Principles David Rabinowitz.
The Software Design Process CPSC 315 – Programming Studio Fall 2009.
Developed by Reneta Barneva, SUNY Fredonia Component Level Design.
Marcelo Santos – OOAD-CDT309, Spring 2008, IDE-MdH 1 Object-Oriented Analysis and Design - CDT309 Period 4, Spring 2008 Design Patterns: someone has already.
1 An introduction to design patterns Based on material produced by John Vlissides and Douglas C. Schmidt.
13 Jul 2006CSE403, Summer'06, Lecture10 Lifecycle Architecture Review: Preliminary Feedback Valentin Razmov.
Creational Patterns Making Objects The Smart Way Brent Ramerth Abstract Factory, Builder.
19 Aug 2005CSE403, Summer'05, Lecture 17 Lecture 17: Course Retrospective and the Path to Lifelong Learning (Part II) Valentin Razmov.
Ch:10 Component Level Design Unit 4. What is Component? A component is a modular building block for computer software Because components reside within.
© 2004 Capgemini - All rights reserved SOLID - OO DESIGN PRINCIPLES Andreas Enbohm, Capgemini.
CSE 301 Exam Revision Lecture
Introduction to SOLID Principles. Background Dependency Inversion Principle Single Responsibility Principle Open/Closed Principle Liskov Substitution.
SWE © Solomon Seifu ELABORATION. SWE © Solomon Seifu Lesson 12-5 Software Engineering Design Goals.
The benefits of SOLID in software development Ruben Agudo Santos (GS-AIS-HR)
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.
 What is SOLID  The S in SOLID  The O in SOLID  The L in SOLID  The I in SOLID  The D in SOLID  Questions.
Software Design Principles
Incremental Design Why incremental design? Goal of incremental design Tools for incremental design  UML diagrams  Design principles  Design patterns.
Software Design Patterns Curtsy: Fahad Hassan (TxLabs)
Design Patterns. 1 Paradigm4 Concepts 9 Principles23 Patterns.
Five design principles
Design Patterns Introduction
11 Jul 2005CSE403, Summer'05, Lecture 08 Lecture 08: Best Practices for Software Design (Part I) Valentin Razmov.
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.
High Quality Code – Style Matters  Design in Construction  Layout and Style Software Construction by Jeff Nogy.
SOLID Design Principles
Banaras Hindu University. A Course on Software Reuse by Design Patterns and Frameworks.
Session 33 More on SOLID Steve Chenoweth Office: Moench Room F220 Phone: (812) Chandan Rupakheti Office: Moench.
Dependency Inversion By Steve Faurie. Dependency Inversion Described in Agile Principles, Patterns and Practices in C# by Robert C. Martin.
S.Ducasse Stéphane Ducasse 1 Some Principles Stéphane Ducasse ---
Object- oriented Design Principles
An object's behavior depends on its current state. Operations have large, multipart conditional statements that depend on the object's state.
07 Jul 2006CSE403, Summer'06, Lecture10 Lecture 10: Core Principles and Best Practices for Software Design (Part I) “Treat design as a wicked, sloppy,
Microsoft Advertising 16:9 Template Light Use the slides below to start the design of your presentation. Additional slides layouts (title slides, tile.
Beginning Software Craftsmanship Brendan Enrick Steve Smith
Deliverables: Zero-Feature Release Build process, installation process, code repository, automated testing framework, bug tracking system Maybe no tests.
CSCI 383 Object-Oriented Programming & Design Lecture 15 Martin van Bommel.
14 Jul 2005CSE403, Summer'05, Lecture 09 Lecture 09: Fundamental Principles and Best Practices for Software Design Valentin Razmov.
27 Jul 2006CSE403, Summer'06, Lecture 15 Midterm Exam Statistics Other statistics: Average: 40.6 Median: 42.3 Std Dev: 6.2 Max: 46.5 Min: 28 Easiest Problems:
Outline Your one-minute feedback from last week
Mantas Radzevičius ifm-2/2
More Design Heuristics
Introduction to Design Patterns
CSE687 - Object Oriented Design class notes Survey of the C++ Programming Language Jim Fawcett Spring 2004.
Chapter 11 Object-Oriented Design
Best Practices for Software System Design
Copyright © by Curt Hill
How to be a Good Developer
Outline Updated schedule of class-related deliverables Your questions
object oriented Principles of software design
Factory Method, Abstract Factory, and More
Software Engineering Lecture 7 - Design Patterns
lecture 08, OO Design Principle
Design Tips.
Lecture 09: Software Architecture (Part I)
Ms Munawar Khatoon IV Year I Sem Computer Science Engineering
Software Design Lecture : 14.
Object Oriented Practices
CSE 303 Concepts and Tools for Software Development
CSE 331 Software Design & Implementation
Informatics 122 Software Design II
Questions First On class? On project? On material we’ve discussed?
Object Oriented Design & Analysis
Presentation transcript:

Questions First On class? On project? On material we’ve discussed? Other?

Best Practices for Software System Design (continued) CSE403 Section 3: Best Practices for Software System Design (continued) "There are two ways of constructing a software design: one way is to make it so simple that there are obviously no deficiencies; the other is to make it so complicated that there are no obvious deficiencies.“ C.A.R. Hoare (1985) Valentin Razmov, CSE403, Sp'05

Design in a Nutshell “Treat design as a wicked, sloppy, heuristic process. Don’t settle for the first design that occurs to you. Collaborate. Strive for simplicity. Prototype when you need to. Iterate, iterate, and iterate again. You’ll be happy with your designs.” Steve McConnell, Code Complete, 2nd ed., chap 5, http://www.cc2e.com/docs/Chapter5-Design.pdf

Why Learn How to Design? The biggest challenges before the profession are posed by global economic and societal trends: (A) outsourcing and offshoring; (B) robotization and automation; (C) peak oil; etc. Creative professions are, at least for the time being, immune to many of these challenges, while routine jobs are going to be the first to disappear (due to one or more of the listed factors).

Best Practices for Software Design Favor composition over inheritance. Example:

Principles for Good Design (from Robert Martin’s “Agile Software Development – Principles…“) Open-Closed Principle “Software entities (classes, modules, functions, etc.) should be open for extension but closed for modification.” Example: An abstract class to extend (with as many new subclasses as needed) rather than modifying an existing class to accommodate each new addition. The designer chooses what changes to anticipate.

Principles for Good Design (cont.) Dependency Inversion Principle (A) “High-level modules should not depend on low-level modules. Both should depend on abstractions.” (B) “Abstractions should not depend on details. Details should depend on abstractions.” Example: Separation of policy and mechanism

Principles for Good Design (cont.) Single Responsibility Principle “A class should have only one reason to change.” Example 1: Putting state in a GUI class. Can be avoided using the Model-View-Controller pattern. Example 2: interface Modem { public void dial (String pno); public void hangup(); public void send (char c); public char recv(); }

Principles for Good Design (cont.) Interface Segregation Principle “Clients should not be forced to depend on methods that they do not use.” Example: Dogs jump but don’t sing.

Examples of Bad Designs Practices “Design by committee” Everyone on the committee puts in their favorite features into the soup. What is the result? Moral: The design must be owned and managed by someone. Others you have heard of?

One-minute Feedback What one or two ideas discussed today captured your attention and thinking the most? List any ideas / concepts that you would like to hear more about in this class. Be specific.