Review of Parnas’ Criteria for Decomposing Systems into Modules Zheng Wang, Yuan Zhang Michigan State University 04/19/2002.

Slides:



Advertisements
Similar presentations
Database System Concepts and Architecture
Advertisements

Software Design Fundamentals
ARCHITECTURES FOR ARTIFICIAL INTELLIGENCE SYSTEMS
Ch:8 Design Concepts S.W Design should have following quality attribute: Functionality Usability Reliability Performance Supportability (extensibility,
Chapter 11 Component-Level Design
Unit 6 Assignment 2 Chris Boardley.
Architecture Representation
General OO Concepts and Principles CSE301 University of Sunderland Harry R. Erwin, PhD.
Variability Oriented Programming – A programming abstraction for adaptive service orientation Prof. Umesh Bellur Dept. of Computer Science & Engg, IIT.
Software Architecture for DSD DSD Team. Overview What is software architecture and why is it so important? The role of architecture in determining system.
An Architecture-Based Approach to Self-Adaptive Software Presenters Douglas Yu-cheng Su Ajit G. Sonawane.
Architectural Design Principles. Outline  Architectural level of design The design of the system in terms of components and connectors and their arrangements.
© 2006 Pearson Addison-Wesley. All rights reserved2-1 Chapter 2 Principles of Programming & Software Engineering.
On the Criteria to Be Used in Decomposing Systems into Modules Group 1: Lisa Anthony, Erik Hayes, Luiza Helena da Silva, and Diana Tetelman.
Course Instructor: Aisha Azeem
1 An introduction to design patterns Based on material produced by John Vlissides and Douglas C. Schmidt.
Software Engineering Muhammad Fahad Khan
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 18 Slide 1 Software Reuse.
The Design Discipline.
Why Analysis Process Refer to earlier chapters Models what the system will do makes it easier for understanding no environment considered (hence, system.
Design Patterns OOD. Course topics Design Principles UML –Class Diagrams –Sequence Diagrams Design Patterns C#,.NET (all the course examples) Design Principles.
1/19 Component Design On-demand Learning Series Software Engineering of Web Application - Principles of Good Component Design Hunan University, Software.
An Introduction to Software Architecture
Ch:10 Component Level Design Unit 4. What is Component? A component is a modular building block for computer software Because components reside within.
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.
SAMANVITHA RAMAYANAM 18 TH FEBRUARY 2010 CPE 691 LAYERED APPLICATION.
Architecture styles Pipes and filters Object-oriented design Implicit invocation Layering Repositories.
On the Criteria to Be Used in Decomposing Systems into Modules Team 3 Nupur Choudhary Aparna Nanjappa Mark Zeits.
Patterns in programming 1. What are patterns? “A design pattern is a general, reusable solution to a commonly occurring problem in software. A design.
© 2007 Pearson Education, Inc. Publishing as Pearson Addison-Wesley 1 Architectural Styles.
SOFTWARE DESIGN.
SOFTWARE DESIGN Design Concepts Design is a meaningful engineering representation of something that is to be built It can be traced to a customer’s requirements.
Design engineering Vilnius The goal of design engineering is to produce a model that exhibits: firmness – a program should not have bugs that inhibit.
CSE 219 Computer Science III Program Design Principles.
Drexel University CS 451 Software Engineering Winter Yuanfang Cai Room 104, University Crossings
SE: CHAPTER 7 Writing The Program
Component Technology. Challenges Facing the Software Industry Today’s applications are large & complex – time consuming to develop, difficult and costly.
Design Concepts and Principles Instructor: Dr. Jerry Gao.
Chapter 10 Analysis and Design Discipline. 2 Purpose The purpose is to translate the requirements into a specification that describes how to implement.
Chapter 8 Object Design Reuse and Patterns. Object Design Object design is the process of adding details to the requirements analysis and making implementation.
Design Principle & Patterns by A.Surasit Samaisut Copyrights : All Rights Reserved.
Unit 2 Architectural Styles and Case Studies | Website for Students | VTU NOTES | QUESTION PAPERS | NEWS | RESULTS 1.
SOFTWARE DESIGN. INTRODUCTION There are 3 distinct types of activities in design 1.External design 2.Architectural design 3.Detailed design Architectural.
SOFTWARE DESIGN AND ARCHITECTURE LECTURE 13. Review Shared Data Software Architectures – Black board Style architecture.
© 2006 Pearson Addison-Wesley. All rights reserved 2-1 Chapter 2 Principles of Programming & Software Engineering.
Architecture View Models A model is a complete, simplified description of a system from a particular perspective or viewpoint. There is no single view.
Testing OO software. State Based Testing State machine: implementation-independent specification (model) of the dynamic behaviour of the system State:
CSE 303 – Software Design and Architecture
Software Engineering and Object-Oriented Design Topics: Solutions Modules Key Programming Issues Development Methods Object-Oriented Principles.
Designing Abstract Interfaces for Device Independency Designing Abstract Interfaces for Device Independency Review of A Procedure for Designing Abstract.
1 CS Programming Languages Class 22 November 14, 2000.
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.
From Use Cases to Implementation 1. Structural and Behavioral Aspects of Collaborations  Two aspects of Collaborations Structural – specifies the static.
SOFTWARE DESIGN & SOFTWARE ENGINEERING Software design is a process in which data, program structure, interface and their details are represented by well.
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.
The Software Lifecycle Stuart Faulk. Definition Software Life Cycle: evolution of a software development effort from concept to retirement Life Cycle.
7. Modular and structured design
Coupling and Cohesion 1.
SOFTWARE DESIGN AND ARCHITECTURE
On the Criteria to Be Used in Decomposing Systems into Modules
Designing Software for Ease of Extension and Contraction
Component-Level Design
An Introduction to Software Architecture
SAMANVITHA RAMAYANAM 18TH FEBRUARY 2010 CPE 691
Paper by D.L Parnas And D.P.Siewiorek Prepared by Xi Chen May 16,2003
Chapter 5 Architectural Design.
From Use Cases to Implementation
Presentation transcript:

Review of Parnas’ Criteria for Decomposing Systems into Modules Zheng Wang, Yuan Zhang Michigan State University 04/19/2002

What We Will Discuss …… Principles - Parnas’ paper “On the criteria to be used in decomposing system into modules” in 1972 Examples - Some related works using or extending the decomposing criteria with and without citation. Conclusion - The affect of Parnas’ criteria on modern software engineering.

Criteria for Decomposing Generally, information hiding and changeability enhancing Specifically, 5 criteria mentioned by Parnas –Define major data structure in a single module –Keep instructions calling a routine and the routine itself in the same module. –Hide control blocks for runtime environment in a single module instead of interfaces –Hide accessorial data in a single module –Try to keep processing sequence of a certain item within a module

Comparison of conventional and suggested decompositions Conventional Decomposition The major data structure changes cause the whole system updated. The interface between modules are complex. Developers need more time to work together. Only works for systems with less than 10,000 instructions. Parnas’ Decomposition Each module knows little about others. Managerial - Developers can work independently. Product Flexibility and Extensibility - Part of the system can be extended and modified without affecting the other parts. Each module in the system can be studied separately.

Example 1 – Managing Abstraction- Induced Complexity (1993) Goal: Design modules to achieve good performance without sacrificing flexibility and extensibility. Five implementation modules: 1.Fixed 2.Adaptive 3.Adjustable 4.Open 5.Incomplete

Advantages for Each Model Fixed: Single interface for all clients; Simple and good performance if matches the client’s demand. Adaptive: Implementation is given based on client’s demand. System can be tuned by itself. Adjustable: Clients choose implementation by passing usage hints. Good performance when cases can be parameterized. Open: Clients optimize implementation By adding code to the module. Very flexible. Incomplete: Client implements missing part and provides tuning. Ultimate flexible.

Disadvantage for Each Model Fixed: Interface can only be used in a special field. No other usage beyond the functions provided by the impl. Adaptive: Performance depends on how much info. is abstracted. Adjustable: Involve clients adjustment from time to time; Fixed set of choices; hard to identify particular circumstances. Open: The injected code has to specify what is to be done and how; inject side effects; internal detail is exposed. Incomplete: clients have to provide tuning; harder to develop new implementation based on the low-lever service.

Example 2 – Why it is hard to build system out of existing parts? (1995) Goal : Build an environment generator by reusing four software infrastructure to show architecture mismatch affecting composition and causes. Encountered Issues: Code is excessive large Slow and hard to maintain Needs modification from outside before working Recompilation takes time and error-prone

Analyze the Problems The root reason: Component runs on some assumptions about the structure of the environment that are in conflict with each other when they are combined together. Assumption about the nature of the components, violates criteria 1: Major data structures in different modules; Assumption of which component control main thread, violates 5: More than one components control sequence Assumption about the nature of the connectors, violates 3: Cannot Hide the control blocks for runtime environment in a single module instead of interfaces Assumption about the steps in the construction process, violates 2: Each module is instantiated by its own order

Example 3 – Approach to Design Reusable Real-Time Software (1996) Goal: A systematical and analytical method to partition a comprehensive algorithm into software components with small-effect operations hence to increase the reusability and reduce the impact of changing. Two rationales: Large-effect components are less likely to be reused than the small-effect ones since more modification involved. The impact of changing should locate in the minimum components, if not the same one

5 steps to decompose the large-scale solution to small-scale components with respect of expected changes 1.Identify the algorithmic characteristics 2.Decompose large-effect operations 3.Determine the expected changes 4.Group operations affected by the same changes into the same component 5.Add necessary control components Conclusion: It is easier to reuse a componentized solution by localizing the parts affected by a particular change within one module.

Example 4 – Architecture based approach to build self-adaptive software (1999) Goal: Illustrate decomposition design roles in planning, interoperating, monitoring, evaluating adaptation to retain full flexibility and extensibility throughout the lifecycle. Design features: Software agents to carry out the adaptation Explicit representations of components, connections and environment where the adaptation is deployed Message/event services to connect adaptation managers to adaptive systems.

Principle and Implementation Principle: Let the adaptive software architecture view system as networks of components connected together by connectors. Implementation: Embedded observers in the application to notify the exceptional events. An event pattern is used to model application behavior abstractly. Event pattern acts as an expectation agent to correspond to the embedded observer.

Example 5 – Software Restructuring by Enforcing Localization and information Hiding (1992) Goal: Implement a restructuring algorithm to help user understand, maintain and reuse existing system written by using imperative languages. Two key principles: –Information hiding –Localization -- the process of collecting logically related computational resources in one physical module.

5 steps of the algorithm 1.transform source code into an abstract syntax tree, Identifying primitive semantic information 2.group global variables and functions into package 3.group locally called functions and calling function to the same group 4.based on the relations among functions, organize groups into hierarchical package structure 5.Iteratively executing step 2 to step 4 to group the variables and functions into appropriate “packages”

Our Conclusions Parnas’ information hiding and changeability enhancing, as the fundamental decomposing criteria, apply to everything from the largest architectural concerns to the smallest coding decision. This philosophy guides the modern development of software component, reusable software, adaptive software, and the design of software hierarchical structure.