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.

Slides:



Advertisements
Similar presentations
Object-Oriented Application Frameworks Much of the cost and effort stems from the continuous re- discovery and re-invention of core concepts and components.
Advertisements

The Modular Structure of Complex Systems Team 3 Nupur Choudhary Aparna Nanjappa Mark Zeits.
Ch:8 Design Concepts S.W Design should have following quality attribute: Functionality Usability Reliability Performance Supportability (extensibility,
Software Engineering 2003 Jyrki Nummenmaa 1 A BASIC OO SOFTWARE DEVELOPMENT PROCESS Earlier, we saw a number of different software lifecycle models.
Solutions to Review Questions. 4.1 Define object, class and instance. The UML Glossary gives these definitions: Object: an instance of a class. Class:
Introduction to Object Oriented Programming Java.
Object-Oriented Analysis and Design
Object-Oriented Databases v OO systems associated with – graphical user interface (GUI) – powerful modeling techniques – advanced data management capabilities.
Designing Software for Ease of Extension and Contraction
Object-Oriented Databases
Itntroduction to UML, page 1 Introduction to UML.
WEL COME PRAVEEN M JIGAJINNI PGT (Computer Science) MCA, MSc[IT], MTech[IT],MPhil (Comp.Sci), PGDCA, ADCA, Dc. Sc. & Engg.
© 2006 Pearson Addison-Wesley. All rights reserved2-1 Chapter 2 Principles of Programming & Software Engineering.
University of Jyväskylä – Department of Mathematical Information Technology Computer Science Teacher Education ICNEE 2004 Topic Case Driven Approach for.
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.
Architectural Design Establishing the overall structure of a software system Objectives To introduce architectural design and to discuss its importance.
1 An introduction to design patterns Based on material produced by John Vlissides and Douglas C. Schmidt.
03 - ParnasCSC4071 A Sketchy Evolution of Software Design 1960s –Structured Programming (“Goto Considered Harmful”, E.W.Dijkstra) Emerged from considerations.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 18 Slide 1 Software Reuse.
Adapting Legacy Computational Software for XMSF 1 © 2003 White & Pullen, GMU03F-SIW-112 Adapting Legacy Computational Software for XMSF Elizabeth L. White.
Design Patterns OOD. Course topics Design Principles UML –Class Diagrams –Sequence Diagrams Design Patterns C#,.NET (all the course examples) Design Principles.
GENERAL CONCEPTS OF OOPS INTRODUCTION With rapidly changing world and highly competitive and versatile nature of industry, the operations are becoming.
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.
1 CS 456 Software Engineering. 2 Contents 3 Chapter 1: Introduction.
SWE 316: Software Design and Architecture – Dr. Khalid Aljasser Objectives Lecture 11 : Frameworks SWE 316: Software Design and Architecture  To understand.
CSE 303 – Software Design and Architecture
Unified Modeling Language, Version 2.0
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.
11 Chapter 11 Object-Oriented Databases Database Systems: Design, Implementation, and Management 4th Edition Peter Rob & Carlos Coronel.
Guided Notes Ch. 9 ADT and Modules Ch. 10 Object-Oriented Programming PHP support for OOP and Assignment 4 Term project proposal C++ and Java Designer.
CSE 303 – Software Design and Architecture LECTURE 4.
DAAD project “Joint Course on OOP using Java” On Object Oriented modeling in Java (Why & How) Ana Madevska Bogdanova Institute of informatics Faculty of.
Design Concepts and Principles Instructor: Dr. Jerry Gao.
Design Concepts By Deepika Chaudhary.
Introduction Better Faster Cheaper (pick any two) On-going issue that continues to motivate research in software engineering Applications: –continue to.
Software Engineering Principles. SE Principles Principles are statements describing desirable properties of the product and process.
Design Principle & Patterns by A.Surasit Samaisut Copyrights : All Rights Reserved.
An Automatic Software Quality Measurement System.
Dale Roberts Object Oriented Programming using Java - Introduction Dale Roberts, Lecturer Computer Science, IUPUI Department.
Software Design Process
Abstraction ADTs, Information Hiding and Encapsulation.
MODEL-BASED SOFTWARE ARCHITECTURES.  Models of software are used in an increasing number of projects to handle the complexity of application domains.
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.
PC204 Lecture 5 Programming Methodologies Copyright 2000 by Conrad Huang and the Regents of the University of California. All rights reserved.
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.
Ontology Support for Abstraction Layer Modularization Hyun Cho, Jeff Gray Department of Computer Science University of Alabama
Week 6: Software Design HNDIT Software Engineering Software Design Learning Outcomes  Understand the activities involved in the Design process.
OOPS CONCEPT.  OOPS  Benefits of OOPs  OOPs Principles  Class  Object Objectives.
Design CS 470 – Software Engineering I Sheldon X. Liang, PH.D.
16 April 2011 Alan, Edison, etc, Saturday.. Knowledge, Planning and Robotics 1.Knowledge 2.Types of knowledge 3.Representation of knowledge 4.Planning.
Design Engineering 1. Analysis  Design 2 Characteristics of good design 3 The design must implement all of the explicit requirements contained in the.
Slide 1 Unified Modeling Language, Version 2.0 Object-Oriented SAD.
 The Object Oriented concepts was evolved for solving complex problems. Object- oriented software development started in the 1980s. Object-oriented design.
Design Concepts ch-8
CompSci 280 S Introduction to Software Development
CHAPTER 5 GENERAL OOP CONCEPTS.
Software Design Principles
On the Criteria to Be Used in Decomposing Systems into Modules
Advance Software Engineering
Software Quality Engineering
Designing Software for Ease of Extension and Contraction
Why Object-oriented Programming?
Need for the subject.
Software Fundamentals
Agenda Software development (SD) & Software development methodologies (SDM) Orthogonal views of the software OOSD Methodology Why an Object Orientation?
Aspect Oriented Software Design
Presentation transcript:

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 CSE870 Advanced Software Engineering (Cheng, 2002)

2 Main Paper Overview Motivation: Software systems are getting more complex. Problem: So many design decisions and implementation details. Completeness of software. Duplication. Finding modules related to a change. Goal: Keep a complex system under intellectual control. Keep maintenance cost down (also development and deployment costs). Solution: Dividing complex systems into modules. Using information hiding to define modules. Using hierarchical structure to classify modules. [Parnas-84]

3 Design through documentation: Module Guide: Helps developers and maintainers of the system to find the affected module by a change. Module Interface Document: Contains precise and complete description of interface to each module. Module Design Document: An internal design document for each implementation of a module. Requirements Document: Module guide refers to it for the related changes. Main Paper Technical Overview [Parnas-84]

4 Big impact on software engineering community: Information Hiding. Abstract Data Type. Separation of Concerns. Object Orientation. Component-base Software. All the same principle. Main Paper Impacts [Parnas-84]

5 Towards a Semantically Enhanced Component Trader Architecture. Motivation: Software development is moving toward component-based design. Goal: Providing a large-scale open systems trading. Problem: Appearance-base (interface) definition is not sufficient to find a needed component. Solution: Adding behavior-based (semantic) specification of component to appearance-based definition. Developing a “semantically enhanced” component trader. First Related Paper Overview [ Terzis-00 ]

6 Background: Name Service (e.g. DNS) Directory Service (e.g. White Pages) Trading Service (e.g. Yellow Pages) No name is required to find a component. Just the developers/components need (specification of service type). Component Description Language (CDL): Like IDL in CORBA. Start from CDL to do component matching process. Encoding component behavior: Text-based: no sufficient info for classification. Lexical descriptor-based: Vocabulary by subject experts. Specification-based: Formal is good. Conceptual structures & Knowledge representation. First Related Paper Technical Overview [ Terzis-00 ]

7 Why this paper extends Parnas’ work? A module guide helps a developer or a maintainer to find a module for change or other reasons. A trader finds components that matches the needed component. The hierarchical design of component in the trader is an extension to Parnas’ hierarchical module structure that has different application. The ideas for the hierarchically classifying components has originated from Parnas’ module guide. First Related Paper (cont.) [ Terzis-00 ]

8 Coping With Software Change Using Information Transparency. Motivation: Changes in cross-cutting concerns are expensive. Goal: Localizing cross-cutting concerns. Standard Solution: Using AOP to localize these concerns. Problem with the Standard Solution: You should anticipate the future changes. Hard to define and factorize and also coarse grain. Solution Proposed in This Paper: Information Transparency: Using tools to economically identify the related code. Naming conventions, formatting style, and so on. Second Related Paper Overview [ Griswold-98 ]

9 How this paper extends Parnas’ work? Information hiding tries to localize some of the concerns as secrets of a module. Hierarchical module guide localize related modules in a tree. Information transparency is an extension to information hiding and hierarchical module design: Information transparency localizes the cross-cutting aspects among modules that are not localized in the module guide. Module guide uses references to requirement specifications, which is too time consuming, inconvenient, and expensive. Information transparency is a complementary to information hiding. Second Related Paper (cont.) [ Griswold-98 ]

10 Assuring Good Style for Object-Oriented Programs. Motivation: How to write a software as modular as possible? Goal: Writing objects (modules) with minimum dependencies to other objects (modules). Problem: Lack of good programming style principles for modularity. Lack of principles to write programs for change. Solution in this paper: The law of Demeter Third Related Paper Overview [ Lieberherr-89 ]

11 The law of Demeter: Rules for structure of classes. Rules for how methods are written: Restricting the message-sending structure of methods. Each method can send message to only: Argument objects. Self pseudo-variables. The immediate subparts of self (this). Third Related Paper Technical Overview [ Lieberherr-89 ]

12 How this paper extends Parnas’ work? The law of Demeter extends information hiding by introducing structure hiding. It reduces the cost of software changes in complex systems by extending restricted modules (subject to change) to information restriction. Localizing “type” information A method should be aware of just the very closely related classes, and is ignorant of the rest of the system (reducing programming complexity). A complementary to Parnas’ work. Third Related Paper (cont.) [ Lieberherr-89 ]

13 Designing Reusable Classes Motivation: A major motivation for OO programming is software reuse How to design reusable classes to reduce development time and maintenance cost? Goal: Program components must be designed for reusability. Describes and organizes techniques that are used to design more usable software Solution: Polymorphism, inheritance, framework, and some rules of thumb for developing standard protocols, for finding abstract classes, and for finding frameworks. Uncited Paper Overview [ Johnson-88 ]

14 Major attributes of OO languages Data abstraction Inheritance Polymorphism Framework, toolkit… we’ve known this from class How does OO improve software reusability Class definitions provides modularity and information hiding Late-binding of procedure calls means objects require less information about each other A polymorphic procedure is easier to reuse than non- polymorphic one Inheritance enables a class to be reused and extended by making subclasses Uncited Paper Technical Overview [ Johnson-88 ]

15 Why this paper should have cited Parnas’ paper? OO features that provide reusability are enabled by information hiding. Encapsulation, polymorphism, inheritance “Object-oriented” is just for reinventing the ideas behind the older concepts such as “abstract data type”, “information hiding”, and “modularization” “Information hiding” is becoming a general rule in software design, a general rule in people’s mind… Uncited Paper (cont.) [ Johnson-88 ]

16 References [Parnas-84] David Lorge Parnas, Paul C. Clement, David M. Weiss, "The Modular Structure of Complex Systems", International Conference on Software Engineering, Year 1984, pp [Parnas-72] David Lorge Parnas, “On the Criteria to Be Used in Decomposing Systems into Modules”, Commun. ACM 15, 12 (Dec.), pp [Terzis-00] S. Terzis and P. Nixon "Towards a Semantically Enhanced Component Trader Architecture", Computer Science Department, University of Dublin, Trinity College, [Griswold-98] William G. Griswold, “Coping With Software Change Using Information Transparency”, Department of Computer Science and Engineering, University of California, San Diego, April [Lieberherr-89] Karl J. Lieberherr, Ian M. Holland “Assuring Good Style for Object-Oriented Programs”, IEEE Software, September 1989, pp [Johnson-88] Ralph E. Johnson, Brian Foote, “Designing Reusable Classes”, Journal of Object-Oriented Programming, June/July 1988.