19
1 Introduction to Course Software Architecture Design Bedir Tekinerdoğan Billkent University, Department of Computer Engineering e:mail - bedir@cs,bilkent..edu.tr http://www.cs.bilkent.edu.tr/~bedir/ © Bedir Tekinerdoğan Software Architecture Design 2 About the Instructor… Since 1974 in The Netherlands... Education and Positions Education all in The Netherlands (Nursery school, primary school,High school, MSc, PhD, Post-Doc) MSc. in Computer Science (1994) Research Associate (1994-1996) PhD, at University of Twente (2000) (project with Siemens Nixdorff) Postdoc (March 2000-September 2002) Visiting Assistant Professor at Bilkent University (September 2002-July 2003) Assistant Professor July 2003-September 2008 at University of Twente (project with Embedded Systems Institute; Philips NXP) Assistant Professor September 2008-? at Bilkent University

Introduction to Course Software Architecture Designbedir/CS411/Slides/Week 1-1 Intro-Course Organisation.pdf1 Introduction to Course Software Architecture Design Bedir Tekinerdoğan

  • Upload
    others

  • View
    33

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Introduction to Course Software Architecture Designbedir/CS411/Slides/Week 1-1 Intro-Course Organisation.pdf1 Introduction to Course Software Architecture Design Bedir Tekinerdoğan

1

Introduction to Course

Software Architecture Design

Bedir Tekinerdoğan

Billkent University,

Department of Computer Engineering

e:mail - bedir@cs,bilkent..edu.tr

http://www.cs.bilkent.edu.tr/~bedir/

© Bedir Tekinerdoğan Software Architecture Design 2

About the Instructor…

Since 1974 in The Netherlands...

Education and Positions Education all in The Netherlands

(Nursery school, primary school,High school, MSc, PhD, Post-Doc)

MSc. in Computer Science (1994)

Research Associate (1994-1996)

PhD, at University of Twente (2000) (project with Siemens Nixdorff)

Postdoc (March 2000-September 2002)

Visiting Assistant Professor at Bilkent University (September 2002-July 2003)

Assistant Professor July 2003-September 2008 at University of Twente (project with Embedded Systems Institute; Philips NXP)

Assistant Professor September 2008-?at Bilkent University

Page 2: Introduction to Course Software Architecture Designbedir/CS411/Slides/Week 1-1 Intro-Course Organisation.pdf1 Introduction to Course Software Architecture Design Bedir Tekinerdoğan

2

© Bedir Tekinerdoğan Software Architecture Design 3

About the Instructor…

Teaching Experience since 1994 (University and Industry) Software Engineering

Object-Oriented Analysis, Design, Programming

Software Design Patterns

Software Architecture Design

Aspect-Oriented Software Development

Software Product Line Engineering

Model-Driven Software Development

Research Software Architecture Design

Aspect-Oriented Software Development

Model-Driven Software Development

PC member and co-organizer of various workshops and conferences Organized more than 30 workshops (ECOOP, OOPSLA, SPLC, AOSD, etc.)

Second Turkish Workshop on Aspect-Oriented Software Development (2003, Bilkent University)

First Turkish Software Architecture Design Conference (UYMK 2006)

Second Turkish Software Architecture Design Conference (UYMK 2006)

First Turkish Workshop on Software Architecture Design (at UYMS 2005)

First Turkish Workshop on Aspect-Oriented Software Development (2003, Bilkent University)

First and Second Impact of Process on Quality Workshops (Bilkent University, Ege University)

More info

http://www.cs.bilkent.edu.tr/~bedir

http://www.cs.utwente.nl/~bedir

© Bedir Tekinerdoğan Software Architecture Design 4

Your expectations…

What are your expectations of the course?

Why this course?

Page 3: Introduction to Course Software Architecture Designbedir/CS411/Slides/Week 1-1 Intro-Course Organisation.pdf1 Introduction to Course Software Architecture Design Bedir Tekinerdoğan

3

© Bedir Tekinerdoğan Software Architecture Design 5

What is Architecture?

Architecture (Webster‟s):1: the art or science of building; specifically: the art or practice of designing and building structures and especially habitable ones

2 a>:formation or construction as or as if as the result of conscious act <the architecture of the garden> b: a unifying or coherent form or structure <the novel lacks architecture>

3: architectural product or work

4: a method or style of building

5: the manner in which the components of a computer or computer system are organized and integrated

© Bedir Tekinerdoğan Software Architecture Design 6

Building Architectures

Page 4: Introduction to Course Software Architecture Designbedir/CS411/Slides/Week 1-1 Intro-Course Organisation.pdf1 Introduction to Course Software Architecture Design Bedir Tekinerdoğan

4

© Bedir Tekinerdoğan Software Architecture Design 7

Taj Mahal

Taj Mahal : Built by Mogol Shah Cihan in memory of his beloved wife Mümtaz Mahal 1648

© Bedir Tekinerdoğan Software Architecture Design 8

Build a Palace…

Need a Palace…

Get some bricks,wood…

Go find many masons,

carpenters as you can.

Build the palace….?

Page 5: Introduction to Course Software Architecture Designbedir/CS411/Slides/Week 1-1 Intro-Course Organisation.pdf1 Introduction to Course Software Architecture Design Bedir Tekinerdoğan

5

© Bedir Tekinerdoğan Software Architecture Design 9

Build a Palace?

© Bedir Tekinerdoğan Software Architecture Design 10

You need an architect first...

Architecture

Architecture Design

Architecture Realization Building

Page 6: Introduction to Course Software Architecture Designbedir/CS411/Slides/Week 1-1 Intro-Course Organisation.pdf1 Introduction to Course Software Architecture Design Bedir Tekinerdoğan

6

© Bedir Tekinerdoğan Software Architecture Design 11

Software Development

Lists

Arrays

Class

Object

Procedures

Functions

Algorithms

Etc.

//********************************************************************

import InventoryItem;

import java.util.StringTokenizer;

import java.io.*;

public class Inventory

{

//-----------------------------------------------------------------

// Reads data about a store inventory from an input file,

// creating an array of InventoryItem objects, then prints them.

//-----------------------------------------------------------------

public static void main (String[] args)

{

final int MAX = 100;

InventoryItem[] items = new InventoryItem[MAX];

StringTokenizer tokenizer;

String line, name, file="inventory.dat";

int units, count = 0;

float price;

try

for (int scan = 0; scan < count; scan++)

System.out.println (items[scan]);

}

catch (FileNotFoundException exception)

{

System.out.println ("The file " + file + " was not found.");

}

catch (IOException exception)

{

System.out.println (exception);

}

}

}

© Bedir Tekinerdoğan Software Architecture Design 12

Large (Distributed)

System

Many people working on

the same problem

Overly Complex

Millions of Code...

Should be deliverd on

time and within budget!

Programming

in the Large

Large-scale,complex software systems...

Page 7: Introduction to Course Software Architecture Designbedir/CS411/Slides/Week 1-1 Intro-Course Organisation.pdf1 Introduction to Course Software Architecture Design Bedir Tekinerdoğan

7

© Bedir Tekinerdoğan Software Architecture Design 13

Coding only will not do...

Lists

Arrays

Class

Object

Procedures

Functions

Algorithms

Etc.

© Bedir Tekinerdoğan Software Architecture Design 14

Coding only will not do...

//********************************************************************

import InventoryItem;

import java.util.StringTokenizer;

import java.io.*;

public class Inventory

{

//-----------------------------------------------------------------

// Reads data about a store inventory from an input file,

// creating an array of InventoryItem objects, then prints them.

//-----------------------------------------------------------------

public static void main (String[] args)

{

final int MAX = 100;

InventoryItem[] items = new InventoryItem[MAX];

StringTokenizer tokenizer;

String line, name, file="inventory.dat";

int units, count = 0;

float price;

try

for (int scan = 0; scan < count; scan++)

System.out.println (items[scan]);

}

catch (FileNotFoundException exception)

{

System.out.println ("The file " + file + " was not found.");

}

catch (IOException exception)

{

System.out.println (exception);

}

}

}

//********************************************************************

// CDCollection.java Author: Lewis and Loftus

//

// Represents a collection of compact discs.

//********************************************************************

import CD;

import java.text.NumberFormat;

public class CDCollection

{

private CD[] collection;

private int count;

private double totalValue;

private int currentSize;

CD[] temp = new CD[currentSize];

for (int cd = 0; cd < collection.length; cd++)

temp[cd] = collection[cd];

collection = temp;

}

}

//********************************************************************

import java.awt.*;

import java.awt.event.*;

import javax.swing.*;

public class ButtonPanel extends JPanel

{

private JRadioButton selectButton, lineButton, ovalButton;

private JRadioButton rectButton, polyButton, colorButton;

private JPanel strokeIndicator;

private class ButtonListener implements ActionListener

{

//--------------------------------------------------------------

// Responds to action events caused by buttons.

//--------------------------------------------------------------

public void actionPerformed (ActionEvent event)

{

// to be implemented

}

}

}

//********************************************************************

import InventoryItem;

import java.util.StringTokenizer;

import java.io.*;

public class Inventory

{

//-----------------------------------------------------------------

// Reads data about a store inventory from an input file,

// creating an array of InventoryItem objects, then prints them.

//-----------------------------------------------------------------

public static void main (String[] args)

{

final int MAX = 100;

InventoryItem[] items = new InventoryItem[MAX];

StringTokenizer tokenizer;

String line, name, file="inventory.dat";

int units, count = 0;

float price;

try

for (int scan = 0; scan < count; scan++)

System.out.println (items[scan]);

}

catch (FileNotFoundException exception)

{

System.out.println ("The file " + file + " was not found.");

}

catch (IOException exception)

{

System.out.println (exception);

}

}

}

Page 8: Introduction to Course Software Architecture Designbedir/CS411/Slides/Week 1-1 Intro-Course Organisation.pdf1 Introduction to Course Software Architecture Design Bedir Tekinerdoğan

8

© Bedir Tekinerdoğan Software Architecture Design 15

More programmers...?

© Bedir Tekinerdoğan Software Architecture Design 16

A Software Architect?

Software Architecture

Design

Software Architecture

Realization

//********************************************************

************

import InventoryItem;

import java.util.StringTokenizer;

import java.io.*;

public class Inventory

{

//-----------------------------------------------------------------

// Reads data about a store inventory from an

input file,

// creating an array of InventoryItem objects, then

prints them.

//-----------------------------------------------------------------

public static void main (String[] args)

{

final int MAX = 100;

InventoryItem[] items = new InventoryItem[MAX];

StringTokenizer tokenizer;

String line, name, file="inventory.dat";

int units, count = 0;

float price;

try

for (int scan = 0; scan < count; scan++)

System.out.println (items[scan]);

}

catch (FileNotFoundException exception)

{

System.out.println ("The file " + file + " was not

found.");

}

catch (IOException exception)

{

System.out.println (exception);

}

}

}

Application

Software Architecture

Page 9: Introduction to Course Software Architecture Designbedir/CS411/Slides/Week 1-1 Intro-Course Organisation.pdf1 Introduction to Course Software Architecture Design Bedir Tekinerdoğan

9

© Bedir Tekinerdoğan Software Architecture Design 17

The Architect…

“I am the Architect. I created The Matrix. … The Matrix is older than you know. I prefer counting from the

emergence of one integral anomaly to the emergence of the next, in which case this is the 6th version."

© Bedir Tekinerdoğan Software Architecture Design 18

Structure Matters – Dijkstra 1968

Dijkstra, 1968:

„‟...Correct arrangement of the

structure of software systems

before simple programming...„‟

Layered Structure

Programs are grouped into

layers

Programs in one layer can

only communicate with

programs in adjoining layers

with easier development and

maintenance

Focused on Structure of Programming...

Edsger Dijkstra 1930-2002

E.W. Dijkstra, The structure of "THE"-multiprogramming system. Comm. ACM 11, 5 (May 1968), 341-346.

Page 10: Introduction to Course Software Architecture Designbedir/CS411/Slides/Week 1-1 Intro-Course Organisation.pdf1 Introduction to Course Software Architecture Design Bedir Tekinerdoğan

10

© Bedir Tekinerdoğan Software Architecture Design 19

Structure Matters – Parnas 1972

„‟...selected criteria for the decomposition of the system impact the

structure of the programs and several design principles must be

followed to provide a good structure...‟‟

Information-hiding modules (1972)

Identify design decisions that are likely to change

Isolate these in separate modules (separation of concerns)

Software Structures (1974)

Hierarchical structures (stepwise refinement) in programs

Program Families (1975)

„‟A program family is a set of programs for which it is profitable or

useful to consider as a group. „‟

D. Parnas, "On the Criteria to Be Used in Decomposing Systems into Modules.“,

Comm. ACM 15, 12 (December 1972), 1053-1058. 1972.

D. Parnas, “On a „Buzzword‟: Hierarchical Structure” IFIP Congress ‘74.

North Holland Publishing Company, pp. 336-339, 1974.

D. Parnas, “On the design and development of program families”

IEEE Trans. On SE., vol. SE-2, pp.1-9, Mar. 1976

© Bedir Tekinerdoğan Software Architecture Design 20

Evolution of Software Problems

Software problems have

changed in nature

(algorithmic to general-

purpose applications)

and increased in

complexity (to millions and

millions lines of code)

It has now become very

hard/impossible to

develop system without

architecture

PROBLEMS

Simple, algorithmic

Data intensive,

business applications

Large, complex, distributed

Mega programs

1940-1950

>2000

Page 11: Introduction to Course Software Architecture Designbedir/CS411/Slides/Week 1-1 Intro-Course Organisation.pdf1 Introduction to Course Software Architecture Design Bedir Tekinerdoğan

11

© Bedir Tekinerdoğan Software Architecture Design 21

Structure in Software

Programming any-which-way

Programming in-the-world

- software architecture

Programming in-the-large

- object-oriented design

- CASE tools

- libraries

Programming in-the-small

- information hiding, modularization

1950

1960

1970

1980

1990

2000

2010

APPROACH PROBLEMS SOLVED

Simple, algorithmic

Data intensive,

business applications

Large, complex, distributed

Mega programs

© Bedir Tekinerdoğan Software Architecture Design 22

„Structure‟ concept in Software

1960s - Structured Programming Adopted into programming languages because it‟s a better way to

think about programming

1970s - Structured Design Methodology/guidelines for dividing programs into subroutines.

1980s – Modular programming languages Modular (object-based) programming

Grouping of sub-routines into modules with data.

1990s – Towards Software Architectures Object-Oriented Analysis/Design/Programming started being

commonly used

Software Architecture Design

2000s - Software Architectures Starting to be Common Practice

Specialization of concepts

Page 12: Introduction to Course Software Architecture Designbedir/CS411/Slides/Week 1-1 Intro-Course Organisation.pdf1 Introduction to Course Software Architecture Design Bedir Tekinerdoğan

12

© Bedir Tekinerdoğan Software Architecture Design 23

Software Architecture Design Community

Educated in Universities

Research groups

“architect” roles and teams in organizations

courses and training for it

Journals, conferences, books, etc.

Projects are funded by government and industry

© Bedir Tekinerdoğan Software Architecture Design 24

Software Architecture in Turkey

Education

This Course (in 2002/2003 and now)

One or two courses elsewhere?

Workshop and Two Conferences

Ulusal Yazılım Mimarisi Konferansı

2006 – Istanbul

Ulusal Yazılım Mimarisi Konferansı

2008 - Izmir

Industry

Different companies apply software

architecture

Page 13: Introduction to Course Software Architecture Designbedir/CS411/Slides/Week 1-1 Intro-Course Organisation.pdf1 Introduction to Course Software Architecture Design Bedir Tekinerdoğan

13

© Bedir Tekinerdoğan Software Architecture Design 25

Architecture-Based

Software

Development

The Course – Required Background

OO Analysis

and

Design

other

© Bedir Tekinerdoğan Software Architecture Design 26

The Course - Goals

Learning the key concepts of

software architecture design

Experiencing the software

architecture design process

Providing insight in best practices

and obstacles of software

architecture design

Page 14: Introduction to Course Software Architecture Designbedir/CS411/Slides/Week 1-1 Intro-Course Organisation.pdf1 Introduction to Course Software Architecture Design Bedir Tekinerdoğan

14

© Bedir Tekinerdoğan Software Architecture Design 27

Learning the Concepts

Rationale for software architecture

Software architecture modeling

Software architecture views

Software architecture documentation

Software architecture design methods

Synthesizing software architecture

Software architecture patterns

Evaluation of software architectures

© Bedir Tekinerdoğan Software Architecture Design 28

Course Material

Textbook

L. Bass, P. Clements, R. Kazman. Software Architecture in

Practice, ISBN: 321154959, Addison-Wesley Professional

Additional papers (see web-site)

Page 15: Introduction to Course Software Architecture Designbedir/CS411/Slides/Week 1-1 Intro-Course Organisation.pdf1 Introduction to Course Software Architecture Design Bedir Tekinerdoğan

15

© Bedir Tekinerdoğan Software Architecture Design 29

Learning….

National Training Laboratory, Bethel Maine

Reading Papers

Following presentations

Exercises/discussions

Project!

© Bedir Tekinerdoğan Software Architecture Design 30

Tasks

Select a case (group of 4)

Problem Analysis and Domain Analysis

Modeling multiple views

Applying Architectural Patterns

Evaluating Software Architecture

Deliverables

Solutions to Assignments

Software Architecture Design

PowerPoint presentation

Project Assignments

Page 16: Introduction to Course Software Architecture Designbedir/CS411/Slides/Week 1-1 Intro-Course Organisation.pdf1 Introduction to Course Software Architecture Design Bedir Tekinerdoğan

16

© Bedir Tekinerdoğan Software Architecture Design 31

Provide Insight

Critical analysis of existing material

Discussion during lectures

Insight during lab experiences

Question and Answers

© Bedir Tekinerdoğan Software Architecture Design 32

32

Course Information

Course home page:

http://www.cs.bilkent.edu.tr/

~bedir/CS411/

Consult this page at least

once a week

Lecture Notes, Important

Announcements will be

published on the course site

Prerequisites CS 319 (OO

Software Engineering)

Office hours: Any free time

Page 17: Introduction to Course Software Architecture Designbedir/CS411/Slides/Week 1-1 Intro-Course Organisation.pdf1 Introduction to Course Software Architecture Design Bedir Tekinerdoğan

17

© Bedir Tekinerdoğan Software Architecture Design 33

33

Course Organization

Lectures

Projects

Midterm and Final

Form Architecture Team

Role Playing

Designing Software Architecture

Report

Presentation

Final Exam

Open book

Lectures and Projects are mandatory!

© Bedir Tekinerdoğan Software Architecture Design 34

Course Schedule

Page 18: Introduction to Course Software Architecture Designbedir/CS411/Slides/Week 1-1 Intro-Course Organisation.pdf1 Introduction to Course Software Architecture Design Bedir Tekinerdoğan

18

© Bedir Tekinerdoğan Software Architecture Design 35

35

Grading*

Quiz: 10%

Project 1: 25% (Group)

Project 2: 30 % (Group)

Final Exam: 35 % (Individual)

*Subject to change

© Bedir Tekinerdoğan Software Architecture Design 36

The Course – Required attitude

Architecture-Based

Software

Development

OO Analysis

and

Design

other

Eagerness

Fun

Active

Involvement

Interest &

Focus

Team Work

Enthusiasm

Page 19: Introduction to Course Software Architecture Designbedir/CS411/Slides/Week 1-1 Intro-Course Organisation.pdf1 Introduction to Course Software Architecture Design Bedir Tekinerdoğan

19

© Bedir Tekinerdoğan Software Architecture Design 37

Let‟s begin….

http://www.discoverturkey.com/