1 / 6

Introduction

Introduction. SWE 619. Why Is Building Good Software Hard?. Large software systems enormously complex Millions of “moving parts” People expect software to be malleable After all, it’s “only software” We are always trying to do new things with software Relevant experience often missing

jpollock
Download Presentation

Introduction

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. Introduction SWE 619

  2. Why Is Building Good Software Hard? • Large software systems enormously complex • Millions of “moving parts” • People expect software to be malleable • After all, it’s “only software” • We are always trying to do new things with software • Relevant experience often missing • Software engineering is about: • Managing complexity • Managing change • Coping with potential defects • Customers, developers, environment, software

  3. Decomposition and Abstraction • Decomposition – divide and conquer • Abstraction helps to decompose productively • Abstraction changes the level of details to be considered • A many-to-one mapping • “abstracts” from “irrelevant” details

  4. Abstraction mechanisms • Two abstraction mechanisms: • Abstraction by parameterization abstracts from the identity of the data by replacing them with parameters. It generalizes modules so that they can be used in more situation • Abstraction by specification abstracts from the implementation details (how the module is implemented) to the behavior users can depend on (what the module does). It isolates modules from one another’s implementations.

  5. Kinds of Abstractions • Procedural abstraction allows us to introduce new operations • Data abstraction allows us to introduce new types of data objects • Iteration abstraction allows us to iterate over items in a collection without revealing details of how the items are obtained • Type hierarchy allows us to abstract from individual data types to families of related types

  6. Summary • Program decomposition based on abstraction • Procedural and iteration abstractions are valuable • Data abstraction provides the primary organizational tool in the programming process • Goal for various abstractions: • What they are? • How to specify their behavior? • How to implement them in Java?

More Related