Designing Software for Ease of Extension and Contraction

Slides:



Advertisements
Similar presentations
Computer Architecture
Advertisements

Ch:8 Design Concepts S.W Design should have following quality attribute: Functionality Usability Reliability Performance Supportability (extensibility,
A reconfigurable system featuring dynamically extensible embedded microprocessor, FPGA, and customizable I/O Borgatti, M. Lertora, F. Foret, B. Cali, L.
Extensibility, Safety and Performance in the SPIN Operating System Presented by Allen Kerr.
Keeping Secrets Within a Family: Rediscovering Parnas H. Conrad Cunningham Computer & Information Science, University of Mississippi Cuihua Zhang Computer.
Traditional Approach to Design
Chapter 10 The Traditional Approach to Design
Designing Software for Ease of Extension and Contraction Bob Hazen Tim Santucci Chris Dahn A Team One Presentation.
Families of Software Systems Notkin: 3 of 3 lectures on change.
Component-Level Design
Design Principles Overview Principles Least Privilege Fail-Safe Defaults Economy of Mechanism Complete Mediation Open Design Separation of Privilege Least.
Design The goal is to design a modular solution, using the techniques of: Decomposition Abstraction Encapsulation In Object Oriented Programming this is.
Team 1 Lisa Anthony Luiza da Silva Erik Hayes Diana Tetelman.
Outline Chapter 1 Hardware, Software, Programming, Web surfing, … Chapter Goals –Describe the layers of a computer system –Describe the concept.
© 2006 Pearson Addison-Wesley. All rights reserved2-1 Chapter 2 Principles of Programming & Software Engineering.
On the Design and Development of Program Families David Parnas Presented by Gregory Brown IEEE Transactions on Software Engineering, VOL SE-2, NO. 1, March.
Designing Software for Ease of Extension and Contraction Group 1: Lisa Anthony Erik Hayes Luiza Da Silva Diana Tetelman CS575 – Software Design Fall 2001.
The Modular Structure of Complex Systems D.L. Parnas, P.C. Clement, and D.M. Weiss Published in IEEE Transactions on Software Engineering, March 1985 Presented.
Introduction to Software Design Chapter 1. Chapter 1: Introduction to Software Design2 Chapter Objectives To become familiar with the software challenge.
1 A Introduction to Data Structures and Algorithm Analysis Data Structures Asst. Professor Kiran Soni.
03 - ParnasCSC4071 A Sketchy Evolution of Software Design 1960s –Structured Programming (“Goto Considered Harmful”, E.W.Dijkstra) Emerged from considerations.
Software Architecture for DSD The “Uses” Relation.
Advances in Language Design
INFO415 Approaches to System Development: Part 2
Designing Software for Ease of Extension and Contraction Presented by William Greenwell February 27, 2002.
“Enhancing Reuse with Information Hiding” ITT Proceedings of the Workshop on Reusability in Programming, 1983 Reprinted in Software Reusability, Volume.
Chapter I: Introduction to Computer Science. Computer: is a machine that accepts input data, processes the data and creates output data. This is a specific-purpose.
Software Engineering General architecture. Architectural components:  Program organisation overview Major building blocks in a system Definition of each.
©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 10Slide 1 Architectural Design l Establishing the overall structure of a software system.
On the Criteria to Be Used in Decomposing Systems into Modules Team 3 Nupur Choudhary Aparna Nanjappa Mark Zeits.
Chapter 9 Moving to Design
ECE450 - Software Engineering II1 ECE450 – Software Engineering II Today: Key Principles of Software Architecture and Design (I) adapted from Dave Penny’s.
A Unifying Approach to the Design of a Secure Database Operating System Written By: David L. Spooner Ehud Gudes.
David Weiss Software Product-Line Engineering: A Family-Based Software Development Process: Designing The Family David Weiss
1 ISA&D7‏/8‏/ ISA&D7‏/8‏/2013 Methodologies of the SDLC Traditional Approach to SDLC Object-Oriented Approach to SDLC CASE Tools.
Software Development. Software Developers Refresher A person or organization that designs software and writes the programs. Software development is the.
Chapter 1 Computer Systems. Why study Computer Architecture? Examples Web Browsing - how does the browser access pages from a server? How can we create.
1 The Modular Structure of Complex Systems Presented by: SeyedMasoud Sadjadi and Wei Zhu David L. Parnas, Paul C. Clement, and David M. Weiss ICSE 1984.
Software Development Life Cycle by A.Surasit Samaisut Copyrights : All Rights Reserved.
ECE450S – Software Engineering II
Construction Planning and Prerequisite
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.
© 2006 Pearson Addison-Wesley. All rights reserved 2-1 Chapter 2 Principles of Programming & Software Engineering.
HNDIT23082 Lecture 06:Software Maintenance. Reasons for changes Errors in the existing system Changes in requirements Technological advances Legislation.
Stephenson College DP 98 1 Design Patterns by Derek Peacock.
Designing Abstract Interfaces for Device Independency Designing Abstract Interfaces for Device Independency Review of A Procedure for Designing Abstract.
Review of Parnas’ Criteria for Decomposing Systems into Modules Zheng Wang, Yuan Zhang Michigan State University 04/19/2002.
Data Structure Introduction Dr. Bernard Chen Ph.D. University of Central Arkansas Fall 2010.
“Architecture” The outcome of top-level design, reflecting principal design decisions Can (and should) be modified and updated Analogous to architecture.
1 CEN 4020 Software Engineering PPT4: Requirement analysis.
Lecture #1: Introduction to Algorithms and Problem Solving Dr. Hmood Al-Dossari King Saud University Department of Computer Science 6 February 2012.
7.1 Operating Systems. 7.2 A computer is a system composed of two major components: hardware and software. Computer hardware is the physical equipment.
Model Based Systems Engineering Visualization Steven Corns Missouri University of Science & Technology.
1 Advanced Software Architecture Muhammad Bilal Bashir PhD Scholar (Computer Science) Mohammad Ali Jinnah University.
Wrap up. Structures and views Quality attribute scenarios Achieving quality attributes via tactics Architectural pattern and styles.
Chapter I: Introduction to Computer Science. Computer: is a machine that accepts input data, processes the data and creates output data. This is a specific-purpose.
COMPUTER ORGANIZATION & ASSEMBLY LANGUAGE
On the Criteria to Be Used in Decomposing Systems into Modules
System Design.
Designing Software for Ease of Extension and Contraction
Design for Ease in Contraction and Extension
Component-Level Design
On the Criteria To Be Used in Decomposing Systems into Modules
On the Criteria To Be Used in Decomposing Systems into Modules D. L
Chapter 1 Introduction.
Paper by D.L Parnas And D.P.Siewiorek Prepared by Xi Chen May 16,2003
Applying Use Cases (Chapters 25,26)
Applying Use Cases (Chapters 25,26)
Course Outline for Computer Architecture
Overview of Computer system
Presentation transcript:

Designing Software for Ease of Extension and Contraction David Parnas Presented by Kayra Hopkins IEEE Transactions on Software Engineering, Vol. , No. 1, March 1979 pp. 128-138.

Presentation Outline Problem Motivation Observations Contribution Example Impact Questions

Problem and Motivation How can we design software so that is is easily extended and contracted? Motivation Complaints that most software systems as commonly/intuitively designed are not flexible. Changes require a lot of code rewriting

Overview of Contribution Observations Recognizing how the lack of Subsets and extensions manifests itself The Technique: Steps towards a better structure

Observations A software solution isn’t a single program Software as a family of programs Change is inevitable So why not anticipate it with preparation?

How the lack of subsets and extensions manifests itself Excessive Information Distribution A Chain of Data Transforming Components Components That Perform More Than One Task Loops in “Uses” Relation

Steps towards a better structure Identify Subsets first Solves problem of components with more than one function Makes system more flexible to change Information Hiding: Define Interfaces and Modules Solves problem of excessive information distribution Virtual Machine Concept Addresses chain of data problem Design the “Uses” Structure Eliminates loops in the “uses” relation

Steps towards a better structure(2) Design the “Uses” Structure Program A “uses” program B if function of A depends on correct implementation of B. Structure has hierarchy. Consequences A is simpler because it uses B. B doesn’t use A, so it doesn’t increase its complexity. There exists a useful subset containing B and not A. There isn’t a practical subset containing A but not B.

Example: Address Processing Subsystem Assumptions: Specific address information is to be processed Input formats are subject to change. Likewise with output formats. For each system the format for input and output may be done in one of three ways. Representations of address may be different for each system. Only a subset of the addresses are needed in main memory at any given time.

An Address Processing Subsystem Design Decisions Input and Output will be table driven Representations of addresses in core will be the “secret” of an address storage module(ASM) When the number of addresses to be stored exceeds the capacity of ASM, programs will use an address file module (AFM) Implementation of AFM will use ASM as a submodule along with a block file module (BFM)

An Address Processing Subsystem Component Programs Address Input Module Address Output Module Address Storage Module Block File Module Address File Module

An Address Processing Subsystem Uses Relation

Impact Modern Programming Languages Class Diagrams More Flexibility!

Open Questions What is a universal message that we can take away from this problem? Could planning for change not be cost-effective?/Is there ever a situation that you would not want to plan for change? Should this technique be modified for today’s problems and applications? If so, how?