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

Similar documents
Chapter 3 Chapter 3 Service-Oriented Computing and SOA Lecture Note

Module 1. Introduction to Software Engineering. Version 2 CSE IIT, Kharagpur

Acknowledgement. Software Engineering. CS 3141: Team Software Project Introduction

Component Based Software Engineering: A Broad Based Model is Needed

Software Engineering. Software Engineering. Component-Based. Based on Software Engineering, 7 th Edition by Ian Sommerville

CSC340: Information Systems Analysis and Design. About the Course

Architecture. Reda Bendraou

Instructional Design Framework CSE: Unit 1 Lesson 1

CS 389 Software Engineering. Lecture 2 Chapter 2 Software Processes. Adapted from: Chap 1. Sommerville 9 th ed. Chap 1. Pressman 6 th ed.

Software Engineering

Engineering Process Software Qualities Software Architectural Design

Abstraction in Computer Science & Software Engineering: A Pedagogical Perspective

A Configuration Management Model for Software Product Line

Requirements Analysis Concepts & Principles. Instructor: Dr. Jerry Gao

Lecture 3 Software Development Processes

Using Measurement to translate Business Vision into Operational Software Strategies

Chap 1. Introduction to Software Architecture

Page 1 of 5. (Modules, Subjects) SENG DSYS PSYS KMS ADB INS IAT

Software Development Process Models and their Impacts on Requirements Engineering Organizational Requirements Engineering

Ontological Representations of Software Patterns

Generating Aspect Code from UML Models

How To Develop Software

Applying 4+1 View Architecture with UML 2. White Paper

ABET General Outcomes. Student Learning Outcomes for BS in Computing

On Applying Normalized Systems Theory to the Business Architectures of Information Systems

The Role of the Software Architect

Change Management: Modeling Software Product Lines Evolution

Lecture Objectives. Software Life Cycle. Software Engineering Layers. Software Process. Common Process Framework. Umbrella Activities

Ubiquitous, Pervasive and Mobile Computing: A Reusable-Models-based Non-Functional Catalogue

Reusable Knowledge-based Components for Building Software. Applications: A Knowledge Modelling Approach

Program Understanding in Software Engineering

Aspect-Oriented Programming

Object-Oriented Software Development with UML

SOMA, RUP and RMC: the right combination for Service Oriented Architecture

Lecture Slides for Managing and Leading Software Projects. Chapter 1: Introduction

Layered Approach to Development of OO War Game Models Using DEVS Framework

Best-Practice Software Engineering: Software Processes to Support Project Success. Dietmar Winkler

Static Analysis and Validation of Composite Behaviors in Composable Behavior Technology

Software Modularisation and the Common Criteria

How To Design Software

Software development life cycle. Software Engineering - II ITNP92 - Object Oriented Software Design. Requirements. Requirements. Dr Andrea Bracciali

Multi-view Architecting

Introduction to software architecture

Chapter 4 Software Lifecycle and Performance Analysis

Karunya University Dept. of Information Technology

RUP Design. Purpose of Analysis & Design. Analysis & Design Workflow. Define Candidate Architecture. Create Initial Architecture Sketch

PL/SQL Practicum #2: Assertions, Exceptions and Module Stability

Ontologies for Enterprise Integration

A Business Process Driven Approach for Generating Software Modules

PROJECT SCOPE MANAGEMENT

Software Engineering. So(ware Evolu1on

How To Develop A Multi Agent System (Mma)

OOP? What is OOP? Why? OOP in a nutshell. Stéphane Ducasse 2.1

1.1 The Nature of Software... Object-Oriented Software Engineering Practical Software Development using UML and Java. The Nature of Software...

Software Development Methodologies

Managing Variability in Software Architectures 1 Felix Bachmann*

Component Based Development Methods - comparison

Software Engineering. Objectives. Designing, building and maintaining large software systems

Application development = documentation processing

BCS HIGHER EDUCATION QUALIFICATIONS Level 6 Professional Graduate Diploma in IT. March 2013 EXAMINERS REPORT. Software Engineering 2

Banking Application Modernization and Portfolio Management

Software Engineering. Software Development Process Models. Lecturer: Giuseppe Santucci

Quotes from Object-Oriented Software Construction

Data Visualization An Outlook on Disruptive Techniques (Technical Insights)

Course Notes on A Short History of Database Technology

Course Notes on A Short History of Database Technology

Chapter 1: Introduction. Database Management System (DBMS) University Database Example

Chapter 7 Application Protocol Reference Architecture

A Process for ATLAS Software Development

The Phases of an Object-Oriented Application

Systems Integration: Co C mp m onent- t bas a e s d s o s ftw ft a w r a e r e ngin i eeri r n i g

OWL based XML Data Integration

Basic Trends of Modern Software Development

How To Write Software

OO Design Quality Metrics

JOURNAL OF OBJECT TECHNOLOGY

Software Design Document (SDD) Template

Structure of Presentation. The Role of Programming in Informatics Curricula. Concepts of Informatics 2. Concepts of Informatics 1

SE 367 Software Engineering Basics of Software Engineering

An Introduction to Software Architecture

Total Exploration & Production: Field Monitoring Case Study

Software Engineering/Courses Description Introduction to Software Engineering Credit Hours: 3 Prerequisite: (Computer Programming 2).

The Software Process. The Unified Process (Cont.) The Unified Process (Cont.)

Journal of Information Technology Management SIGNS OF IT SOLUTIONS FAILURE: REASONS AND A PROPOSED SOLUTION ABSTRACT

A Process Model for Software Architecture

DATABASE MANAGEMENT SYSTEMS IN ENGINEERING

Scalable End-User Access to Big Data HELLENIC REPUBLIC National and Kapodistrian University of Athens

Reusable Connectors in Component-Based Software Architecture

specifications 15. Approaches to constructing The outline of this part:

A methodology for secure software design

International Journal of Software Engineering and Knowledge Engineering Vol. 11, No. 3 (2001) World Scientific Publishing Company

Transcription:

The University of Iowa 22C:22 (CS:2820) Object-Oriented Software Development Fall 2012 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: engineer 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

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 us to master 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.