Complexity. Object Orientated Analysis and Design. Benjamin Kenwright

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

Introduction to Object Oriented Analysis and Design

Object Model. Object Orientated Analysis and Design. Benjamin Kenwright

Examples. Object Orientated Analysis and Design. Benjamin Kenwright

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

Introduction. Object Orientated Analysis and Design. Benjamin Kenwright

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

Object Orientated Analysis and Design. Benjamin Kenwright

CHAPTER 9 DESIGN ENGINEERING. Overview

Lecture 13: Object orientation. Object oriented programming. Introduction. Object oriented programming. OO and ADT:s. Introduction

Java Basics. Object Orientated Programming in Java. Benjamin Kenwright

Polymorphism. Object Orientated Programming in Java. Benjamin Kenwright

Topics in Object-Oriented Design Patterns

Software Development Chapter 1

Notation Part 1. Object Orientated Analysis and Design. Benjamin Kenwright

Architectural Blueprint

Part 7 - Object Oriented Concepts Classes, Objects, Properties and Methods

CHAPTER 5 GENERAL OOP CONCEPTS

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

Design. Introduction

Software Development. Modular Design and Algorithm Analysis

Software Engineering

Design Pattern: Composite

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

MultiThreading. Object Orientated Programming in Java. Benjamin Kenwright

Advanced Database Applications. Object Oriented Database Management Chapter 13 10/29/2016. Object DBMSs

ECE519 Advanced Operating Systems

Analysis and Design with the Universal Design Pattern

UNIT-I Introduction of Object Oriented Modeling

Classwide Programming 1

What are the characteristics of Object Oriented programming language?

WHAT IS SOFTWARE ARCHITECTURE?

THE OBJECT-ORIENTED DESIGN PROCESS AND DESIGN AXIOMS (CH -9)

Software Architecture

OBJECT ORIENTED PROGRAMMING USING C++ CSCI Object Oriented Analysis and Design By Manali Torpe

Elementary Concepts of Object Class

Chapter 11. Categories of languages that support OOP: 1. OOP support is added to an existing language

AN ABSTRACTION-BASED METHODOLOGY FOR MECHANICAL CONFIGURATION DESIGN

Categorizing Migrations

What is Software Architecture

Architectural Decomposition Reid Holmes

CPS 506 Comparative Programming Languages. Programming Language

OBJECT-ORIENTED MODELING AND DESIGN. Introduction

The Analysis and Proposed Modifications to ISO/IEC Software Engineering Software Quality Requirements and Evaluation Quality Requirements

Think of drawing/diagramming editors. ECE450 Software Engineering II. The problem. The Composite pattern

Abstraction. Design fundamentals in OO Systems. Fundamental Software Development Principles

1 Executive Overview The Benefits and Objectives of BPDM

Ingegneria del Software Corso di Laurea in Informatica per il Management. Introduction to UML

Internal Classes and Exceptions

Concepts of Programming Languages

Allenhouse Institute of Technology (UPTU Code : 505) OOT Notes By Hammad Lari for B.Tech CSE V th Sem

MCQS for Midterm cs504 Combined by Anees Ahmad

Lecture 1. Abstraction

CSCU9T4: Managing Information

Data Structures and Algorithms Design Goals Implementation Goals Design Principles Design Techniques. Version 03.s 2-1

Object-Oriented Software Engineering Practical Software Development using UML and Java. Chapter 2: Review of Object Orientation

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

AOSA - Betriebssystemkomponenten und der Aspektmoderatoransatz

Software Architecture

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

SOFTWARE LIFE-CYCLE MODELS 2.1

White Paper. The Benefits of Object-Based Architectures for SCADA and Supervisory Systems. What s Inside:

Module Outline. What is Object-Oriented? Some Possible Definitions. Why Object-oriented? Fundamentals of Object Orientation

Inheritance and Interfaces

Chapter 8: Class and Method Design

Minsoo Ryu. College of Information and Communications Hanyang University.

Last Lecture. Lecture 26: Design Patterns (part 2) State. Goals of Lecture. Design Patterns

OBJECT ORIENTED SYSTEM DEVELOPMENT Software Development Dynamic System Development Information system solution Steps in System Development Analysis

Benefits of Programming Graphically in NI LabVIEW

Benefits of Programming Graphically in NI LabVIEW

Chapter 13 Object Oriented Programming. Copyright 2006 The McGraw-Hill Companies, Inc.

Architectural Decomposition & Representations Reid Holmes

Objectives. Architectural Design. Software architecture. Topics covered. Architectural design. Advantages of explicit architecture

5/9/2014. Recall the design process. Lecture 1. Establishing the overall structureof a software system. Topics covered

Ch 1: The Architecture Business Cycle

Introduction to Software Engineering

C++ Important Questions with Answers

Record-Level Access: Under the Hood

Facade and Adapter. Comp-303 : Programming Techniques Lecture 19. Alexandre Denault Computer Science McGill University Winter 2004

CAS 703 Software Design

Contents. I. Classes, Superclasses, and Subclasses. Topic 04 - Inheritance

Modularity!! Guidelines for design! in any programming language!

Java for Programmers Course (equivalent to SL 275) 36 Contact Hours

Java Software Solutions for AP Computer Science 3rd Edition, Lewis et al. 2011

Object-Oriented Software Engineering Practical Software Development using UML and Java

Engr. M. Fahad Khan Lecturer Software Engineering Department University Of Engineering & Technology Taxila

Design Engineering. Dr. Marouane Kessentini Department of Computer Science

PROCESS DEVELOPMENT METHODOLOGY The development process of an API fits the most fundamental iterative code development

Graphical Interface and Application (I3305) Semester: 1 Academic Year: 2017/2018 Dr Antoun Yaacoub

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

An OBJECT contains VARIABLES = PROPERTIES and METHODS = BEHAVIORS. Outline the general nature of an object.

Architectural Decomposition Mei Nagappan

Several major software companies including IBM, Informix, Microsoft, Oracle, and Sybase have all released object-relational versions of their

From Design Patterns: Elements of Reusable Object Oriented Software. Read the sections corresponding to patterns covered in the following slides.

Introduction to Programming Languages and Compilers. CS164 11:00-12:30 TT 10 Evans. UPRM ICOM 4029 (Adapted from: Prof. Necula UCB CS 164)

Object-Oriented Software Engineering. Chapter 2: Review of Object Orientation

Modularity Guidelines for design in any programming language

CS112 Lecture: Variables, Expressions, Computation, Constants, Numeric Input-Output

Chapter 17 - Component-based software engineering. Chapter 17 So-ware reuse

Architectural Design

Transcription:

Complexity Object Orientated Analysis and Design Benjamin Kenwright

Outline Review Object Orientated Programming Concepts (e.g., encapsulation, data abstraction,..) What do we mean by Complexity? How do we manage Complexity? Design and Manage Complex Systems Summary/Discussion

Last Week Reviewed Concepts around Object Orientated Analysis and Design Revised OOP Principles (e.g., Java) Read Chapter 1

Question Which of the following mechanisms is/are provided by Object Oriented Language to implement Object Oriented Model? A. Encapsulation B. Inheritance C. Polymorphism D. All of the mentioned

Answer D. All of the mentioned

Question Which of these is the functionality of Encapsulation? A. Binds together code and data B. Using single interface for general class of actions C. Reduce Complexity D. All of the mentioned

Answer A. Binds together code and data `Encapsulation' acts as protective wrapper that prevents code and data from being accessed by other code defined outside the wrapper

What is the output of this Program? A. Compilation error B. Run time error C. Output : a, b and c 10 20 30 D. None of the mentioned

Answer A. Compilation error Explanation: Private members of a class cannot be accessed directly. In the above program, the variable c is a private member of class Test and can only be accessed through its methods.

Question Which of the following is a mechanism by which object acquires the properties of another object? A. Encapsulation B. Abstraction C. Inheritance D. Polymorphism

Answer Answer: C. Inheritance Explanation: Inheritance is the mechanism provided by Object Oriented Language, which helps an object to acquire the properties of another object usually child object from parent object.

Why is Software Inherently Complex? List the four elements Revision from Reading Chapter 1 Last Week

Why is Software Inherently Complex? Inherent Complexity derives from four elements: 1.the complexity of the problem domain 2.the difficulty of managing the development process 3.the flexibility possible through software 4.problems of characterizing the behavior of discrete systems

1. Complexity of the Problem Domain Requirements (functional and non-functional) e.g., electronic system of a multiengine aircraft, a cellular phone switching system, or an autonomous robot Usability, performance, cost, survivability, and reliability Users may have only vague ideas of what they want in a software system generally lacks expertise in the domain Difficult to express requirements e.g., large volumes of texts (difficult to comprehend, ambiguous..)

Complexity of the Problem Domain Cont. Changing requirements during development early products, such as design documents and prototypes can lead users to better understand and articulate their real needs

Evolve Over Time it is maintenance when we correct errors it is evolution when we respond to changing requirements; it is preservation when we continue to use extraordinary means to keep an ancient and decaying piece of software in operation

2. Difficulty of Managing the Development Process Fundamental task of the software development team is to engineer the illusion of simplicity

Cont. Strive to write less code Reusing frameworks of existing designs and code Avoid reinventing wheel Sheer volume of a system s requirements is sometimes inescapable Not unusual today to find systems whose size is measured in hundreds of thousands or even millions of lines of code More developers so more complex communication and hence more difficult coordination (location, skillset, attitude, synergy,..)

3. Flexibility Possible through Software Developer able to express almost any kind of abstraction Flexibility incredibly seductive property Few uniform rules, codes and standards for quality Makes developing software labor-intensive

4. Problems of Characterizing the Behavior of Discrete Systems Large application, there may be hundreds or even thousands of variables and multiple control threads Large systems, there is a combinatorial explosion of possibilities (states) Manage this by decomposing the behavior in one part of a system so it has a minimal impact on the behavior in another However, worst circumstances, an external event may corrupt the state of a system (failed to take into account certain interactions)

Question What are the four elements that Inherent Complexity derives from?

Answer Inherent Complexity derives from four elements: 1. complexity of the problem domain 2. difficulty of managing the development process 3. flexibility possible through software 4. problems of characterizing the behavior of discrete systems

What are the Five Attributes of a Complex System?

What are the Five Attributes of a Complex System? Five attributes common to all complex systems 1.Hierarchic Structure 2.Relative Primitives 3.Separation of Concerns 4.Common Patterns 5.Stable Intermediate Forms

1.Hierarchic Structure Frequently, complexity takes the form of a hierarchy, whereby a complex system is composed of interrelated subsystems that have in turn their own subsystems, and so on, until some lowest level of elementary components is reached

2. Relative Primitives Components in a system are primitive and relatively arbitrary - largely up to the discretion of the observer of the system what they are

3. Separation of Concerns Decomposable parts are not necessarily completely independent

4. Common Patterns Composed of only a few different kinds of subsystems in various combinations and arrangements

5. Stable Intermediate Forms Complex systems will evolve from simple systems Never craft these primitive objects correctly the first time Improve them over time as we learn more about the real behavior of the system

Question Requirements change during development? A. True B. False

A. True Answer

Question Complex systems do not evolve from simple systems?

Answer A. False Complex systems will evolve from simple systems

Organized and Disorganized Complexity Common abstractions and mechanisms greatly facilitates our understanding of complex systems

Canonical Form of a Complex System Canonical Form of a Complex System Different hierarchies are usually present within the same complex system (perspective and requirements) Successful complex software systems are those whose designs explicitly encompass well-engineered class and object structures and embody the five attributes of complex systems

Canonical Form of a Complex System

Limitations of the Human Capacity for Dealing with Complexity We must think about many things at once cope with a fairly large, intricate, and sometimes nondeterministic state space Maximum number of chunks of information that an individual can simultaneously comprehend is on the order of seven, plus or minus two Relates to the capacity of short-term memory and speed to process data (e.g., five seconds to accept a new chunk of information)

Basic Limits on our Ability to Cope with Complexity. How then do we Resolve this Predicament?

Solution Order/Logic Decomposition Structure Abstraction/Simplificiations

Objects or Processes Complex systems can be viewed by focusing on either things or processes; there are compelling reasons for applying object-oriented decomposition, in which we view the world as a meaningful collection of objects that collaborate to achieve some higherlevel behavior

Analysis & Design Methods Dozens of design methods have been proposed. However, most methods can be categorized as one of three kinds:

Three Design Categories Top-down structured design Data-driven design Object-oriented design

Cont. Top-down structured design - applies algorithmic decomposition Data-driven design - mapping system inputs to outputs derives the structure of a software system Object-oriented design - model software systems as collections of cooperating objects

Question What is the maximum number of chunks of information that an individual can simultaneously comprehend? A. 5 to 9 Chunks B. 3 to 8 Chunks C. 1 to 5 Chunks D. 8 to 10 Chunks

Answer A. 5 to 9 Chunks Maximum number of chunks of information that an individual can simultaneously comprehend is on the order of seven, plus or minus two

What is the Role of Abstraction?

What is the Role of Abstraction? Individual can comprehend only a few chunks of information We have an exceptionally powerful technique for dealing with complexity We abstract from it E.g., Unable to master the entirety of a complex object, we choose to ignore its inessential details, dealing instead with the generalized, idealized model of the object

Abstraction (Hierarchical) Classifying objects into groups of related abstractions so we can explicitly distinguish common and distinct properties of different objects helps us to master/manage inherent complexity Identifying the hierarchies within a complex software system simplify and embody tremendously complicated behavior

Question What are the three Design Categories? A. object-orientated, system-based, logicdriven B. data-driven, top-down, object-orientated C. structured, object-orientated, hierarchical D. automated, object-orientated, synergeticbased E. top-down, object-orientated, system-driven

Answer B. data-driven, top-down, objectorientated

What is the Purpose of Design?

What is the purpose of Design? Purpose of design is to construct a system that: 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 for doing the design

Question What are the Five Attributes of a Complex System? A. Relative Primitives Separation of Concerns, Hierarchic Structure, Common Patterns, Stable Intermediate Forms B. Hierarchic Structure, Common Primitives, Separation of Concerns, Stable Patterns, Dynamic Patterns C. Hierarchic Structure, Primitive Structures, Separation Patterns, Stable Forms, Intermediate Attributes

Answer Five Attributes of a Complex System: A. Relative Primitives Separation of Concerns, Hierarchic Structure, Common Patterns, Stable Intermediate Forms

Question Which of the following is the functionality of Data Abstraction? A. Reduce Complexity B. Binds together code and data C. Parallelism D. None of the mentioned

Answer A. Reduce Complexity Explanation: An essential element of Object Oriented Programming is Data Abstraction which means hiding things. Complexity is managed through abstraction.

Summary Complexity in Object Orientated Analysis and Design Why Software is Inherently Complex Human Intellectual Capacity Engineer the Illusion of Simplicity Evolve from stable intermediate forms Manage complexity through decomposition, abstraction, and hierarchy Focus on either things or processes view the world as a meaningful collection of objects

This Week Review Slides Read Chapter 2 Quizzes/Questions

Questions/Discussion