Some Software Engineering Principles by D L Parnas
Some Software Engineering Principles by D. L. Parnas Presented by Team 7: Amitkumar Dhameja Cincy Francis Rong Gu CS 575 - 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 CS 575 - Software Design, Team 7
What is Software Engineering • Multi-Person construction of Multi. Version programs • Excludes “solo programming” • Some Problems CS 575 - 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? CS 575 - 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? CS 575 - 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 CS 575 - Software Design, Team 7
About Module has several definitions: • A job assignment • A subroutine • A memory load • A functional component CS 575 - 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 CS 575 - Software Design, Team 7
Decomposition (Continued) Flowchart Information Flow Modularization Information Locality/Hiding CS 575 - 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 CS 575 - 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 CS 575 - 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 CS 575 - 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 CS 575 - 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 CS 575 - 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 CS 575 - Software Design, Team 7
Some Software Engineering Principles Finished… At Last!!! Any Questions? ? ? CS 575 - Software Design, Team 7
- Slides: 16