Introduction SWE 619.

Slides:



Advertisements
Similar presentations
EECE 310: Software Engineering Modular Decomposition, Abstraction and Specifications.
Advertisements

25 February 2009Instructor: Tasneem Darwish1 University of Palestine Faculty of Applied Engineering and Urban Planning Software Engineering Department.
Software Engineering-II
Design The goal is to design a modular solution, using the techniques of: Decomposition Abstraction Encapsulation In Object Oriented Programming this is.
COMP205 Comparative Programming Languages Part 1: Introduction to programming languages Lecture 3: Managing and reducing complexity, program processing.
Generative Programming. Generic vs Generative Generic Programming focuses on representing families of domain concepts Generic Programming focuses on representing.
System Design Decomposing the System. Sequence diagram changes UML 2.x specifications tells that Sequence diagrams now support if-conditions, loops and.
Pattern Abstract Factory
Introduction SWE 619. Why Is Building Good Software Hard? Large software systems enormously complex  Millions of “moving parts” People expect software.
Lesson 7 Guide for Software Design Description (SDD)
Software Engineering CS B Prof. George Heineman.
SWE 316: Software Design and Architecture – Dr. Khalid Aljasser Objectives Lecture 11 : Frameworks SWE 316: Software Design and Architecture  To understand.
Drexel University CS 451 Software Engineering Winter Yuanfang Cai Room 104, University Crossings
Some Software Engineering Principles by D. L. Parnas Presented by Team 7: Amitkumar Dhameja Cincy Francis Rong Gu CS575 - Software Design, Team 7.
Generative Programming. Automated Assembly Lines.
Introduction to CSE 331 Software Design & Implementation Winter 2011
ADT ITEC 320 Lecture 22. ADT Review Generic lists –Ada compilation workout Recursive algorithms –What would a recursive copy look like? Project 4 is up.
Introduction to Method. Example Java Method ( 1 ) The 2 types (kinds) of methods in Java Class methods Instance methods Methods can do more work than.
Software Engineering1  Verification: The software should conform to its specification  Validation: The software should do what the user really requires.
OOP (Object Oriented Programming) Lecture 1. Why a new paradigm is needed? Complexity Five attributes of complex systems –Frequently, complexity takes.
UML Course Instructor: Rizwana Noor. Overview  Modeling  What is UML?  Why UML?  UML Diagrams  Use Case  Components  Relationships  Notations.
MANAGING COMPLEXITY Lecture OO01 Introduction to Object-oriented Analysis and Design Abstract Data Types.
Software testing with CTesK Study 5. Test development process 1.Decision on area and depth of testing 2.Development of behavior model to be tested 3.Structuring.
SWE 214 (071) Introduction to UML Slide 1 Introduction to UML.
DESIGN PROCESS AND CONCEPTS. Design process s/w design is an iterative process through which requirements are translated into a “blueprint” for constructing.
English for Engineering Management ( 1 ) Detail 1-1 Fill out the missing words on the drawing (5 are missing) Where is the detail located on the building?
Principles of Programming & Software Engineering
Modular Decomposition, Abstraction and Specifications
Advanced Algorithms Analysis and Design
Software Design.
Data Abstraction: The Walls
Software Configuration Management
Software Project Configuration Management
Object-Oriented Design
Concept Mapping concepts and exercises
CSC 222: Computer Programming II
Fundamentals of Information Systems, Sixth Edition
The Development Process of Web Applications
Systems Analysis and Design With UML 2
System Design and Modeling
Software Engineering Fall 2005
Management of Oman Census2010
Object Oriented Systems Development
Chapter 6 Database Design
Verification and Validation
Objects First with Java A Practical Introduction using BlueJ
To Get Started Paper sheet
Chapter 5 Designing the Architecture Shari L. Pfleeger Joanne M. Atlee
Objective of This Course
Need for the subject.
Chapter 0 : Introduction to Object Oriented Design
CS240: Advanced Programming Concepts
CSE403 Software Engineering Autumn 2000 Design (Overview)
Objects First with Java A Practical Introduction using BlueJ
4+1 View Model of Software Architecture
Managing the Test Process CS 4501 / 6501 Software Testing
Department of Computer Science Abdul Wali Khan University Mardan
Combinational Circuits
4+1 View Model of Software Architecture
Objects First with Java A Practical Introduction using BlueJ
Identification of Variation Points Using Dynamic Analysis
Chapter 2. Problem Solving and Software Engineering
Combinational Circuits
Chapter 8, Design Patterns Introduction
M. Kezunovic (P.I.) S. S. Luo D. Ristanovic Texas A&M University
Some Important Skills Every Software Testers Should Have
Software Design Lecture : 6
Software Development Process Using UML Recap
Functions, Procedures, and Abstraction
Presentation transcript:

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 Software engineering is about: Managing complexity Managing change Coping with potential defects Customers, developers, environment, software

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

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.

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

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?