Upload
others
View
33
Download
0
Embed Size (px)
Citation preview
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
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?
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
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….?
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
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...
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);
}
}
}
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
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.
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
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
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
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
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)
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
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
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
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
19
© Bedir Tekinerdoğan Software Architecture Design 37
Let‟s begin….
http://www.discoverturkey.com/