Designing Software for Ease of Extension and Contraction

Slides:



Advertisements
Similar presentations
Integration of MBSE and Virtual Engineering for Detailed Design
Advertisements

Ch:8 Design Concepts S.W Design should have following quality attribute: Functionality Usability Reliability Performance Supportability (extensibility,
A Brief Introduction to Software Design and Design Quality By Laura Leventhal.
Software Architecture Design Instructor: Dr. Jerry Gao.
Designing Software for Ease of Extension and Contraction
1 SYSTEM and MODULE DESIGN Elements and Definitions.
Design Patterns CS is not simply about programming
Chapter 1 Principles of Programming and Software Engineering.
© 2006 Pearson Addison-Wesley. All rights reserved2-1 Chapter 2 Principles of Programming & Software Engineering.
Designing Software for Ease of Extension and Contraction Group 1: Lisa Anthony Erik Hayes Luiza Da Silva Diana Tetelman CS575 – Software Design Fall 2001.
1 FM Overview of Adaptation. 2 FM RAPIDware: Component-Based Design of Adaptive and Dependable Middleware Project Investigators: Philip McKinley, Kurt.
System Engineering Instructor: Dr. Jerry Gao. System Engineering Jerry Gao, Ph.D. Jan System Engineering Hierarchy - System Modeling - Information.
Introduction to Software Design Chapter 1. Chapter 1: Introduction to Software Design2 Chapter Objectives To become familiar with the software challenge.
1 An introduction to design patterns Based on material produced by John Vlissides and Douglas C. Schmidt.
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.
Data Structures and Programming.  John Edgar2.
The Re-engineering and Reuse of Software
Software Architecture for DSD The “Uses” Relation.
1 Introduction Chapter 1. 2 Key Ideas Many failed systems were abandoned because analysts tried to build wonderful systems without understanding the organization.
Designing Software for Ease of Extension and Contraction Presented by William Greenwell February 27, 2002.
Chapter 2 The process Process, Methods, and Tools
Software Engineering CS B Prof. George Heineman.
1/19 Component Design On-demand Learning Series Software Engineering of Web Application - Principles of Good Component Design Hunan University, Software.
“Enhancing Reuse with Information Hiding” ITT Proceedings of the Workshop on Reusability in Programming, 1983 Reprinted in Software Reusability, Volume.
CSE 303 – Software Design and Architecture
The Architecture Business Cycle. Software Architecture Definition The software architecture of a program or computing system is the structure or structures.
Ceg860 (Prasad)L6MR1 Modularity Extendibility Reusability.
CS 360 Lecture 3.  The software process is a structured set of activities required to develop a software system.  Fundamental Assumption:  Good software.
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.
Composing Adaptive Software Authors Philip K. McKinley, Seyed Masoud Sadjadi, Eric P. Kasten, Betty H.C. Cheng Presented by Ana Rodriguez June 21, 2006.
SOFTWARE DESIGN.
David Weiss Software Product-Line Engineering: A Family-Based Software Development Process: Designing The Family David Weiss
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.
Chapter 8 Object Design Reuse and Patterns. Object Design Object design is the process of adding details to the requirements analysis and making implementation.
Lyra – A service-oriented and component-based method for the development of communicating systems (by Sari Leppänen, Nokia/NRC) Traditionally, the design,
Views of Data Data – nouns of programming world the objects that are manipulated information that is processed Humans like to group information Classes,
Data Structures and Algorithms Dr. Tehseen Zia Assistant Professor Dept. Computer Science and IT University of Sargodha Lecture 1.
MDD approach for the Design of Context-Aware Applications.
© 2006 Pearson Addison-Wesley. All rights reserved2-1 Chapter 2 Principles of Programming & Software Engineering.
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.
CS 1120: Computer Science II Software Life Cycle Slides courtesy of: Prof. Ajay Gupta and Prof. James Yang (format and other minor modifications by by.
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 Design and Implementation. Definitions Atomic or primitive type A data type whose elements are single, non-decomposable data items Composite type.
Banaras Hindu University. A Course on Software Reuse by Design Patterns and Frameworks.
Software Development Process CS 360 Lecture 3. Software Process The software process is a structured set of activities required to develop a software.
DESIGN PROCESS AND CONCEPTS. Design process s/w design is an iterative process through which requirements are translated into a “blueprint” for constructing.
Principles of Programming & Software Engineering
Examples (D. Schmidt et al)
7. Modular and structured design
Design Patterns: MORE Examples
Chapter 1: Introduction to Systems Analysis and Design
The Development Process of Web Applications
Chapter 18 Maintaining Information Systems
SOFTWARE DESIGN AND ARCHITECTURE
Systems Analysis and Design With UML 2
Introduction to Design Patterns
Software Life Cycle “What happens in the ‘life’ of software”
Principles of Programming and Software Engineering
Software Design and Architecture
Model-Driven Analysis Frameworks for Embedded Systems
Design for Ease in Contraction and Extension
Chapter 20 Object-Oriented Analysis and Design
CS 1120: Computer Science II Software Life Cycle
Chapter 1: Introduction to Systems Analysis and Design
CS 1120: Computer Science II Software Life Cycle
Chapter 1: Introduction to Systems Analysis and Design
Presentation transcript:

Designing Software for Ease of Extension and Contraction CSE870 Miniproject Presentation Designing Software for Ease of Extension and Contraction Ali Ebnenasir & Farshad A. Samimi {ebnenasi,farshad}@cse.msu.edu

Main Paper Problem: How to extend and change software after its initial design? Obstacles: Excessive information distribution Chain of data transforming components Integration of many functions in one Dependency loop (nothing works until everything works) Answer: Design for change (extensibility and removability)

Main Paper (cont’d) How to design for change? Requirement identification (minimal subset of family members) Information hiding (modules and their secrets) Virtual machine design Uses relation hierarchy Example: An address processing system (A set of programs to read in, store, and write out lists of addresses) Main Algorithm Input Processing Output Processing

Main Paper (cont’d) What if the format of the input address is changed? Design another program from scratch Design for change (A hierarchy of virtual instructions) add INADFO(frmttype frmt) INADFO: Reads in an address in a format, specified by a parameter addData INADSEL(int frmt) addfrmttype INFSL(frmttable tab,int frmt) INADSEL: Reads in an address using one of a set of formats INAD(datablock, int frmt, dev strg) INFSL: Selects a format from a format table INADFO INAD: Reads in an address and store it. The address is assumed to be in a specified format INFCR INADSEL INAD INFSL INTABEXT INTABCHG INFDEL

First Related Paper: Commonality Analysis Problem: How to identify family members? Answer: A systematic approach in the analysis phase Defining family members: Sources of abstraction: Terminology, Commonalities Variations of a family member Variability: The scope of the variations of the entire family Commonality Analysis (CA) Elements: Terminology, Commonalities, and variability Output: Documented family requirement information User: Designers [David M. Weiss, 1997]

First Related Paper (cont’d) CA Process: Based on Regular Meetings Steps (sequential) Preparing: the required sources for initial sessions Planning: the goals and the scope of the analysis Analyzing: characterization of family members Quantification: defining the parameters of the variations Reviewing: by an external reviewer CA is a part of FAST at Lucent Technology (since 1992) Motivated by Parnas’ idea of design-for-change [David M. Weiss, 1997]

Second Related Paper: A Model for Designing Adaptable Software Components Problem: How to design adaptable components? Design-for-change (Parnas idea) Efficiency (component’s behavior) Application builders Language independency (implementation) Legacy codes Major challenges: Providing environmental information for the components Proposed approach  Using Arbitrator Designing interfaces Proposed approach  Active Interface [George T. Heineman, 1997]

Second Related Paper (cont’d) Implementation Strategy Framework (ADAPT specification language) Example: adding new functions to a Spreadsheet Advantages of language-base approach: From component designer’s view From applications builder’s view Efficiency of components Re-engineering of legacy codes [George T. Heineman, 1997]

Third Related Paper: Software Component Technologies and Space Applications Problem: Traditional view of one-of-kind products Answer: Component technologies (domain-specific design-for-change) Challenges: Encapsulation Composition of components Paradigm Scalability Verification Key issue: Paradigm shift [Don Batory, 1995]

Third Related Paper (cont’d) Implementation proposal: Design maintenance Domain modeling (program families, requirement identification?) Modifications required in other parts Reflective computations Extending Parnas’ idea: Generating efficient code automatically Motivation in space domain: productivity [Don Batory, 1995]

Indirectly Related Paper 1: Refinement and Separation of Concerns Problem: Design-for-change Basic idea: Any changes should be reflected in all design aspects Solution: Change the definition of module Module: Basic unit of abstraction Encapsulates source code, documentation, formal properties, and performance model [Don Batory, 2000]

Indirectly Related Paper 1: (cont’d) Refinement: Abstraction of a common feature Family of similar applications based on the refinement Design methodologies for architecturally changeable and extensible systems (e.g., GenVoca) Analyzing the effect of a change on all design aspects [Don Batory, 2000]

Indirectly Related Paper 2: Issues in the Design of an Extensible Operating System Problem: Overcoming obstacles in designing (dynamically) extensible operating systems Main observation: Requires extensible software infrastructure Design-for-change  Parnas principle! Domain-specific goals: Incrementality Correctness and integrity Efficiency [S. Savage and B. Bershad, 1994]

Indirectly Related Paper 2 (cont’d) Dynamic extensions and extensibility namespaces Parnas’ VM Parnas’ Uses structure OS domain-specific major concern: Correctness Conflicting resources Verification Protection ( by design ) Automating protection [S. Savage and B. Bershad, 1994]

Conclusion The outcome of the main paper: The impact of the main paper Design-for-change principle Methodology The impact of the main paper Analysis, Design, and Maintenance phases Design-for-change affects reusability and adaptability