Some Software Engineering Principles by D. L. Parnas Presented by Team 7: Amitkumar Dhameja Cincy...
-
Upload
bertha-walsh -
Category
Documents
-
view
213 -
download
0
Transcript of Some Software Engineering Principles by D. L. Parnas Presented by Team 7: Amitkumar Dhameja Cincy...
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
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