On the Criteria To Be Used in Decomposing Systems into Modules D. L

Slides:



Advertisements
Similar presentations
Chapter 3: Modules, Hierarchy Charts, and Documentation
Advertisements

Chapter 9 Describing Process Specifications and Structured Decisions
On the Criteria to Be Used in Decomposing Systems into Modules Written by D.L. Parnas Presented by Conner Hansen.
Chapter 9 Describing Process Specifications and Structured Decisions
Design The goal is to design a modular solution, using the techniques of: Decomposition Abstraction Encapsulation In Object Oriented Programming this is.
Team 1 Lisa Anthony Luiza da Silva Erik Hayes Diana Tetelman.
Kendall & KendallCopyright © 2014 Pearson Education, Inc. Publishing as Prentice Hall 9 Kendall & Kendall Systems Analysis and Design, 9e Process Specifications.
Lecture 6: Modularization
Principle of Functional Verification Chapter 1~3 Presenter : Fu-Ching Yang.
On the Criteria to Be Used in Decomposing Systems into Modules Group 1: Lisa Anthony, Erik Hayes, Luiza Helena da Silva, and Diana Tetelman.
03 - ParnasCSC4071 A Sketchy Evolution of Software Design 1960s –Structured Programming (“Goto Considered Harmful”, E.W.Dijkstra) Emerged from considerations.
Kendall & KendallCopyright © 2014 Pearson Education, Inc. Publishing as Prentice Hall 9 Kendall & Kendall Systems Analysis and Design, 9e Process Specifications.
Introduction to Systems Analysis and Design Trisha Cummings.
Aurora: A Conceptual Model for Web-content Adaptation to Support the Universal Accessibility of Web-based Services Anita W. Huang, Neel Sundaresan Presented.
1 On the Criteria To Be Used in Decomposing Systems into Modules by D.L.Parnas Dec presented by Yuanhua Qu for spring 2003 CS5391.
Ceg860 (Prasad)L6MR1 Modularity Extendibility Reusability.
SAMANVITHA RAMAYANAM 18 TH FEBRUARY 2010 CPE 691 LAYERED APPLICATION.
On the Criteria to Be Used in Decomposing Systems into Modules Team 3 Nupur Choudhary Aparna Nanjappa Mark Zeits.
SOFTWARE DESIGN.
ECE450 - Software Engineering II1 ECE450 – Software Engineering II Today: Key Principles of Software Architecture and Design (I) adapted from Dave Penny’s.
1 CS 350 Data Structures Chaminade University of Honolulu.
1 Compiler Construction (CS-636) Muhammad Bilal Bashir UIIT, Rawalpindi.
INF 212 Modularity Instructors: Crista Lopes Copyright © Instructors.
SOFTWARE DESIGN. INTRODUCTION There are 3 distinct types of activities in design 1.External design 2.Architectural design 3.Detailed design Architectural.
1 CSCD 326 Data Structures I Software Design. 2 The Software Life Cycle 1. Specification 2. Design 3. Risk Analysis 4. Verification 5. Coding 6. Testing.
Review of Parnas’ Criteria for Decomposing Systems into Modules Zheng Wang, Yuan Zhang Michigan State University 04/19/2002.
“Architecture” The outcome of top-level design, reflecting principal design decisions Can (and should) be modified and updated Analogous to architecture.
Mohammed I DAABO COURSE CODE: CSC 355 COURSE TITLE: Data Structures.
Advanced Higher Computing Science
IS 334 information systems analysis and design
Software Testing.
7. Modular and structured design
More About Objects and Methods
Course Developer/Writer: A. J. Ikuomola
Basic Concepts in Software Design
On the Criteria to Be Used in Decomposing Systems into Modules
Chapter 18 Automatic Account Assignment
Objectives State the reasons for the complexity involved in the development of software Define the following terms Objects Classes Messages Methods Explain.
C Language VIVA Questions with Answers
System Design.
Software Design Mr. Manoj Kumar Kar.
Tutorial on BoxScript: A Component-Oriented Language
Lecture 2 Introduction to Programming
Process Analysis I: Flow Charts, Decision Tables, Decision Trees
Prepared by Charlie Meyer, May 2009
FORMAL SYSTEM DEVELOPMENT METHODOLOGIES
Compiler Construction
Chapter 1 The Systems Development Environment
IPC144 Introduction to Programming Using C Week 2 – Lesson 1
Unit# 9: Computer Program Development
Chapter 5 Designing the Architecture Shari L. Pfleeger Joanne M. Atlee
Introduction to Systems Analysis and Design
Chapter 9 Structuring System Requirements: Logic Modeling
CSE 403: Notkin #2 of 3 on software change
On the Criteria To Be Used in Decomposing Systems into Modules
Programming Logic and Design Fourth Edition, Comprehensive
COCOMO Models.
Software Design Lecture : 9.
SAMANVITHA RAMAYANAM 18TH FEBRUARY 2010 CPE 691
Chapter 11 Describing Process Specifications and Structured Decisions
Software Requirements Specification (SRS) Template.
Paper by D.L Parnas And D.P.Siewiorek Prepared by Xi Chen May 16,2003
Chapter 9 Structuring System Requirements: Logic Modeling
Information Hidding Dr. Veton Kepuska.
Programming Language Translation
CS/SE ADVANCED SOFTWARE ARCHITECTURE AND DESIGN FALL 2015
Arrays.
Chapter 1: Creating a Program.
Module Structure David Parnas Discusses “modularization”
Presentation transcript:

On the Criteria To Be Used in Decomposing Systems into Modules D. L On the Criteria To Be Used in Decomposing Systems into Modules D.L. Parnas Carnegie-Mellon University Presented by: Loretta Macklem Parnas D.L., On the Criteria To Be Used in Decomposing Systems into Modules, Communications of the ACM, Vol. 15, No. 12, December 1972 pp. 1053 - 1058

Outline Problem description Two example decompositions Comparison of two examples General decomposition criteria Impact

Problem Statement Problem Programs with a large amount of functionality are by nature large and complicated A criteria for decomposing programs is need

Modularization Definition from paper “A well-defined segmentation of the project effort ensures system modularity. Each task forms a separate, distinct program module. At implementation time each module and its inputs and outputs are well-defined, there is no confusion in the intended interface with other system modules. At checkout time the integrity of the module is tested independently; there are few scheduling problems in synchronizing the completion of several tasks before checkout can begin. Finally, the system is maintained in modular fashion; system errors and deficiencies can be traced to specific system modules, thus limiting the scope of detailed error searching.” Gouthier and Pont [1,I0.23]

Benefits of Modules Managerial Product flexibility Comprehensibility development time can be shortened separate groups can work on each module with little need for communication Product flexibility drastic changes can be made to one module without changing others Comprehensibility it is possible to study the system one module at a time

Benefits for criteria In order for the previous benefits to be maximized the modules need to be divided properly

Contribution Criteria to be considered when dividing a system into modules Previously the criterion was left unmentioned

KWIC Index Production System Input is a set of lines Each line is an ordered set of words Each word is an ordered set of characters Each line may be “circularly shifted” Remove the first word and append it at the end of the line Output is a listing of all circular shifts of all lines in alphabetical order

Example Input: abcd efgh ijkl mnop Output: abcd efgh ijkl mnop efgh ijkl mnop abcd ijkl mnop abcd efgh mnop abcd efgh ijkl

Decomposition 1 Module 1: Input Module 2: Circular Shift Reads in the data lines, store them internally Module 2: Circular Shift Produces an array which lists the index of the first character for each circular shift as well as the index of the original starting word Module 3: Alphabetizing Produces the same array as module 2, except it is sorted alphabetically Module 4: Output Outputs all of the circular shifts in alphabetically order using the array from module 3, and lines stored by module 1 Module 5: Master Control Controls the sequencing of the other modules

Decomposition 2 Module 1: Line Storage Module 2: Input Provides functions to obtain or set the value of a specific character in a specific word number on a specific line, and to obtain the number of words in a line Module 2: Input Reads in input and uses module 1 to store the data internally Module 3: Circular Shifter CSCHAR(l,w,c) allows the user to obtain the value of the cth character of the wth word of the lth circular shift CSSetup which sets the values that can be obtained by using the above function Module 4: Alphabetizer Gives the ability to determine the alphabetical ordering of the shifts Module 5: Output Prints out the set of lines or circular shifts Module 6: Master Control Controls the sequencing of the above modules

Comparison General Both will produce programs that work The two decompositions may be the same program after they have been compiled

Comparison Cont… Changeability Input format change Decomposition 1 and 2 would need to change only one module No longer store all lines in core or whether to pack the characters four to a word Decomposition 1 would need to change all modules, but Decomposition 2 would only need to change module 1

And More… Independent Development Comprehensibility The interfaces between modules in decomposition 1 are more complex than the interfaces between modules in decomposition 2 Comprehensibility According to author (I am undecided) 2 is easier to understand than 1

Hierarchical Structure Map out the program into a tree structure Functions can only use other functions who are above it in the tree

Hierarchical Structure Decomposition 2 as a system has program hierarchy Level 1: Symbol table (if exists) Level 2: Line Storage Level 3: Input and Circular Shifter Level 4: Output and Alphabetizer Both output and alphabetizer require circular shifter Line holder and circular shifter are in some sense compatible and the level 4 functionality could perhaps be incorporated into a parameterized version of the functions

Cont… Benefits of hierarchy Parts of the system are simplified because they use the services of lower levels The upper levels may be cut off and still have a usable product Could use levels 1 and 2 and produce a question answering system

Independence Hierarchal structure and clean decomposition are independent properties Although Decomposition 2 produced a hierarchal program, it is conceivable to obtain this also with using the design approach used for decomposition one

Criteria used for Decomposition 1 and 2 Decomposition 1 used a flowchart approach where each module was a major step in the process Decomposition 2 used information hiding as a criterion Each module is characterized by its hiding of the design decision in its implementation By hiding the design decision, any user of the module need not know the inner workings associated with the decision, and thus changing the decision is not costly

General Criteria 1) Data structure, its accessing procedures and modifying procedures are part of a single module 1a) Example: Data is stored in a linked list, the procedures to access and modify the list should be in the same module as the list 2) The necessary steps to call a given routine and the routine itself are part of the same module 2a)Ex.: A program that has a function which only takes in String, and the input currently is in the format of integer, there may be code to turn the integer into a string

Criteria Cont… 3)Formats of control blocks used in queues or similar programs should be hidden within a control block module 3a) Format of control block is usually taken care of by making the formats the interfaces between modules, but this functionality tends to change frequently which makes that decision costly 4)Character codes, alphabetic orderings, and similar data should be in its own module 4a) Increase flexibility

Continued… 5)Sequence in which items will be processed should be in a single module Sequencing is very variable

Effect of work Modularization is widely used and is taught in most introduction to programming courses Object oriented programming languages all exhibit modularization The methods that you decide to include in a class fall under the criteria

3 questions Technology and languages have progressed since this paper was published, is there any new criteria that you think should be added to the list? Which UML model would you use to convey the division of modules? Do you think large scale projects could be done without modularization (is there any alternative method that could work)?

References 1.Gauthier, Richard, and Pont, Stephen. Designing Systems Programs, (C), Prentice-Hall, Englewood Cliffs, N.J., 1970.