CSE403 Software Engineering Autumn 2001 Design (Information Hiding) Gary Kimura Lecture #8 October 17, 2001.

Slides:



Advertisements
Similar presentations
EECE 310: Software Engineering Modular Decomposition, Abstraction and Specifications.
Advertisements

The Modular Structure of Complex Systems Team 3 Nupur Choudhary Aparna Nanjappa Mark Zeits.
COMPSCI 105 S Principles of Computer Science 12 Abstract Data Type.
Keeping Secrets Within a Family: Rediscovering Parnas H. Conrad Cunningham Computer & Information Science, University of Mississippi Cuihua Zhang Computer.
1 These courseware materials are to be used in conjunction with Software Engineering: A Practitioner’s Approach, 5/e and are provided with permission by.
© 2010 University of California, Irvine – André van der Hoek1June 10, 2015 – 06:18:06 Informatics 121 Software Design I Lecture 10 André van der Hoek &
Families of Software Systems Notkin: 3 of 3 lectures on change.
1 CENG 707 Data Structures and Algorithms Nihan Kesim Çiçekli Department of Computer Engineering Middle East Technical University Fall 2010.
1 1 Lecture 4 Structure – Array, Records and Alignment Memory- How to allocate memory to speed up operation Structure – Array, Records and Alignment Memory-
CSCI 639 Topics in Software Engineering Assignment #5 Fall 2008.
CS350/550 Software Engineering Lecture 1. Class Work The main part of the class is a practical software engineering project, in teams of 3-5 people There.
28-Jun-15 Recursion. 2 Definitions I A recursive definition is a definition in which the thing being defined occurs as part of its own definition Example:
From Module Breakdown to Interface Specifications Completing the architectural design of Map Schematizer.
SE is not like other projects. l The project is intangible. l There is no standardized solution process. l New projects may have little or no relationship.
WEL COME PRAVEEN M JIGAJINNI PGT (Computer Science) MCA, MSc[IT], MTech[IT],MPhil (Comp.Sci), PGDCA, ADCA, Dc. Sc. & Engg.
Abstract Data Types and Encapsulation Concepts
Course Instructor: Aisha Azeem
C++ fundamentals.
The Project AH Computing. Functional Requirements  What the product must do!  Examples attractive welcome screen all options available as clickable.
Starting Chapter 4 Starting. 1 Course Outline* Covered in first half until Dr. Li takes over. JAVA and OO: Review what is Object Oriented Programming.
CSE 303 – Software Design and Architecture
CS 350 – Software Design The Object Paradigm – Chapter 1 If you were tasked to write code to access a description of shapes that were stored in a database.
More with Methods (parameters, reference vs. value, array processing) Corresponds with Chapters 5 and 6.
ECE450 - Software Engineering II1 ECE450 – Software Engineering II Today: Key Principles of Software Architecture and Design (I) adapted from Dave Penny’s.
9/20/6Lecture 3 - Instruction Set - Al1 Program Design.
CSE 219 Computer Science III Program Design Principles.
Approaching a Problem Where do we start? How do we proceed?
Low-Level Detailed Design SAD (Soft Arch Design) Mid-level Detailed Design Low-Level Detailed Design Design Finalization Design Document.
23-Oct-15 Abstract Data Types. 2 Data types A data type is characterized by: a set of values a data representation, which is common to all these values,
Major objective of this course is: Design and analysis of modern algorithms Different variants Accuracy Efficiency Comparing efficiencies Motivation thinking.
The Systems Development Life Cycle
Functions, Procedures, and Abstraction Dr. José M. Reyes Álamo.
Introduction to Software Development. Systems Life Cycle Analysis  Collect and examine data  Analyze current system and data flow Design  Plan your.
1 On Interactions in the RM-ODP Guy Genilloud, Gonzalo Génova WODPEC’2005 Workshop on ODP for Enterprise Computing * Information Engineering Group Departamento.
CS 4850: Senior Project Fall 2014 Object-Oriented Design.
Software Engineering Principles. SE Principles Principles are statements describing desirable properties of the product and process.
Project Management All projects need to be “managed” –Cost (people-effort, tools, education, etc.) –schedule –deliverables and “associated” characteristics.
1 CSE 403 Introduction Reading: Rapid Development Ch3.3 These lecture slides are copyright (C) Marty Stepp, 2007, with significant content taken from slides.
1 Design and Integration: Part 2. 2 Plus Delta Feedback Reading and lecture repeat Ambiguous questions on quizzes Attendance quizzes Boring white lecture.
SOFTWARE DESIGN. INTRODUCTION There are 3 distinct types of activities in design 1.External design 2.Architectural design 3.Detailed design Architectural.
Introduction to Design (and Zen) CpSc 372: Introduction to Software Engineering Jason O. Hallstrom Authorship Disclaimer. These.
1 CS 501 Spring 2004 CS 501: Software Engineering Lecture 2 Software Processes.
ECE450 - Software Engineering II1 ECE450 – Software Engineering II Today: Introduction to Software Architecture.
Meeting Management/Planning. Today Go over basics of meeting management Introduce key elements of creating a plan.
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.
Lecture 5 Page 1 CS 111 Online Processes CS 111 On-Line MS Program Operating Systems Peter Reiher.
1 Chapter 11 © 1998 by Addison Wesley Longman, Inc The Concept of Abstraction - The concept of abstraction is fundamental in programming - Nearly.
1 CS Programming Languages Class 22 November 14, 2000.
1 Copyright © 1998 by Addison Wesley Longman, Inc. Chapter 10 Abstraction - The concept of abstraction is fundamental in programming - Nearly all programming.
Lecture VIII: Software Architecture
1 These courseware materials are to be used in conjunction with Software Engineering: A Practitioner’s Approach, 5/e and are provided with permission by.
CS223: Software Engineering Lecture 13: Software Architecture.
Object Oriented Programming. OOP  The fundamental idea behind object-oriented programming is:  The real world consists of objects. Computer programs.
CSIS 4850: CS Senior Project – Spring 2009 CSIS 4850: Senior Project Spring 2009 Object-Oriented Design.
1 SYS366 Week 1 - Lecture 1 Introduction to Systems.
Unified Modeling Language (UML)
Dillon: CSE470: ANALYSIS1 Requirements l Specify functionality »model objects and resources »model behavior l Specify data interfaces »type, quantity,
CLASSIFICATION OF DESIGN PATTERNS Hladchuk Maksym.
Advanced Higher Computing Science
Modular Decomposition, Abstraction and Specifications
11.1 The Concept of Abstraction
Design by Contract Fall 2016 Version.
CSE 403: Notkin #2 of 3 on software change
CSE403 Software Engineering Autumn 2000 Design (Overview)
Introduction to Data Structure
Chapter 17 - Component-based software engineering
CSE403 Software Engineering Autumn 2000 Design (Information Hiding)
CS2013 Lecture 7 John Hurley Cal State LA.
11.1 The Concept of Abstraction
Presentation transcript:

CSE403 Software Engineering Autumn 2001 Design (Information Hiding) Gary Kimura Lecture #8 October 17, 2001

Today Design Specs and Design Reviews Understand information hiding as a principle for decomposing systems into modules Be able to distinguish module decompositions that are based on information hiding from those that aren’t

Design Specs What it needs to cover Typical outline for dev –Introduce and motivate the problem again –Fairly in-depth environment and API description –General design approach “the 60,000’ view” –Some of the fundamental data structures, algorithms, and organization that is going to be used in the implementation –Milestones and time schedule Level of detail –Enough that a competent practitioner of the art can implement the design –Almost like a Patent in the detail needed

Design Reviews There are both internal and external reviews –Internal design reviews are typically done among team members –External design reviews are done by inviting outside experts to review and critique your design External reviews can be external to your group or external to your company. The latter is often done under an NDA Some groups used both types of reviews Goal is to sanity check your design and get constructive feedback Need to boil it down to its essence when you present your design

Project Design Reviews Plan for approximately 40 minutes of presentation followed by 10 minutes of Q & A Presentation needs to include the project design, internal dev design, testing and documentation that you’ll be using in the project One group on Thursday November 1 st, and the other on Friday November 2 nd Use of slides, PowerPoint, etc. is fine and even encouraged. Whatever it takes to communicate effectively Remember that documentation also needs quality control

Information hiding principle, motivation A fundamental cost in software engineering is accommodating change A change that requires modifying multiple modules is more costly than a change that is isolated in a single module Therefore –Anticipate likely changes –Define interfaces that capture the stable aspects and implementations that capture the changeable aspects

Small examples double sqrt (int) Can be implemented using bisection methods, factoring methods, Newton’s method The client doesn’t care, and this can change (requiring only relinking—and not even that for some dynamic linking systems) Very low level example, of course An historical aside: what was the original goal of procedures (with parameters) –Most people answer, “For this kind of abstraction, of course!” –It’s not true: the original goal was to save memory, which was the most precious resource

Another simple example type intSet is intSet create(); insert(intSet,int); delete(intSet,int); bool member(intSet,int); int size(intSet); end intSet;

Hiding secrets These two examples show specific kinds of secrets that modules hide Algorithms Data representations The interfaces capture stable decisions Clients depend on these interfaces The implementations encode the changeable parts Clients do not depend on these

Interface An interface has two parts The signature: the names and type information about the exported functions The specification: a precise description of the semantics of the elements in the module Most commonly, the signature is in a programming language and the specification is in natural language But you cannot neglect the specification

Examples double sqrt (int x) { a legitimate different implementation } double sqrt (int x) { return ; } bool member (intSet s,int i) { return IsOdd(i) } Ridiculous examples, you say? Sorry, that’s not true (although these examples are indeed extreme) At the very least, many assumptions are made when interfaces are not fully defined

Design Level Information hiding is a design principle, not a coding principle Obviously, it can be reflected in code that is based on the design

Anticipating change It’s “easy” to anticipate algorithmic and representational changes But you cannot and should not do this and only this By blithely anticipating these changes, you may not think about another kind of change that is more likely and potentially costly In general, you cannot build a design that effectively anticipates all changes –A standard (albeit weak) analogy is that you can’t make everything in a car engine easily accessible –It’s expensive to replace a clutch not because it’s inherently hard, but rather because you have to yank out lots of the engine to get it –This is intelligent design, because clutches tend to last a long time, so making them expensive to replace is OK –Making it expensive to replace an oil filter would not be sensible

Data isn’t always abstracted Unix byte streams are pervasive Imagine trying to change Unix’s data model from byte streams to fixed width records good or bad decision?

Other kinds of secrets An information hiding module can hide other secrets Characteristics of a hardware device Ex: whether an on-line thermometer measures in Fahrenheit or Centigrade Where information is acquired Ex: the Metacrawler ( ) might hide what other web search engines it uses Other examples?

The classic decomposition Top-down functional decomposition Stepwise refinement Based on the steps the actual computation will take

The data decomposition Not based on the actual computation steps Hides decisions about data representation Could they be hidden in the previous decomposition? Hides decisions about the granularity of sorting The “sequence” relationship is hazy

Next time Project Management