Title: Some Software Engineering Principles by D. L. Parnas
1Some Software Engineering Principles by D. L.
Parnas
- Presented by Team 7
- Amitkumar Dhameja
- Cincy Francis
- Rong Gu
CS575 - Software Design, Team 7
2Topics 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
3What is Software Engineering
- Multi-Person construction of Multi-Version
programs - Excludes solo programming
- Some Problems
CS575 - Software Design, Team 7
4Challenges 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
5Challenges 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
6Well-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
7About Module
- Module has several definitions
- A job assignment
- A subroutine
- A memory load
- A functional component
CS575 - Software Design, Team 7
8Decomposition
- 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
9Decomposition (Continued)
Flowchart ? Information Flow Modularization ?
Information Locality/Hiding
CS575 - Software Design, Team 7
10Specification
- 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
11Specification (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
12Error 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
13Hierarchical 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
14Designing 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
15Summary
Principles discussed in this paper
- Decomposing system
- Specification
- Error handling
- Use hierarchy structure
- Design abstract interface
These Principles are intended to be applied in
the early phases of software product design
CS575 - Software Design, Team 7
16Some Software Engineering Principles
- Finished At Last!!!
- Any Questions???
CS575 - Software Design, Team 7