03 - ParnasCSC4071 A Sketchy Evolution of Software Design 1960s –Structured Programming (“Goto Considered Harmful”, E.W.Dijkstra) Emerged from considerations.

Slides:



Advertisements
Similar presentations
Keeping Secrets Within a Family: Rediscovering Parnas H. Conrad Cunningham Computer & Information Science, University of Mississippi Cuihua Zhang Computer.
Advertisements

Module 3: UML In Action - Design Patterns
Design. Overview Design and abstraction Action-oriented design Data flow analysis Transaction analysis Data-oriented design Object-oriented design Challenges.
Chapter 14: Design Method --- data and architectural design Design -- A multistep process in which representations of data structure, program structure,
Designing the system Conceptual design and technical design
Designing Software for Ease of Extension and Contraction
Design The goal is to design a modular solution, using the techniques of: Decomposition Abstraction Encapsulation In Object Oriented Programming this is.
Software Requirements
Team 1 Lisa Anthony Luiza da Silva Erik Hayes Diana Tetelman.
1 ES 314 Advanced Programming Lec 2 Sept 3 Goals: Complete the discussion of problem Review of C++ Object-oriented design Arrays and pointers.
Lecture 6: Modularization
On the Design and Development of Program Families David Parnas Presented by Gregory Brown IEEE Transactions on Software Engineering, VOL SE-2, NO. 1, March.
Object-oriented design CS 345 September 20,2002. Unavoidable Complexity Many software systems are very complex: –Many developers –Ongoing lifespan –Large.
On the Criteria to Be Used in Decomposing Systems into Modules Group 1: Lisa Anthony, Erik Hayes, Luiza Helena da Silva, and Diana Tetelman.
Chapter 10: Architectural Design
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 11 Slide 1 Architectural Design.
Architectural Design.
The Power of Abstraction Barbara Liskov May 2013 MIT CSAIL.
Chapter 10 Architectural Design
Lesson 7 Guide for Software Design Description (SDD)
On the Development of Program Families D. L. Parnas Presentation by Sagnik Bhattacharya Siddharth Dalal.
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.
“Enhancing Reuse with Information Hiding” ITT Proceedings of the Workshop on Reusability in Programming, 1983 Reprinted in Software Reusability, Volume.
CPSC 410: Software Architectural Style (Part I) By the end of this lecture, you will be able to: list various software architectural styles describe advantages.
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.
1 Chapter 14 Architectural Design 2 Why Architecture? The architecture is not the operational software. Rather, it is a representation that enables a.
On the Criteria to Be Used in Decomposing Systems into Modules Team 3 Nupur Choudhary Aparna Nanjappa Mark Zeits.
SOFTWARE DESIGN (SWD) Instructor: Dr. Hany H. Ammar
SOFTWARE DESIGN.
Lecture 2 Introductory Case Studies Topics Architectural Styles Key Word In Context (KWIC) Other Cases Studies Evolution of Software Engineering January.
ECE450 - Software Engineering II1 ECE450 – Software Engineering II Today: Key Principles of Software Architecture and Design (I) adapted from Dave Penny’s.
Sommerville, Mejia-Alvarez, 2009Software Engineering, Slide 1 Software Design u Deriving a solution which satisfies software requirements.
Some Software Engineering Principles by D. L. Parnas Presented by Team 7: Amitkumar Dhameja Cincy Francis Rong Gu CS575 - Software Design, Team 7.
1 ISA&D7‏/8‏/ ISA&D7‏/8‏/2013 Methodologies of the SDLC Traditional Approach to SDLC Object-Oriented Approach to SDLC CASE Tools.
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.
UHD::3320::CH121 DESIGN PHASE Chapter 12. UHD::3320::CH122 Design Phase Two Aspects –Actions which operate on data –Data on which actions operate Two.
Design Concepts By Deepika Chaudhary.
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.
UNIT-I INTRODUCTION ANALYSIS AND DESIGN OF ALGORITHMS CHAPTER 1:
Software Engineering Lecture 2 Vladimir Safonov, Professor, head of laboratory St. Petersburg University WWW:
© 2006 Pearson Addison-Wesley. All rights reserved 2-1 Chapter 2 Principles of Programming & Software Engineering.
Conceptual design Tells the customer what the system will do Tells the customer what the system will do Answers: Answers: Where will the data come from?
1 Introduction to Design. 2 Outline Basics of design Design approaches.
Designing Abstract Interfaces for Device Independency Designing Abstract Interfaces for Device Independency Review of A Procedure for Designing Abstract.
“Architecture” The outcome of top-level design, reflecting principal design decisions Can (and should) be modified and updated Analogous to architecture.
Comparing Designs By Chris McCall. Comparing Designs A decision-making method for deciding between many designs for a single specification Provides a.
February 19, February 19, 2016February 19, 2016February 19, 2016 Azusa, CA Sheldon X. Liang Ph. D. Software Engineering in CS at APU Azusa Pacific.
Design CS 470 – Software Engineering I Sheldon X. Liang, PH.D.
DESIGN PROCESS AND CONCEPTS. Design process s/w design is an iterative process through which requirements are translated into a “blueprint” for constructing.
SOFTWARE DESIGN & SOFTWARE ENGINEERING Software design is a process in which data, program structure, interface and their details are represented by well.
Advanced Data Structures Lecture 1
NCCUCS 軟工概論 Software Design: Modules (KWIC case study)
Software Design.
On the Criteria to Be Used in Decomposing Systems into Modules
Software Design Mr. Manoj Kumar Kar.
Tutorial on BoxScript: A Component-Oriented Language
Prepared by Charlie Meyer, May 2009
Designing Software for Ease of Extension and Contraction
Problem Solving Techniques
Chapter 5 Designing the Architecture Shari L. Pfleeger Joanne M. Atlee
CSE 403, Winter 2003 Software Engineering
CSE 403: Notkin #2 of 3 on software change
On the Criteria To Be Used in Decomposing Systems into Modules
On the Criteria To Be Used in Decomposing Systems into Modules D. L
CSE403 Software Engineering Autumn 2000 Design (Overview)
Software Fundamentals
Module Structure David Parnas Discusses “modularization”
Presentation transcript:

03 - ParnasCSC4071 A Sketchy Evolution of Software Design 1960s –Structured Programming (“Goto Considered Harmful”, E.W.Dijkstra) Emerged from considerations of formally specifying the semantics of programming languages, and proving programs satisfy a predicate. Adopted into programming languages because it’s a better way to think about programming 1970s –Structured Design Methodology/guidelines for dividing programs into subroutines. 1980s –Modular (object-based) programming Ada, Modula, Euclid, … Grouping of sub-routines into modules with data. 1990s –Object-Oriented Languages started being commonly used –Object-Oriented Analysis and Design for guidance.

03 - ParnasCSC4072 Three Papers by David Parnas –“On the Criteria To Be Used in Decomposing Systems into Modules” Comm. ACM 15, 12 (Dec. 1972), –“On a ‘Buzzword’: Hierarchical Structure” IFIP Congress ‘74. North Holland Publishing Company, 1974 pp –“On the design and development of program families” IEEE Trans. On SE., vol. SE-2, pp.1-9, Mar. 1976

03 - ParnasCSC4073 Module Structure David Parnas –“On the Criteria To Be Used in Decomposing Systems into Modules” Comm. ACM 15, 12 (Dec. 1972), Discusses “modularization” –Module = a collection of subroutines and data elements –Critique of Procedural Design Pointing the way to object-based and OO design. Describes two ways to modularize a program that generates KWIC (Key Word in Context) indices. –Modularization 1 Based on the sequence of steps to perform –Modularization 2 Based on the principle of “information hiding”

03 - ParnasCSC4074 KWIC Input Designing Software for Ease of Construction Figs are Good Output are Good Figs for Ease of Construction Designing Software of Construction Designing Software for Ease Construction Designing Software for Ease of Designing Software for Ease of Construction Ease of Construction Designing Software for Figs are Good Good Figs are Software for Ease of Construction Designing

03 - ParnasCSC4075 KWIC Modularization 1 Master control Input mediumOutput medium CharactersIndex Alphabetized Index InputCircular ShiftAlphabetizerOutput

03 - ParnasCSC4076 KWIC Modularization 2 Master control Input mediumOutput medium InputOutput Lines setc(i,w,j,c)getc(i,w,j)nWords(i) Circular Shifter getc(i,w,j)nWords(i)cssetup Alphabetizer doAlphIth(i)

03 - ParnasCSC4077 Criteria for decomposition Modularization 1 –Each major step in the processing was a module Modularization 2 –Information hiding Each module has one or more "secrets” Each module is characterized by its knowledge of design decisions which it hides from all others. –Lines how characters/lines are stored –Circular Shifter algorithm for shifting, storage for shifts –Alphabetizer algorithm for alpha, laziness of alpha

03 - ParnasCSC4078 General Comparison General –Note: both systems might share the same data structures and the same algorithms –Differences are in the way they are divided into work assignments –Systems are substantially different even if identical in the runnable representation Possible because the runnable representation is used only for running Other representations are used for –Changing –Documenting –Understanding –…

03 - ParnasCSC4079 Changeability Comparison Design decisions that may change –Input format (1, 1) –All lines stored in memory (all, 1) –Pack characters 4 to a word (all, 1) –Make an index for circular shifts rather than store them (3,1) –Alphabetize once, rather than either –Search for each item as needed –Partially alphabetize, partially search (3,1)

03 - ParnasCSC40710 Independent Development Modularization 1 –Must design all data structures before parallel work can proceed –Complex descriptions needed Modularization 2 –Must design interfaces before parallel work can begin –Simple descriptions only Comprehensibility –Modularization 2 is better Parnas subjective judgment

03 - ParnasCSC40711 Hierarchical Structure David Parnas –“On a ‘Buzzword’: Hierarchical Structure” IFIP Congress ‘74. North Holland Publishing Company, 1974 pp Earliest abstract discussion of what has become known as “software architecture” –Debunks prevalent notion Hierarchical == good –Seeks to demonstrate that the term is used for many different things, often at the same time. –Context is OS design T.H.E, MULTICS, RC4000

03 - ParnasCSC40712 Types of Hierarchy Program Hierarchy –Calls hierarchy –Only useful when humans are working with the system E.g., inlines as semantically equivalent to calls Process Hierarchy –Often mixed-up with other hierarchies –E.g., “Give works to” in the T.H.E system. Resource Allocation Hierarchy –RC4000 Protection Hierarchy –MULTICS Module Hierarchy –Procedure or module part-of a higher-level module

03 - ParnasCSC40713 Program Families David Parnas –“On the design and development of program families” IEEE Trans. On SE., vol. SE-2, pp.1-9, Mar Family of Programs –When it is worthwhile to First study common properties Then determine special properties of each family member Basis for –Designing for change –Reuse libraries –OO Design

03 - ParnasCSC40714 Methods Classical method: Sequential completion –One member of the family developed completely –Modify to get the next –And so on New techniques –Develop to an intermediate stage –Different family members will proceed with different design decisions from the intermediate stage onwards –Must represent the intermediate stages: Stepwise refinement based –Postpone implementation of operand types and operators until later. Module based –Specify module interface –Substitute different implementations