Some Software Engineering Principles by D. L. Parnas Presented by Team 7: Amitkumar Dhameja Cincy...

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

Transcript of Some Software Engineering Principles by D. L. Parnas Presented by Team 7: Amitkumar Dhameja Cincy...

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

Some Software Engineering Principles by D. L. Parnas

Presented by Team 7:

Amitkumar Dhameja

Cincy Francis

Rong Gu

CS575 - Software Design, Team 7

Page 2: 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

Page 3: Some Software Engineering Principles by D. L. Parnas Presented by Team 7: Amitkumar Dhameja Cincy Francis Rong Gu 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

Page 4: Some Software Engineering Principles by D. L. Parnas Presented by Team 7: Amitkumar Dhameja Cincy Francis Rong Gu 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

Page 5: Some Software Engineering Principles by D. L. Parnas Presented by Team 7: Amitkumar Dhameja Cincy Francis Rong Gu 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

Page 6: Some Software Engineering Principles by D. L. Parnas Presented by Team 7: Amitkumar Dhameja Cincy Francis Rong Gu 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

Page 7: Some Software Engineering Principles by D. L. Parnas Presented by Team 7: Amitkumar Dhameja Cincy Francis Rong Gu 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

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

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

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

CS575 - Software Design, Team 7

Flowchart Information Flow

Modularization Information Locality/Hiding

Decomposition (Continued)

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

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

Page 11: Some Software Engineering Principles by D. L. Parnas Presented by Team 7: Amitkumar Dhameja Cincy Francis Rong Gu 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

Page 12: Some Software Engineering Principles by D. L. Parnas Presented by Team 7: Amitkumar Dhameja Cincy Francis Rong Gu 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

Page 13: Some Software Engineering Principles by D. L. Parnas Presented by Team 7: Amitkumar Dhameja Cincy Francis Rong Gu 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

Page 14: Some Software Engineering Principles by D. L. Parnas Presented by Team 7: Amitkumar Dhameja Cincy Francis Rong Gu 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

Page 15: Some Software Engineering Principles by D. L. Parnas Presented by Team 7: Amitkumar Dhameja Cincy Francis Rong Gu 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:

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

Some Software Engineering Principles

Finished… At Last!!!

Any Questions???

CS575 - Software Design, Team 7