1 / 16

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. CS575 - Software Design, Team 7. Topics Covered. Introduction to Software Engineering A Well-Structured Program? Modules & Modularization

Ava
Download Presentation

Some Software Engineering Principles by D. L. Parnas

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Some Software Engineering Principlesby D. L. Parnas Presented by Team 7: Amitkumar Dhameja Cincy Francis Rong Gu CS575 - Software Design, Team 7

  2. 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

  3. What is Software Engineering Multi-Person construction of Multi-Version programs Excludes “solo programming” Some Problems CS575 - Software Design, Team 7

  4. 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

  5. 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

  6. 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

  7. About Module • Module has several definitions: • A job assignment • A subroutine • A memory load • A functional component CS575 - Software Design, Team 7

  8. 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

  9. Decomposition (Continued) Flowchart  Information Flow Modularization  Information Locality/Hiding CS575 - Software Design, Team 7

  10. 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

  11. 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

  12. 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

  13. 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

  14. 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

  15. 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

  16. Some Software Engineering Principles Finished… At Last!!! Any Questions??? CS575 - Software Design, Team 7

More Related