Rationale for Software Architecture



Similar documents
Using Files as Input/Output in Java 5.0 Applications

Mobile App Design Project #1 Java Boot Camp: Design Model for Chutes and Ladders Board Game

Introduction to programming

public static void main(string[] args) { System.out.println("hello, world"); } }

CS 121 Intro to Programming:Java - Lecture 11 Announcements

Lecture J - Exceptions

Construction Principles and Design Patterns. Flyweight, Bridge, Builder

13 File Output and Input

CSE 1223: Introduction to Computer Programming in Java Chapter 7 File I/O

CS 111 Classes I 1. Software Organization View to this point:

INTRODUCTION TO COMPUTER PROGRAMMING. Richard Pierse. Class 7: Object-Oriented Programming. Introduction

What is ODBC? Database Connectivity ODBC, JDBC and SQLJ. ODBC Architecture. More on ODBC. JDBC vs ODBC. What is JDBC?

Introduction to Object-Oriented Programming

File class in Java. Scanner reminder. Files 10/19/2012. File Input and Output (Savitch, Chapter 10)

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

Topics. Introduction. Java History CS 146. Introduction to Programming and Algorithms Module 1. Module Objectives

IMPROVING JAVA SOFTWARE THROUGH PACKAGE STRUCTURE ANALYSIS

Basics of Java Programming Input and the Scanner class

Preet raj Core Java and Databases CS4PR. Time Allotted: 3 Hours. Final Exam: Total Possible Points 75

Building a Multi-Threaded Web Server

SOFTWARE DESIGN TECHNIQUES. Nagalaxmi Telkar CSCI 5828 Presentation Slides

Complexities of Simulating a Hybrid Agent-Landscape Model Using Multi-Formalism

Introduction to Java. CS 3: Computer Programming in Java

CS506 Web Design and Development Solved Online Quiz No. 01

Classes and Objects. Agenda. Quiz 7/1/2008. The Background of the Object-Oriented Approach. Class. Object. Package and import

Introducing a Graduate Course on. called Aspect-Oriented Software Development

Master of Sciences in Informatics Engineering Programming Paradigms 2005/2006. Final Examination. January 24 th, 2006

Chulalongkorn University International School of Engineering Department of Computer Engineering Computer Programming Lab.

Decision-making Computer Science Lesson to Prepare for UIL Computer Science Contest

To Java SE 8, and Beyond (Plan B)

KWIC Exercise. 6/18/ , Spencer Rugaber 1

Object-Oriented Programming in Java

Handout 1. Introduction to Java programming language. Java primitive types and operations. Reading keyboard Input using class Scanner.

Moving from CS 61A Scheme to CS 61B Java

This material is built based on, Patterns covered in this class FILTERING PATTERNS. Filtering pattern

Introduction to Object-Oriented Programming

Design Patterns. Advanced Software Paradigms (A. Bellaachia) 1

!"# $ %!&' # &! ())*!$

Coding Standard for Java

Reading Input From A File

1. What are Data Structures? Introduction to Data Structures. 2. What will we Study? CITS2200 Data Structures and Algorithms

Course Name: ADVANCE COURSE IN SOFTWARE DEVELOPMENT (Specialization:.Net Technologies)

Word Count Code using MR2 Classes and API

Chapter 2. println Versus print. Formatting Output withprintf. System.out.println for console output. console output. Console Input and Output

COS 217: Introduction to Programming Systems

Object-Oriented Programming

ARMMS - Architecture Reference Model for Multilingual Software

Chapter 1 Java Program Design and Development

AVRO - SERIALIZATION

Course Title: Software Development

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

Course Intro Instructor Intro Java Intro, Continued

Introduction to MapReduce and Hadoop

Event-Driven Programming

Division of Informatics, University of Edinburgh

Chapter 4: Design Principles I: Correctness and Robustness

Crash Course in Java

Integration of Application Business Logic and Business Rules with DSL and AOP

CS 141: Introduction to (Java) Programming: Exam 1 Jenny Orr Willamette University Fall 2013

El Dorado Union High School District Educational Services

Composing Concerns with a Framework Approach

HPCHadoop: MapReduce on Cray X-series

An Approach to Software Architecture Description Using UML

C++ Programming Language

Syllabus for CS 134 Java Programming

What are exceptions? Bad things happen occasionally

Software Architecture. New wine in old bottles? (i.e., software architecture global design?, architect designer)

Engineering Design. Software. Theory and Practice. Carlos E. Otero. CRC Press. Taylor & Francis Croup. Taylor St Francis Croup, an Informa business

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

Bookstore Inventory System Software Design Document. Version 1.0

OKLAHOMA SUBJECT AREA TESTS (OSAT )

02 B The Java Virtual Machine

GET 114 Computer Programming Course Outline. Contact: Office Hours: TBD (or by appointment)

WRITING DATA TO A BINARY FILE

I. INTRODUCTION. International Journal of Computer Science Trends and Technology (IJCST) Volume 3 Issue 2, Mar-Apr 2015

Philosophy of GIMnet

Chapter 3. Input and output. 3.1 The System class

Glossary of Object Oriented Terms

Aspectual Mixin Layers

CHAPTER 5 INTELLIGENT TECHNIQUES TO PREVENT SQL INJECTION ATTACKS

sveltest: A testing language

Chapter 2: Elements of Java

Java CPD (I) Frans Coenen Department of Computer Science

The C Programming Language course syllabus associate level

Java Basics: Data Types, Variables, and Loops

Lecture Overview. Object-Oriented Software Engineering: Using UML, Patterns, Java, and Software Development Processes. Prof. Dr.

Java Programming Fundamentals

Homework/Program #5 Solutions

Software Engineering Reference Framework

Application Architectures

Evaluation. Copy. Evaluation Copy. Chapter 7: Using JDBC with Spring. 1) A Simpler Approach ) The JdbcTemplate. Class...

Tutorial on Writing Modular Programs in Scala

NEW YORK CITY COLLEGE OF TECHNOLOGY/CUNY Computer Systems Technology Department

The Java I/O System. Binary I/O streams (ascii, 8 bits) The decorator design pattern Character I/O streams (Unicode, 16 bits)

Sample CSE8A midterm Multiple Choice (circle one)

MICHIGAN TEST FOR TEACHER CERTIFICATION (MTTC) TEST OBJECTIVES FIELD 050: COMPUTER SCIENCE

Install Java Development Kit (JDK) 1.8

Semantic Analysis: Types and Type Checking

CHAPTER 4: PATTERNS AND STYLES IN SOFTWARE ARCHITECTURE

Files and input/output streams

Transcription:

Rationale for Software Architecture Bedir Tekinerdoğan University of Twente Department of Computer Science Enschede, The Netherlands e:mail bedir@cs.utwente.nl http://www.cs.utwente.nl/~bedir/ http://trese.cs.utwente.nl/taosad/

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 2

Building Architectures 3

Computer Architecture 4

Car Architecture 5

Architecture Describes (is) Structure Consisting of components which forms the foundation of the whole... 6

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

Bricks are not enough... Build me a palace! 8

You need an architect first... Architecture Design Architecture Realization Building Architecture 9

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); 10

Large, complex software systems...! Large (Distributed) System! Many people working on the same problem! Overly Complex! Millions of Code...! Should be delivered on time and within budget! Programming in the Large 11

Coding is not enough...! Lists! Arrays! Class! Object! Procedures! Functions! Algorithms! Etc. 12

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 13

Does Software have Structure?!! Yes!!! Dijkstra, 1968: "...Correct arrangement of the structure of software systems before simple programming...! 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... Edsger Dijkstra 1930-2002 14

Structure in Software! 1960s - Structured Programming! Functional/algorithmic decomposition! 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.! Object decomposition! 1990s Towards Software Architectures " Object-Oriented Analysis/Design/Programming started being commonly used " Software Architecture Design! 2000s- Software Product Line Architectures 15

Structure in Software 1950 1960 1970 1980 1990 2000 2010 PROBLEMS SOLVED Simple, algorithmic Data intensive, business applications Large, complex, distributed Mega programs APPROACH Programming any-which-way Programming in-the-small - information hiding, modularization Programming in-the-large - object-oriented design - CASE tools - libraries Programming in-the-world - software architecture, product lines, aspect-orientation 16

Rationale for Software Architecture Problem understanding Software Architecture Analysis Design Implementation! Architecture is explicit representation of global structure of system! Improves communication among different stakeholders! Guides analysis and design phases! Can predict global performance! Gross level reuse 17

Summary on Structure in History! The more complex the problems the more the need to provide an explicit structure.! Increased consciousness on structure of software! Structure idea did not stop at programming level but moved up to design methods.! This has logically culminated in Software Architecture! Successfully applied in industry which have specific architecture design teams/divisions.! Active Software Architecture Design community with its own conferences, workshops, publications...! Is one of the most fundamental concepts in software engineering. 18