Designing Software for Ease of Extension and Contraction Group 1: Lisa Anthony Erik Hayes Luiza Da Silva Diana Tetelman CS575 – Software Design Fall 2001.

Slides:



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

Ch:8 Design Concepts S.W Design should have following quality attribute: Functionality Usability Reliability Performance Supportability (extensibility,
1 Information Systems Development (ISD) Systems Development Life Cycle Overview of Analysis Phase Overview of Design Phase CP2236: Information Systems.
Chapter 3: Modularization
Chapter 7 Structuring System Process Requirements
Case Tools Trisha Cummings. Our Definition of CASE  CASE is the use of computer-based support in the software development process.  A CASE tool is a.
Designing Software for Ease of Extension and Contraction Bob Hazen Tim Santucci Chris Dahn A Team One Presentation.
Software Quality Assurance Inspection by Ross Simmerman Software developers follow a method of software quality assurance and try to eliminate bugs prior.
Architecture III Uses and Process Structures 1. Outline Lecture: –Design for extension and contraction: the “uses” structure –Design for run-time separation.
Families of Software Systems Notkin: 3 of 3 lectures on change.
1 Introducing Collaboration to Single User Applications A Survey and Analysis of Recent Work by Brian Cornell For Collaborative Systems Fall 2006.
Software Design Project Phase 2 Team 1: Lisa Anthony Luiza da Silva Erik Hayes Diana Tetelman.
Designing Software for Ease of Extension and Contraction
File Systems and Databases
Marakas: Decision Support Systems, 2nd Edition © 2003, Prentice-Hall Chapter Chapter 1: Introduction to Decision Support Systems Decision Support.
Team 1 Lisa Anthony Luiza da Silva Erik Hayes Diana Tetelman.
Chapter 1 Principles of Programming and Software Engineering.
Chapter 1 Program Design
About the Presentations The presentations cover the objectives found in the opening of each chapter. All chapter objectives are listed in the beginning.
© 2006 Pearson Addison-Wesley. All rights reserved2-1 Chapter 2 Principles of Programming & Software Engineering.
Object-oriented design CS 345 September 20,2002. Unavoidable Complexity Many software systems are very complex: –Many developers –Ongoing lifespan –Large.
On the Criteria to Be Used in Decomposing Systems into Modules Group 1: Lisa Anthony, Erik Hayes, Luiza Helena da Silva, and Diana Tetelman.
Architectural Design Establishing the overall structure of a software system Objectives To introduce architectural design and to discuss its importance.
C++ fundamentals.
Chapter 7 Structuring System Process Requirements
Software Architecture for DSD The “Uses” Relation.
The chapter will address the following questions:
The Project AH Computing. Functional Requirements  What the product must do!  Examples attractive welcome screen all options available as clickable.
Essence and Accident in Software Engineering By: Mike Hastings.
Lesson 7 Guide for Software Design Description (SDD)
Designing Software for Ease of Extension and Contraction Presented by William Greenwell February 27, 2002.
1 Shawlands Academy Higher Computing Software Development Unit.
1/19 Component Design On-demand Learning Series Software Engineering of Web Application - Principles of Good Component Design Hunan University, Software.
Simple Program Design Third Edition A Step-by-Step Approach
Lecture # 06 Design Principles II
Mantychore Oct 2010 WP 7 Andrew Mackarel. Agenda 1. Scope of the WP 2. Mm distribution 3. The WP plan 4. Objectives 5. Deliverables 6. Deadlines 7. Partners.
An Introduction to Software Architecture
Eric Keller, Evan Green Princeton University PRESTO /22/08 Virtualizing the Data Plane Through Source Code Merging.
Intro to Architecture – Page 1 of 22CSCI 4717 – Computer Architecture CSCI 4717/5717 Computer Architecture Topic: Introduction Reading: Chapter 1.
INT-Evry (Masters IT– Soft Eng)IntegrationTesting.1 (OO) Integration Testing What: Integration testing is a phase of software testing in which.
File Processing - Database Overview MVNC1 DATABASE SYSTEMS Overview.
ECE450 - Software Engineering II1 ECE450 – Software Engineering II Today: Key Principles of Software Architecture and Design (I) adapted from Dave Penny’s.
Querying Large Databases Rukmini Kaushik. Purpose Research for efficient algorithms and software architectures of query engines.
Some Software Engineering Principles by D. L. Parnas Presented by Team 7: Amitkumar Dhameja Cincy Francis Rong Gu CS575 - Software Design, Team 7.
Component Technology. Challenges Facing the Software Industry Today’s applications are large & complex – time consuming to develop, difficult and costly.
David Weiss Software Product-Line Engineering: A Family-Based Software Development Process: Designing The Family David Weiss
Problem Solving using the Science of Computing MSE 2400 EaLiCaRA Spring 2015 Dr. Tom Way.
5 - 1 Copyright © 2006, The McGraw-Hill Companies, Inc. All rights reserved.
UHD::3320::CH121 DESIGN PHASE Chapter 12. UHD::3320::CH122 Design Phase Two Aspects –Actions which operate on data –Data on which actions operate Two.
Design Concepts By Deepika Chaudhary.
CS 346 – Chapter 2 OS services –OS user interface –System calls –System programs How to make an OS –Implementation –Structure –Virtual machines Commitment.
The Software Development Process
Introduction to c++ programming - object oriented programming concepts - Structured Vs OOP. Classes and objects - class definition - Objects - class scope.
Lecture 18: Object-Oriented Design
© 2006 Pearson Addison-Wesley. All rights reserved2-1 Chapter 2 Principles of Programming & Software Engineering.
1 Copyright  2001 Pao-Ann Hsiung SW HW Module Outline l Introduction l Unified HW/SW Representations l HW/SW Partitioning Techniques l Integrated HW/SW.
© 2006 Pearson Addison-Wesley. All rights reserved 2-1 Chapter 2 Principles of Programming & Software Engineering.
Chapter 7 Structuring System Process Requirements Modern Systems Analysis and Design Fourth Edition Jeffrey A. Hoffer Joey F. George Joseph S. Valacich.
Chapter 1 Basic Concepts of Operating Systems Introduction Software A program is a sequence of instructions that enables the computer to carry.
© 2005 by Prentice Hall Chapter 7 Structuring System Process Requirements Modern Systems Analysis and Design Fourth Edition Jeffrey A. Hoffer Joey F. George.
Program Design. Simple Program Design, Fourth Edition Chapter 1 2 Objectives In this chapter you will be able to: Describe the steps in the program development.
Principles of Programming & Software Engineering
The Development Process of Web Applications
On the Criteria to Be Used in Decomposing Systems into Modules
Designing Software for Ease of Extension and Contraction
Design for Ease in Contraction and Extension
Programming Logic and Design Fourth Edition, Comprehensive
An Introduction to Software Architecture
Paper by D.L Parnas And D.P.Siewiorek Prepared by Xi Chen May 16,2003
Presentation transcript:

Designing Software for Ease of Extension and Contraction Group 1: Lisa Anthony Erik Hayes Luiza Da Silva Diana Tetelman CS575 – Software Design Fall 2001 Drexel University

“Design for change” is here to stay  Idea: Software design that eases identification of working system subsets and addition of extensions is a special case of design for change, and therefore should be pursued.  How: Parnas suggests methodology that helps achieve better, more flexible design structure  Key points: Family of Programs “Uses” Relations Information Hiding Virtual Machines

Motivation Common Complaints about Software Systems:  Subset of capabilities not possible because subsets do not work on their own.  Adding a capability (no matter how simple) implies major code rewriting.  Removing a capability also implies major code rewriting.

Software As a Family of Programs  “A set of programs is considered a family if they have so much in common that it pays to study their common aspects before looking at their differences.” Parnas  Ways members of a program family can differ: Run on different hardware configurations Same functions, but different format in input/output, data structures, algorithms etc Some users may require only a subset of the services or features that other uses need => FOCUS of PAPER

Obstacles when trying to extend or shrink systems  Excessive information distribution  Chain of data-transforming components (pipe-and- filter deficiency)  Components that perform more than one function  Loops in the “Uses” Relation

Steps Toward a Better Structure  Requirements definitions: Identify subsets first; Search for minimal useful subsets and increments to the system; Include them in requirements  Information Hiding: During module definition, try to isolate changeable parts in modules and create interfaces between module and rest of system; Modules should not be aware of other module’s existence  The Virtual Machine Concept: Think module = responsibility assignment; Create set of VMs so problem can be broken into smaller parts, and subsets found more easily; Each VM must be a useful subset  Designing the “Uses” Structure (detail next slide)

Designing the “Uses” Structure  The relation “uses”: A uses B if correct execution of B is necessary for A to complete task described in its specification. “Uses” is NOT the same as “invokes” Unrestricted “usage” causes module interdependency  Criteria to be used when allowing one program to use another: A is simpler because it uses B; B is not more complex because it is not allowed to use A; There is a useful subset containing B and not A; There is no conceivable useful subset containing A but not B. “Sandwiching” technique used when criteria cannot be followed, but programs can benefit from using each other.

Family Concept “Some users may require only a subset of the services or features that other users need. These ‘less demanding’ users may demand that they not be forced to pay for the resources consumed by the unneeded features.” Parnas  Subsets & Extensions Minimal subsets of a useful nature + minimal possible increments  Develop “family” of programs, not individual one-off systems Common functionalities Share code Reduces maintenance cost

Sample Family Graph  Text editor contains most basic functionality. No frills. Can be used without the other modules, if needed.  Design each module so system can function properly with or without that module  Different subgroups of modules can define a target system Text Editor Spell Check Thesaurus Picture Objects Tables DictionaryGUI Search Word Count

Example System Specification: Text Editor  Display and edit text Copy/Cut/Paste Select Add/Remove  Spell-check text Using Dictionary database Words/Definitions Correction suggestion heuristics

Design and Decomposition Decisions  Determine module “secrets” - items most likely to change Separate/isolate them in modules Information hiding/encapsulation  Some modules should interact via a “bland” intermodule interface Doesn’t give away details of implementation Doesn’t reveal any internal design decisions  Apply Virtual Machine approach when possible Input and output Data representation

Design Decisions for Example Systems  Parnas’ design decision suggestions may not be detailed enough for today’s complex systems.  Any suggestions from the class about what design and decomposition decisions could be made?  Use Text Editor as example system

High-Level Modules and Their Secrets  Main Text Editor module Representation of text Editing methods  Spell-checker module Searching/checking algorithm Heuristics for Correction Suggestions  Dictionary module Arrangement of records Language

Text Editor: High Level Decomposition Text Editor _______________ Char[] textBuffer _______________ WriteBuffer() ReadBuffer() Spellchecker __________________ spellWord() correctWord() suggestWord() GenericDictionary __________________ getWord() getDefinition() compareWord() SpellingDictionary __________________ getWord() compareWord()

Low-Level Modules Text Editor Base system, bare-bones functionality Input/Output modules (through interfaces) Input/output format OS specific calls Selection Module Text selection mechanism Editing Module Text manipulation (cut/copy/paste operations) File Handling (through interface) File manipulation (open/close/save operations)

Text Editor: Lower Level Decomposition Text Editor _______________ Char[] textBuffer _______________ WriteBuffer() ReadBuffer() > Output WindowsOutput _______________ toFront() toBack() > Input WindowsInput _______________ getChar() > FileStream WindowsFileStream __________________ fileOpen() fileClose() Editing __________________ cutText() copyText() pasteText() Selection __________________ selectText() deselectText()

“Uses” Hierarchy  NO LOOPS in the “uses” hierarchy!  Avoid module coupling when possible to ease contraction and extension.  Parnas’ “uses” relation diagram too detailed. Need only show class level “uses” relations.  Weighted “uses” diagrams more interesting for today’s OO systems.

“Uses” Relation Diagram for Text Editor System Text Editor WindowsOutputWindowsInputWindowsFileStreamEditing Selection Spellchecker GenericDictionary SpellingDictionary

Summary & Conclusions  Early subset identification Meet variety of needs Handle scheduling problems  Use of the virtual machine Extensible Removable

Summary Continued  Generality vs. flexibility General implies variable use Run-time cost Easier maintenance (single version) Flexible implies ease of change Design-time cost Multiple versions

Summary Still Continued  Modules, subprograms, and levels Modules encompass several subprograms Unit of change Modules can form abstractions without forming levels Programs within modules can span levels of the “uses” hierarchy

Summary Continued Again  Avoiding duplication Given proper use of “structured” programming  Allow for subsets and extensions Provide convenience without extra cost No development of support software  Consider design vs. run-time trade-offs at later point in time

Summary Finally Continued  Value of a design model Allows consistent development More design in less time