Download Some Software Engineering Principles

Survey
yes no Was this document useful for you?
   Thank you for your participation!

* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project

Document related concepts

Design Patterns wikipedia , lookup

Software bug wikipedia , lookup

Software quality wikipedia , lookup

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 MultiVersion 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 wellstructured systems
CS575 - Software Design, Team 7
About Module
Module has several definitions:
• A job assignment
• A subroutine
• A memory load
• A functional component
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
Decomposition (Continued)
Flowchart  Information Flow
Modularization  Information Locality/Hiding
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
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
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
Some Software Engineering
Principles
Finished… At Last!!!
Any Questions???
CS575 - Software Design, Team 7