R R R Program Families CSE870 Discussion April 14, 2003.

Slides:



Advertisements
Similar presentations
Outline 1 Introduction 2 Base Classes and Derived Classes 3 protected Members 4 Relationship between Base Classes and Derived Classes 5 Case Study: Three-Level.
Advertisements

Framework is l Reusable Code, often domain specific (GUI, Net, Web, etc) l expressed as l a set of classes and l the way objects in those classes collaborate.
The Z Specification Language
The Bridge Pattern.. Intent Decouple an abstraction from its implementation so that the two can vary independently Also known as: Handle/Body.
Chapter 14: Design Method --- data and architectural design Design -- A multistep process in which representations of data structure, program structure,
1 IBM SanFrancisco Product Evaluation Negotiated Option Presentation By Les Beckford May 2001.
Software Architecture Design Instructor: Dr. Jerry Gao.
Design The goal is to design a modular solution, using the techniques of: Decomposition Abstraction Encapsulation In Object Oriented Programming this is.
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.
1 Computer Systems & Architecture Lesson 1 1. The Architecture Business Cycle.
On the Design and Development of Program Families Roy Mammen Jerry Cheng Sharan Mudgal Doug Paida.
Chapter 22 Object-Oriented Design
1 An introduction to design patterns Based on material produced by John Vlissides and Douglas C. Schmidt.
Software Life Cycle Model
Software Product Line Architectures (SPLA) Nipun Shah
03 - ParnasCSC4071 A Sketchy Evolution of Software Design 1960s –Structured Programming (“Goto Considered Harmful”, E.W.Dijkstra) Emerged from considerations.
Architectural Design.
Chapter 10 Architectural Design
Software Engineering Muhammad Fahad Khan
On the Development of Program Families D. L. Parnas Presentation by Sagnik Bhattacharya Siddharth Dalal.
Software Engineering CS B Prof. George Heineman.
Design Patterns OOD. Course topics Design Principles UML –Class Diagrams –Sequence Diagrams Design Patterns C#,.NET (all the course examples) Design Principles.
SWE 316: Software Design and Architecture – Dr. Khalid Aljasser Objectives Lecture 11 : Frameworks SWE 316: Software Design and Architecture  To understand.
© 2007 Pearson Education, Inc. Publishing as Pearson Addison-Wesley 1 A Discipline of Software Design.
INT-Evry (Masters IT– Soft Eng)IntegrationTesting.1 (OO) Integration Testing What: Integration testing is a phase of software testing in which.
©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 10Slide 1 Architectural Design l Establishing the overall structure of a software system.
CSC 395 – Software Engineering Lecture 12: Reusability –or– Programming was Bjarne Again.
SOFTWARE DESIGN.
Sommerville, Mejia-Alvarez, 2009Software Engineering, Slide 1 Software Design u Deriving a solution which satisfies software requirements.
SOFTWARE ENGINEERING MCS-2 LECTURE # 3. SOFTWARE PROCESS  A software development process, also known as a software development life- cycle (SDLC), is.
CSE 219 Computer Science III Program Design Principles.
Large Scale Software Systems Derived from Dr. Fawcett’s Notes Phil Pratt-Szeliga Fall 2010.
1 Life Cycle of Software Specification Design –Risk Analysis –Verification Coding Testing –Refining –Production Maintenance.
L8 - March 28, 2006copyright Thomas Pole , all rights reserved 1 Lecture 8: Software Asset Management and Text Ch. 5: Software Factories, (Review)
Design Concepts and Principles Instructor: Dr. Jerry Gao.
Review of Software Process Models Review Class 1 Software Process Models CEN 4021 Class 2 – 01/12.
Chapter 8 Object Design Reuse and Patterns. Object Design Object design is the process of adding details to the requirements analysis and making implementation.
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.
Developed by Reneta Barneva, SUNY Fredonia Software Design and Software Engineering.
Introduction to Software Development (Software Engineering - I)
Chapter 6 – Architectural Design Lecture 1 1Chapter 6 Architectural design.
1 Software Engineering: A Practitioner’s Approach, 6/e Chapter 10a: Architectural Design Software Engineering: A Practitioner’s Approach, 6/e Chapter 10a:
CSC480 Software Engineering Lecture 10 September 25, 2002.
Lecture 2 Intro. To Software Engineering and Object-Oriented Programming (1/2)
On the design and development of program families Presented by: M. Deng and J. Zhang 4/15/2002 CSE870 Advanced Software Engineering, Spring 2002.
Design Reuse Earlier we have covered the re-usable Architectural Styles as design patterns for High-Level Design. At mid-level and low-level, design patterns.
Software Engineering and Object-Oriented Design Topics: Solutions Modules Key Programming Issues Development Methods Object-Oriented Principles.
Chapter 7 Implementation. Implementation Approaches F Big bang –Code entire system and test in an unstructured manner F Top-down –Start by implementing.
CHAPTER 3 MODELING COMPONENT-LEVEL DESIGN.
©Ian Sommerville 2006Software Engineering, 8th edition. Chapter 4 Slide 1 Software Processes.
Software Model Process
Lecture 2: Review of Object Orientation. © Lethbridge/La ganière 2005 Chapter 2: Review of Object Orientation What is Object Orientation? Procedural.
Lesson 1 1 LESSON 1 l Background information l Introduction to Java Introduction and a Taste of Java.
Banaras Hindu University. A Course on Software Reuse by Design Patterns and Frameworks.
Basic Concepts and Definitions
Lecture 2 Intro. To Software Engineering and Object-Oriented Programming (1/2)
DESIGN PROCESS AND CONCEPTS. Design process s/w design is an iterative process through which requirements are translated into a “blueprint” for constructing.
Unit 1 - Introducing Abstract Data Type (ADT) Part 1.
Software Engineering Salihu Ibrahim Dasuki (PhD) CSC102 INTRODUCTION TO COMPUTER SCIENCE.
Lecture 3 Prescriptive Process Models
CHAPTER 5 GENERAL OOP CONCEPTS.
Object oriented system development life cycle
CHAPTER 2 CREATING AN ARCHITECTURAL DESIGN.
Component Frameworks:
CSSSPEC6 SOFTWARE DEVELOPMENT WITH QUALITY ASSURANCE
Component-based Software Engineering
Design for Ease in Contraction and Extension
Design Model Like a Pyramid Component Level Design i n t e r f a c d s
Design Tips.
Presentation transcript:

R R R Program Families CSE870 Discussion April 14, 2003

R R R Family of Programs Grouping/finding COMMON functionality Reuse of designs/code across family members “Pushing design decisions as late as possible”

R R R 3 Approaches Classical Sequential : –Develop specific program completely –Subsequent programs are derived from original program –Identify specific points to be changed –Complete design process BEFORE making changes for other family members

R R R Stepwise Refinement Top-down approach –Start with abstract designs –Refine each point until you reach concrete functionality Partial design Intermediate points can have deviations –Intermediate points may not be implemented Programming for change –Keep intermediate nodes flexible Pattern Usage: Strategy, Template Tree Shape: Long and skinny

R R R Stepwise Refinement Advantages: –No extra cost: no extra specifications –Because you reverse design decisions, you can still reuse all of the ancestors prior to that intermediate point –Clean development cycle: Top-down advantages: narrowing the implementation space; no synthesis problem Disadvantages –Early decisions: have to make many design decisions early in the process –Changes to the ancestor tree can have major impact on more of the final designs –Narrow family: variation among family members may be quite small

R R R Module Specification Basic idea: Decompose functionality into modules Module: –Collection of functions to perform specific service –interface (group together collection of operations/data into one entity) Approach: –Bottom clustering of functionality into modules –Intermediate stage is a module specification Can be realized by “body implementations” for specification Module specification is not part of final program code for any family member Tree Shape: –Broader: delay design decisions until very late in process

R R R Module Specification Advantages: –More choices early (I.e., delay design decisions) –Gain independence among module implementations Parallel development –Information Hiding (via specifications) –Exploits OO properties (modularity, encapsulation, reuse, abstraction, etc.) –Documentation (via specifications) –Intermediate node: comprise multiple module specifications, thus allowing for choice among the modules for final functionality.

R R R Module Specification Disadvantages: –Cost: of developing specifications Overhead in initial specification – each functionality must be specified (well- understood) –More difficult: abstract the services/data across many possible designs/implementation –Requires “master” programmer experience

R R R When to use Module specification: –Use to specify services and abstract data types without commitments to design Use stepwise refinement for the parts that you have a clear understanding of a majority of the design

R R R Applications of Program Families Operating Systems : different versions Web browsers: across vendors and within vendor Wysiwig vs command-line editors Product-line engineering –Domain analysis/engineering

R R R Frameworks: Customize frameworks to achieve program families Module Specification: Whitebox: –Delaying design decisions until late, designer implement as appropriate Stepwise Refinement: Graybox: –Design structure is already known –At intermediate node, you can branch to a different decision, but you don’t need to backtrack to previous design decisions.