270 likes | 355 Views
Advanced OOSA State of the Art on Software Architecture Declarative Meta Programming. Session 1: Introduction Nantes, EMOOSE 2000–2001 Dr. Kim Mens, PROG, VUB. Course overview. Introduction Software Architecture Declarative Meta Programming Software Classification
E N D
Advanced OOSAState of the Art on Software Architecture Declarative Meta Programming Session 1: Introduction Nantes, EMOOSE 2000–2001 Dr. Kim Mens, PROG, VUB
Course overview • Introduction • Software Architecture • Declarative Meta Programming • Software Classification • Lightweight Architectural Tools • Automated Architectural Conformance Checking • An Architecture-driven Software Development Tool • Assignments • Introduction • Software Architecture • Declarative Meta Programming • Software Classification • Lightweight Architectural Tools • Automated Architectural Conformance Checking • An Architecture-driven Software Development Tool • Assignments State of the Art on Software Architecture — Declarative Meta Programming
Course overview • Introduction • Software Architecture • Declarative Meta Programming • Software Classification • Lightweight Architectural Tools • Automated Architectural Conformance Checking • An Architecture-driven Software Development Tool • Assignments State of the Art on Software Architecture — Declarative Meta Programming
Architecture Suppose I want to understand the “structure” of something. Just what exactly does this mean? It means, of course, that I want to make a simple picture of it, which lets me grasp it as a whole. And it means, too, that as far as possible, I want to paint this simple picture out of as few elements as possible. The fewer elements there are, the richer the relationships between them, and the more of the picture lies in the “structure” of these relationships. Christopher Alexander, 1979 State of the Art on Software Architecture — Declarative Meta Programming
Software architecture • serves as a communication element between different members of a software project • provides a simple mental picture that allows software engineers to quickly grasp the global structure • describes the overall structure of a software system, abstracting away from the implementation details • facilitates the understanding of software systems • improves • software maintainability, adaptability, reusability, ... State of the Art on Software Architecture — Declarative Meta Programming
Inputs Working Memory Knowledge Base State Data Data Updates Facts and Rules Outputs Selected Rule Selected Data Rule Interpreter Clause Selector A software architecture The architecture of a rule-based interpreter State of the Art on Software Architecture — Declarative Meta Programming
[Software architecture] • L. Bass, P. Clements & R. Kazman Software Architecture in Practice Addison Wesley Longman, 1998 • M. Shaw and D. Garlan Software Architecture — Perspectives on an Emerging Discipline Prentice Hall, 1996 • Special Issue on Software Architecture Transactions on Software Engineering, vol. 21, April 1995 IEEE Press, 1995 • Course “Techniques of Software Architecture” by Patrick Steyaert, Vrije Universiteit Brussel State of the Art on Software Architecture — Declarative Meta Programming
[Software architecture] • K. Walden Seamless Object-Oriented Software Architecture; Analysis And Design Of Reliable Systems Prentice Hall • C. Hofmeister Applied Software Architecture Addison Wesley Longman • D. C. Schmidt Pattern-Oriented Software Architecture John Wiley & Sons Inc • J. Bosch Design And Use Of Software Architectures: Adopting and Evolving A Product-Line Approach Addison Wesley Longman State of the Art on Software Architecture — Declarative Meta Programming
Course overview • Introduction • Software Architecture • Declarative Meta Programming • Software Classification • Lightweight Architectural Tools • Automated Architectural Conformance Checking • An Architecture-driven Software Development Tool • Assignments State of the Art on Software Architecture — Declarative Meta Programming
Declarative meta programming (DMP) • Use declarative programming language at meta level to manipulate and reason about software artifacts in some (object-oriented) base language • Research at PROG: • DMP as an emerging technique for building advanced SE tools • architectural conformance checking • code generation and aspect-oriented programming • synchronising implementation and design • source to source optimisations • In particular, tools that support co-evolution of the implementation and earlier life-cycle phases • This course: DMP as a technique to build advanced software architecture tools State of the Art on Software Architecture — Declarative Meta Programming
Advanced software architecture tools • Conformance checking, synchronization & co-evolution • Extracting, reverse engineering & source-code mining • Architecture-driven software development & forward engineering • Architecture-based source-code analysis • … State of the Art on Software Architecture — Declarative Meta Programming
[Declarative meta programming] • Roel Wuyts Declarative Reasoning about the Structure of Object-Oriented Systems. In Proceedings of TOOLS USA 1998, pages 112-124. IEEE Computer Society Press, 1998 • Theo D'Hondt, Kris De Volder, Kim Mens & Roel Wuyts Co-evolution of Object-Oriented Software Design and Implementation. In Proceedings of SACT 2000. Kluwer Academic Publishers, 2000 • Roel Wuyts A Logic Meta-Programming Approach to Support the Co-Evolution of Object-Oriented Design and Implementation. (Tentative title) PhD thesis, Dept. of Computer Science, VUB, Belgium. January 2001 State of the Art on Software Architecture — Declarative Meta Programming
Course overview • Introduction • Software Architecture • Declarative Meta Programming • Software Classification • Lightweight Architectural Tools • Automated Architectural Conformance Checking • An Architecture-driven Software Development Tool • Assignments State of the Art on Software Architecture — Declarative Meta Programming
Software classification • Is a group of software artefacts that should be considered as a whole • one artefact may belong to different classifications • one classification contains multiple artefacts (possibly of different types) • Software classifications as high-level source-code abstractions • Virtual software classifications are declaratively described software classifications • more intuitive • more intentional • more concise State of the Art on Software Architecture — Declarative Meta Programming
[Software classification] • Ph.D. Thesis & Presentation • Koen De Hondt. A novel approach to architectural recovery in evolving object-oriented systems. VUB, 1998. • The Classification browser web page • ECOOP’2000 workshop on “Objects and classification: a natural convergence” • Koen De Hondt & Patrick Steyaert. Exploiting classification for software evolution. • Kim Mens & Tom Mens. Codifying High-Level software Abstractions as virtual classifications. • Tom Tourwé & Kris De Volder. Using software classifications to drive code generation. State of the Art on Software Architecture — Declarative Meta Programming
Course overview • Introduction • Software Architecture • Declarative Meta Programming • Software Classification • Lightweight Architectural Tools • Automated Architectural Conformance Checking • An Architecture-driven Software Development Tool • Assignments State of the Art on Software Architecture — Declarative Meta Programming
Lightweight architectural tools • Gail Murphy performed some research on “lightweight” architectural tools to • extract high-level information from source code • check conformance of these high-level extracted source-code models to desired models • support reengineering by performing queries simultaneously about existing and desired source structure • Lexicalapproach based on regular expressions • describe patterns of interest in the source code • describe mapping of source-code model to high-level model • very efficient (no parsing required) State of the Art on Software Architecture — Declarative Meta Programming
[Lightweight architectural tools] • Murphy, Notkin & Sullivan. Software Reflexion Models: Bridging the Gap Between Source and High-Level Models. In Proceedings of the FSE’95 Symposium, pp. 18-28. ACM Press, 1995. • Murphy & Notkin. Reengineering with Reflexion Models: A Case Study. In IEEE Computer 30, 8, pp. 29-36, 1997. • Reflexion Model tool: http://www.cs.ubc.ca/~murphy/software/rmtool/index.html • Murphy & Notkin. Lightweight Lexical Source Model Extraction.ACM Transactions on Software Engineering and Methodology, vol. 5, no. 3, July 1996, pp. 262-292. • Lightweight Source Model Extraction tool: http://www.cs.ubc.ca/~murphy/software/lsme/index.html • Baniassad & Murphy. Conceptual Module Querying for Software Reengineering. In Proceedings of the 20th International Conference on Software Engineering, pp. 64-73. IEEE, 1998. State of the Art on Software Architecture — Declarative Meta Programming
Course overview • Introduction • Software Architecture • Declarative Meta Programming • Software Classification • Lightweight Architectural Tools • Automated Architectural Conformance Checking • An Architecture-driven Software Development Tool • Assignments State of the Art on Software Architecture — Declarative Meta Programming
Automated architectural conformance checking • Kim Mens’ research is similar to Gail Murphy’s • Conformance checking of source code to architectural models • Approach based on declarative meta programming • logic facts to describe architecture descriptions • logic rules to declare a conformance mapping of architectural entities to source-code artifacts • very expressive (full power of DMP) • Virtual software classifications used as intermediary abstractions to define the conformance mapping State of the Art on Software Architecture — Declarative Meta Programming
[Automated architectural conformance checking] • Kim Mens Automating Architectural Conformance Checking by means of Logic Meta Programming PhD thesis, Dept. of Computer Science, VUB, Belgium October 2000 • Kim Mens, Roel Wuyts and Theo D’Hondt Declaratively Codifying Software Architectures Using Virtual Software Classifications In Proceedings of TOOLS Europe 1999, pages 33-45 IEEE Computer Society Press, 1999 State of the Art on Software Architecture — Declarative Meta Programming
Course overview • Introduction • Software Architecture • Declarative Meta Programming • Software Classification • Lightweight Architectural Tools • Automated Architectural Conformance Checking • An Architecture-driven Software Development Tool • Assignments State of the Art on Software Architecture — Declarative Meta Programming
Towards an architecture-driven software development tool • What should an “industrial-strength” tool for architecture-driven software development look like? • Which activities should it support? • How can declarative meta programming be used to implement such tool? • Which tools have already been implemented? • How can they be combined and integrated in an architecture-driven software development environment? State of the Art on Software Architecture — Declarative Meta Programming
[Towards an architecture-driven software development tool] • Kim Mens Automating Architectural Conformance Checking by means of Logic Meta Programming, Session 8.3 PhD thesis, Dept. of Computer Science, VUB, Belgium October 2000 State of the Art on Software Architecture — Declarative Meta Programming
Course overview • Introduction • Software Architecture • Declarative Meta Programming • Software Classification • Lightweight Architectural Tools • Automated Architectural Conformance Checking • An Architecture-driven Software Development Tool • Assignments State of the Art on Software Architecture — Declarative Meta Programming
Assignments • Task: write a (10-page) technical report on • A comparison of architectural conformance checking approaches • Tool support for object-oriented patterns • Features of an ideal architectural conformance checking tool • Features of an ideal architectural reverse-engineering tool • Alternative: prepare a (30-slide) presentation on some aspect of software architecture of your choice • Possible thesis subjects at PROG State of the Art on Software Architecture — Declarative Meta Programming
Course overview • Introduction • Software Architecture • Declarative Meta Programming • Software Classification • Lightweight Architectural Tools • Automated Architectural Conformance Checking • An Architecture-driven Software Development Tool • Assignments • Software Architecture State of the Art on Software Architecture — Declarative Meta Programming