On the Development of Program Families D. L. Parnas Presentation by Sagnik Bhattacharya Siddharth Dalal.

Slides:



Advertisements
Similar presentations
Systems Analysis, Prototyping and Iteration Systems Analysis.
Advertisements

Designing and Developing Decision Support Systems Chapter 4.
The software process A software process is a set of activities and associated results which lead to the production of a software product. This may involve.
Chapter 12 Systems Development Three common methods for MIS development: The systems development life cycle (SDLC) Prototyping End-user development Five.
Alternate Software Development Methodologies
Chapter 14 Systems Development. Agenda Reasons for Change System Development Life Cycle (SDLC) Prototyping Rapid Application Development (RAD) Object.
Presented by: Hatem Halaoui
R R R Program Families CSE870 Discussion April 14, 2003.
Software Testing. “Software and Cathedrals are much the same: First we build them, then we pray!!!” -Sam Redwine, Jr.
On the Design and Development of Program Families Roy Mammen Jerry Cheng Sharan Mudgal Doug Paida.
03 - ParnasCSC4071 A Sketchy Evolution of Software Design 1960s –Structured Programming (“Goto Considered Harmful”, E.W.Dijkstra) Emerged from considerations.
SYSTEM ANALYSIS AND DESIGN
Introduction to Systems Analysis and Design Trisha Cummings.
Systems Analysis – Analyzing Requirements.  Analyzing requirement stage identifies user information needs and new systems requirements  IS dev team.
1 Shawlands Academy Higher Computing Software Development Unit.
المحاضرة الثالثة. Software Requirements Topics covered Functional and non-functional requirements User requirements System requirements Interface specification.
An Introduction to Software Architecture
CS 360 Lecture 3.  The software process is a structured set of activities required to develop a software system.  Fundamental Assumption:  Good software.
Chapter 8 – Software Testing Lecture 1 1Chapter 8 Software testing The bearing of a child takes nine months, no matter how many women are assigned. Many.
 Explain the role of a system analyst.  Identify the important parts of SRS document.  Identify the important problems that an organization would face.
Intro to Architecture – Page 1 of 22CSCI 4717 – Computer Architecture CSCI 4717/5717 Computer Architecture Topic: Introduction Reading: Chapter 1.
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.
11 Chapter 11 Object-Oriented Databases Database Systems: Design, Implementation, and Management 4th Edition Peter Rob & Carlos Coronel.
Dr. Tom WayCSC Testing and Test-Driven Development CSC 4700 Software Engineering Based on Sommerville slides.
David Weiss Software Product-Line Engineering: A Family-Based Software Development Process: Designing The Family David Weiss
Systems Life Cycle A2 Module Heathcote Ch.38.
Historical Aspects Origin of software engineering –NATO study group coined the term in 1967 Software crisis –Low quality, schedule delay, and cost overrun.
Systems Analysis and Design in a Changing World, Fourth Edition
Cmpe 589 Spring 2006 Lecture 2. Software Engineering Definition –A strategy for producing high quality software.
The Software Development Process
Introduction to Software Development (Software Engineering - I)
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.
Chapter 6 CASE Tools Software Engineering Chapter 6-- CASE TOOLS
Chapter 8 Lecture 1 Software Testing. Program testing Testing is intended to show that a program does what it is intended to do and to discover program.
Data Structures and Algorithms Dr. Tehseen Zia Assistant Professor Dept. Computer Science and IT University of Sargodha Lecture 1.
Collections Data structures in Java. OBJECTIVE “ WHEN TO USE WHICH DATA STRUCTURE ” D e b u g.
Software Engineering1  Verification: The software should conform to its specification  Validation: The software should do what the user really requires.
Click to add text Systems Analysis, Prototyping and Iteration.
Designing Abstract Interfaces for Device Independency Designing Abstract Interfaces for Device Independency Review of A Procedure for Designing Abstract.
Chapter 5 How are software packages developed?. What are the main steps in software project development? Writing Specifications - Analysis Phase Developing.
Chapter 1: Introduction Omar Meqdadi SE 3860 Lecture 1 Department of Computer Science and Software Engineering University of Wisconsin-Platteville.
1 The Software Development Process ► Systems analysis ► Systems design ► Implementation ► Testing ► Documentation ► Evaluation ► Maintenance.
Problem-solving with Computers. 2Outline  Computer System  5 Steps for producing a computer program  Structured program and programming  3 types of.
CERN IT Department CH-1211 Genève 23 Switzerland t Migration from ELFMs to Agile Infrastructure CERN, IT Department.
Software Development Process CS 360 Lecture 3. Software Process The software process is a structured set of activities required to develop a software.
Lecturer: Eng. Mohamed Adam Isak PH.D Researcher in CS M.Sc. and B.Sc. of Information Technology Engineering, Lecturer in University of Somalia and Mogadishu.
Software Design and Development Development Methodoligies Computing Science.
Software Testing and Quality Assurance Practical Considerations (1) 1.
MANAGEMENT INFORMATION SYSTEM
CIS 365: Visual Application Development Introduction to Computers and Programming.
Advanced Higher Computing Science
Unit 6 Application Design KLB Assignment.
Software Testing.
ICS 3UI - Introduction to Computer Science
Tools Of Structured Analysis
Algorithms and Problem Solving
SOFTWARE DESIGN AND ARCHITECTURE
System Design and Modeling
Chapter 8 – Software Testing
System Design.
Classical Waterfall Model
Life Cycle Models PPT By :Dr. R. Mall.
Designing Software for Ease of Extension and Contraction
Problem Solving Techniques
Chapter 5 Designing the Architecture Shari L. Pfleeger Joanne M. Atlee
Software life cycle models
On the Design and Development of Program Families
An Introduction to Software Architecture
CS310 Software Engineering Dr.Doaa Sami Khafaga
Chapter 7 Software Testing.
Presentation transcript:

On the Development of Program Families D. L. Parnas Presentation by Sagnik Bhattacharya Siddharth Dalal

Overview Families – sets of programs having extensive common properties, better to study than individual programs Methods – sequential development, stepwise refinement, module specification Comparison of new methods and their complementary advantages -A bug in the code is worth two in the documentation.

Introduction Example Program Families OS Versions Similar to hardware families Traditional Methods – Single Program Comparison of programming techniques in suitability to develop families -Adding manpower to a late software project makes it later.

Why Families Versions for different applications, different hardware Improvement Difficult non-trivial problem so need methods/tools geared towards design of families -Alpha. Software undergoes alpha testing as a first step in getting user feedback. Alpha is Latin for "doesn't work."

Classical Method Sequential Completion – Think like a computer Family members are derived from complete programs Descendants may share undesirable characteristics of ancestors Any program that runs right is obsolete.

Example: Sorting First, we decide to use Bubble sort : 1. Read the list. 2. while not at end of list 3. compare adjacent elements 4. if second is greater than first 5. switch them 6. get next two elements 7. if at least one switch takes place 8. repeat for entire list 9. Output the sorted list.

Example: Sorting If we decide to use Insertion sort : 1. Read the list. 2. while not at end of list 3. compare adjacent elements 4. if second is greater than first 5. switch them 6. get next two elements 7. if at least one switch takes place 8. repeat for entire list 9. Output the sorted list.

Example: Sorting If we decide to use Insertion sort : 1. Read the list. 2. i = 0; 3. while not at end of list 4. find i th smallest element and put in i th position 5. repeat for entire list 6. Output the sorted list.

New Techniques Older version may not be ancestor of newer ones Common design decisions taken early Subfamilies can be developed in parallel -Bug? That's not a bug, that's a feature.

Classical vs. New (’76 new) Intermediate stages not well defined Intermediate stages are completely specified Earliest common ancestor is a complete program Unlikely to be the case Intermediate stages are non-deliverable Intermediate stages, though incomplete can be offered as a contribution -Computers can never replace human stupidity.

Stepwise Refinement (SR) Intermediate stages are programs which are complete except for the definition of certain operators and operand types Design decision = refinement step Possible solutions = leaves = families -Beta. Software undergoes beta testing shortly before it's released. Beta is Latin for "still doesn't work."

Example: Sorting Step 1: 1. Read unsorted list 2. Sort the list 3. Output sorted list. Step 2: 2a. Scan through list 2b. Perform sorting ops. Step 2: 2a. Divide into 2 sublists. 2b. Sort sublists. 2c. Merge sublists Bubble sort Insertion sort Merge sort

Module Specification (MS) Intermediate stages are specifications of externally visible collective behavior of program groups called modules Decisions which cannot be common properties are identified and a module is designed to hide the decision -My software never has bugs. It just develops random features.

Example: Sorting Modules : List storage Input Sorting module Output Master Control

How MSs Define a Family Implementation methods used within modules Create family members by further sub-modules or stepwise refinement Variation in external parameters Family of specifications for different parameters Use of subsets Programs consisting of a subset of programs described by the set of module specs e.g. OS versions like Win2k pro/server/advanced server -Computer and car salesmen differ in that the latter know when they are lying.

Example: Chess By Stepwise Refinement 1. Input: Current State of board 2. Select Next Move 3. Change State of Board -Computer analyst to programmer: "You start coding. I'll go find out what they want."

Example: Chess By Stepwise Refinement 1. Input: Current State of board Look ahead n positions (20 billion positions in 3 mins if you’re the 1997 Deep Blue) Select best position 3. Change State of Board -Computer analyst to programmer: "You start coding. I'll go find out what they want."

Example: Chess By Module Specification 1. List Design Decisions a. Internal representation of board b. Chess playing module c. Master Control module 2. Hide Design Decisions a. Chess playing algorithm etc. -Computers are unreliable, but humans are even more unreliable.

Comparison MS – broader family because design decisions are hidden and can be changed SR – Bound by decisions and so narrower family MS – greater effort – perfect module interface specs required – grants the flexibility to change design decisions later -Build a system that even a fool can use, and only a fool will use it.

Issues for discussion Cost Reusability Effort Size of software Testing

Families vs. System Generators MS and SR are not intended to replace system generators. These methods can simplify a generator’s work. However, a simulator program would not be efficient. -Failure is not an option, it comes bundled with the software.

Which to Use? Two methods not equivalent or contradictory, but complementary SR – make sequencing decisions early MS – sequencing decisions???? Effort – MS>SR – large/small family Hybrid method? -Hardware: The parts of a computer system that can be kicked.

Conclusion One cannot conclude that modularization is better than stepwise refinement. Lack of evaluation methods. Modular specification implies more cost, but permits production of a broader program family. -It's not a bug; it's an undocumented feature

Tools SEI Product Line Initiative – FAST - /it14.pdf /it14.pdf RAD Tools Version Control? LEX, YACC????

Links N. Wirth, Program Development by Stepwise Refinement – -Beware of Programmers who carry screwdrivers.

“... program structure should be such as to anticipate its adaptations and modifications. Our program should not only reflect (by structure) our understanding of it, but it should also be clear from its structure what sort of adaptations can be catered for smoothly.Thank goodness the two requirements go hand in hand.” Djikstra -Don't document the program; program the document.