Some Software Engineering Principles by D. L. Parnas Presented by Team 7: Amitkumar Dhameja Cincy Francis Rong Gu CS575 - Software Design, Team 7.

Slides:



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

Design Concepts and Principles
Software Design Deriving a solution which satisfies software requirements.
Software Architecture for DSD DSD Team. Overview What is software architecture and why is it so important? The role of architecture in determining system.
Design The goal is to design a modular solution, using the techniques of: Decomposition Abstraction Encapsulation In Object Oriented Programming this is.
Unit 191 Introduction to Software Engineering The objective of this section is to introduce the subject of software engineering. When you have read this.
Jump to first page 1 System Design (Finalizing Design Specifications) Chapter 3d.
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.
CS350/550 Software Engineering Lecture 1. Class Work The main part of the class is a practical software engineering project, in teams of 3-5 people There.
Chapter 1 Principles of Programming and Software Engineering.
Chapter 1 Program Design
1 ES 314 Advanced Programming Lec 2 Sept 3 Goals: Complete the discussion of problem Review of C++ Object-oriented design Arrays and pointers.
© 2006 Pearson Addison-Wesley. All rights reserved2-1 Chapter 2 Principles of Programming & Software Engineering.
Software Life Cycle Model
03 - ParnasCSC4071 A Sketchy Evolution of Software Design 1960s –Structured Programming (“Goto Considered Harmful”, E.W.Dijkstra) Emerged from considerations.
Chapter 3 Software Processes.
Software Architecture for DSD The “Uses” Relation.
CASE Tools And Their Effect On Software Quality Peter Geddis – pxg07u.
1COM6030 Systems Analysis and Design © University of Sheffield 2005 COM 6030 Software Analysis and Design Lecture 2- Software Process Models and Project.
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.
Simple Program Design Third Edition A Step-by-Step Approach
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.
CS 360 Lecture 3.  The software process is a structured set of activities required to develop a software system.  Fundamental Assumption:  Good software.
Introduction CS 3358 Data Structures. What is Computer Science? Computer Science is the study of algorithms, including their  Formal and mathematical.
On the Criteria to Be Used in Decomposing Systems into Modules Team 3 Nupur Choudhary Aparna Nanjappa Mark Zeits.
What is Software Architecture? | Website for Students | VTU NOTES | QUESTION PAPERS | NEWS | RESULTS Chapter 2, Authors: Len Bass, Paul,
SOFTWARE DESIGN.
CSE 219 Computer Science III Program Design Principles.
10 Software Architecture CSCU 411 Software Engineering.
SE: CHAPTER 7 Writing The Program
David Weiss Software Product-Line Engineering: A Family-Based Software Development Process: Designing The Family David Weiss
1 Systems Analysis and Design in a Changing World, Thursday, January 18, 2007.
Introduction CS 3358 Data Structures. What is Computer Science? Computer Science is the study of algorithms, including their  Formal and mathematical.
Chapter 7 Software Engineering Introduction to CS 1 st Semester, 2015 Sanghyun Park.
Design Concepts and Principles Instructor: Dr. Jerry Gao.
©Ian Sommerville 2006Software Engineering, 8th edition. Chapter 11 Slide 1 Design.
Design Concepts By Deepika Chaudhary.
1 Ch. 1: Software Development (Read) 5 Phases of Software Life Cycle: Problem Analysis and Specification Design Implementation (Coding) Testing, Execution.
Dale Roberts Object Oriented Programming using Java - Introduction Dale Roberts, Lecturer Computer Science, IUPUI Department.
SOFTWARE DESIGN. INTRODUCTION There are 3 distinct types of activities in design 1.External design 2.Architectural design 3.Detailed design Architectural.
Lecture 2 Intro. To Software Engineering and Object-Oriented Programming (1/2)
© 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.
CSE 303 – Software Design and Architecture
Software Engineering and Object-Oriented Design Topics: Solutions Modules Key Programming Issues Development Methods Object-Oriented Principles.
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 Software Design Lecture What’s Design It’s a representation of something that is to be built. i.e. design  implementation.
LanguageLab A Meta-modelling Environment Terje Gjøsæter and Andreas Prinz, University of Agder, Norway SDL Forum 2015, Berlin, Germany.
1 Introduction to Design. 2 Outline Basics of design Design approaches.
Software Requirements Specification (SRS)
How Are Computers Programmed? CPS120: Introduction to Computer Science Lecture 5.
Formal Verification. Background Information Formal verification methods based on theorem proving techniques and model­checking –To prove the absence of.
Software Development Process CS 360 Lecture 3. Software Process The software process is a structured set of activities required to develop a software.
Chapter 2 Principles of Programming and Software Engineering.
Lecture 2 Intro. To Software Engineering and Object-Oriented Programming (1/2)
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
On the Criteria to Be Used in Decomposing Systems into Modules
Principles of Programming and Software Engineering
CS701 SOFTWARE ENGINEERING
Topic I Introduction to Computer Architecture and Organization
Chapter 5 Designing the Architecture Shari L. Pfleeger Joanne M. Atlee
CSE403 Software Engineering Autumn 2000 Design (Overview)
Software Fundamentals
Paper by D.L Parnas And D.P.Siewiorek Prepared by Xi Chen May 16,2003
Chapter 2. Problem Solving and Software Engineering
Digital Designs – What does it take
Module Structure David Parnas Discusses “modularization”
Presentation transcript:

Some Software Engineering Principles by D. L. Parnas Presented by Team 7: Amitkumar Dhameja Cincy Francis Rong Gu CS575 - Software Design, Team 7

Topics Covered Introduction to Software Engineering A Well-Structured Program? Modules & Modularization Program Structure Control Techniques Error Handling Hierarchical Structure & Subsetable Systems Designing Abstract Interfaces Summary CS575 - Software Design, Team 7

What is Software Engineering Multi-Person construction of Multi- Version programs Excludes “solo programming” Some Problems CS575 - Software Design, Team 7

Challenges due to Multi-Person Programming How to divide the project into work assignments for programmers? How to specify the behavior of each component? How to communicate to all people about the run time errors? CS575 - Software Design, Team 7

Challenges due to Multi-Version Programming How to write programs that are easy to modify? How to write program with useful subsets? How to write program that are easy to expand? CS575 - Software Design, Team 7

Well-Structured Software Structure – refers to the partial description of the system Describes a system as a set of parts and specifies some connections between the parts Systems in which connections between parts contain little information are termed as well- structured systems CS575 - Software Design, Team 7

About Module CS575 - Software Design, Team 7 Module has several definitions: A job assignment A subroutine A memory load A functional component

Decomposition Approaches: Old - Divide project according to flow chart Correct - Design each module to “hide” or contain an assumption that is likely to change CS575 - Software Design, Team 7

Flowchart  Information Flow Modularization  Information Locality/Hiding Decomposition (Continued)

Specification Shortcomings of Common Approaches Approach 1 - reveals a rough description of the internal structure of the module Approach 2 - reveals a description of a hypothetic implementation of the module CS575 - Software Design, Team 7

Specification (Continued) New approach proposed Precise specification of externally visible aspects without suggesting internal construction Relate externally visible value functions to each other rather than to a (real or imagined) lower level machine CS575 - Software Design, Team 7

Error handling Treatment of run-time errors becomes difficult due to information hiding approach – Error information likely to be in other modules Proper UE handling requires systematic approach in every part of software CS575 - Software Design, Team 7

Hierarchical Structure and Subsetable Systems It is easy to find useful subsets if the “uses” relation defines a hierarchy among programs “Uses” hierarchy should be designed before the coding begins Rule of thumb for designing “uses” hierarchy: lower level programs vs. upper level programs CS575 - Software Design, Team 7

Designing Abstract Interface Modules have abstract interfaces that are relatively unlikely to change than the designing assumptions they hide The development of a list of assumptions unlikely to change during the product life cycle The specification of a set of interface functions around these assumptions CS575 - Software Design, Team 7

Summary Decomposing system Specification Error handling “Use” hierarchy structure Design abstract interface CS575 - Software Design, Team 7 These Principles are intended to be applied in the early phases of software product design Principles discussed in this paper:

Some Software Engineering Principles Finished… At Last!!! Any Questions??? CS575 - Software Design, Team 7