Towards preserving correctness in self-managed software systems
WOSS '04 Proceedings of the 1st ACM SIGSOFT workshop on Self-managed systems
An analysis and visualization for revealing object sharing
eclipse '05 Proceedings of the 2005 OOPSLA workshop on Eclipse technology eXchange
A dynamic analysis for revealing object ownership and sharing
Proceedings of the 2006 international workshop on Dynamic systems analysis
Comparing universes and existential ownership types
International Workshop on Aliasing, Confinement and Ownership in Object-Oriented Programming
On the Observable Behaviour of Composite Components
Electronic Notes in Theoretical Computer Science (ENTCS)
ArchC#: a new architecture description language for distributed systems
FSEN'07 Proceedings of the 2007 international conference on Fundamentals of software engineering
Software of the future is the future of software?
TGC'06 Proceedings of the 2nd international conference on Trustworthy global computing
A new approach for component's port modeling in software architecture
Journal of Systems and Software
Proceedings of the ACM international conference companion on Object oriented programming systems languages and applications companion
Separating ownership topology and encapsulation with generic universe types
ACM Transactions on Programming Languages and Systems (TOPLAS)
A language to bridge the gap between component-based design and implementation
Computer Languages, Systems and Structures
Hi-index | 0.00 |
Software architecture describes the high-level structure of a software system, and can be used for design, analysis, and software evolution tasks. However, existing tools decouple architecture from implementation, allowing inconsistencies to accumulate as a software system evolves. Because of the potential for inconsistency, engineers evolving a program cannot fully trust the architecture to accurately describe the properties or structure of the implementation. This dissertation explores a new approach: integrating architectural descriptions into an implementation language, and using a type system to ensure that the architectural structure is consistent with the code. The approach is embodied in the ArchJava language, which extends Java with features that document the software architecture and data sharing within a system. ArchJava's type system enforces communication integrity, the property that implementation components communicate only along connections declared in the architecture. ArchJava is flexible enough to describe architectures that may change at run time, and it supports many of the same coding styles and idioms that programmers use in Java. Several case studies applying ArchJava to existing programs of significant size provide preliminary evidence that ArchJava is practical and can aid software evolution tasks.