archjava n.
Download
Skip this Video
Loading SlideShow in 5 Seconds..
ArchJava PowerPoint Presentation
Download Presentation
ArchJava

Loading in 2 Seconds...

play fullscreen
1 / 24

ArchJava - PowerPoint PPT Presentation


  • 97 Views
  • Uploaded on

ArchJava. A software architecture tool components connections constraints on how components interact Implementation must conform to architecture. References. ECOOP 2002 paper ICSE 2002 paper website on ArchJava ArchJava reference manual. Architectural Conformance.

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about 'ArchJava' - kent


An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
archjava
ArchJava
  • A software architecture tool
    • components
    • connections
    • constraints on how components interact
  • Implementation must conform to architecture
references
References
  • ECOOP 2002 paper
  • ICSE 2002 paper
  • website on ArchJava
  • ArchJava reference manual
architectural conformance
Architectural Conformance
  • communication integrity
    • each component in the implemented system may only communicate directly with the components to which it is connected in the architecture.
slide4

public component class Parser {

public port in {

provides void setInfo(Token symbol,

SymTabEntry e);

requires Token nextToken()

throws ScanException;

}

public port out {

provides SymTabEntry getInfo(Token t);

requires void compile (AST ast);}

void parse (String file) {

Token tok = in.nextToken();

AST ast = parseFile(tok);

out.compile(ast);

}

AST parseFile(Token lookahead) { … }

void setInfo(Token t, SymTabEntry e) {… }

SymTabEntry getInfo(Token t) { … }

}

strange that parse does not

belong to a port; parse is

provided.

slide5

collaboration Parser {

public participant in {

provides void setInfo(Token symbol,

SymTabEntry e);

requires Token nextToken()

throws ScanException;

}

public participant out {

provides SymTabEntry getInfo(Token t);

requires void compile (AST ast);

void parse (String file) {

Token tok = in.nextToken();

AST ast = parseFile(tok);

out.compile(ast);

}

AST parseFile(Token lookahead) { … }

void setInfo(Token t, SymTabEntry e) {… }

SymTabEntry getInfo(Token t) { … }

}

can we do the same

with an aspectual

collaboration?

slide6

public component class Compiler {

private final Scanner scanner = … ;

private final Parser parser = … ;

private final CodeGen codegen = … ;

connect scanner.out, parser.in;

connect parser.out, codegen.in

public static void main(String args[]) {

new Compiler().compile(args);

}

public void compile(String args[]) {

// for each file in args do:

… parser.parse(file); …

}

composite components
Composite components
  • sub component: component instance nested within another component.
  • singleton sub components: final
  • connections: connect primitive is symmetric
    • bind each required method to a provided method with same name and signature
    • args to connect: components own ports or those of subcomponents in final fields
composite components1
Composite components
  • Provided methods can be implemented by forwarding invocations to sub components or to the required methods of another port.
  • Alternative connection semantics: write smart connectors.
  • Only a component’s parent can invoke its methods directly.
dynamic architectures
Dynamic architectures
  • create component instances with new.
  • typed references to sub components may not escape the scope of their parent.
  • Garbage collection when components are no longer reachable through references or connections.
slide10

public component class WebServer {

private final Router r = new Router();

connect r.request, create;

// may be instantiated at run-time

// personality analogy

connect pattern Router.workers, Worker.serve;

public void run() { r.listen(); }

private port create {

provides r.workers requestWorkers() {

final Worker newWorker = new Worker();

r.workers connection

= connect(r.workers, newWorker.serve);

return connection;

}

}

}

limitations of archjava
Limitations of ArchJava
  • only Java
  • inter-component connections must be implemented through method calls (not events, for example)
  • focus on communication integrity
  • no reasoning about temporal ordering of architectural events
  • shared data
example aphyds
Example: Aphyds
  • Developed by EE professor with PhD in CS
hypotheses
Hypotheses
  • Do those hypotheses hold for aspectual collaborations? A port corresponds to a participant.
  • In ArchJava: no renaming of methods in connectors
hypotheses1
Hypotheses
  • Refactoring an application to expose its architecture is done most efficiently in small increments
  • Applications can be translated into ArchJava with a modest amount of effort and without excessive code bloat
hypotheses2
Hypotheses
  • Expressing software in ArchJava highlights refactoring opportunities by making communication protocols explicit.
  • Note: the name of a port gives a clue about the purpose of the port’s methods.
hypotheses3
Hypotheses
  • Using separate ports and connections to distinguish different protocols and describing protocols with separate provided and required port interfaces may ease program understanding tasks.
  • Communication integrity in ArchJava encourages local communication and helps to reduce coupling between components.
ideas
Ideas
  • Can ArchJava constraints be simulated in AspectJ? Simulate a component class with aspects that check the constraints?
  • What are the connections between ports and participants?
  • Law of Demeter and default architecture.
ports and participants
Ports and Participants
  • Sounds like ports are a second very useful application of the participant idea. Participants are connected in a graph; ports don’t rely on that.
ports and participants1
ArchJava

has provides/requires

connect: link ports

no renaming

no component merging

AC

has provides/requires

attach: link participants

renaming of method names

component merging

Ports and Participants
slide22

component class Flying {

port flier {

provides void fly();

requires void takeOff();

requires void land(); …}}

component class Bat {

port flier_infra {

provides void takeOff();

provides void land(); … } }

component class FlyingBat {

private final Flying f = … ;

private final Bat b = … ;

connect f.flier, b.flier_infra;

public void fly() { f.fly();}

}

hygienic components and mixins
Hygienic Components and Mixins

class AddAttribute<C,Attribute> extends C{

// mixin class that adds a field of type

// Attribute to any class C

private Attribute _a;

void setAttribute(Attribute a) {_a = a;}

Attribute getAttribute() {return _a;}

}

class Point { … }