ANU COMP2110 Software Design in 2004 Lecture 24Slide 1 COMP2110 in 2004 Software Design Lecture 24: the Parnas view of design process and product The Parnas.

Slides:



Advertisements
Similar presentations
Ch:8 Design Concepts S.W Design should have following quality attribute: Functionality Usability Reliability Performance Supportability (extensibility,
Advertisements

SOFTWARE TESTING. INTRODUCTION  Software Testing is the process of executing a program or system with the intent of finding errors.  It involves any.
Info1409 De Montfort University Lecture 3 The Systems Development Life Cycle Systems Analysis & Design Academic Year 2008/9.
Lecture # 2 : Process Models
Modeling the Process and Life Cycle CSCI 411 Advanced Database and Project Management Monday, February 2, 2015.
IT Requirements Capture Process. Motivation for this seminar Discovering system requirements is hard. Formally testing use case conformance is hard. We.
Requirement Analysis and Specification Mr. Manoj Kumar Kar.
Background information Formal verification methods based on theorem proving techniques and model­checking –to prove the absence of errors (in the formal.
Software Design Deriving a solution which satisfies software requirements.
Requirements and Design
© SERG Software Design (Rational Design Process) Pg 1 “A Rational Design Process: How and Why to Fake it” by D. L. Parnas and P. C. Clements.
Informatics 43 – May 7, Restatement of Goals for Testing Want to verify software’s correctness  Need to test  Need to decide on test cases  No.
Detailed Design Kenneth M. Anderson Lecture 21
Analysis Stage (Phase I) The goal: understanding the customer's requirements for a software system. n involves technical staff working with customers n.
Introduction to Software Design Chapter 1. Chapter 1: Introduction to Software Design2 Chapter Objectives To become familiar with the software challenge.
Describing Syntax and Semantics
Chapter 1 Program Design
School of Computer ScienceG53FSP Formal Specification1 Dr. Rong Qu Introduction to Formal Specification
© 2006 Pearson Addison-Wesley. All rights reserved2-1 Chapter 2 Principles of Programming & Software Engineering.
Introduction to Software Design Chapter 1. Chapter 1: Introduction to Software Design2 Chapter Objectives To become familiar with the software challenge.
Software Documentation Written By: Ian Sommerville Presentation By: Stephen Lopez-Couto.
Software Engineering Case Study Slide 1 Introductory case study.
03 - ParnasCSC4071 A Sketchy Evolution of Software Design 1960s –Structured Programming (“Goto Considered Harmful”, E.W.Dijkstra) Emerged from considerations.
The Project AH Computing. Functional Requirements  What the product must do!  Examples attractive welcome screen all options available as clickable.
CS 8532: Adv. Software Eng. – Spring 2007 Dr. Hisham Haddad Tuesday Class will start momentarily. Please Stand By … CS 8532: Advanced Software.
System Implementation System Implementation - Mr. Ahmad Al-Ghoul System Analysis and Design.
CS 4310: Software Engineering Lecture 3 Requirements and Design.
Lesson 7 Guide for Software Design Description (SDD)
Section 02Systems Documentation1 02 Systems Documentation And Franchise Colleges By MANSHA NAWAZ.
1 Shawlands Academy Higher Computing Software Development Unit.
Chapter 8: Systems analysis and design
Prologue: The Software Process. Main Phases of Software Process 1. Requirements Analysis (answers “WHAT?”) Specifying what the application must do 2.
Simple Program Design Third Edition A Step-by-Step Approach
1 © 2005 course technology University Of Palestine Chapter 6 Storyboarding the User’s Experience.
SE-02 SOFTWARE ENGINEERING LECTURE 3 Today: Requirements Analysis Requirements tell us what the system should do - not how it should do it. Requirements.
CS 3610: Software Engineering – Spring 2009 Dr. Hisham Haddad – CSIS Dept. Class Project OO Design Document Here is what you need to do for your class.
Introduction to Software Design Chapter 1. Chapter Objectives  To become familiar with the software challenge and the software life cycle  To understand.
1 The Software Development Process  Systems analysis  Systems design  Implementation  Testing  Documentation  Evaluation  Maintenance.
© 2005 course technology1 1 1 University Of Palestine UML for The IT Business Analyst A practical guide to Object Oriented Requirement Gathering Hoard.
SE: CHAPTER 7 Writing The Program
How to Prepare an Annotated Bibliography
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.
ANU comp2110 Software Design lecture 4 COMP2110 Software Design in 2003 lecture 4 Requirements Specifications lecture 2 of 3 1.The process of creating.
CS 3610: Software Engineering – Fall 2009 Dr. Hisham Haddad – CSIS Dept. Class Project OO Design Document Here is what you need to do for your class project.
CS 4850: Senior Project Fall 2014 Object-Oriented Design.
Historical Aspects Origin of software engineering –NATO study group coined the term in 1967 Software crisis –Low quality, schedule delay, and cost overrun.
The Software Development Process
Systems Development Life Cycle
© 2006 Pearson Addison-Wesley. All rights reserved2-1 Chapter 2 Principles of Programming & Software Engineering.
© 2006 Pearson Addison-Wesley. All rights reserved 2-1 Chapter 2 Principles of Programming & Software Engineering.
Testing OO software. State Based Testing State machine: implementation-independent specification (model) of the dynamic behaviour of the system State:
Intermediate 2 Computing Unit 2 - Software Development.
ANU COMP2110 Software Design in 2003 Lecture 10Slide 1 COMP2110 Software Design in 2004 Lecture 12 Documenting Detailed Design How to write down detailed.
ANU comp2110 Software Design lecture 8 COMP2110 Software Design in 2004 lecture 8 Software Architecture 1 of 2 (design, lecture 3 of 6) Goal of this small.
COMP2110 Software Design in 2003 ● a(nother) framework for Software Engineering ● the Software Engineering ideas and concepts in comp2110 ● Organisation.
Software Requirements Specification Document (SRS)
1)History of water fall model. 2)Features of water fall model. 3)Phase of water fall model. 4)Brief description of phases. 5)Advantages. 6)Disadvantages.
Formal Verification. Background Information Formal verification methods based on theorem proving techniques and model­checking –To prove the absence of.
ANU COMP2110 Software Designlec 06: Design part 1 1/26 COMP2110 Software Design in 2004 Design lecture 6 - lecture 1 of 6 on Design 1.What is software.
Lectures 2 & 3: Software Process Models Neelam Gupta.
DE?!GN software. COMP2110 Software Design in 2004 Chris Johnson 1.Software Requirements and Software Design in a framework for Software Engineering 2.The.
CSCI 383 Object-Oriented Programming & Design Lecture 7 Martin van Bommel.
Program Design. Simple Program Design, Fourth Edition Chapter 1 2 Objectives In this chapter you will be able to: Describe the steps in the program development.
 System Requirement Specification and System Planning.
The Software Lifecycle Stuart Faulk. Definition Software Life Cycle: evolution of a software development effort from concept to retirement Life Cycle.
Principles of Programming & Software Engineering
ICS 3UI - Introduction to Computer Science
Life Cycle Models PPT By :Dr. R. Mall.
CS 8532: Advanced Software Engineering
Presentation transcript:

ANU COMP2110 Software Design in 2004 Lecture 24Slide 1 COMP2110 in 2004 Software Design Lecture 24: the Parnas view of design process and product The Parnas paper is available online in the course ebrick David Lorge Parnas and Paul C Clements A rational design process: how and why to fake it IEEE Transactions on Software Engineering, SE-12(2), pp , Feb 1986.

ANU COMP2110 Software Design in 2004 Lecture 24Slide 2 Who? when? where? when you encounter a reference to a work, ask: who wrote it? (do they have a reputation?) where was it published? (does this source have a reputation, any editorial gate-keeper process, an aim of being a publisher for the scholarly record, or for hot news items, for considered and supported arguments, or for top of the head opinion? when was it published? is it in response to debates and topics of interst only at the time, is it still relevant now?

ANU COMP2110 Software Design in 2004 Lecture 24Slide 3 Who are Parnas and Clements? Parnas is a very influential writer and thinker in the development of the field of Software Engineering. His paper “On the Criteria for to be used for Decomposing Systems into Modules” (1972) is one of the most heavily cited papers in software engineering. He is a Professor at the high class McMaster University in Canada, and also University of Limerick in Ireland. A famous study he made was a reverse engineering design study of the software for the avionics of the A10 attack plane: he knows how to combine theory with practice. Clements now works at the (presitigous) Carnegie-Mellon Software Engineering Institute, and has written several books on Software Architecture since this paper (e.g. Software Architecture in Practice, by Len Bass, Paul Clements, Rick Kazman,Pearson Education, 2 nd edn 2004

ANU COMP2110 Software Design in 2004 Lecture 24Slide 4 Where and when? IEEE Transactions in Software Engineering IEEE is the world’s largest and most authoritative publisher of engineering (and computing) theory and practical theory IEEE Transactions in X are the journals of record (the magazines such as IEEE Computer and IEEE Software are good current topics; but their editorial process is weaker, the quality is generally lower) hmmm. old, before the Object-Oriented movement was as strong as now; don’t expect to find OO design specifically talked about - but the contrast of design process and product is still relevant and this paper is not completely out of date.

ANU COMP2110 Software Design in 2004 Lecture 24Slide 5 so what? so when these guys write in this journal about “faking” a process we had all better take notice! and give their arguments some thoughtful consideration

ANU COMP2110 Software Design in 2004 Lecture 24Slide 6 Implementation The Waterfall Software Process – Analysis phase time Requirements Analysis Design Phases (activities) Testing Maintenance Adapted from Software Design: From Programming to Architecture by Eric J. Braude (Wiley 2003), with permission. Processes -gathering requirements -verifying requirements Product a SRS document describing information models Software Requirements Specification Retirement

ANU COMP2110 Software Design in 2004 Lecture 24Slide 7 The Waterfall Software Process – Design phase time Requirements Analysis Design Phases (activities) Testing Maintenance Adapted from Software Design: From Programming to Architecture by Eric J. Braude (Wiley 2003), with permission. Product SDD describing modules, classes, interfaces, algorithms, data structures: as text and diagrams Software Design Document Retirement Processes - decide high-level architecture - do detailed design - reviews Implementation

ANU COMP2110 Software Design in 2004 Lecture 24Slide 8 What do they mean by Rational? "A rational design process" - what does "rational" mean here?" look at the Oxford English Dictionary: rational 3.a. Based on, derived from, reason or reasoning. 7. Descriptive of methods of analysis and planning that make use of calculation to bring about a projected result.

ANU COMP2110 Software Design in 2004 Lecture 24Slide 9 Why do we want a rational design process? because the usual process of designing software is irrational - and serious problems result from this state of affairs: cost of success, abandonment (and cost of failure), bloat we would like to derive our programs from a statement of requirements in the same sense that theorems are derived from axioms in published mathematical proofs Note the terms derive, published, mathematical proofs...

ANU COMP2110 Software Design in 2004 Lecture 24Slide 10 Why is this process an idealization? (why can’t we actually do it this way?) nobody knows in advance exactly what is it that is being designed (the requirements are incomplete and inconsistent) there are many facts that become known later, so there are backtracking loops in the design process - so we need to go back and change the design, not optimally we humans cannot manage large amounts of detail specs of the system change for external reasons during the process using humans implies we get human errors we use our favourite ideas, not ideas rationally derived from the particular requirements it is often sensible to make sub-optimal design decisions - especially for reasons of cost

ANU COMP2110 Software Design in 2004 Lecture 24Slide 11 Why is an idealization useful? We can follow an idealized rational process as closely as possible, even if we cannot follow it exactly in reality designers need guidance (see below) an ideal model is better than an ad hoc process a rational process provides a basis for a standard method provides a model for control and review

ANU COMP2110 Software Design in 2004 Lecture 24Slide 12 What does a rational design process have? At each stage of the process, we need to know: what product we should work on next what criteria the product should satisfy who should do the work what information the workers should use

ANU COMP2110 Software Design in 2004 Lecture 24Slide 13 A rational design process INPUT: The description of the system requirements is the input to the ideal, rational design process. OUTPUT: An architecture and a detailed design. Process: 1.Establish and Document the Requirements 2.Design and Document the Module Structure 3.Design and Document the Module Interfaces 4.Design and Document the "uses" relationships between modules 5.Design and Document the Module Internal Structures

ANU COMP2110 Software Design in 2004 Lecture 24Slide 14 Establish and Document the Requirements The ideal requirements document satisfies: necessary: every statement should be valid for all acceptable software systems produced (no implementation details appear here) sufficient: the document should be complete (any system satisfying the stated requirements must be acceptable) honest: where information is incomplete the doc should say so the document should be organized as a reference document - not as an introductory narrative Note: a complete and sufficient set of specs would be essential to act as the input if we did have a rational, automatic design process.

ANU COMP2110 Software Design in 2004 Lecture 24Slide 15 Design and Document the Module Structure one form of the resulting document is called a "module guide" the guide defines the responsibility for each module by stating the design decisions that will be encapsulated in the module a module may consist of submodules the document should reflect a tree structure, dividing the system into a small number of modules and treat each module in the same way until all modules are "quite small" Note: we also call this the system architecture or high-level design. (this term now has stronger meaning: we expect more “structure” such as layers, pipelines, MVC in our architectures) this process appears to echo a (old-fashioned) stepwise refinement process but it also lays down some good qualities of the description resulting from any process

ANU COMP2110 Software Design in 2004 Lecture 24Slide 16 Design and Document the Module Interfaces the module interfaces must be relatively formal describe interfaces using parameters, signatures, possibly pre- and post-conditions interface description must include a black-box description of the module – a statement of its purpose, what the module does - not how. just enough information to use the module and nothing more (this is also a property of design by contract)

ANU COMP2110 Software Design in 2004 Lecture 24Slide 17 Design and Document the "uses" relationships between modules The "uses" relationship is another view of a design: it may be an abstraction of the module interfaces or more detail. Can be represented as a matrix, for example. for modern OO we would use a class diagram Captures an important notion of interaction. Important for building subsets: answers the question can we build a part of the system using only a subset of modules? staged delivery, fail-soft systems, program families... Note: other interactions between modules can also be documented, especially flows of control (and incoming event handling), data flows. for modern OO we can use other UML diagrams: sequence, state...

ANU COMP2110 Software Design in 2004 Lecture 24Slide 18 Design and Document the Module Internal Structures explains the intent of the module to the programmer (implementer) of this module documents the effect of each function on any data structures - any side effects as well as pre- and post-conditions of the contract exception handling use pseudocode or partial program code a "verification" argument that the module's properties are sufficient to satisfy the specification allows an efficient review of the design before coding Note: in OO design many classes and methods are almost fully described by the interface alone. Systems where there are more substantial functions involved than just "handle" or "dispatch" events or manipulate simple data need more design work and documentation here.

ANU COMP2110 Software Design in 2004 Lecture 24Slide 19 Faking the ideal process The design process should produce the documents in order if possible with temporary gaps (noted) where information is missing even if the actual process is non-linear By comparison: Mathematical proofs are an artifact of the end of a lot of work - not a story of the process of discovery – but can be read as a rational, linear argument or exposition of the proof. - and then fill the gaps in. Do the same with software designs: so that the design document can be read as a –rational, –linear, –structured exposition of the design.

ANU COMP2110 Software Design in 2004 Lecture 24Slide 20 Design document and design notebook Besides the design document: it is also useful to record all of the design alternatives - and a reason why they were rejected. I would call this record a design notebook – which is not the final design – but it is a very useful adjunct to the design for the initial design team and for the later maintainer. If the design is only recorded as comments within the program code, this aspect is easily lost.