Survey
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
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