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.

Slides:



Advertisements
Similar presentations
The Modular Structure of Complex Systems Team 3 Nupur Choudhary Aparna Nanjappa Mark Zeits.
Advertisements

Software Design Fundamentals
25 February 2009Instructor: Tasneem Darwish1 University of Palestine Faculty of Applied Engineering and Urban Planning Software Engineering Department.
SOFTWARE TESTING. INTRODUCTION  Software Testing is the process of executing a program or system with the intent of finding errors.  It involves any.
Design Concepts and Principles
Software Architecture for DSD DSD Team. Overview What is software architecture and why is it so important? The role of architecture in determining system.
1 CENG 707 Data Structures and Algorithms Nihan Kesim Çiçekli Department of Computer Engineering Middle East Technical University Fall 2010.
Designing Software for Ease of Extension and Contraction
1 SYSTEM and MODULE DESIGN Elements and Definitions.
Presented by: Hatem Halaoui
Architectural Design Principles. Outline  Architectural level of design The design of the system in terms of components and connectors and their arrangements.
The Software Product Life Cycle. Views of the Software Product Life Cycle  Management  Software engineering  Engineering design  Architectural design.
How to write a publishable qualitative article
LSU 07/24/2004Defining Project Tasks1 Defining the Project Tasks Project Management Unit, Lecture 4.
Software Architecture for DSD The “Uses” Relation.
MADALINA CROITORU Software Engineering week 4 Madalina Croitoru IUT Montpellier.
Lesson 7 Guide for Software Design Description (SDD)
Designing Software for Ease of Extension and Contraction Presented by William Greenwell February 27, 2002.
Evaluation of Safety Critical Software -- David L. Parnas, -- A. John van Schouwen, -- Shu Po Kwan -- June 1990 Presented By Zhuojing Li.
“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
Database Design - Lecture 2
Use of the Concept of Transparency in the Design of Hierarchically Structured Systems Paper by: D.L. Parnas and D.P. Siewiorek Presentation by: Josh Wetzel.
1 The Software Development Process  Systems analysis  Systems design  Implementation  Testing  Documentation  Evaluation  Maintenance.
On the Criteria to Be Used in Decomposing Systems into Modules Team 3 Nupur Choudhary Aparna Nanjappa Mark Zeits.
Secure Systems Research Group - FAU Classifying security patterns E.B.Fernandez, H. Washizaki, N. Yoshioka, A. Kubo.
SOFTWARE DESIGN.
Intent Specification Intent Specification is used in SpecTRM
CSE 331 SOFTWARE DESIGN & IMPLEMENTATION MIDTERM REVIEW Autumn 2011.
Software Architecture and Design Dr. Aldo Dagnino ABB, Inc. US Corporate Research Center October 23 rd, 2003.
Some Software Engineering Principles by D. L. Parnas Presented by Team 7: Amitkumar Dhameja Cincy Francis Rong Gu CS575 - Software Design, Team 7.
1 Systems Analysis and Design in a Changing World, Thursday, January 18, 2007.
Assessing the influence on processes when evolving the software architecture By Larsson S, Wall A, Wallin P Parul Patel.
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 By Deepika Chaudhary.
Instructor: Tasneem Darwish1 University of Palestine Faculty of Applied Engineering and Urban Planning Software Engineering Department Software Systems.
Software Design Process
1 A-7E Case Study CSSE 477 Software Architecture Steve Chenoweth, Rose-Hulman Institute Wk 1, Day 3.
© 2006 Pearson Addison-Wesley. All rights reserved 2-1 Chapter 2 Principles of Programming & Software Engineering.
Chapter 2: Testing in Software Life Cycle MNN1063 System Testing and Evaluation.
Architecture View Models A model is a complete, simplified description of a system from a particular perspective or viewpoint. There is no single view.
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.
Or how to work smarter when building solutions.  2:30 – 3:30 Mondays – focus on problem solving (with some terminology thrown in upon occasion)  All.
4+1 View Model of Software Architecture
From Use Cases to Implementation 1. Structural and Behavioral Aspects of Collaborations  Two aspects of Collaborations Structural – specifies the static.
HRBA Project Planning Steps Understanding the Structure.
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.
Software Engineering Salihu Ibrahim Dasuki (PhD) CSC102 INTRODUCTION TO COMPUTER SCIENCE.
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.
Database Systems: Design, Implementation, and Management Tenth Edition
How to write a publishable qualitative article
CSC 222: Object-Oriented Programming
CSC 222: Object-Oriented Programming
CSC 222: Computer Programming II
The Development Process of Web Applications
Software Design Principles
On the Criteria to Be Used in Decomposing Systems into Modules
Unified Modeling Language
Lecture 9- Design Concepts and Principles
CSC 222: Object-Oriented Programming
Advance Software Engineering
Software Project Planning &
Chapter 5 Designing the Architecture Shari L. Pfleeger Joanne M. Atlee
Lecture 9- Design Concepts and Principles
On the Criteria To Be Used in Decomposing Systems into Modules
Software Fundamentals
Paper by D.L Parnas And D.P.Siewiorek Prepared by Xi Chen May 16,2003
From Use Cases to Implementation
Presentation transcript:

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 by Shana Hyvat Readings in Software Engineering

Motivation Software Systems are getting more complex and yet there exists a growing “gap” between approaches presented in theory and implementations in practice.

Possible Reasons for the “gap”: Managers will not implement untested principles Theoretical examples lack practical relevance Theoretical approaches need refinement Modular Systems are impractical Practitioners are not intellectually capable

Valid reasons to address: Managers will not implement untested principles Theoretical examples lack practical relevance Theoretical approaches need refinement Modular Systems are impractical Practitioners are not intellectually capable

This is not without challenges, but still will serve as a model for practical projects. Implement a Real and Significant Complex System

A “Sufficiently Challenging” Program Onboard Flight Program (OFP) for the A-7E aircraft High quality, complex program Considered the best of its kind Code is complicated and uses many “dirty tricks” Important time and size constraints are barely met

Software Structures Module Structure like defining objects Uses Structure like defining objects’ methods Process Structure like defining the execution of methods in the main method Decompositions of the Program:

Design Principle: Model Structure Decomposition Criterion : Information Hiding Details that are likely to change become secrets of a particular module, and exist nowhere else like private data variables Secret information comes out through a module's access programs like accessor methods of an object

Goals of Modular Structure Each module is simple enough to be fully understood Change implementation in one module without affecting other modules Interfaces must be unlikely to change Simultaneous changes to different modules can be made independently

Problems in Modular Structure The large number of modules makes it unlikely that all relevant modules will be known when a change is necessary Information hiding works too well: engineers don't necessarily know the inner structure of the modules and would have to search to find the right ones to change It would be easy to miss changing important modules

Tree-Structured Hierarchy The hierarchical structure of the module will be documented in a module guide A software engineer should understand how to use the module without knowing its internal implementation A reader with well defined concern, should be able to distinguish relevant components of a model from irrelevant ones

Tree-Structured Hierarchy (continued) The number of branches in the tree should be small enough to help identify dependences in the tree and to verify that there are no overlapping responsibilities.

Module Description Three kinds of information can be used to describe modules: Its function with respect to the entire system The information it keeps secret The facilities it provides The module guide focuses on secrets, with some functional description The module specification provides an in-depth look at function and facilities

A-7E Module Structure – Top Level Hardware-Hiding Module Includes the programs that need to be changed if any of the hardware is changed A virtual hardware interface that is used by the rest of the software The secrets are the implementation the virtual hardware

A-7E Module Structure – Top Level Behavior-Hiding Module Includes programs that need to be changed if there are changes in requirements specification about the behavior Software Decision Module Modules that don't relate to the hardware or the requirements Utility modules defined by the software designers

Conclusions Running program for the A-7E was not produced Authors Observations: Information hiding in complex systems is practical when using the module guide With the model guide new programmers gain a quick grasp of project Important to discuss, secrets, roles and interfaces in the module guide.

Conclusions In addition: Clearly many of these principles exist in what we know today as Object Oriented. Implementing a complex system may not prove to produce a final product, but may provide an environment from which to cultivate models for real implementations.