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.

Slides:



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

©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 12Slide 1 Software Design l Objectives To explain how a software design may be represented.
CIS-74 Computer Software Quality Assurance Systematic Software Testing Chapter 1: An Overview of the Testing Process.
Keeping Secrets Within a Family: Rediscovering Parnas H. Conrad Cunningham Computer & Information Science, University of Mississippi Cuihua Zhang Computer.
Alternative Software Life Cycle Models By Edward R. Corner vol. 2, chapter 8, pp Presented by: Gleyner Garden EEL6883 Software Engineering II.
Algorithms and Problem Solving-1 Algorithms and Problem Solving.
Designing Software for Ease of Extension and Contraction
1 SOFTWARE DESIGN QUALITY COHESION and COUPLING (Part I)
Algorithms and Problem Solving. Learn about problem solving skills Explore the algorithmic approach for problem solving Learn about algorithm development.
CS 501: Software Engineering
R R R Program Families CSE870 Discussion April 14, 2003.
Determining the Effectiveness of Strategies - Updating.
On the Design and Development of Program Families Roy Mammen Jerry Cheng Sharan Mudgal Doug Paida.
Object-oriented design CS 345 September 20,2002. Unavoidable Complexity Many software systems are very complex: –Many developers –Ongoing lifespan –Large.
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.
Chapter 10: Architectural Design
03 - ParnasCSC4071 A Sketchy Evolution of Software Design 1960s –Structured Programming (“Goto Considered Harmful”, E.W.Dijkstra) Emerged from considerations.
On the Development of Program Families D. L. Parnas Presentation by Sagnik Bhattacharya Siddharth Dalal.
Design Patterns OOD. Course topics Design Principles UML –Class Diagrams –Sequence Diagrams Design Patterns C#,.NET (all the course examples) Design Principles.
“Enhancing Reuse with Information Hiding” ITT Proceedings of the Workshop on Reusability in Programming, 1983 Reprinted in Software Reusability, Volume.
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University 1 Refactoring.
PROJECT MILESTONES Group Presentations: ~ 5 mins presentations.
Chapter 1: Introduction to Systems Analysis and Design
1 Hardware Support for Collective Memory Transfers in Stencil Computations George Michelogiannakis, John Shalf Computer Architecture Laboratory Lawrence.
CS 325: Software Engineering March 17, 2015 Applying Patterns (Part A) The Façade Pattern The Adapter Pattern Interfaces & Implementations The Strategy.
On the Criteria to Be Used in Decomposing Systems into Modules Team 3 Nupur Choudhary Aparna Nanjappa Mark Zeits.
SOFTWARE DESIGN (SWD) Instructor: Dr. Hany H. Ammar
CSC 395 – Software Engineering Lecture 12: Reusability –or– Programming was Bjarne Again.
SOFTWARE DESIGN.
Slide 1 Construction (Testing) Chapter 15 Alan Dennis, Barbara Wixom, and David Tegarden John Wiley & Sons, Inc. Slides by Fred Niederman Edited by Solomon.
1 Life Cycle of Software Specification Design –Risk Analysis –Verification Coding Testing –Refining –Production Maintenance.
Architectural Design Identifying system components and their interfaces.
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.
Design Concepts and Principles Instructor: Dr. Jerry Gao.
©Ian Sommerville 2006Software Engineering, 8th edition. Chapter 11 Slide 1 Design.
Design Concepts By Deepika Chaudhary.
1 What is OO Design? OO Design is a process of invention, where developers create the abstractions necessary to meet the system’s requirements OO Design.
SOFTWARE DESIGN. INTRODUCTION There are 3 distinct types of activities in design 1.External design 2.Architectural design 3.Detailed design Architectural.
Chapter 8: Aspect Oriented Programming Omar Meqdadi SE 3860 Lecture 8 Department of Computer Science and Software Engineering University of Wisconsin-Platteville.
Security Patterns Template and Tutorial - Darrell M. Kienzle, Ph.D., Matthew C. Elder, Ph.D., David S. Tyree, James Edwards-Hewitt Presented by Dan Frohlich.
On the design and development of program families Presented by: M. Deng and J. Zhang 4/15/2002 CSE870 Advanced Software Engineering, Spring 2002.
© 2006 Pearson Addison-Wesley. All rights reserved 2-1 Chapter 2 Principles of Programming & Software Engineering.
1 Software Design Lecture What’s Design It’s a representation of something that is to be built. i.e. design  implementation.
“Architecture” The outcome of top-level design, reflecting principal design decisions Can (and should) be modified and updated Analogous to 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.
Banaras Hindu University. A Course on Software Reuse by Design Patterns and Frameworks.
February 19, February 19, 2016February 19, 2016February 19, 2016 Azusa, CA Sheldon X. Liang Ph. D. Software Engineering in CS at APU Azusa Pacific.
Software Development Process CS 360 Lecture 3. Software Process The software process is a structured set of activities required to develop a software.
Design CS 470 – Software Engineering I Sheldon X. Liang, PH.D.
From Use Cases to Implementation 1. Structural and Behavioral Aspects of Collaborations  Two aspects of Collaborations Structural – specifies the static.
Class Design. Class Design The analysis phase determines what the implementation must do, and the system design.
DESIGN PROCESS AND CONCEPTS. Design process s/w design is an iterative process through which requirements are translated into a “blueprint” for constructing.
From Use Cases to Implementation 1. Mapping Requirements Directly to Design and Code  For many, if not most, of our requirements it is relatively easy.
Design Engineering 1. Analysis  Design 2 Characteristics of good design 3 The design must implement all of the explicit requirements contained in the.
Design Concepts ch-8
Algorithms and Problem Solving
Chapter 1: Introduction to Systems Analysis and Design
The Movement To Objects
CS 5150 Software Engineering
Designing Software for Ease of Extension and Contraction
Object-Oriented and Classical Software Engineering Sixth Edition, WCB/McGraw-Hill, 2005 Stephen R. Schach
On the Design and Development of Program Families
Object oriented analysis and design
Module C: Presentation The Engineering / Design Process
CSE403 Software Engineering Autumn 2000 Design (Overview)
Chapter 1: Introduction to Systems Analysis and Design
Algorithms and Problem Solving
Chapter 1: Introduction to Systems Analysis and Design
From Use Cases to Implementation
Module Structure David Parnas Discusses “modularization”
Presentation transcript:

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 1976

Ouline Problem and Motivation Overview of Contribution –Stepwise Refinement –Module Specification Example Application –Stepwise Refinement –Module Specification Impact Open Questions

Problem and Motivation Problem –Investigated production of program families –“Classical Method”: sequential completion –Each member was a full working program –Each one built from an ancestor –Each inherits the design decisions of ancestors Motivation: –Make good, common design decisions up front –Parallel development of family members

Overview of Contribution Stepwise Refinement Each member is a functioning program Successive steps add funcitonality Each step represents design decision(s) No unnecessary functionality No performance degradation Revert back to previous step

Overview of Contribution Module Specification Intermediate steps not programs Steps are specifications of collections of functionality Modules made to hide design decisions Early work designed to postpone decisions Make a wide program family possible

Overview of Contribution Module method avoids disadvantages of stepwise refinement Stepwise refinement does make design decisions - rollback can lose this The two are complementary Stepwise refinement lower complexity Module method requires more work

Example application Stepwise refinement Dijkstra’s prime problem Step 1: bestyet := null while not all.spaces considered do begin find next item from list of free spaces bestyet := bestof(bestyet,candidate) end if bestyet = null then erroraction allocate(best yet):remove(best yet)

Example application Stepwise refinement Step 2: bestyet := 0 candidate := 0 while candidate != N do begin candidate := candidate+1 bestyet := bestof(bestyet,candidate) end if bestyet = 0 then erroraction allocate(best yet) remove(best yet)

Example application Module Specification Dijkstra’s prime problem Split into information-hiding modules Modules: –Free space list –Allocation –Selection criterium

Impact Stepwise refinement is often used –Add functionality to existing software –Using modules and patterns –General strategy to developing systems Revision control systems Module specification part of OO design –Encapsulation to hide implementation –Commonly taught and used practice Module specification allowed for development of patterns

Impact Stepwise refinement and module specification complementary Can create software in stages, but using modules Complementary approaches Use strategy pattern among others to ease work

Open Questions How could the two best be combined to enhance software development? When is it a good idea to not use stepwise refinement or module specification? Does the classic approach Parnas described not have a place at all?