88
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Examples Software Architecture VO/KU (707.023/707.024) Roman Kern KTI, TU Graz 2014-10-22 Roman Kern (KTI, TU Graz) Examples 2014-10-22 1 / 88

Examples - KTIkti.tugraz.at/staff/rkern/courses/sa/2014/slides_examples.pdf · Loose coupling Individual ... (f @NamedQuery(name = " artifactById " , query = ... Presentation Layer

  • Upload
    lambao

  • View
    217

  • Download
    1

Embed Size (px)

Citation preview

Page 1: Examples - KTIkti.tugraz.at/staff/rkern/courses/sa/2014/slides_examples.pdf · Loose coupling Individual ... (f @NamedQuery(name = " artifactById " , query = ... Presentation Layer

..........

.....

.....................................................................

.....

......

.....

.....

.

.

......

ExamplesSoftware Architecture VO/KU (707.023/707.024)

Roman Kern

KTI, TU Graz

2014-10-22

Roman Kern (KTI, TU Graz) Examples 2014-10-22 1 / 88

Page 2: Examples - KTIkti.tugraz.at/staff/rkern/courses/sa/2014/slides_examples.pdf · Loose coupling Individual ... (f @NamedQuery(name = " artifactById " , query = ... Presentation Layer

..........

.....

.....................................................................

.....

......

.....

.....

.

Outline

...1 Example Pattern - Disruptor

...2 Example Project - wissen.de

...3 Example Project - EEXCESS

Roman Kern (KTI, TU Graz) Examples 2014-10-22 2 / 88

Page 3: Examples - KTIkti.tugraz.at/staff/rkern/courses/sa/2014/slides_examples.pdf · Loose coupling Individual ... (f @NamedQuery(name = " artifactById " , query = ... Presentation Layer

..........

.....

.....................................................................

.....

......

.....

.....

.

Example Pattern - Disruptor

Example Pattern - DisruptorPattern for high performance

Roman Kern (KTI, TU Graz) Examples 2014-10-22 3 / 88

Page 4: Examples - KTIkti.tugraz.at/staff/rkern/courses/sa/2014/slides_examples.pdf · Loose coupling Individual ... (f @NamedQuery(name = " artifactById " , query = ... Presentation Layer

..........

.....

.....................................................................

.....

......

.....

.....

.

Example Pattern - Disruptor

Basic Problem

Concurrency

Two or more tasks happen in parallel

... and also contend on access to resources

Where resources might be files, database access, memory, ...

The two main concepts here:

Mutual exclusion - manage access to resource

Visibility of change - controlling, when changes become visible toother threads

Roman Kern (KTI, TU Graz) Examples 2014-10-22 4 / 88

Page 5: Examples - KTIkti.tugraz.at/staff/rkern/courses/sa/2014/slides_examples.pdf · Loose coupling Individual ... (f @NamedQuery(name = " artifactById " , query = ... Presentation Layer

..........

.....

.....................................................................

.....

......

.....

.....

.

Example Pattern - Disruptor

Basic Problem

Mutual Exclusion

Is typically achieved via locking

... but locks are expensive

and require support by the operating system

Some platforms support CAS (Compare and Swap)

... far less expensive

but will only work for words and within a single machine

Note: Developing concurrent programs that make use of lock is hard, developing programs that

integrate CAS is extremely hard

Roman Kern (KTI, TU Graz) Examples 2014-10-22 5 / 88

Page 6: Examples - KTIkti.tugraz.at/staff/rkern/courses/sa/2014/slides_examples.pdf · Loose coupling Individual ... (f @NamedQuery(name = " artifactById " , query = ... Presentation Layer

..........

.....

.....................................................................

.....

......

.....

.....

.

Example Pattern - Disruptor

Basic Problem

Ideally, there would be a single thread for all writes

... and all other thread just reading the results

Today, CPUs are multi-core and free to conduct out-of-orderexecution

... therefore the reading/writing needs to be coordinated

by the use of memory barriers

Roman Kern (KTI, TU Graz) Examples 2014-10-22 6 / 88

Page 7: Examples - KTIkti.tugraz.at/staff/rkern/courses/sa/2014/slides_examples.pdf · Loose coupling Individual ... (f @NamedQuery(name = " artifactById " , query = ... Presentation Layer

..........

.....

.....................................................................

.....

......

.....

.....

.

Example Pattern - Disruptor

Queue

Queue Pattern

Pattern to decouple producers from consumers

Producers write into a queue (head)

Consumers read out of the queue (tail)

If the consumers handle more items that the producers generate

... the queue will be empty and the system inefficient

If the producers generate more items than the consumers can handle

... the (unbounded) queue will explode

Note: Typically queue do not work well with CAS and other properties of modern architecture

(cache lines)

Roman Kern (KTI, TU Graz) Examples 2014-10-22 7 / 88

Page 8: Examples - KTIkti.tugraz.at/staff/rkern/courses/sa/2014/slides_examples.pdf · Loose coupling Individual ... (f @NamedQuery(name = " artifactById " , query = ... Presentation Layer

..........

.....

.....................................................................

.....

......

.....

.....

.

Example Pattern - Disruptor

Pipeline

Pipeline Pattern

Pattern to decouple a series of data transformation steps

Data is passed from one filter to another through pipes

In a simple case the data is passed in a series of transformations

... in a more complex case there will be branches and paralleltransformations

In between the transformations there will typically be queues

Note: A mixture of queue and pipeline are common for complex systems

Roman Kern (KTI, TU Graz) Examples 2014-10-22 8 / 88

Page 9: Examples - KTIkti.tugraz.at/staff/rkern/courses/sa/2014/slides_examples.pdf · Loose coupling Individual ... (f @NamedQuery(name = " artifactById " , query = ... Presentation Layer

..........

.....

.....................................................................

.....

......

.....

.....

.

Example Pattern - Disruptor

Disruptor Motivation

Problem Setting

Many incoming events

Process in parallel

Maximise resource utilisation

Maintain sequence of events

Roman Kern (KTI, TU Graz) Examples 2014-10-22 9 / 88

Page 10: Examples - KTIkti.tugraz.at/staff/rkern/courses/sa/2014/slides_examples.pdf · Loose coupling Individual ... (f @NamedQuery(name = " artifactById " , query = ... Presentation Layer

..........

.....

.....................................................................

.....

......

.....

.....

.

Example Pattern - Disruptor

Disruptor Motivation

Basic Structure

Ring buffer (instead of a queue) with index

Producers populate the buffer with items

Consumers take out items from the buffer

... where multiple consumers may process an item in a sequence

Optimisations: Preallocation of items, size of ring buffer 2n

Roman Kern (KTI, TU Graz) Examples 2014-10-22 10 / 88

Page 11: Examples - KTIkti.tugraz.at/staff/rkern/courses/sa/2014/slides_examples.pdf · Loose coupling Individual ... (f @NamedQuery(name = " artifactById " , query = ... Presentation Layer

..........

.....

.....................................................................

.....

......

.....

.....

.

Example Pattern - Disruptor

Disruptor Motivation

Separation of Concerns

Storage of items (being exchanged)

Coordination of producers (claiming the next sequence for exchange)

Coordination of consumers (being notified that a new item isavailable)

Roman Kern (KTI, TU Graz) Examples 2014-10-22 11 / 88

Page 12: Examples - KTIkti.tugraz.at/staff/rkern/courses/sa/2014/slides_examples.pdf · Loose coupling Individual ... (f @NamedQuery(name = " artifactById " , query = ... Presentation Layer

..........

.....

.....................................................................

.....

......

.....

.....

.

Example Pattern - Disruptor

Disruptor Motivation

Barriers

Producer barrier

... items are store in the correct sequence

And an additional claim strategy

... which decides what producers should should do (e.g. blocked, busywait)

Consumer barrier

... consumers take out items in correct sequence

With an additional waiting strategy

Roman Kern (KTI, TU Graz) Examples 2014-10-22 12 / 88

Page 13: Examples - KTIkti.tugraz.at/staff/rkern/courses/sa/2014/slides_examples.pdf · Loose coupling Individual ... (f @NamedQuery(name = " artifactById " , query = ... Presentation Layer

..........

.....

.....................................................................

.....

......

.....

.....

.

Example Pattern - Disruptor

Disruptor

Disruptor Conclusion

Complex implementation

Easy to use

At least one order of magnitude faster than e.g. anArrayBlockingQueue

Improved latency

Plays well for garbage collectors

Roman Kern (KTI, TU Graz) Examples 2014-10-22 13 / 88

Page 14: Examples - KTIkti.tugraz.at/staff/rkern/courses/sa/2014/slides_examples.pdf · Loose coupling Individual ... (f @NamedQuery(name = " artifactById " , query = ... Presentation Layer

..........

.....

.....................................................................

.....

......

.....

.....

.

Example Project - wissen.de

Example Project - wissen.deProject type: web site

Roman Kern (KTI, TU Graz) Examples 2014-10-22 14 / 88

Page 15: Examples - KTIkti.tugraz.at/staff/rkern/courses/sa/2014/slides_examples.pdf · Loose coupling Individual ... (f @NamedQuery(name = " artifactById " , query = ... Presentation Layer

..........

.....

.....................................................................

.....

......

.....

.....

.

Example Project - wissen.de

Wissen.de - Web Site of the Year 2012

Has been elected Web Site of the Year 2012

Winner in the category: Education

Both the best and the most popular web-site

http://www.websitedesjahres.de/

Roman Kern (KTI, TU Graz) Examples 2014-10-22 15 / 88

Page 16: Examples - KTIkti.tugraz.at/staff/rkern/courses/sa/2014/slides_examples.pdf · Loose coupling Individual ... (f @NamedQuery(name = " artifactById " , query = ... Presentation Layer

..........

.....

.....................................................................

.....

......

.....

.....

.

Example Project - wissen.de

Wissen.de - The Web Site

Roman Kern (KTI, TU Graz) Examples 2014-10-22 16 / 88

Page 17: Examples - KTIkti.tugraz.at/staff/rkern/courses/sa/2014/slides_examples.pdf · Loose coupling Individual ... (f @NamedQuery(name = " artifactById " , query = ... Presentation Layer

..........

.....

.....................................................................

.....

......

.....

.....

.

Example Project - wissen.de

Wissen.de - The Web Site

Roman Kern (KTI, TU Graz) Examples 2014-10-22 17 / 88

Page 18: Examples - KTIkti.tugraz.at/staff/rkern/courses/sa/2014/slides_examples.pdf · Loose coupling Individual ... (f @NamedQuery(name = " artifactById " , query = ... Presentation Layer

..........

.....

.....................................................................

.....

......

.....

.....

.

Example Project - wissen.de

Wissen.de - Host

Wissen.de is a web-site hosted by wissenmedia

Wissenmedia is owned by Bertelsmann SE & Co. KGaA

Wissenmedia owns brands: Brockhaus, Bertelsmann, WAHRIG,CHRONIK, JollyBooks

The brand Brockhaus is over 200 years old and is known by 93%people (in Germany)

Roman Kern (KTI, TU Graz) Examples 2014-10-22 18 / 88

Page 19: Examples - KTIkti.tugraz.at/staff/rkern/courses/sa/2014/slides_examples.pdf · Loose coupling Individual ... (f @NamedQuery(name = " artifactById " , query = ... Presentation Layer

..........

.....

.....................................................................

.....

......

.....

.....

.

Example Project - wissen.de

Wissen.de - Scope

Wissen.de is a free service

Content is added and curated by editors

Does not follow the Wikipedia model

Free content is not taken from Brockhaus

wissen.de articles differ from printed articles

In their style and their life-cycle

Roman Kern (KTI, TU Graz) Examples 2014-10-22 19 / 88

Page 20: Examples - KTIkti.tugraz.at/staff/rkern/courses/sa/2014/slides_examples.pdf · Loose coupling Individual ... (f @NamedQuery(name = " artifactById " , query = ... Presentation Layer

..........

.....

.....................................................................

.....

......

.....

.....

.

Example Project - wissen.de

Wissen.de - Motivation

The project started out as an innovation platform:

Be innovative in terms of business models

Wissen.de is just a single portal to a complex system

→ Another example is a cooperation with a set-top box manufacturer

Be innovative in terms of technologies

→ Try out new functionality

Roman Kern (KTI, TU Graz) Examples 2014-10-22 20 / 88

Page 21: Examples - KTIkti.tugraz.at/staff/rkern/courses/sa/2014/slides_examples.pdf · Loose coupling Individual ... (f @NamedQuery(name = " artifactById " , query = ... Presentation Layer

..........

.....

.....................................................................

.....

......

.....

.....

.

Example Project - wissen.de

Wissen.de - Software Architecture

In terms of software architecture this puts an emphasis an specificquality attributes:

Flexibility

quickly try out new features

Evolvability

add new features without interfering with existing infrastructure

Scalability

need to manage millions of articles (more than the German Wikipedia)

need to serve many users

Roman Kern (KTI, TU Graz) Examples 2014-10-22 21 / 88

Page 22: Examples - KTIkti.tugraz.at/staff/rkern/courses/sa/2014/slides_examples.pdf · Loose coupling Individual ... (f @NamedQuery(name = " artifactById " , query = ... Presentation Layer

..........

.....

.....................................................................

.....

......

.....

.....

.

Example Project - wissen.de

Wissen.de - Software Architecture

Focus on specific quality attributes has implications on others:

Configurability

Need to be high as well

Testability

Suffers, as the system is changing at a high pace

Roman Kern (KTI, TU Graz) Examples 2014-10-22 22 / 88

Page 23: Examples - KTIkti.tugraz.at/staff/rkern/courses/sa/2014/slides_examples.pdf · Loose coupling Individual ... (f @NamedQuery(name = " artifactById " , query = ... Presentation Layer

..........

.....

.....................................................................

.....

......

.....

.....

.

Example Project - wissen.de

Wissen.de - Software Architecture

More importantly, the architecture needs to be flexible

And foresee possible directions

Typically use YAGNI (“You ain’t gonna need it”) - as a guideline

Complexity

The system has a high level of complexity

→ very hard for new developers in the project

Roman Kern (KTI, TU Graz) Examples 2014-10-22 23 / 88

Page 24: Examples - KTIkti.tugraz.at/staff/rkern/courses/sa/2014/slides_examples.pdf · Loose coupling Individual ... (f @NamedQuery(name = " artifactById " , query = ... Presentation Layer

..........

.....

.....................................................................

.....

......

.....

.....

.

Example Project - wissen.de

Wissen.de - Software Architecture

Role of the software architect

Identify the main use cases

Derive requirements from the use cases

In terms of functionalityIn terms of not directly functional requirements... identify quality attributes

Assess risks in the project

Communication with project partners (iterate, document)

Decide on programming language, frameworks, ...

Decide on actual architecture (e.g. patterns, (a)synchronous, ...)

Plan the development of the individual aspects (project manager)

Roman Kern (KTI, TU Graz) Examples 2014-10-22 24 / 88

Page 25: Examples - KTIkti.tugraz.at/staff/rkern/courses/sa/2014/slides_examples.pdf · Loose coupling Individual ... (f @NamedQuery(name = " artifactById " , query = ... Presentation Layer

..........

.....

.....................................................................

.....

......

.....

.....

.

Example Project - wissen.de

Wissen.de - Software Architecture

High flexibility is achieved by

Loose coupling

Individual components do not depend on other components

Generic interfaces and protocols

Thus components can be easily swapped out and replaced

But this have an impact on:

Performance

System needs to be as generic as possible

→ no option to fine-tune algorithms

Roman Kern (KTI, TU Graz) Examples 2014-10-22 25 / 88

Page 26: Examples - KTIkti.tugraz.at/staff/rkern/courses/sa/2014/slides_examples.pdf · Loose coupling Individual ... (f @NamedQuery(name = " artifactById " , query = ... Presentation Layer

..........

.....

.....................................................................

.....

......

.....

.....

.

Example Project - wissen.de

Wissen.de - Backend

Wissen.de is only one of multiple web sites

The whole infrastructure contains many sub-systems and components

Another part is the interface to the other systems (e.g. editorsystems)

It is embedded into an existing landscape of tools → integrability

Roman Kern (KTI, TU Graz) Examples 2014-10-22 26 / 88

Page 27: Examples - KTIkti.tugraz.at/staff/rkern/courses/sa/2014/slides_examples.pdf · Loose coupling Individual ... (f @NamedQuery(name = " artifactById " , query = ... Presentation Layer

..........

.....

.....................................................................

.....

......

.....

.....

.

Example Project - wissen.de

Wissen.de - Team

Developed by separate teams

Teams are from different companies

Know-Center, Key-Tec, EDELWEISS72,wissenmedia, arvato, Nionex...

Teams are geographically dispersed

Graz, Munich, Gtersloh

Roman Kern (KTI, TU Graz) Examples 2014-10-22 27 / 88

Page 28: Examples - KTIkti.tugraz.at/staff/rkern/courses/sa/2014/slides_examples.pdf · Loose coupling Individual ... (f @NamedQuery(name = " artifactById " , query = ... Presentation Layer

..........

.....

.....................................................................

.....

......

.....

.....

.

Example Project - wissen.de

Wissen.de - Overview

Roman Kern (KTI, TU Graz) Examples 2014-10-22 28 / 88

Page 29: Examples - KTIkti.tugraz.at/staff/rkern/courses/sa/2014/slides_examples.pdf · Loose coupling Individual ... (f @NamedQuery(name = " artifactById " , query = ... Presentation Layer

..........

.....

.....................................................................

.....

......

.....

.....

.

Example Project - wissen.de

Wissen.de - Detail

Will focus on the backend part only

It is run on multiple (virtual) machines

Used by multiple components

Main tasks: Store articles, index articles, present articles

Roman Kern (KTI, TU Graz) Examples 2014-10-22 29 / 88

Page 30: Examples - KTIkti.tugraz.at/staff/rkern/courses/sa/2014/slides_examples.pdf · Loose coupling Individual ... (f @NamedQuery(name = " artifactById " , query = ... Presentation Layer

..........

.....

.....................................................................

.....

......

.....

.....

.

Example Project - wissen.de

Articles

Articles are stored as XML

Combination of data and meta-data

Meta-data are title, date, category, ...

Data is XML, not restricted to a single format

Links between articles

Roman Kern (KTI, TU Graz) Examples 2014-10-22 30 / 88

Page 31: Examples - KTIkti.tugraz.at/staff/rkern/courses/sa/2014/slides_examples.pdf · Loose coupling Individual ... (f @NamedQuery(name = " artifactById " , query = ... Presentation Layer

..........

.....

.....................................................................

.....

......

.....

.....

.

Example Project - wissen.de

Software Architecture OverviewMain components

Roman Kern (KTI, TU Graz) Examples 2014-10-22 31 / 88

Page 32: Examples - KTIkti.tugraz.at/staff/rkern/courses/sa/2014/slides_examples.pdf · Loose coupling Individual ... (f @NamedQuery(name = " artifactById " , query = ... Presentation Layer

..........

.....

.....................................................................

.....

......

.....

.....

.

Example Project - wissen.de

Main Architecture

Web service as main interface

→ Client-server architecture

Main architecture: n-tier style

Typical example for a heterogeneous architecture style

Roman Kern (KTI, TU Graz) Examples 2014-10-22 32 / 88

Page 33: Examples - KTIkti.tugraz.at/staff/rkern/courses/sa/2014/slides_examples.pdf · Loose coupling Individual ... (f @NamedQuery(name = " artifactById " , query = ... Presentation Layer

..........

.....

.....................................................................

.....

......

.....

.....

.

Example Project - wissen.de

n-Tier Architecture

Conceptual architecture: 3-tier

Database layer

Application logic layer

Presentation layer

Roman Kern (KTI, TU Graz) Examples 2014-10-22 33 / 88

Page 34: Examples - KTIkti.tugraz.at/staff/rkern/courses/sa/2014/slides_examples.pdf · Loose coupling Individual ... (f @NamedQuery(name = " artifactById " , query = ... Presentation Layer

..........

.....

.....................................................................

.....

......

.....

.....

.

Example Project - wissen.de

Architecture: 3-layer applications

Roman Kern (KTI, TU Graz) Examples 2014-10-22 34 / 88

Page 35: Examples - KTIkti.tugraz.at/staff/rkern/courses/sa/2014/slides_examples.pdf · Loose coupling Individual ... (f @NamedQuery(name = " artifactById " , query = ... Presentation Layer

..........

.....

.....................................................................

.....

......

.....

.....

.

Example Project - wissen.de

n-Tier Architecture

Implementation architecture: 2-tier

Framework library

Presentation libraries

E.g. web-service library, command line library

Roman Kern (KTI, TU Graz) Examples 2014-10-22 35 / 88

Page 36: Examples - KTIkti.tugraz.at/staff/rkern/courses/sa/2014/slides_examples.pdf · Loose coupling Individual ... (f @NamedQuery(name = " artifactById " , query = ... Presentation Layer

..........

.....

.....................................................................

.....

......

.....

.....

.

Example Project - wissen.de

Database Layer

Object-relational mapping (ORM)

No direct interaction with the relational database

Schema can be derived from the business objects

Roman Kern (KTI, TU Graz) Examples 2014-10-22 36 / 88

Page 37: Examples - KTIkti.tugraz.at/staff/rkern/courses/sa/2014/slides_examples.pdf · Loose coupling Individual ... (f @NamedQuery(name = " artifactById " , query = ... Presentation Layer

..........

.....

.....................................................................

.....

......

.....

.....

.

Example Project - wissen.de

Example of ORM

@Ent i t y@Table ( name = ”ARTIFACT” )@NamedQueries ( { @NamedQuery (name = ” a r t i f a c t B y I d ” , query =”SELECT x FROM ARTIFACT x WHERE x . ARTIFACT ID = : a r t i f a c t I dP a r am AND x .BOOK ID = : bookIdParam” )

})@XmlJavaTypeAdapter ( Xm lA r t i c l e . Adapter . c l a s s )pub l i c c l a s s A r t i f a c t implements S e r i a l i z a b l e {

@EmbeddedIdp r i v a t e Ar t i f a c tPK i d ;

@ManyToOne@MapsId@JoinColumn (name = ”BOOK ID” , referencedColumnName = ”BOOK ID” )p r i v a t e Book book ;

@ManyToOne( f e t c h = FetchType . LAZY)@JoinColumn (name = ”CONTENT ID” , referencedColumnName = ”CONTENT ID” , n u l l a b l e = f a l s e )p r i v a t e Content con t en t ;

Roman Kern (KTI, TU Graz) Examples 2014-10-22 37 / 88

Page 38: Examples - KTIkti.tugraz.at/staff/rkern/courses/sa/2014/slides_examples.pdf · Loose coupling Individual ... (f @NamedQuery(name = " artifactById " , query = ... Presentation Layer

..........

.....

.....................................................................

.....

......

.....

.....

.

Example Project - wissen.de

Presentation Layer

XSLT scripts to transform the output into the target media

Not only articles are transformed

E.g. search results, error messages

Different output target media

E.g. mobile version, version for set-top boxes, product specificrenderings

Roman Kern (KTI, TU Graz) Examples 2014-10-22 38 / 88

Page 39: Examples - KTIkti.tugraz.at/staff/rkern/courses/sa/2014/slides_examples.pdf · Loose coupling Individual ... (f @NamedQuery(name = " artifactById " , query = ... Presentation Layer

..........

.....

.....................................................................

.....

......

.....

.....

.

Example Project - wissen.de

Presentation Layer

Roman Kern (KTI, TU Graz) Examples 2014-10-22 39 / 88

Page 40: Examples - KTIkti.tugraz.at/staff/rkern/courses/sa/2014/slides_examples.pdf · Loose coupling Individual ... (f @NamedQuery(name = " artifactById " , query = ... Presentation Layer

..........

.....

.....................................................................

.....

......

.....

.....

.

Example Project - wissen.de

Presentation Layer

Roman Kern (KTI, TU Graz) Examples 2014-10-22 40 / 88

Page 41: Examples - KTIkti.tugraz.at/staff/rkern/courses/sa/2014/slides_examples.pdf · Loose coupling Individual ... (f @NamedQuery(name = " artifactById " , query = ... Presentation Layer

..........

.....

.....................................................................

.....

......

.....

.....

.

Example Project - wissen.de

Example of XSLT

<x s l : s t y l e s h e e t v e r s i o n=” 2 .0 ” xmlns=” ht tp : //www.w3 . org /1999/ xhtml ”xmlns : x s l=” ht tp : //www.w3 . org /1999/XSL/Transform”xpath−d e f a u l t−namespace=” ht tp : //www.w3 . org /1999/ xhtml ”>

<x s l : t emp la t e match=”/”><html xmlns=” ht tp ://www.w3 . org /1999/ xhtml ”>

<head>< l i n k type=” t e x t / c s s ” r e l=” s t y l e s h e e t ” h r e f=”{ $u r l−p r e f i x } s t a t i c /{ $ v e r s i o n }/{ $template−d i r }/ h i l f e −t e x t e /web/ d e f a u l t . c s s ” />

</head><body>

<d i v c l a s s=” a r t i k e l − i n h a l t ”><x s l : copy−o f s e l e c t=” $ t e x t b au s t e i n−heade r ”/>

<!−− Hie r w i rd de r e i g e n t l i c h e A r t i k e l g e r e n d e r t −−><x s l : app ly−t emp l a t e s />

<!−− I n h a l t s u e b e r s i c h t f u e r ge−chunkte A r t i k e l −−><x s l : i f t e s t=”not ( / ∗ [ 1 ] / ws : kon t ex t /ws : ws− i n t e r n ) and // chunk”>

<x s l : c a l l −t emp la t e name=”chunks−t a b l e ”/></ x s l : i f><x s l : copy−o f s e l e c t=” $ t e x t b au s t e i n−f o o t e r ”/>

</ d i v></body>

</html></ x s l : t emp la t e>

Roman Kern (KTI, TU Graz) Examples 2014-10-22 41 / 88

Page 42: Examples - KTIkti.tugraz.at/staff/rkern/courses/sa/2014/slides_examples.pdf · Loose coupling Individual ... (f @NamedQuery(name = " artifactById " , query = ... Presentation Layer

..........

.....

.....................................................................

.....

......

.....

.....

.

Example Project - wissen.de

Web Service Interface

Multiple interfaces, for different use cases (e.g. read-only access,administrative access, ...)

Stateless

Hybrid of REST and RPC style service

Output is either XML or JSON

Roman Kern (KTI, TU Graz) Examples 2014-10-22 42 / 88

Page 43: Examples - KTIkti.tugraz.at/staff/rkern/courses/sa/2014/slides_examples.pdf · Loose coupling Individual ... (f @NamedQuery(name = " artifactById " , query = ... Presentation Layer

..........

.....

.....................................................................

.....

......

.....

.....

.

Example Project - wissen.de

Software Architecture StylesPatterns found in the architecture

Roman Kern (KTI, TU Graz) Examples 2014-10-22 43 / 88

Page 44: Examples - KTIkti.tugraz.at/staff/rkern/courses/sa/2014/slides_examples.pdf · Loose coupling Individual ... (f @NamedQuery(name = " artifactById " , query = ... Presentation Layer

..........

.....

.....................................................................

.....

......

.....

.....

.

Example Project - wissen.de

Information Extraction - Preprocessing

Task: Transform an XML into a textual representation

Three stages:

Input XML

→ transformed into XHTML

→ transformed into plain text

Roman Kern (KTI, TU Graz) Examples 2014-10-22 44 / 88

Page 45: Examples - KTIkti.tugraz.at/staff/rkern/courses/sa/2014/slides_examples.pdf · Loose coupling Individual ... (f @NamedQuery(name = " artifactById " , query = ... Presentation Layer

..........

.....

.....................................................................

.....

......

.....

.....

.

Example Project - wissen.de

Information Extraction - Preprocessing

Style: Pipeline

Batch-sequential, the next filter starts once the previous has finished

The output of the previous filter is the input to the next

Roman Kern (KTI, TU Graz) Examples 2014-10-22 45 / 88

Page 46: Examples - KTIkti.tugraz.at/staff/rkern/courses/sa/2014/slides_examples.pdf · Loose coupling Individual ... (f @NamedQuery(name = " artifactById " , query = ... Presentation Layer

..........

.....

.....................................................................

.....

......

.....

.....

.

Example Project - wissen.de

Pipes and filters

Figure : Pipe and filters style

Roman Kern (KTI, TU Graz) Examples 2014-10-22 46 / 88

Page 47: Examples - KTIkti.tugraz.at/staff/rkern/courses/sa/2014/slides_examples.pdf · Loose coupling Individual ... (f @NamedQuery(name = " artifactById " , query = ... Presentation Layer

..........

.....

.....................................................................

.....

......

.....

.....

.

Example Project - wissen.de

Information Extraction - Execute

Task: Extract information out of text

Multiple sub-tasks:

Split the text into sentences

Split a sentence into token (words)

Mark certain words as stop-words (should be ignored)

Assign word groups to individual tokens

Detect named entities (E.g. person names)

Roman Kern (KTI, TU Graz) Examples 2014-10-22 47 / 88

Page 48: Examples - KTIkti.tugraz.at/staff/rkern/courses/sa/2014/slides_examples.pdf · Loose coupling Individual ... (f @NamedQuery(name = " artifactById " , query = ... Presentation Layer

..........

.....

.....................................................................

.....

......

.....

.....

.

Example Project - wissen.de

Information Extraction - Execute

Realisation: Pipeline with shared repository

First the text is filled into a special data-structure

Each filter (sentence chunker, stop-word detection, ...) modifies thedata-structure

Using so called annotations

Each annotation is a span (start, end) with addition features

Caveat: filters depend on the output of preceding filters

Roman Kern (KTI, TU Graz) Examples 2014-10-22 48 / 88

Page 49: Examples - KTIkti.tugraz.at/staff/rkern/courses/sa/2014/slides_examples.pdf · Loose coupling Individual ... (f @NamedQuery(name = " artifactById " , query = ... Presentation Layer

..........

.....

.....................................................................

.....

......

.....

.....

.

Example Project - wissen.de

Example of Information Extraction Pipeline

pub l i c L i s t<Ex t r a c t ed I n f o rma t i onAnno t a t i o n> p r o c e s s ( S t r i n g t e x t ) throws I n f o rma t i o nE x t r a c t i o nE x c e p t i o n {

AnnotatedDocument doc = new DefaultDocument ( ) ;doc . s e tTex t ( t e x t ) ;f o r ( Annotator anno ta to r : a nno t a t o r s ) {

anno ta to r . annota te ( doc ) ;}

Roman Kern (KTI, TU Graz) Examples 2014-10-22 49 / 88

Page 50: Examples - KTIkti.tugraz.at/staff/rkern/courses/sa/2014/slides_examples.pdf · Loose coupling Individual ... (f @NamedQuery(name = " artifactById " , query = ... Presentation Layer

..........

.....

.....................................................................

.....

......

.....

.....

.

Example Project - wissen.de

Event Framework

Components can register to listen for events

Components can trigger events

Typically all events should be handled asynchronously (the sender isnot blocked)

Architectural style: publish-and-subscribe

Roman Kern (KTI, TU Graz) Examples 2014-10-22 50 / 88

Page 51: Examples - KTIkti.tugraz.at/staff/rkern/courses/sa/2014/slides_examples.pdf · Loose coupling Individual ... (f @NamedQuery(name = " artifactById " , query = ... Presentation Layer

..........

.....

.....................................................................

.....

......

.....

.....

.

Example Project - wissen.de

Notification Architectures

Figure : Notification architecture

Roman Kern (KTI, TU Graz) Examples 2014-10-22 51 / 88

Page 52: Examples - KTIkti.tugraz.at/staff/rkern/courses/sa/2014/slides_examples.pdf · Loose coupling Individual ... (f @NamedQuery(name = " artifactById " , query = ... Presentation Layer

..........

.....

.....................................................................

.....

......

.....

.....

.

Example Project - wissen.de

Example of an Event Listener

e v e n t L i s t e n e r = new Ev e n t L i s t e n e r ( ) {@Over r idepub l i c vo id onEvent ( Event event , Task t a s k ) {

i f ( even t i n s t a n c e o f MediaAddedEvent ) {i s D i r t y = t rue ;

}}

} ;

eventManager . r e g i s t e r E v e n t L i s t e n e r ( e v e n t L i s t e n e r ) ;

// somewhere e l s eeventManager . f i r e E v e n tA s y n c (new MediaAddedEvent (name ) ) ;

Roman Kern (KTI, TU Graz) Examples 2014-10-22 52 / 88

Page 53: Examples - KTIkti.tugraz.at/staff/rkern/courses/sa/2014/slides_examples.pdf · Loose coupling Individual ... (f @NamedQuery(name = " artifactById " , query = ... Presentation Layer

..........

.....

.....................................................................

.....

......

.....

.....

.

Example Project - wissen.de

Cluster Communication

Need to scale out (horizontally) to cope with the demand

Add redundancy to increase the availability

→ instead of a single machine, have a cluster of machines

Works transparently with the event framework

Roman Kern (KTI, TU Graz) Examples 2014-10-22 53 / 88

Page 54: Examples - KTIkti.tugraz.at/staff/rkern/courses/sa/2014/slides_examples.pdf · Loose coupling Individual ... (f @NamedQuery(name = " artifactById " , query = ... Presentation Layer

..........

.....

.....................................................................

.....

......

.....

.....

.

Example Project - wissen.de

Cluster Communication

Dynamically detect all cluster members on start-up (discovery)

Communication is based on either broadcast/multicasts (UDP) ordirect communication (TCP)

All cluster nodes need to know each other

Architectural style: peer-to-peer

Roman Kern (KTI, TU Graz) Examples 2014-10-22 54 / 88

Page 55: Examples - KTIkti.tugraz.at/staff/rkern/courses/sa/2014/slides_examples.pdf · Loose coupling Individual ... (f @NamedQuery(name = " artifactById " , query = ... Presentation Layer

..........

.....

.....................................................................

.....

......

.....

.....

.

Example Project - wissen.de

Peer to peer

Roman Kern (KTI, TU Graz) Examples 2014-10-22 55 / 88

Page 56: Examples - KTIkti.tugraz.at/staff/rkern/courses/sa/2014/slides_examples.pdf · Loose coupling Individual ... (f @NamedQuery(name = " artifactById " , query = ... Presentation Layer

..........

.....

.....................................................................

.....

......

.....

.....

.

Example Project - wissen.de

Cluster Communication - Synchronous

Only asynchronous communication facilities

Create synchronous communication via callbacks

Each synchronous message contains a unique id and sentasynchronously

Once the message has been processed by the remote note, anotification is sent back passing the id

Processing then can be continued at the sender side

Roman Kern (KTI, TU Graz) Examples 2014-10-22 56 / 88

Page 57: Examples - KTIkti.tugraz.at/staff/rkern/courses/sa/2014/slides_examples.pdf · Loose coupling Individual ... (f @NamedQuery(name = " artifactById " , query = ... Presentation Layer

..........

.....

.....................................................................

.....

......

.....

.....

.

Example Project - wissen.de

Indexing

The search index needs to be updated once articles have beenchanged

The component responsible to update the content of articles fires anevent as soon as an article has changed

The index components listens for these events

→ Decoupling of components, as one component does not know theother components

Disadvantage: no direct control of the process flow, hard to track theprogress of operations

Roman Kern (KTI, TU Graz) Examples 2014-10-22 57 / 88

Page 58: Examples - KTIkti.tugraz.at/staff/rkern/courses/sa/2014/slides_examples.pdf · Loose coupling Individual ... (f @NamedQuery(name = " artifactById " , query = ... Presentation Layer

..........

.....

.....................................................................

.....

......

.....

.....

.

Example Project - wissen.de

Request Tracking

Track long running operations

For example: batch import of articles, which might take hours

Idea: collect all information regarding an operation in one place,called task

Store this information in the database

Notify user once the operation is done

Roman Kern (KTI, TU Graz) Examples 2014-10-22 58 / 88

Page 59: Examples - KTIkti.tugraz.at/staff/rkern/courses/sa/2014/slides_examples.pdf · Loose coupling Individual ... (f @NamedQuery(name = " artifactById " , query = ... Presentation Layer

..........

.....

.....................................................................

.....

......

.....

.....

.

Example Project - wissen.de

Request Tracking - Task

Task consists of

ID: Unique ID of the task

Status: running, finished

Result: success, failed, cancelled

Messages: List of messages for the user

Attributes: Track the progress (→ progress bar in the UI)

Properties: Store internal state information

Roman Kern (KTI, TU Graz) Examples 2014-10-22 59 / 88

Page 60: Examples - KTIkti.tugraz.at/staff/rkern/courses/sa/2014/slides_examples.pdf · Loose coupling Individual ... (f @NamedQuery(name = " artifactById " , query = ... Presentation Layer

..........

.....

.....................................................................

.....

......

.....

.....

.

Example Project - wissen.de

Request Tracking - Task

A single task might spawn multiple machines

Synchronisation via the database

Administration console list all tasks

Helps to detect the root of problems

Roman Kern (KTI, TU Graz) Examples 2014-10-22 60 / 88

Page 61: Examples - KTIkti.tugraz.at/staff/rkern/courses/sa/2014/slides_examples.pdf · Loose coupling Individual ... (f @NamedQuery(name = " artifactById " , query = ... Presentation Layer

..........

.....

.....................................................................

.....

......

.....

.....

.

Example Project - wissen.de

Logging

Common logging infrastructure

Logging is also collected in the tasks

Logging output also contains the task-id

Log output is collected in files

Log files are rotated

Roman Kern (KTI, TU Graz) Examples 2014-10-22 61 / 88

Page 62: Examples - KTIkti.tugraz.at/staff/rkern/courses/sa/2014/slides_examples.pdf · Loose coupling Individual ... (f @NamedQuery(name = " artifactById " , query = ... Presentation Layer

..........

.....

.....................................................................

.....

......

.....

.....

.

Example Project - wissen.de

Error Handling

Each layer produces its own type system of errors

The presentation layer is responsible to report the error to the user

For each error an unique ID is generated

The ID is reported to the user and logged

Thus no internal state is reported to the outside

Roman Kern (KTI, TU Graz) Examples 2014-10-22 62 / 88

Page 63: Examples - KTIkti.tugraz.at/staff/rkern/courses/sa/2014/slides_examples.pdf · Loose coupling Individual ... (f @NamedQuery(name = " artifactById " , query = ... Presentation Layer

..........

.....

.....................................................................

.....

......

.....

.....

.

Example Project - wissen.de

Monitoring

Monitor the current state of the system

Web-based tool to monitor the state

Current resource consumption, e.g. memory used

List of recent error logs

Support of administrative/analysis operations

Roman Kern (KTI, TU Graz) Examples 2014-10-22 63 / 88

Page 64: Examples - KTIkti.tugraz.at/staff/rkern/courses/sa/2014/slides_examples.pdf · Loose coupling Individual ... (f @NamedQuery(name = " artifactById " , query = ... Presentation Layer

..........

.....

.....................................................................

.....

......

.....

.....

.

Example Project - wissen.de

Monitoring

Roman Kern (KTI, TU Graz) Examples 2014-10-22 64 / 88

Page 65: Examples - KTIkti.tugraz.at/staff/rkern/courses/sa/2014/slides_examples.pdf · Loose coupling Individual ... (f @NamedQuery(name = " artifactById " , query = ... Presentation Layer

..........

.....

.....................................................................

.....

......

.....

.....

.

Example Project - wissen.de

Runtime Performance

Improve performance by use of caching

Caches need to be in-sync across the multiple machines

Therefore all changes need to be reported to all machines

The event framework propagates these changes to all nodes andcomponents

Changes in the file-system need to be detected as well

Roman Kern (KTI, TU Graz) Examples 2014-10-22 65 / 88

Page 66: Examples - KTIkti.tugraz.at/staff/rkern/courses/sa/2014/slides_examples.pdf · Loose coupling Individual ... (f @NamedQuery(name = " artifactById " , query = ... Presentation Layer

..........

.....

.....................................................................

.....

......

.....

.....

.

Example Project - wissen.de

Improve Flexibility

Improve flexibility by increase of configurability

Level of configurability rises with the power of the configurationlanguage

Highest level if the configuration itself is some sort of programminglanguage

→ Interpreter architectural style

Roman Kern (KTI, TU Graz) Examples 2014-10-22 66 / 88

Page 67: Examples - KTIkti.tugraz.at/staff/rkern/courses/sa/2014/slides_examples.pdf · Loose coupling Individual ... (f @NamedQuery(name = " artifactById " , query = ... Presentation Layer

..........

.....

.....................................................................

.....

......

.....

.....

.

Example Project - wissen.de

Project ManagementTopics related to the development

Roman Kern (KTI, TU Graz) Examples 2014-10-22 67 / 88

Page 68: Examples - KTIkti.tugraz.at/staff/rkern/courses/sa/2014/slides_examples.pdf · Loose coupling Individual ... (f @NamedQuery(name = " artifactById " , query = ... Presentation Layer

..........

.....

.....................................................................

.....

......

.....

.....

.

Example Project - wissen.de

Support Infrastructure

Version control system

Bug/Issue tracking system

Continuous integration system

Documentation system

Roman Kern (KTI, TU Graz) Examples 2014-10-22 68 / 88

Page 69: Examples - KTIkti.tugraz.at/staff/rkern/courses/sa/2014/slides_examples.pdf · Loose coupling Individual ... (f @NamedQuery(name = " artifactById " , query = ... Presentation Layer

..........

.....

.....................................................................

.....

......

.....

.....

.

Example Project - wissen.de

Rollout

Development system

Virtual machine with all tools installed

Staging system

Replica of the production system

Production system

Only versions are deployed on the production system, which havebeen tested on the staging system

Only a few people are allowed to deploy on the production system

Roman Kern (KTI, TU Graz) Examples 2014-10-22 69 / 88

Page 70: Examples - KTIkti.tugraz.at/staff/rkern/courses/sa/2014/slides_examples.pdf · Loose coupling Individual ... (f @NamedQuery(name = " artifactById " , query = ... Presentation Layer

..........

.....

.....................................................................

.....

......

.....

.....

.

Example Project - wissen.de

Project Management

Agile project development

Short cycles, working software

Project communication via periodic conference calls

Additionally e-mail and via issue tracker

Roman Kern (KTI, TU Graz) Examples 2014-10-22 70 / 88

Page 71: Examples - KTIkti.tugraz.at/staff/rkern/courses/sa/2014/slides_examples.pdf · Loose coupling Individual ... (f @NamedQuery(name = " artifactById " , query = ... Presentation Layer

..........

.....

.....................................................................

.....

......

.....

.....

.

Example Project - EEXCESS

Example Project - EEXCESSProject Type: Research Project

Roman Kern (KTI, TU Graz) Examples 2014-10-22 71 / 88

Page 72: Examples - KTIkti.tugraz.at/staff/rkern/courses/sa/2014/slides_examples.pdf · Loose coupling Individual ... (f @NamedQuery(name = " artifactById " , query = ... Presentation Layer

..........

.....

.....................................................................

.....

......

.....

.....

.

Example Project - EEXCESS

EEXCESS - Overview

EU Research Project (funded by the EU)

“EEXCESS is a research project which aims to make cultural,scientific and educational content easily accessible and available”

Runs over multiple years, started in early 2013

High number of involved partners:

Austria (3), Germany (3), UK (2), France (1), Switzerland (1)

Different types of partners

Technology partner, data providing partners, test bed partners,associated partners

Roman Kern (KTI, TU Graz) Examples 2014-10-22 72 / 88

Page 73: Examples - KTIkti.tugraz.at/staff/rkern/courses/sa/2014/slides_examples.pdf · Loose coupling Individual ... (f @NamedQuery(name = " artifactById " , query = ... Presentation Layer

..........

.....

.....................................................................

.....

......

.....

.....

.

Example Project - EEXCESS

EEXCESS - Overview

EU projects basics

Base is a document, the description of work (DoW)

This document outlines the project

Typically organised in work packages

Tracked via milestones and deliverables

The project gets reviewed by the EC

Roman Kern (KTI, TU Graz) Examples 2014-10-22 73 / 88

Page 74: Examples - KTIkti.tugraz.at/staff/rkern/courses/sa/2014/slides_examples.pdf · Loose coupling Individual ... (f @NamedQuery(name = " artifactById " , query = ... Presentation Layer

..........

.....

.....................................................................

.....

......

.....

.....

.

Example Project - EEXCESS

EEXCESS - Stakeholders

Stakeholders:

European Commission

Partners (scientific and commercial interests)

Main problem: No clearly defined goal, but many different ideas

Roman Kern (KTI, TU Graz) Examples 2014-10-22 74 / 88

Page 75: Examples - KTIkti.tugraz.at/staff/rkern/courses/sa/2014/slides_examples.pdf · Loose coupling Individual ... (f @NamedQuery(name = " artifactById " , query = ... Presentation Layer

..........

.....

.....................................................................

.....

......

.....

.....

.

Example Project - EEXCESS

EEXCESS - Approach

Procedure:

Demo scenario (to create a common understanding)

Ask partners for scenarios (got 25 scenarios)

Agree on use cases (4 scenarios)

Ask partners for functional requirements (non-technical)

Priorities and risks for requirements

Ask the work package leaders for requirements (technical)

Develop initial architecture

Roman Kern (KTI, TU Graz) Examples 2014-10-22 75 / 88

Page 76: Examples - KTIkti.tugraz.at/staff/rkern/courses/sa/2014/slides_examples.pdf · Loose coupling Individual ... (f @NamedQuery(name = " artifactById " , query = ... Presentation Layer

..........

.....

.....................................................................

.....

......

.....

.....

.

Example Project - EEXCESS

EEXCESS - Timeline Y1

ScenarioDesign

ScenarioSelection

WP 2 Design

WP 3Design

WP 4Design

WP 5Design

WP 6 Design

WP 7 Deliverable

WP 1Deliverable

WP 2-6Deliverable

First Deploym

ent

Kick-offM1

Design Conference

M4

Passau Meeting

M9

DeliverablesM11

M22

Roman Kern (KTI, TU Graz) Examples 2014-10-22 76 / 88

Page 77: Examples - KTIkti.tugraz.at/staff/rkern/courses/sa/2014/slides_examples.pdf · Loose coupling Individual ... (f @NamedQuery(name = " artifactById " , query = ... Presentation Layer

..........

.....

.....................................................................

.....

......

.....

.....

.

Example Project - EEXCESS

EEXCESS - Scenarios

Use case:

Includes a persona

Description of the scenario

Mock-ups

Relation to the project

Roman Kern (KTI, TU Graz) Examples 2014-10-22 77 / 88

Page 78: Examples - KTIkti.tugraz.at/staff/rkern/courses/sa/2014/slides_examples.pdf · Loose coupling Individual ... (f @NamedQuery(name = " artifactById " , query = ... Presentation Layer

..........

.....

.....................................................................

.....

......

.....

.....

.

Example Project - EEXCESS

EEXCESS - Example MockUp

Roman Kern (KTI, TU Graz) Examples 2014-10-22 78 / 88

Page 79: Examples - KTIkti.tugraz.at/staff/rkern/courses/sa/2014/slides_examples.pdf · Loose coupling Individual ... (f @NamedQuery(name = " artifactById " , query = ... Presentation Layer

..........

.....

.....................................................................

.....

......

.....

.....

.

Example Project - EEXCESS

EEXCESS - Scenario Analysis

ID short description scenario type

support type

recommended data

injection technology

language target group

type of user

context

platform type

B1 preparing lecture in e-learning system

content creation

educational support

cultural and scholarly data

easywiki plugin (SITOS)

german teachers explicit + implicit

web

B2 writing discussion board entry in e-learning system

content creation

educational support

websites, maps, pictures

browser plugin german pupils explicit + implicit

web

B3 improving e-learning lecture content creation

educational support

cultural and scholarly data

browser plugin german teachers explicit + implicit

web

B4 recommendation of additional learning material

content consumption

educational support

websites browser plugin german pupils explicit + implicit

web

K1 wikipedia extension with museum objects

content consumption

educational support

local museum objects

browser plugin german teachers implicit web

K2 search in local library catalogue

content consumption

scholarly communication

data set information, related exhibitions, related institutions

browser plugin, server side deployment

german scientists implicit web

K3 lecture preparation with Wikipedia

content consumption

educational support

local events, local museum objects

browser plugin german teachers implicit web

K4 Catalogue Maintenance in a Museum

content analysis

general public education

metadata of relevant resources

imdas plugin german scientists implicit web

M1 writing grant proposal content consumption

scholarly communication

scientific papers desktop tool, word-processor plugin

english scientists explicit + implicit

desktop

M2 understanding topics with narrative paths

content consumption

educational support or scholarly communication

scientific papers mendeley desktop plugin

english scientists explicit + implicit

web

M3 what’s new dashboard content consumption

scholarly communication

scientific papers, blogs

mendeley desktop plugin, mendeley website plugin

english scientists explicit + implicit

mobile

P1 blog extension with scientific resources

content consumption

educational support

scientific papers browser plugin english students implicit web

P2 twitter feed generation content consumption

scholarly communication

twitter feeds twitter bot english scientists implicit web

P3 bookmarking web app content consumption & content creation

scholarly communication

bookmark snippets of scientific papers, web pages

web app + browser plugin

english scientists implicit web

W1 preparing golf-club speech content consumption

general public education

cultural and scholarly data

cms plugin german general public

implicit web

W2 authoring encyclopedic article

content creation

general public education

scientific papers, related locations, learning material

cms plugin german general public

implicit web

W3 searching online encyclopedia

content consumption

general public education

related locations, entity features

cms plugin german general public

implicit web

W4 exploring information on mobile platform

content consumption

general public education

cultural and scholarly data

mobile app german general public

implicit mobile

Z1 professor’s scientific literature search in econbiz

content consumption

scholarly communication

culture grid data browser plugin english scientists implicit web

Z2 expert suggest in econbiz content consumption

scholarly communication

scientific papers, domain experts

browser plugin english scientists implicit web

Z3 bookmark organization for scientific literature

content consumption & content creation

educational support or scholarly communication

search queries browser plugin english scientists implicit web

Z4 blog entry creation content creation

educational support

scientific papers of ZBW

wordpress plugin

english general public

implicit web

Z5 twitter listener content consumption

general public education

cultural and scholarly data

twitter bot english scientists implicit web

Z6 library management content creation

scholarly communication

metadata for given articles; scientific papers

Web application: server side

english Librarian implicit web

Roman Kern (KTI, TU Graz) Examples 2014-10-22 79 / 88

Page 80: Examples - KTIkti.tugraz.at/staff/rkern/courses/sa/2014/slides_examples.pdf · Loose coupling Individual ... (f @NamedQuery(name = " artifactById " , query = ... Presentation Layer

..........

.....

.....................................................................

.....

......

.....

.....

.

Example Project - EEXCESS

EEXCESS - Scenario Risk Identification

IDestimated difficulty from WP viewestimated difficulty from WP viewestimated difficulty from WP viewestimated difficulty from WP viewestimated difficulty from WP view

short description scenario type injection technology WP2 WP3 WP4 WP5 WP6B1

B2

B3B4

K1

K2

K3K4

M1

M2

M3

P1

P2P3

W1W2W3W4

Z1

Z2Z3

Z4Z5Z6

preparing lecture in e-learning system

content creation easywiki plugin (SITOS) medium medium medium

writing discussion board entry in e-learning system

content creation e-learning software plugin? high medium medium

improving e-learning lecture content creation e-learning software plugin? medium ? mediumrecommendation of additional learning material

content consumption e-learning software plugin? medium medium medium

wikipedia extension with museum objects

content consumption browser plugin low low low

search in local library catalogue content consumption browser plugin, direct access from library search service to eexcess recommender

low ? low

lecture preparation with Wikipedia content consumption browser plugin low medium lowCatalogue Maintenance in a Museum

content analysis imdas plugin medium high medium

writing grant proposal content consumption desktop tool, word-processor plugin

high high high

understanding topics with narrative paths

content consumption mendeley desktop plugin medium high medium

what’s new dashboard content consumption mendeley desktop plugin, mendeley website plugin

high medium medium

blog extension with scientific resources

content consumption browser plugin medium medium medium

twitter feed generation content consumption twitter bot low high lowbookmarking web app content consumption & content

creationweb app + browser plugin low high low

preparing golf-club speech content consumption wissenmedia website plugin medium medium mediumauthoring encyclopedic article content creation wissenmedia cms plugin medium medium mediumsearching online encyclopedia content consumption wissen.de website plugin high ? mediumexploring information on mobile platform

content consumption contextR web app extension? high high high

professor’s scientific literature search in econbiz

content consumption econbiz extension, browser plugin? medium low medium

expert suggest in econbiz content consumption econbiz extension, browser plugin? medium medium mediumbookmark organization for scientific literature

content consumption & content creation

econbiz extension, browser plugin? medium high medium

blog entry creation content creation wordpress plugin medium ? mediumtwitter listener 0 0 low ? lowlibrary management 0 0 high ? high

Entscheidungsgrundlage für WP5- plugins für CMS (bitmedia, ZBW econbiz), wo wir die sachen reinpfuschen müssen in existierende infrastrukturen --> MEDIUM- reine browser plugins brauchen wir für die seiten,wo wir keinen zugang haben (wikipedia z.B.) --> LEICHT (im vergleich)- mobil oder desktop (ms word) ist SCHWEREntscheidungsgrundlage für WP2- ausgehend von WP5 Entscheidungen (aufgrund injection technologie)- Komplexität von Visualisierungen kann von LOW auf MEDIUM oder von MEDIUM auf HIGH ändern, wenn die Vis schwer zu generieren ist

Roman Kern (KTI, TU Graz) Examples 2014-10-22 80 / 88

Page 81: Examples - KTIkti.tugraz.at/staff/rkern/courses/sa/2014/slides_examples.pdf · Loose coupling Individual ... (f @NamedQuery(name = " artifactById " , query = ... Presentation Layer

..........

.....

.....................................................................

.....

......

.....

.....

.

Example Project - EEXCESS

EEXCESS - Requirements (excerpt)

Roman Kern (KTI, TU Graz) Examples 2014-10-22 81 / 88

Page 82: Examples - KTIkti.tugraz.at/staff/rkern/courses/sa/2014/slides_examples.pdf · Loose coupling Individual ... (f @NamedQuery(name = " artifactById " , query = ... Presentation Layer

..........

.....

.....................................................................

.....

......

.....

.....

.

Example Project - EEXCESS

EEXCESS - Overview

Initial architecture draft based on scenarios

Top down: starting with high level goals

Bottom up: each work package has its own understandings

.

......

Note: The first draft of the overall architecture existed beforerequirements have been made explicit

Roman Kern (KTI, TU Graz) Examples 2014-10-22 82 / 88

Page 83: Examples - KTIkti.tugraz.at/staff/rkern/courses/sa/2014/slides_examples.pdf · Loose coupling Individual ... (f @NamedQuery(name = " artifactById " , query = ... Presentation Layer

..........

.....

.....................................................................

.....

......

.....

.....

.

Example Project - EEXCESS

EEXCESS - Architecture Overview

Roman Kern (KTI, TU Graz) Examples 2014-10-22 83 / 88

Page 84: Examples - KTIkti.tugraz.at/staff/rkern/courses/sa/2014/slides_examples.pdf · Loose coupling Individual ... (f @NamedQuery(name = " artifactById " , query = ... Presentation Layer

..........

.....

.....................................................................

.....

......

.....

.....

.

Example Project - EEXCESS

EEXCESS - Architecture Detail - Query

Roman Kern (KTI, TU Graz) Examples 2014-10-22 84 / 88

Page 85: Examples - KTIkti.tugraz.at/staff/rkern/courses/sa/2014/slides_examples.pdf · Loose coupling Individual ... (f @NamedQuery(name = " artifactById " , query = ... Presentation Layer

..........

.....

.....................................................................

.....

......

.....

.....

.

Example Project - EEXCESS

EEXCESS - Architecture Detail - Usage Mining

Roman Kern (KTI, TU Graz) Examples 2014-10-22 85 / 88

Page 86: Examples - KTIkti.tugraz.at/staff/rkern/courses/sa/2014/slides_examples.pdf · Loose coupling Individual ... (f @NamedQuery(name = " artifactById " , query = ... Presentation Layer

..........

.....

.....................................................................

.....

......

.....

.....

.

Example Project - EEXCESS

EEXCESS - Project Management

Project management by (scientific) coordinator

Monthly telephone conferences

Yearly architecture/scenario review

About four meetings per year (e.g. common hackathon)

Mailing list for the whole project

Common content management system for project documentation

Multiple source code control systems (SVN, Github)

Common issue tracking system (Jira)

Roman Kern (KTI, TU Graz) Examples 2014-10-22 86 / 88

Page 87: Examples - KTIkti.tugraz.at/staff/rkern/courses/sa/2014/slides_examples.pdf · Loose coupling Individual ... (f @NamedQuery(name = " artifactById " , query = ... Presentation Layer

..........

.....

.....................................................................

.....

......

.....

.....

.

Example Project - EEXCESS

EEXCESS - Lesson Learnt

Hard to create a common understanding/architecture

Hard to get the involved partners to be motivated

Limited project horizon has implications on architecture

Work package organisation strongly influences architecture

Roman Kern (KTI, TU Graz) Examples 2014-10-22 87 / 88

Page 88: Examples - KTIkti.tugraz.at/staff/rkern/courses/sa/2014/slides_examples.pdf · Loose coupling Individual ... (f @NamedQuery(name = " artifactById " , query = ... Presentation Layer

..........

.....

.....................................................................

.....

......

.....

.....

.

Example Project - EEXCESS

The EndNext: OO design principles

Roman Kern (KTI, TU Graz) Examples 2014-10-22 88 / 88