CS:2820 (22C:22) Object-Oriented Software Development

Similar documents
Complexity. Object Orientated Analysis and Design. Benjamin Kenwright

Introduction to Object Oriented Analysis and Design

Architectural Blueprint

Lecture 2: Software Engineering (a review)

Unit 1 Introduction to Software Engineering

Abstraction. Abstraction

Architectural Blueprint The 4+1 View Model of Software Architecture. Philippe Kruchten

Object Model. Object Orientated Analysis and Design. Benjamin Kenwright

Contemporary Design. Traditional Hardware Design. Traditional Hardware Design. HDL Based Hardware Design User Inputs. Requirements.

The University of Iowa Fall CS:5810 Formal Methods in Software Engineering. Introduction

Object-Oriented Analysis and Design Prof. Partha Pratim Das Department of Computer Science and Engineering Indian Institute of Technology-Kharagpur

UNIT-I Introduction of Object Oriented Modeling

CHAPTER 9 DESIGN ENGINEERING. Overview

10조 이호진 이지 호

CS504-Softwere Engineering -1 Solved Objective Midterm Papers For Preparation of Midterm Exam

An Approach to Software Component Specification

INTERNATIONAL JOURNAL OF COMPUTER ENGINEERING & TECHNOLOGY (IJCET) NEED FOR DESIGN PATTERNS AND FRAMEWORKS FOR QUALITY SOFTWARE DEVELOPMENT

Software Architecture

Designing Component-Based Architectures with Rational Rose RealTime

Software Development Chapter 1

Design and Evolution of an Agent-Based CASE System for OOAD

Open Reuse of Component Designs in OPM/Web

CHAPTER 1. Topic: UML Overview. CHAPTER 1: Topic 1. Topic: UML Overview

Overview (and reorientation) of SE

THE APPLICATION OF SEQUENCE ENUMERATION TO THE AXIOMATIC DESIGN PROCESS

Domain-Driven Development with Ontologies and Aspects

Software Architecture and Engineering Introduction Peter Müller

CS 575: Software Design

Approaches of using UML for Embedded System Design

Object-Oriented Introduction

Classes and Objects. Object Orientated Analysis and Design. Benjamin Kenwright

Component-Based Software Engineering TIP

Introduction to Software Engineering

MeDUSA Method for Designing UML2-based Embedded System Software Architectures

History of object-oriented approaches

A PROPOSAL FOR MODELING THE CONTROL SYSTEM FOR THE SPANISH LIGHT SOURCE IN UML

Lecture Notes UML UNIT-II. Subject: OOAD Semester: 8TH Course No: CSE-802

SADT Structured Analysis & Design Technique

Metaprogrammable Toolkit for Model-Integrated Computing

For presentation at the Fourth Software Engineering Institute (SEI) Software Architecture Technology User Network (SATURN) Workshop.

An introduction to the IBM Views and Viewpoints Framework for IT systems

Automate Transform Analyze

Architectural Patterns

what do we mean by event processing now, a checklist of capabilities in current event processing tools and applications,

Software Development Fundamentals (SDF)

Design Patterns. Architectural Patterns. Contents of a Design Pattern. Dr. James A. Bednar. Dr. David Robertson

Ontology Development. Qing He

A Sketchy Evolution of Software Design. Three Papers by David Parnas

Diseño y Evaluación de Arquitecturas de Software. Architecture Based Design Method

For a long time, programming languages such as FORTRAN, PASCAL, and C Were being used to describe computer programs that were

AN OBJECT-ORIENTED VISUAL SIMULATION ENVIRONMENT FOR QUEUING NETWORKS

Design of Embedded Systems

Introduction to the UML

Domain Engineering And Variability In The Reuse-Driven Software Engineering Business.

AN INTEGRATED DEVELOPMENT / RUN-TIME ENVIRONMENT

Software Design. Levels in Design Process. Design Methodologies. Levels..

Internet Management Overview

Fundamentals of Programming Languages. PL quality factors Lecture 01 sl. dr. ing. Ciprian-Bogdan Chirila

SOME TYPES AND USES OF DATA MODELS

1 Executive Overview The Benefits and Objectives of BPDM

DRS Policy Guide. Management of DRS operations is the responsibility of staff in Library Technology Services (LTS).

Introduction to Formal Methods

In Search of Design Patterns for Evolvable Modularity. Prof. dr. Herwig Mannaert IARIA Computation World, Athens, 2009

Creating Domain-Specific Modeling Languages with OPM/D A Meta-modeling approach

ArchiMate 2.0. Structural Concepts Behavioral Concepts Informational Concepts. Business. Application. Technology

Programmazione Avanzata e Paradigmi Ingegneria e Scienze Informatiche - UNIBO a.a 2013/2014 Lecturer: Alessandro Ricci

Conceptual Modeling and Specification Generation for B2B Business Processes based on ebxml

Ch 1: The Architecture Business Cycle

Design Pattern What is a Design Pattern? Design Pattern Elements. Almas Ansari Page 1

Unit-3 Software Design (Lecture Notes)

A STUDY OF OBJECT ORIENTED ANALYSIS AND DESIGN

Component-Based Software Engineering TIP

Software Design Fundamentals. CSCE Lecture 11-09/27/2016

Definition of Information Systems

DHANALAKSHMI COLLEGE OF ENGINEERING, CHENNAI

Architectural Patterns. Architectural Patterns. Layers: Pattern. Architectural Pattern Examples. Layer 3. Component 3.1. Layer 2

Architectural Patterns

Software Testing CS 408

Design Patterns. Gunnar Gotshalks A4-1

Software Architecture--Continued. Another Software Architecture Example

Transforming Cyber-Physical System Models

SHRI ANGALAMMAN COLLEGE OF ENGINEERING & TECHNOLOGY (An ISO 9001:2008 Certified Institution) SIRUGANOOR,TRICHY

Object-Oriented Design

The Analysis and Design of the Object-oriented System Li Xin 1, a

A Graduate Embedded System Education Program

CMSC 435: Software Engineering Section 0201

CASE TOOLS LAB VIVA QUESTION

Transformation of analysis model to design model

OBJECT-ORIENTED MODELING AND DESIGN. Introduction

Alan J. Perlis - Epigrams on Programming

A Design Rationale Representation for Model-Based Designs in Software Engineering

Goals of Lecture. Lecture 27: OO Design Patterns. Pattern Resources. Design Patterns. Cover OO Design Patterns. Pattern Languages of Programming

How and Why to Use the Unified Modeling Language. among software components, architectural-based


ENTITIES IN THE OBJECT-ORIENTED DESIGN PROCESS MODEL

AN ABSTRACTION-BASED METHODOLOGY FOR MECHANICAL CONFIGURATION DESIGN

CSC Advanced Object Oriented Programming, Spring Overview

Review Software Engineering October, 7, Adrian Iftene

Introduction to Software Engineering (2+1 SWS) Winter Term 2009 / 2010 Dr. Michael Eichberg Vertretungsprofessur Software Engineering Department of

Object-Oriented Software Development Using

Transcription:

The University of Iowa CS:2820 (22C:22) Object-Oriented Software Development! Spring 2015 Software Complexity by Cesare Tinelli

Complexity Software systems are complex artifacts Failure to master this complexity results in projects that are late go over budget do not meet requirements

Complexity The physical world is full of complex systems (both natural and man-made) Software s complexity is however fundamentally different: Software is unbound by physical constraints Industrial(-strength) software exhibits a rich set of behaviors

Industrial Software Process Control (oil, gas, water,...) Transportation (air traffic control,...) Health Care (patient monitoring, device control,...) Finance (automatic trading, bank security,...) Defense (intelligence, weapons control,...) Manufacturing (precision milling, assembly,...)...

Why Software Is Inherently Complex 1. Complexity of problem domain 2. Difficulty of managing development process 3. Flexibility afforded by software 4. Difficulty of characterizing discrete system behavior

Complexity of Problem Domain Many, often contradictory, requirements functional (what must be done) non-functional (usability, cost, performance, consumption,...) Communication gap between customers and developers Evolving requirements

Difficulty of Managing Development Process Fundamental task of software development: engineering the illusion of simplicity However,...

Difficulty of Managing Development Process Modern systems are huge (10 6 LOC, 10 2 modules) Development team is necessary More developers => more complex communication more difficult coordination harder to maintain design unity/integrity

Flexibility Afforded by Software Software is the ultimate flexible product It is technically possible for any developer to create anything with it This is both a blessing and a curse Other industries have specialization, codes and quality standards Software development remains a mostly artisanal labor-intensive business

Difficulty of Characterizing Discrete Systems Behavior Physical (analog) systems exhibit continuous behavior Small external perturbations produce small changes in behavior Software (digital) systems exhibit discrete behavior Small changes in input can produce large changes in output

Difficulty of Characterizing Discrete Systems Behavior Discrete systems have a combinatorial state explosion Describing their behavior precisely and formally is very challenging in general Most software professionals are poorly trained for that Testing for flaws is intrinsically insufficient

Common Features of Good Complex Systems 1. Nearly decomposable, hierarchic structure 2. Primitive components 3. Separation of concerns 4. Combination of common patterns 5. Stable intermediate forms

Organized Complexity Many hierarchies can be found in a complex system Most important for us: object structure ("part of" relation) class structure ("is a" relation) We refer to them together as the system's architecture

Canonical Form of a Complex System Classes capture common features of a set of objects Each object is an instance of a class Objects are composed of and interact with other objects

Successful Complex Software Systems Exhibit the 5 attributes characterizing good complex systems Have well designed and built (i) class and (ii) object structures (i) captures common features and behavior within a system (ii) illustrates how different objects collaborate with one another

The Software Development Predicament The complexity of software systems is ever increasing The human ability to cope with complexity is fundamentally limited Time-honored technique to master complexity: divide et impera Decomposition and abstraction are key

Two Alternative Decomposition Approaches 1. Algorithmic Decomposition Each component denotes a major step in the system's overall process 2. Object-Oriented Decomposition Each component denotes a major agent in the system's overall process

Design of a program that updates the content of a master file

Design of a program that updates the content of a master file

Main Advantages of OO Decomposition It facilitates reuse of components and mechanisms system evolution over time separation of concerns

The Role of Design in Software Development Construct a system that [Mostow]: Satisfies a given (perhaps informal) functional specification Conforms to limitations of the target medium Meets implicit or explicit requirements on performance and resource usage Satisfies implicit or explicit design criteria on the form of the artifact Satisfies restrictions on the design process itself, such as its length or cost, or the tools available

The Importance of Model Building in Design Widespread in all engineering disciplines Appeals to the principles of abstraction, decomposition, and hierarchy Models - can be evaluated and modified before the actual system is built - allow us to focus on important aspects by abstracting away irrelevant details

Basic Elements of Software Design Methodologies Notation The language for expressing models Process The activities leading to the orderly construction of a system's model Tools The artifacts that facilitate the creation and validation of models

Effective OO Design and Development Requires mastery of these underlying principles: abstraction encapsulation modularity typing concurrency persistence hierarchy

References 1. G. Booch et al. Object-Oriented Analysis and Design with Applications, 3rd Edition. Addison-Wesley, 2007.