archjava java extension architectural features
play

ArchJava: Java extension architectural features components, - PowerPoint PPT Presentation

ArchJava: Java extension architectural features components, ports and connections Benefits Better program understanding Reliable architectural reasoning about code Keeping architecture and code consistent as they


  1. • ArchJava: Java extension – architectural features – components, ports and connections • Benefits – Better program understanding – Reliable architectural reasoning about code – Keeping architecture and code consistent as they evolve 18 Novembre, 2003 1

  2. • Approach: add architecture to language – Control-flow communication integrity • Enforced by type system – Architecture updated as code evolves – Flexible • Dynamically changing architectures • Common implementation techniques 18 Novembre, 2003 2

  3. Parser public component class Parser { Component class • Defines architectural object • Must obey architectural constraints 18 Novembre, 2003 3

  4. in out Parser public component class Parser { public port in { requires Token nextToken(); } public port out { provides AST parse(); } Components communicate through Ports • A two-way interface • Define provided and required methods 18 Novembre, 2003 4

  5. in out Parser public component class Parser { public port in { requires Token nextToken(); } public port out { provides AST parse(); } Ordinary (non-component) objects • Passed between components • Sharing is permitted • Can use just as in Java 18 Novembre, 2003 5

  6. in out Parser public component class Parser { public port in { requires Token nextToken(); } public port out { provides AST parse(); } AST parse() { Token tok=in.nextToken(); return parseExpr(tok); } AST parseExpr(Token tok) { ... } ... } Can fill in architecture with ordinary Java code 18 Novembre, 2003 6

  7. Compiler out in out in scanner parser codegen public component class Compiler { private final Scanner scanner = new Scanner(); private final Parser parser = new Parser(); private final CodeGen codegen = new CodeGen(); Subcomponents – Component instances inside another component – Communicate through connected ports 18 Novembre, 2003 7

  8. Compiler out in out in scanner parser codegen public component class Compiler { private final Scanner scanner = new Scanner(); private final Parser parser = new Parser(); private final CodeGen codegen = new CodeGen(); connect scanner.out, parser.in; connect parser.out, codegen.in; Connections – Bind required methods to provided methods 18 Novembre, 2003 8

  9. • Does code conform to architecture? • Communication Integrity – Consistency Property A component may only communicate with the components it is connected to in the architecture 18 Novembre, 2003 9

  10. Compiler scanner parser codegen • Architecture allows – Calls between connected components 18 Novembre, 2003 10

  11. Compiler scanner parser codegen • Architecture allows – Calls between connected components – Calls from a parent to its immediate subcomponents 18 Novembre, 2003 11

  12. Compiler symbol scanner parser codegen • Architecture allows – Calls between connected components – Calls from a parent to its immediate subcomponents – Calls to shared objects 18 Novembre, 2003 12

  13. Compiler scanner parser codegen • Architecture allows – Calls between connected components – Calls from a parent to its immediate subcomponents – Calls to shared objects • Architecture forbids – External calls to subcomponents 18 Novembre, 2003 13

  14. Compiler scanner parser codegen • Architecture allows – Calls between connected components – Calls from a parent to its immediate subcomponents – Calls to shared objects • Architecture forbids – External calls to subcomponents – Calls between unconnected subcomponents 18 Novembre, 2003 14

  15. Compiler symbol scanner parser codegen • Architecture allows – Calls between connected components – Calls from a parent to its immediate subcomponents – Calls to shared objects • Architecture forbids – External calls to subcomponents – Calls between unconnected subcomponents – Calls through shared objects 18 Novembre, 2003 15

  16. • ArchJava integrates architecture with Java code • Control communication integrity – Keeps architecture and code synchronized • Formalization of language & properties – ArchFJ (Arch Featherweight Java) 18 Novembre, 2003 16

Recommend


More recommend