240 likes | 341 Vues
The Alchemy Project aims to tackle the complexity and potential errors in embedded software development by offering a robust component-based system-level programming approach. Through tools like Knit, Jiazzi, and Maya, the project provides a static architecture with design rules checked at build time, enhancing flexibility, reuse, and architectural clarity. Alchemy contributes to Military Apps with Kernel CPU reservations for UAV OEP and measurable improvements in predictability. The project fosters cross-layer real-time Quality of Service (QoS) provision and emphasizes component reuse for predictable, resilient runtime behavior in constrained environments.
E N D
The Alchemy Project Jay Lepreau Matthew Flatt Eric Eide Alastair Reid John Regehr University of Utah Contract F33615-00-C-1696 October 26, 2001
Problem Description • Embedded RT software development too difficult, prone to error, expensive • System-level programming using components is especially hard • Embedded sys, VM, middleware, OS • Non-local constraints • Need build-time assurance • Existing code • Performance
Project Objectives & Technical Approach • Robust, flexible component composition • A mostly static architecture • Design rules checked at system build time • Aspects implemented using components • “Weaving” by composition • … provides: • “Product line” flexibility, increased reuse • AOP • Architectural clarity • Other: • Explore new compile-time metaprogramming system as aspect language for Java • Cross-layer RT QoS provision
Knit: Components for C • External component definition and linking language • Discussed at previous PI meetings • Released Feb’01, open source • Gaining experience and refining it • Version 2 in progress
Jiazzi: Components for Java • Support for component programming on a large scale • Jiazzi components… • are not stored in hierarchical namespace. • import and export signatures. • are parameterized by imports. • are defined and composed using an external language. • Flexible class extensions (mixins) • Groups of related mixin functionality (aspects)
Maya: Compile-time Metaprogramming for Java • “Macros on crack” • Semantic actions in the parser are generic functions • Maya “macros” are methods on the generic functions • New syntax returned to parser • Is hygienic and referentially transparent
Maya: compile-time metaprogramming AspectJ: language support for cross-cutting concerns Maya and AspectJ JSE
“Task Isolation” in Java • For real-time in particular • For QoS in general • For robustness • JSR-121… more later
Contribution to PCES Goals • Unified model for components and aspects • Functional and non-functional aspects • Design rule checking (constraints) • Support product families & evolution in Java & C • Java: aspects via components and language • Increased predictability, cross-layer • Promote technology adoption • Component mining • Minimal changes to existing code • Usable today: Knit, Jiazzi, Maya: open source
Family of JVMs:the OVM product line Composable RT schedulers Task isolation Resource controls VM services, footprint Object representation Design / configure time assurances Component reuse Principled use of COTS software Predictable, resilient run-time behavior Fit constrained execution envs. Cheaper, faster, better development Contributions to Military Apps } } }
Military Apps (cont’d) • Kernel CPU reservations for UAV OEP • Benefits: • Increased predictability • Isolation of timing faults • for C++ soon, Java later • Challenges: • Param calibration for multithreaded apps • Adjustable safety margin • Make reservations controllable from remote nodes
Military Apps (cont’d) • Jiazzi’ed event service in Boeing OEP Java-based ORB (w/ Wash U) • Aspect weaving in UAV Java code • At compile time using Maya • At runtime using Handi-Wrap
Metrics • Systems metrics: • UAV & Linux/RK CPU resv: quantified improvement in predictability • OVM product family: footprint • SW Engineering metrics • Reduced module “coupling” in Jiazzi’ed systems • Constraints: fewer incorrect systems composed by students, in a controlled study • Mining: quicker to componentize, in a controlled study
OVM mobile processes as Alchemy components Resource management in OVM w/Alchemy checking Alchemy-configured memory management in OVM Jiazzi + constraint checker Alchemy-configured data layout in OVM Jiazzi + weaver release Alchemy-configured feature selection in OVM Jiazzi release Initial OVM as Alchemy components 2001 Knit release Blue: tools Black: tool use Project Tasks/Schedule CPU resv in UAV Maya release
Technical Progress & Accomplishments • Jiazzi: components for Java • New release (Aug’01) • On-site meeting with OVM team (Sep’01) • Applied Jiazzi to OVM “Repository” subsystem • OOPSLA paper (Oct’01)
Accomplishments (cont’d) • Knit: components for C • “Shearing” -- extracting code that implements a component • Required in order to import and export types • Applied to RTLinux apps, the MzScheme VM, and the OSKit
Accomplishments (cont’d) • Component mining tools and methodology • Tools to extract components from existing code • Human-guided heuristic process (“lather, rinse, repeat”) • Knit/C tools applied to • Moab active network OS • MzScheme virtual machine • OSKit OS components • … by 3 different people. Tools improved markedly. • Jiazzi/Java next
Accomplishments (cont’d) • Maya: Metaprogramming for Java • Thesis signed (Aug’01) • Implemented Handi-Wrap tool for run-time metaprogramming (Sep’01) • Initial release (Oct ’01) • AOSD paper under review (Oct ’01)
Next Milestones • Jiazzi • First non-beta release (4Q01) • Construct OVM from Jiazzi components (1Q02) • RT-Java components (4Q02) • CPU reservations in UAV OEP (1Q02) • Java “Task” isolation • G.Back PhD thesis signed (any day!) • JSR-121 release (1Q02) • Maya • PLDI submission (Nov ’01) • Integrate with Jiazzi?
Collaborations • OVM team (Purdue, UMD, SUNY) • BBN: • CPU reservations across UAV/OS • Alchemy-configured feature selection in OVM • Deliver RT-JVM components (w/ Purdue) • Wash Univ: Jiazzi’ed event service in Boeing OEP’s Java-based ORB
Technology Transition/Transfer • Software releases & users described earlier: OVM, BBN OEP, Boeing OEP? • Sun JSR-121: “pseudo-task” isolation • Highly relevant to real-time & robustness • Potential alternate base for RT-Java • A natural resource boundary • OS abstractions, GC mechanisms • Long line of OS/lang. research at Utah • Utah has leading role in Expert Group • Will be in JDK 1.5 (3Q02) • Just first stage: control;next: sharing, resource management
Program Issues • none
Utah Alchemy ProjectDARPA PCES Program www.cs.utah.edu/flux/alchemy