Design Tips.

Slides:



Advertisements
Similar presentations
Vrije Universiteit amsterdamPostacademische Cursus Informatie Technologie Basic OO Technology Technology determines the effectiveness of the approach.
Advertisements

Chapter 22 Object-Oriented Systems Analysis and Design and UML Systems Analysis and Design Kendall and Kendall Fifth Edition.
Unified Modeling Language
Basic Concepts in Component-Based Software Engineering
Software Engineering 1 Provisional Revision Plan.
Unified Modeling (Part I) Overview of UML & Modeling
Feb. 23, 2004CS WPI1 CS 509 Design of Software Systems Lecture #5 Monday, Feb. 23, 2004.
© Copyright Eliyahu Brutman Programming Techniques Course.
1 CS1001 Lecture Overview Object Oriented Design Object Oriented Design.
Objectives Explain the purpose and objectives of object- oriented design Develop design class diagrams Develop interaction diagrams based on the principles.
Developed by Reneta Barneva, SUNY Fredonia Component Level Design.
The Design Discipline.
UML - Development Process 1 Software Development Process Using UML (2)
Systems Analysis and Design in a Changing World, Fifth Edition
Liang, Introduction to Java Programming, Sixth Edition, (c) 2007 Pearson Education, Inc. All rights reserved Chapter 12 Object-Oriented.
Design Patterns OOD. Course topics Design Principles UML –Class Diagrams –Sequence Diagrams Design Patterns C#,.NET (all the course examples) Design Principles.
Ch:10 Component Level Design Unit 4. What is Component? A component is a modular building block for computer software Because components reside within.
Unified Modeling Language, Version 2.0
Requirements To Design--Iteratively Chapter 12 Applying UML and Patterns Craig Larman.
Chapter 17 GRASP: Designing Objects with Responsibilities. 1CS6359 Fall 2011 John Cole.
Systems Analysis and Design in a Changing World, 3rd Edition
Source: Peter Eeles, Kelli Houston, and Wojtek Kozaczynsky, Building J2EE Applicationa with the Rational Unified Process, Addison Wesley, 2003 Prepared.
SWE © Solomon Seifu ELABORATION. SWE © Solomon Seifu Lesson 12-5 Software Engineering Design Goals.
GRASP: Designing Objects with Responsibilities
Object Oriented Analysis and Design using the UML CIS 520 Advanced Object-Oriented Design.
1 COMP 350: Object Oriented Analysis and Design Lecture 1Introduction References: Craig Larman Chapter 1.
Documenting Software Architectures 1.Uses and Audiences for Architecture Documentation Architecture documentation serves as a means of education Architecture.
1 Advanced Software Architecture Muhammad Bilal Bashir PhD Scholar (Computer Science) Mohammad Ali Jinnah University.
Secure Systems Research Group - FAU SW Development methodology using patterns and model checking 8/13/2009 Maha B Abbey PhD Candidate.
CIS 112 Exam Review. Exam Content 100 questions valued at 1 point each 100 questions valued at 1 point each 100 points total 100 points total 10 each.
1/26 On-demand Learning Series Software Engineering of Web Application - Object-Oriented Development & UML Hunan University, Software School.
Logical view –show classes and objects Process view –models the executables Implementation view –Files, configuration and versions Deployment view –Physical.
Incremental Design Why incremental design? Goal of incremental design Tools for incremental design  UML diagrams  Design principles  Design patterns.
Elements of OO Abstraction Encapsulation Modularity Hierarchy: Inheritance & Aggregation 4 major/essential elements3 minor/helpful elements Typing Concurrency.
Design CIS 4800 Kannan Mohan Department of CIS Zicklin School of Business, Baruch College Copyright © 2009 John Wiley & Sons, Inc. Copyright © 2008 Course.
Software Design Patterns Curtsy: Fahad Hassan (TxLabs)
Source Mastering UML with Rational Rose 2002 Information System Engineering Introduction to UML.
Lecture 9-1 : Intro. to UML (Unified Modeling Language)
1 Unified Modeling Language, Version 2.0 Chapter 2.
Component Design Elaborating the Design Model. Component Design Translation of the architectural design into a detailed (class-based or module- based)
04 - OOD Intro.CSC4071 Software Design ‘Requirements’ defines –The goals the system needs to satisfy. ‘Specification’ defines –The externally-observable.
OOD OO Design. OOD-2 OO Development Requirements Use case analysis OO Analysis –Models from the domain and application OO Design –Mapping of model.
Object Design More Design Patterns Object Constraint Language Object Design Specifying Interfaces Review Exam 2 CEN 4010 Class 18 – 11/03.
Object Oriented Programming and Data Abstraction Earl Huff Rowan University.
WELCOME TO OUR PRESENTATION UNIFIED MODELING LANGUAGE (UML)
11 Systems Analysis and Design in a Changing World, Fifth Edition.
Slide 1 Unified Modeling Language, Version 2.0 Object-Oriented SAD.
The Movement To Objects
CHAPTER 5 GENERAL OOP CONCEPTS.
Software Architecture & Difference from Design
Object-Oriented Techniques
Systems Analysis and Design With UML 2
Chapter 11 Object-Oriented Design
Copyright © by Curt Hill
OO Methodology OO Architecture.
Software Engineering: A Practitioner’s Approach, 6/e Chapter 11 Component-Level Design copyright © 1996, 2001, 2005 R.S. Pressman & Associates, Inc.
The Object Oriented Approach to Design
John D. McGregor C8 - Tactics
Component-Level Design
Object-Oriented Design
Object oriented analysis and design
Unit 6 Assignment 2 Chris Boardley.
An Introduction to Software Architecture
Software Analysis.
Design Yaodong Bi.
Chapter 22 Object-Oriented Systems Analysis and Design and UML
Some principles for object oriented design
Chapter 6: Architectural Design
Software Development Process Using UML Recap
Chapter 10 – Component-Level Design
Presentation transcript:

Design Tips

Becoming Good OO Developers Developing good OO Software is hard Takes a lot of time to take advantage of all OO features Lots of Experience needed to become good designers Many systems are not leveraging OO advantages To master OO software design, study experienced developers design Reuse proven software design => Patterns can help

Design Tips & Hints (High level Patterns) Layering Improves stability, understandability, flexibility Reduces impact to changes Restrict dependencies/coupling between packages/subsystems GUI (Boundary Classes) separated in one layer/package Allow the User Interface to change without impacting the rest of the system Package Functionally related Classes Changes in one Class impact the other Class Rich Interaction between Classes Package should be cohesive Reuse proven software design => Patterns can help

Design

Design Refine the Class Diagram Structure system Subsystems, Interfaces, Classes Define subsystems dependencies Capture major interfaces between subsystems Assign responsibilities to new design classes Describe realization of Use Cases Use Sequence and Collaboration Diagrams Assign visibility to class attributes Define Methods signature Develop State diagram for relevant design classes Use Interaction Diagram to distribute behavior among classes Use Design Patterns for parts of the system

Design Problems Rigidity: Every change causes a cascade of subsequent changes in dependent modules Fragility: Tendency to break in many places every time the software is changed Immobility: Inability to reuse software from other projects or parts of same projects Viscosity: Easier to change the software by breaking the architecture rules than by respecting them.

Design Principles Open-Closed Concept Design by Contract Software Entities (Classes, Modules, Functions) should be Open for Extension, but Closed for Modification (Change the what modules do without modifying their code) Design by Contract Use Assertion, Pre-condition, Post-condition, to ensure robustness and corrrectness. Assertion: property of some of the values of the program entities. Pre-condition: expresses the properties that must hold whenever the method is called Post-condition: expresses the properties that the method guarantees when it is called

Design Principles (cont.) Dependency Inversion Primary mechanism / strategy Depend upon interfaces or abstract classes rather than upon concrete methods and classes. Interface segregation When a class has multiple clients, create specific interfaces for each client. Packaging principles Common Closure: Classes that change together, belong together. Dependencies between packages should not form cycles Depend in the direction of stability

Other Processes OPEN Object-oriented Process, Environment, and Notation Third-generation, public domain, full lifecycle, process-focused, methodological approach Work Products: components that are developed by the project. Languages: components used to document most work products. Producers: components that develop work products. Work Units: components that model the operations performed by producers when developing work products. Stages: time intervals that provide a macro organization to the work units.

Other Processes (cont.) Extreme Programming

UML Use OPEN Web Applications J2EE Architecture XML applications