Ceg860 (Prasad)L6MR1 Modularity Extendibility Reusability.

Slides:



Advertisements
Similar presentations
Ch:8 Design Concepts S.W Design should have following quality attribute: Functionality Usability Reliability Performance Supportability (extensibility,
Advertisements

Architecture Representation
1 OBJECT-ORIENTED CONCEPTS. 2 What is an object?  An object is a software entity that mirrors the real world in some way.  A software object in OOP.
Object-Oriented Software Development CS 3331 Fall 2009.
Object-Oriented Software Construction Bertrand Meyer 2nd ed., Prentice Hall, 1997.
Programming Language Paradigms: summary. Object-oriented programming Objects are the fundamental building blocks of a program. Interaction is structured.
Satzinger, Jackson, and Burd Object-Orieneted Analysis & Design
Chair of Software Engineering ATOT - Lecture 3, 7 April Advanced Topics in Object Technology Bertrand Meyer.
Copyright © The McGraw-Hill Companies, Inc. Permission required for reproduction or display. Design Patterns.
1 ES 314 Advanced Programming Lec 2 Sept 3 Goals: Complete the discussion of problem Review of C++ Object-oriented design Arrays and pointers.
© 2006 Pearson Addison-Wesley. All rights reserved2-1 Chapter 2 Principles of Programming & Software Engineering.
Developed by Reneta Barneva, SUNY Fredonia Component Level Design.
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.
Chair of Software Engineering OOSC - Summer Semester Object-Oriented Software Construction Bertrand Meyer.
Object-oriented design CS 345 September 20,2002. Unavoidable Complexity Many software systems are very complex: –Many developers –Ongoing lifespan –Large.
Computer Science 240 Principles of Software Design.
1 An introduction to design patterns Based on material produced by John Vlissides and Douglas C. Schmidt.
Design Patterns.
Introduction to Object-oriented programming and software development Lecture 1.
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.
1/19 Component Design On-demand Learning Series Software Engineering of Web Application - Principles of Good Component Design Hunan University, Software.
CSE 303 – Software Design and Architecture
© Bertrand Meyer and Yishai Feldman Notice Some of the material is taken from Object-Oriented Software Construction, 2nd edition, by Bertrand Meyer (Prentice.
An Introduction to Design Patterns. Introduction Promote reuse. Use the experiences of software developers. A shared library/lingo used by developers.
Copyright 2002 Prentice-Hall, Inc. Modern Systems Analysis and Design Third Edition Jeffrey A. Hoffer Joey F. George Joseph S. Valacich Chapter 20 Object-Oriented.
Unified Modeling Language, Version 2.0
Design Patterns: Structural Design Patterns
SOFTWARE DESIGN (SWD) Instructor: Dr. Hany H. Ammar
CS212: Object Oriented Analysis and Design GRASP Design Principles.
Design engineering Vilnius The goal of design engineering is to produce a model that exhibits: firmness – a program should not have bugs that inhibit.
Software Development. Software Developers Refresher A person or organization that designs software and writes the programs. Software development is the.
Ceg860 (Prasad)L1SQ1 Software Quality Object-Oriented Programming Paradigm.
SOFTWARE DESIGN AND ARCHITECTURE LECTURE 05. Review Software design methods Design Paradigms Typical Design Trade-offs.
ADT ITEC 320 Lecture 22. ADT Review Generic lists –Ada compilation workout Recursive algorithms –What would a recursive copy look like? Project 4 is up.
Chapter 8 Object Design Reuse and Patterns. Object Design Object design is the process of adding details to the requirements analysis and making implementation.
Design Principle & Patterns by A.Surasit Samaisut Copyrights : All Rights Reserved.
CS 345: Programming Language Paradigms Chris Brooks HR 510 MWF 11:00-12:05.
Data Abstaraction Chapter 10.
Chapter 10, Slide 1 ABSTRACT DATA TYPES Based on the fundamental concept of ABSTRACTION:  process abstraction  data abstraction Both provide:  information.
PRINCIPLES OF GOOD DESIGN 12/7/ Assignment 4 – Deadline 28 Nov.  Read an article placed in generalshare course folder  Point: Design Patterns.
Thanks for Coming l WEB. Principles of Good Design SEI, SJTU WEB APPS and SERVICES.
Behavioral Patterns CSE301 University of Sunderland Harry R Erwin, PhD.
9-Dec Dec-15  INTRODUCTION.  FEATURES OF OOP.  ORGANIZATION OF DATA & FUNCTION IN OOP.  OOP’S DESIGN.
© 2006 Pearson Addison-Wesley. All rights reserved2-1 Chapter 2 Principles of Programming & Software Engineering.
© 2006 Pearson Addison-Wesley. All rights reserved 2-1 Chapter 2 Principles of Programming & Software Engineering.
ADT data abstraction. Abstraction  representation of concepts by their relevant features only  programming has two major categories of abstraction process.
1 Software Design Lecture What’s Design It’s a representation of something that is to be built. i.e. design  implementation.
1 Unified Modeling Language, Version 2.0 Chapter 2.
Evaluating an Object-Oriented Design ©SoftMoore ConsultingSlide 1.
CHAPTER 3 MODELING COMPONENT-LEVEL DESIGN.
Chapter 18 Object Database Management Systems. Outline Motivation for object database management Object-oriented principles Architectures for object database.
Lecture 21: Component-Based Software Engineering
These courseware materials are to be used in conjunction with Software Engineering: A Practitioner’s Approach, 6/e and are provided with permission by.
Banaras Hindu University. A Course on Software Reuse by Design Patterns and Frameworks.
Ada, Scheme, R Emory Wingard. Ada History Department of Defense in search of high level language around Requirements drafted for the language.
Lecture 2 Intro. To Software Engineering and Object-Oriented Programming (2/2)
Chapter 10 Software quality. This chapter discusses n Some important properties we want our system to have, specifically correctness and maintainability.
Basic Characteristics of Object-Oriented Systems
Slide 1 Unified Modeling Language, Version 2.0 Object-Oriented SAD.
Systems Analysis and Design With UML 2
Introduction to Design Patterns
Chapter 11 Object-Oriented Design
FORM: Feature-Oriented Reuse Method
Week 4 Object-Oriented Programming (1): Inheritance
Names, Binding, and Scope
MSIS 670 Object-Oriented Software Engineering
Introduction to Computer Science for Majors II
Chapter 11 Abstraction - The concept of abstraction is fundamental in
Presentation transcript:

ceg860 (Prasad)L6MR1 Modularity Extendibility Reusability

ceg860 (Prasad)L6MR2 Criteria for a Design Method to be Modular Decomposability Helps in the task of obtaining independent sub- problems (division of labor). –E.g., Top-down design. Composability Favors development of well-defined software elements that can be freely combined in different contexts. –E.g., Subroutines for Numeric Computation ( FORTRAN ). –E.g., Functions for List processing (LISP). –In general, top-down design does not favor composability.

ceg860 (Prasad)L6MR3 Continuity Small changes in problem specification should trigger small changes in software modules. –E.g., Use of symbolic constants. –E.g., Pascal’s monolithic programs vs Ada’s packages. –E.g., C’s-Union type vs C++/Java’s Class hierarchy (Polymorphism/Dynamic binding). Understandability –E.g., Documentation Protection Containing the effects of run-time errors.

ceg860 (Prasad)L6MR4 Modular Software Direct Mapping Structure of the problem domain is reflected in the structure of the software solution. Strong ( Internal ) Cohesion ( intra-modular ) Degree of binding among elements in the module. Minimal ( External ) Coupling ( inter-modular ) Dependency between modules.

ceg860 (Prasad)L6MR5 Information Hiding Separation of behavior specification from implementation details. Client may rely only on server’s public interface. Open-Closed Principle Module for extension (by server) in future. Module for use (by client) now. Single Choice Principle Whenever a software system must support a set of alternatives, one and only one module in the system should know their exhaustive list.

ceg860 (Prasad)L6MR6 Benefits of Reusability Enhancing reusability enhances almost all the other software quality by promoting sharing of experts’ work. –Timeliness (Time to market) –Decreased maintenance effort –Reliability –Efficiency –Consistency –Economy

ceg860 (Prasad)L6MR7 The reuse-redo dilemma The realities of practical software development requires combining reuse and adaptation. The right notion of module must reconcile reusability and extendibility, closure and openness, satisfying today’s demands and trying to guess what future holds.

ceg860 (Prasad)L6MR8 Reusable Modules Reusable modules must be adaptable. Abstractions/Frameworks –“Lower-level” details changeable/pluggable. E.g., Java applets, Java threads, etc. Generalization through parameterization –Customizable by instantiation. E.g., Generic stack, Generic queue, etc. Software Components –Design Patterns

ceg860 (Prasad)L6MR9 Example : Table Data Structure Applications –Symbol table in Compiler –File System Directory –Database (Relations) Implementation based on: Array, Linked list, Binary search trees, Hash tables, B-trees, Heaps, etc

ceg860 (Prasad)L6MR10 Table Implementations HASH SEQUENTIAL TREE ARRAYLINKED FILE

ceg860 (Prasad)L6MR11 Searching a sequential table Has Has(t : seq_table; x : element) : bool is do from start until after or else found(x) loop forth end; return (not after) end;

ceg860 (Prasad)L6MR12

ceg860 (Prasad)L6MR13 Requirements on Reusable Modules Type variation E.g., Ada generics, C++ templates, etc Routine grouping (“quantum”) –As it is possible to apportion “work” among the routines in different ways and yet achieve the same overall behavior. (Mutual consistency) Set of charactersE.g., Set of characters abstraction can be implemented using a sorted list, a list without duplicates, a sorted list without duplicates, a packed boolean array, a string, etc.

ceg860 (Prasad)L6MR14 Factoring commonality Code sharing (server) –E.g., Inheritance, Abstract class, etc Organizing implementation variations Common behavior (server) –E.g., Polymorphism, Dynamic binding, etc Representation Independence (client) –E.g., Dynamic binding. Reusing existing modules (client) –E.g., Composition, Delegation.

ceg860 (Prasad)L6MR15 Example Module Structures –Routines : Functions and Procedures E.g., C, Pascal, etc –Packages E.g., Modula, CLU, etc –Generic Routines and Packages E.g., Ada, etc. –Class Hierarchy E.g., Java, etc. –Generic Class Hierarchy E.g., C++, Ada-95, etc.

ceg860 (Prasad)L6MR16 Overloading Ad hoc polymorphism Capturing Similarity Convenient for code integration (avoiding apparent name clashes). –Name Overloading Conserving names. –Operator Overloading Conforming to domain vocabulary.

ceg860 (Prasad)L6MR17 Object-Oriented Software Development Bases the architecture of a software system on modules deduced from the types of objects it manipulates (rather than the functions it is intended to ensure). IssuesIssues –How to find and use relevant object types? Object-Oriented Analysis and Design –How to describe and implement the object types and their relationships? Object-Oriented Programming (Language)