Using UML, Patterns, and Java Object-Oriented Software Engineering Chapter 1: Introduction.

29
Using UML, Patterns, and Java Object-Oriented Software Engineering Chapter 1: Introduction

Transcript of Using UML, Patterns, and Java Object-Oriented Software Engineering Chapter 1: Introduction.

Page 1: Using UML, Patterns, and Java Object-Oriented Software Engineering Chapter 1: Introduction.

Usi

ng

UM

L,

Patt

ern

s, a

nd

Java

Ob

ject-

Ori

en

ted

Soft

ware

E

ng

ineeri

ng

Chapter 1: Introduction

Page 2: Using UML, Patterns, and Java Object-Oriented Software Engineering Chapter 1: Introduction.

Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 2

Objectives of the Lectures

• Appreciate the Fundamentals of Software Engineering:

• Methodologies • Process models• Description and modeling techniques• System analysis - Requirements engineering• System design• Implementation: Principles of system development

Page 3: Using UML, Patterns, and Java Object-Oriented Software Engineering Chapter 1: Introduction.

Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 3

Assumptions for this Class

• Assumption: • You have taken <Note to Instructor: Add the

prerequisite courses here>

• Beneficial: • You have had practical experience with a large

software system • You have already participated in a large software

project• You have experienced major problems.

Page 4: Using UML, Patterns, and Java Object-Oriented Software Engineering Chapter 1: Introduction.

Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 4

Times and Locations• Main lecture:

• <Note to Instructor: Add the lecture time here>

• Exercises:• <Note to Instructor: Add the exercise times here>

• Written Exams: • Mid-term• Final

Page 5: Using UML, Patterns, and Java Object-Oriented Software Engineering Chapter 1: Introduction.

Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 5

Grading Criteria

• <Note to Instructor: Add grading criteria here. See Backup Slides for Examples>

Page 6: Using UML, Patterns, and Java Object-Oriented Software Engineering Chapter 1: Introduction.

Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 6

Grading Criteria

<Note to Instructor: These grading criteria currently used by the authors for a one semester course with a mid-term and a final. They most probably not reusable for your course, but they may give you an idea>

The final grade is the weighted average of the mid term (30%) and final grades (70%)

• To pass this course your final grade must be D or better• Participation in the exercises is required (admission

requirement for the final exam)• Information about the exercises will be made available on

the exercise portal• Hours per week: 3 hours (lecture) + 2 hour (exercises)• ECTS Credits: 6.0.

Page 7: Using UML, Patterns, and Java Object-Oriented Software Engineering Chapter 1: Introduction.

Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 7

Focus: Acquire Technical Knowledge• Different methodologies (“philosophies”) to

model and develop software systems• Different modeling notations • Different modeling methods• Different software lifecycle models (empirical

control models, defined control models)• Different testing techniques (eg. vertical testing,

horizontal testing)• Rationale Management• Release and Configuration Management

Page 8: Using UML, Patterns, and Java Object-Oriented Software Engineering Chapter 1: Introduction.

Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 8

Acquire Managerial Knowledge

• Learn the basics of software project management

• Understand how to manage with a software lifecycle

• Be able to capture software development knowledge (Rationale Management)

• Manage change: Configuration Management• Learn the basic methodologies

• Traditional software development• Agile methods.

Page 9: Using UML, Patterns, and Java Object-Oriented Software Engineering Chapter 1: Introduction.

Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 9

Outline of Today’s Lecture

• The development challenge• Dealing with change• Concepts: Abstraction, Modeling, Hierarchy• Methodologies• Organizational issues

• Lecture schedule• Exercise schedule• Associated Project

Page 10: Using UML, Patterns, and Java Object-Oriented Software Engineering Chapter 1: Introduction.

Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 10

Can you develop this system?

Page 11: Using UML, Patterns, and Java Object-Oriented Software Engineering Chapter 1: Introduction.

Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 11

Can you develop this system?

Page 12: Using UML, Patterns, and Java Object-Oriented Software Engineering Chapter 1: Introduction.

Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 12

Can you develop this system?

Page 13: Using UML, Patterns, and Java Object-Oriented Software Engineering Chapter 1: Introduction.

Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 13

Can you develop this system?

The impossibleFork

Page 14: Using UML, Patterns, and Java Object-Oriented Software Engineering Chapter 1: Introduction.

Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 14

Physical Model of the impossible Fork (Shigeo Fukuda)

See http://illusionworks.com/mod/movies/fukuda/DisappearingColumn.mov

Page 15: Using UML, Patterns, and Java Object-Oriented Software Engineering Chapter 1: Introduction.

Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 15

Physical Model of the impossible Fork (Shigeo Fukuda)

Additional material can be found on http://illusionworks.com/mod/movies/fukuda/

Images may be subject to copyright

Page 16: Using UML, Patterns, and Java Object-Oriented Software Engineering Chapter 1: Introduction.

Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 16

Why is Software Development difficult?

• The problem is usually ambiguous• The requirements are usually unclear and changing

when they become clearer• The problem domain (called application domain) is

complex, and so is the solution domain • The development process is difficult to manage• Software offers extreme flexibility• Software is a discrete system

• Continuous systems have no hidden surprises • Discrete systems can have hidden surprises! (Parnas)

David Lorge Parnas - an early pioneer in software engineering who developed the concepts of modularity and information hiding in systems which are the foundation of object oriented methodologies.

Page 17: Using UML, Patterns, and Java Object-Oriented Software Engineering Chapter 1: Introduction.

Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 17

Software Development is more than just Writing Code• It is problem solving

• Understanding a problem• Proposing a solution and plan• Engineering a system based on the

proposed solution using a good design

• It is about dealing with complexity• Creating abstractions and models• Notations for abstractions

• It is knowledge management• Elicitation, analysis, design, validation of

the system and the solution process

• It is rationale management• Making the design and development

decisions explicit to all stakeholders involved.

Page 18: Using UML, Patterns, and Java Object-Oriented Software Engineering Chapter 1: Introduction.

Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 18

Can we not use the Scientific Method?• Not exactly, we need ideas and hypotheses

• The scientific method, unfortunately, has never quite gotten around to saying exactly where to pick up these hypotheses.

• The traditional scientific method has always been at the very best, 20-20 hindsight

• It's good for seeing where you've been. It's good for testing of what you think you know

• But it can't tell you where you should to go

• Creativity, originality, inventiveness, intuition, imagination – "unstuckness," in other words – are completely outside the domain of the scientific method

• Robert Pirsig, Zen and the Art of Motorcycle Maintenance, p. 251, Bantam Books, 1984.

Page 19: Using UML, Patterns, and Java Object-Oriented Software Engineering Chapter 1: Introduction.

Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 19

Techniques, Methodologies and Tools• Techniques:

• Formal procedures for producing results using some well-defined notation

• Methodologies: • Collection of techniques applied across

software development and unified by a philosophical approach

• Tools: • Instruments or automated systems to

accomplish a technique• Interactive Development Environment (IDE)• Computer Aided Software Engineering (CASE)

Page 20: Using UML, Patterns, and Java Object-Oriented Software Engineering Chapter 1: Introduction.

Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 20

Computer Science vs. Engineering

• Computer Scientist• Assumes techniques and tools have to be developed. • Proves theorems about algorithms, designs languages,

defines knowledge representation schemes• Has infinite time…

• Engineer• Develops a solution for a problem formulated by a client• Uses computers & languages, techniques and tools

• Software Engineer• Works in multiple application domains• Has only 3 months...• …while changes occurs in the problem formulation

(requirements) and also in the available technology.

Page 21: Using UML, Patterns, and Java Object-Oriented Software Engineering Chapter 1: Introduction.

Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 21 20

Challenge: Dealing with complexity and change

Software Engineering is a collection of techniques,methodologies and tools that help with the production of

A high quality software system developed with a given budget before a given deadline

while change occurs

Software Engineering: A Working Definition

Page 22: Using UML, Patterns, and Java Object-Oriented Software Engineering Chapter 1: Introduction.

Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 22

Software Engineering: A Problem Solving Activity

• Analysis: • Understand the nature of the problem and break the

problem into pieces

• Synthesis: • Put the pieces together into a large structure

For problem solving we use techniques, methodologies and tools.

Page 23: Using UML, Patterns, and Java Object-Oriented Software Engineering Chapter 1: Introduction.

Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 23

Course OutlineDealing with Complexity

• Notations (UML, OCL)• Requirements Engineering,

Analysis and Design• OOSE, SA/SD, scenario-based

design, formal specifications

• Testing• Vertical and horizontal testing

Dealing with Change• Rationale Management

• Knowledge Management• Patterns

• Release Management• Configuration Management,

Continuous Integration

• Software Life Cycle• Linear models• Iterative models• Activity-vs Entity-based

views

Application of these Concepts in the Exercises

Page 24: Using UML, Patterns, and Java Object-Oriented Software Engineering Chapter 1: Introduction.

Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 24

Exercises

• The exercise sessions are organized by teams• Registration, attending the exercise sessions

and attempting the homeworks is mandatory.

Page 25: Using UML, Patterns, and Java Object-Oriented Software Engineering Chapter 1: Introduction.

Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 25

TextbookBernd Bruegge, Allen H. Dutoit

Object-Oriented Software Engineering: Using UML, Patterns and Java, 3rd Edition

Publisher: Prentice Hall, Upper Saddle River, NJ, 2009;

ISBN-10: 0136061257 ISBN-13: 978-0136061250

• Additional readings will be added during each lecture.

Page 26: Using UML, Patterns, and Java Object-Oriented Software Engineering Chapter 1: Introduction.

Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 26

Lecture Content and Course Website

• Lecture Portal:• The lecture slides will be posted in PDF format after the

lecture is given

• Exercise Portal:• Separate home page will be set up for the exercise materials

• What happens if I don’t participate in the exercises?

Page 27: Using UML, Patterns, and Java Object-Oriented Software Engineering Chapter 1: Introduction.

Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 27

What happens if I don’t participate in the exercises?

Play the moviehttp://www.youtube.com/watch?v=_VFS8zRo0pc

Page 28: Using UML, Patterns, and Java Object-Oriented Software Engineering Chapter 1: Introduction.

Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 28

What to do next?

• Reading for the next two weeks• Chapter 1 and 2, Bruegge&Dutoit, Object-

Oriented Software Engineering

• Visit the Lecture Portal

• Register for the Lecture Forum

Page 29: Using UML, Patterns, and Java Object-Oriented Software Engineering Chapter 1: Introduction.

Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 29

Additional Slides