The document describes the Adaptive Object-Model architecture style. It allows non-technical domain experts to change an application's object model by modifying metadata that describes the domain model, rather than requiring code changes. This separates what changes (business rules and domain knowledge) from what doesn't (core application logic). The adaptive object model stores the domain model configuration as metadata that can be changed at runtime to quickly adapt the application to new business requirements without code changes or redeployments.
User Experience for Lean Startups
Saturday, May 19, 2012
Atomic Object, Grand Rapids MI
Instructor: Lane Halley
This workshop contains four topics:
- Lean UX Basics
- Customer Development Interviews &
Generative Research
- Developing product and interface ideas
- Quantitative and Qualitative Evaluation
http://luxr.co/programs/workshops/
http://ux4leanstartupmay19.eventbrite.com/
The document provides an overview of a presentation on user experience for lean startups. The presentation covers lean UX fundamentals, getting to know customers through interviews, brainstorming product ideas and uses, measuring success through metrics and analytics, and living the lean UX life through its 10 principles. The presentation aims to help attendees understand lean UX practices and apply them to developing their products and measuring customer needs.
User Experience for Lean Startups
Saturday, May 23, 2012
Coport, Newport Beach CA
Instructor: Lane Halley
This workshop contains four topics:
- Lean UX Basics
- Customer Development Interviews &
Generative Research
- Developing product and interface ideas
- Quantitative and Qualitative Evaluation
http://luxr.co/programs/workshops/
http://ux4leanstartupsmay23.eventbrite.com/
The portfolio then shows some of Adam's design projects, including redesigning an angle grinder to be safer and more adjustable, and conceptualizing a juicer that simplifies the juicing and drinking process into a single product to encourage healthier habits. His juicer
Kissan Unnati Kendra (KUK) is a new format of rural business hubs that aims to develop villages as productive units. KUKs will serve as milk procurement centers and rural retail outlets selling agriculture inputs, livestock inputs, consumer goods, and financial/insurance products. This will provide opportunities for selling branded products and developing private labels. By converting existing milk collection centers into KUKs and adding rural retail operations, it can boost revenues and ensure long-term sustainability for dairy businesses and rural communities.
Pragmatic Not Dogmatic TDD Agile2012 by Joseph Yoder and Rebecca Wirfs-BrockJoseph Yoder
This presentation challenges the "norm" for TDD. Testing should be an integral part of your daily programming practice. But you don’t always need to derive your code via many test-code-revise-retest cycles to be test-driven. Some find it more natural to outline a related set of tests first, and use those test scenarios to guide them as they write code. Once they’ve completed a “good enough” implementation that supports the test scenarios, they then write those tests and incrementally fix any bugs as they go. As long as you don’t write hundreds of lines of code without any testing, there isn’t a single best way to be Test Driven. There’s a lot to becoming proficient at TDD. Developing automated test suites, refactoring and reworking tests to eliminate duplication, and testing for exceptional conditions, are just a few. Additionally, acceptance tests, smoke tests, integration, performance and load tests support incremental development as well. If all this testing sounds like too much work, well…let’s be practical. Testing shouldn’t be done just for testing’s sake. Instead, the tests you write should give you leverage to confidently change and evolve your code base and validate the requirements of the system. That’s why it is important to know what to test, what not to test, and when to stop testing.
User Experience for Lean Startups
Saturday, May 19, 2012
Atomic Object, Grand Rapids MI
Instructor: Lane Halley
This workshop contains four topics:
- Lean UX Basics
- Customer Development Interviews &
Generative Research
- Developing product and interface ideas
- Quantitative and Qualitative Evaluation
http://luxr.co/programs/workshops/
http://ux4leanstartupmay19.eventbrite.com/
The document provides an overview of a presentation on user experience for lean startups. The presentation covers lean UX fundamentals, getting to know customers through interviews, brainstorming product ideas and uses, measuring success through metrics and analytics, and living the lean UX life through its 10 principles. The presentation aims to help attendees understand lean UX practices and apply them to developing their products and measuring customer needs.
User Experience for Lean Startups
Saturday, May 23, 2012
Coport, Newport Beach CA
Instructor: Lane Halley
This workshop contains four topics:
- Lean UX Basics
- Customer Development Interviews &
Generative Research
- Developing product and interface ideas
- Quantitative and Qualitative Evaluation
http://luxr.co/programs/workshops/
http://ux4leanstartupsmay23.eventbrite.com/
The portfolio then shows some of Adam's design projects, including redesigning an angle grinder to be safer and more adjustable, and conceptualizing a juicer that simplifies the juicing and drinking process into a single product to encourage healthier habits. His juicer
Kissan Unnati Kendra (KUK) is a new format of rural business hubs that aims to develop villages as productive units. KUKs will serve as milk procurement centers and rural retail outlets selling agriculture inputs, livestock inputs, consumer goods, and financial/insurance products. This will provide opportunities for selling branded products and developing private labels. By converting existing milk collection centers into KUKs and adding rural retail operations, it can boost revenues and ensure long-term sustainability for dairy businesses and rural communities.
Pragmatic Not Dogmatic TDD Agile2012 by Joseph Yoder and Rebecca Wirfs-BrockJoseph Yoder
This presentation challenges the "norm" for TDD. Testing should be an integral part of your daily programming practice. But you don’t always need to derive your code via many test-code-revise-retest cycles to be test-driven. Some find it more natural to outline a related set of tests first, and use those test scenarios to guide them as they write code. Once they’ve completed a “good enough” implementation that supports the test scenarios, they then write those tests and incrementally fix any bugs as they go. As long as you don’t write hundreds of lines of code without any testing, there isn’t a single best way to be Test Driven. There’s a lot to becoming proficient at TDD. Developing automated test suites, refactoring and reworking tests to eliminate duplication, and testing for exceptional conditions, are just a few. Additionally, acceptance tests, smoke tests, integration, performance and load tests support incremental development as well. If all this testing sounds like too much work, well…let’s be practical. Testing shouldn’t be done just for testing’s sake. Instead, the tests you write should give you leverage to confidently change and evolve your code base and validate the requirements of the system. That’s why it is important to know what to test, what not to test, and when to stop testing.
Purdue University's campus features many buildings designed with classical Greco-Roman architectural styles, including entryways inspired by Grecian temples, decorative tiles depicting chemistry symbols in labs, and fountains resembling those from Rome. The Frederick Hall of Administration most closely resembles the Parthenon with striking similarities to the famous Greek structure.
Being a Successful User-Centred Product ManagerAndrew Mayfield
This workshop is about building an effective and nimble user centred product team building great products for a global audience. It’s about deciding what a Minimum Viable Product really is and [the hard part:] what to do once you’ve got one. I’ll go behind the scenes at Optimal Workshop to discuss our design and development process, how we handle customer support and how the two are intertwined for the good of our customers.
Este documento resume la investigación sobre el comportamiento no verbal en la comunicación humana. Explora cómo factores como la apariencia, gestos, movimientos, voz y espacio personal influyen en la comunicación y transmisión de mensajes e ideas. Además, examina cómo estos comportamientos no verbales pueden ser tanto innatos como aprendidos culturalmente y cómo juegan un papel importante en la comprensión, influencia y éxito de la interacción humana.
1. desarrollo histórico de la comunicación como cienciaDiana de Silan
El documento resume cuatro patrones históricos de pensamiento sobre la comunicación: 1) los sofistas enfatizaron el poder de la palabra aunque reconocieron su imprecisión, 2) la tradición aristotélica estudió la retórica y dialéctica para persuadir, 3) el cristianismo subordinó escritos paganos a las Escrituras, 4) los oradores en EEUU se enfocaron en movimientos vocales y corporales. También describe el desarrollo de la disciplina de la comunicación en el siglo XX y corrientes de investig
El documento describe la organización y estructura de los principales medios de comunicación masiva como libros, periódicos, películas, radio y televisión. Luego analiza las investigaciones sobre los efectos de estos medios en los individuos, incluyendo la exposición a la violencia y el sexo, la difusión de noticias, la asimilación de roles sociales, y los usos y gratificaciones que las personas obtienen de los medios de comunicación.
El documento describe varios conceptos clave relacionados con el lenguaje y la comunicación. Explica que el lenguaje es un sistema organizado que se adquiere siguiendo reglas y que incluye estructuras profundas de significado. También cubre temas como símbolos, pensamiento, percepción, comprensión interpretativa, construcción de oraciones, conversación, comunicación estratégica y aptitud lingüística.
The document discusses and compares five methods for quality evaluation and validation: benchmarking, benchlearning, self-assessment, peer-review, and qualitative weighting and summation. Each method is defined and its process, advantages, and disadvantages are outlined. Benchmarking involves comparing an organization's performance to industry leaders, benchlearning focuses on integrating best practices, and self-assessment and peer-review are internal and external evaluations against set criteria. Qualitative weighting and summation is an alternative evaluation method that rates criteria qualitatively rather than numerically.
Este documento trata sobre la comunicación persuasiva. Explica que la comunicación persuasiva tiene la intención consciente de cambiar la conducta de otros mediante la transmisión de mensajes. Define la persuasión como un acto para modificar el pensamiento y acción de las personas manipulando sus motivos. También describe algunas variables que afectan el proceso de persuasión como la credibilidad de la fuente, similitud entre la fuente y el receptor, y estrategias de mensajes efectivos.
It was back in ‘97 when Brian Foote and I first opined that: while much attention had been focused on high-level software architectural patterns, what is, in effect, the de-facto standard software architecture had seldom been discussed: the Big Ball of Mud. A Big Ball of Mud is haphazardly structured, sprawling, sloppy, duct-tape and bailing wire, spaghetti code jungle. We’ve all seen them. These systems show unmistakable signs of unregulated growth, and repeated, expedient repair. Information is shared promiscuously among distant elements of the system, often to the point where nearly all the important information becomes global or duplicated. The overall structure of the system may never have been well defined. If it was, it may have eroded beyond recognition. Programmers with a shred of architectural sensibility shun these quagmires. Only those who are unconcerned about architecture, and, perhaps, are comfortable with the inertia of the day-to-day chore of patching the holes in these failing dikes, are content to work on such systems. Somewhat to our astonishment, since our original statement, no one has ever undertaken to dispute this premise. Still, this approach endures and thrives. Why is this architecture so popular? Is it as bad as it seems, or might it serve as a way-station on the road to more enduring, elegant artifacts? What forces drive good programmers to build ugly systems? Can we avoid this? Should we? How can we make such systems better?
This keynote will examine the paradoxes that underlie Big Balls of Mud, what causes them, and why they are so prominent. What Agile Practices help us avoid or cope with mud? Does Agile practices such as TDD really help minimize mud? What are we doing RIGHT? What Agile Practices contribute to the problem? Encourage mud? Is Mud really the best that Agile can do? Is Agility’s utilitarian focus on process rather than design its secret weapon, or its Achilles heel?
The document lists the author "MrB-MMX" 20 times, indicating they made 20 separate posts or contributions. It also lists "notsogoodphotography" 12 times, showing they made 12 posts or contributions. The remaining lines list other single authors such as "lecates", showing this is a record of multiple contributors to a discussion.
The document discusses agile development principles and practices, and how refactoring code supports adapting systems to changes. It covers how agile values individuals, collaboration, and responding to change over rigid processes. Refactoring is encouraged in agile to allow requirements and code to evolve safely. Testing is important for validating changes from refactoring. Examples of refactorings like extract method are provided. The document also discusses using refactoring and design patterns to make systems more adaptable to changing requirements.
El documento trata sobre conceptos clave relacionados con el cambio social y la comunicación. Define cambio social como las alteraciones en la estructura y funciones de un sistema, e innovación como una nueva idea, práctica u objeto. Explica paradigmas, modernización, difusión de innovaciones a través de líderes de opinión y canales de comunicación, y las consecuencias de las innovaciones. También aborda la brecha informativa, la era informática, la teoría de la dependencia y el imperialismo de los medios.
Este documento describe el desarrollo de las tecnologías de comunicación a través de la historia, desde los medios tradicionales hasta las nuevas tecnologías como los satélites, celulares, microondas y cable coaxial. También explora cómo estas tecnologías han afectado a los individuos, grupos y sociedad, y menciona tendencias emergentes como el podcasting.
The document discusses adaptive object-models, which are architectures that can dynamically adapt to new user requirements by storing descriptive metadata about business rules that are interpreted at runtime. Adaptive object-models represent classes, attributes, relationships, and behavior as metadata based on instances rather than classes, allowing users to change the metadata to reflect domain changes. The document outlines key architectural elements like type objects, properties, and strategies/rule objects, and provides an example of using adaptive object-models in the medical domain to allow flexible representation of observations.
What are some key topics and concepts that candidates are commonly expected t...DivyanshWsCube
When candidates are asked Object-Oriented Programming (OOP) interview questions, they are typically expected to cover a range of key topics and concepts. Here's an in-depth overview of these important areas.
Purdue University's campus features many buildings designed with classical Greco-Roman architectural styles, including entryways inspired by Grecian temples, decorative tiles depicting chemistry symbols in labs, and fountains resembling those from Rome. The Frederick Hall of Administration most closely resembles the Parthenon with striking similarities to the famous Greek structure.
Being a Successful User-Centred Product ManagerAndrew Mayfield
This workshop is about building an effective and nimble user centred product team building great products for a global audience. It’s about deciding what a Minimum Viable Product really is and [the hard part:] what to do once you’ve got one. I’ll go behind the scenes at Optimal Workshop to discuss our design and development process, how we handle customer support and how the two are intertwined for the good of our customers.
Este documento resume la investigación sobre el comportamiento no verbal en la comunicación humana. Explora cómo factores como la apariencia, gestos, movimientos, voz y espacio personal influyen en la comunicación y transmisión de mensajes e ideas. Además, examina cómo estos comportamientos no verbales pueden ser tanto innatos como aprendidos culturalmente y cómo juegan un papel importante en la comprensión, influencia y éxito de la interacción humana.
1. desarrollo histórico de la comunicación como cienciaDiana de Silan
El documento resume cuatro patrones históricos de pensamiento sobre la comunicación: 1) los sofistas enfatizaron el poder de la palabra aunque reconocieron su imprecisión, 2) la tradición aristotélica estudió la retórica y dialéctica para persuadir, 3) el cristianismo subordinó escritos paganos a las Escrituras, 4) los oradores en EEUU se enfocaron en movimientos vocales y corporales. También describe el desarrollo de la disciplina de la comunicación en el siglo XX y corrientes de investig
El documento describe la organización y estructura de los principales medios de comunicación masiva como libros, periódicos, películas, radio y televisión. Luego analiza las investigaciones sobre los efectos de estos medios en los individuos, incluyendo la exposición a la violencia y el sexo, la difusión de noticias, la asimilación de roles sociales, y los usos y gratificaciones que las personas obtienen de los medios de comunicación.
El documento describe varios conceptos clave relacionados con el lenguaje y la comunicación. Explica que el lenguaje es un sistema organizado que se adquiere siguiendo reglas y que incluye estructuras profundas de significado. También cubre temas como símbolos, pensamiento, percepción, comprensión interpretativa, construcción de oraciones, conversación, comunicación estratégica y aptitud lingüística.
The document discusses and compares five methods for quality evaluation and validation: benchmarking, benchlearning, self-assessment, peer-review, and qualitative weighting and summation. Each method is defined and its process, advantages, and disadvantages are outlined. Benchmarking involves comparing an organization's performance to industry leaders, benchlearning focuses on integrating best practices, and self-assessment and peer-review are internal and external evaluations against set criteria. Qualitative weighting and summation is an alternative evaluation method that rates criteria qualitatively rather than numerically.
Este documento trata sobre la comunicación persuasiva. Explica que la comunicación persuasiva tiene la intención consciente de cambiar la conducta de otros mediante la transmisión de mensajes. Define la persuasión como un acto para modificar el pensamiento y acción de las personas manipulando sus motivos. También describe algunas variables que afectan el proceso de persuasión como la credibilidad de la fuente, similitud entre la fuente y el receptor, y estrategias de mensajes efectivos.
It was back in ‘97 when Brian Foote and I first opined that: while much attention had been focused on high-level software architectural patterns, what is, in effect, the de-facto standard software architecture had seldom been discussed: the Big Ball of Mud. A Big Ball of Mud is haphazardly structured, sprawling, sloppy, duct-tape and bailing wire, spaghetti code jungle. We’ve all seen them. These systems show unmistakable signs of unregulated growth, and repeated, expedient repair. Information is shared promiscuously among distant elements of the system, often to the point where nearly all the important information becomes global or duplicated. The overall structure of the system may never have been well defined. If it was, it may have eroded beyond recognition. Programmers with a shred of architectural sensibility shun these quagmires. Only those who are unconcerned about architecture, and, perhaps, are comfortable with the inertia of the day-to-day chore of patching the holes in these failing dikes, are content to work on such systems. Somewhat to our astonishment, since our original statement, no one has ever undertaken to dispute this premise. Still, this approach endures and thrives. Why is this architecture so popular? Is it as bad as it seems, or might it serve as a way-station on the road to more enduring, elegant artifacts? What forces drive good programmers to build ugly systems? Can we avoid this? Should we? How can we make such systems better?
This keynote will examine the paradoxes that underlie Big Balls of Mud, what causes them, and why they are so prominent. What Agile Practices help us avoid or cope with mud? Does Agile practices such as TDD really help minimize mud? What are we doing RIGHT? What Agile Practices contribute to the problem? Encourage mud? Is Mud really the best that Agile can do? Is Agility’s utilitarian focus on process rather than design its secret weapon, or its Achilles heel?
The document lists the author "MrB-MMX" 20 times, indicating they made 20 separate posts or contributions. It also lists "notsogoodphotography" 12 times, showing they made 12 posts or contributions. The remaining lines list other single authors such as "lecates", showing this is a record of multiple contributors to a discussion.
The document discusses agile development principles and practices, and how refactoring code supports adapting systems to changes. It covers how agile values individuals, collaboration, and responding to change over rigid processes. Refactoring is encouraged in agile to allow requirements and code to evolve safely. Testing is important for validating changes from refactoring. Examples of refactorings like extract method are provided. The document also discusses using refactoring and design patterns to make systems more adaptable to changing requirements.
El documento trata sobre conceptos clave relacionados con el cambio social y la comunicación. Define cambio social como las alteraciones en la estructura y funciones de un sistema, e innovación como una nueva idea, práctica u objeto. Explica paradigmas, modernización, difusión de innovaciones a través de líderes de opinión y canales de comunicación, y las consecuencias de las innovaciones. También aborda la brecha informativa, la era informática, la teoría de la dependencia y el imperialismo de los medios.
Este documento describe el desarrollo de las tecnologías de comunicación a través de la historia, desde los medios tradicionales hasta las nuevas tecnologías como los satélites, celulares, microondas y cable coaxial. También explora cómo estas tecnologías han afectado a los individuos, grupos y sociedad, y menciona tendencias emergentes como el podcasting.
The document discusses adaptive object-models, which are architectures that can dynamically adapt to new user requirements by storing descriptive metadata about business rules that are interpreted at runtime. Adaptive object-models represent classes, attributes, relationships, and behavior as metadata based on instances rather than classes, allowing users to change the metadata to reflect domain changes. The document outlines key architectural elements like type objects, properties, and strategies/rule objects, and provides an example of using adaptive object-models in the medical domain to allow flexible representation of observations.
What are some key topics and concepts that candidates are commonly expected t...DivyanshWsCube
When candidates are asked Object-Oriented Programming (OOP) interview questions, they are typically expected to cover a range of key topics and concepts. Here's an in-depth overview of these important areas.
Jarrar: Stepwise Methodologies for Developing OntologiesMustafa Jarrar
This document discusses methodologies for developing ontologies. It outlines common phases in ontology development including identifying purpose and scope, building the ontology through capturing concepts and relationships and formalizing the ontology, integrating existing ontologies, evaluating the ontology, and documenting it. Key aspects of each phase are described, such as determining the domain, intended uses, relevant concepts and properties, and relationships between concepts. The document emphasizes that the methodology should be tailored to each ontology's unique domain and purpose.
Object-oriented programming (OOP) models real-world objects like their attributes and behaviors, grouping similar objects into classes. The four main principles of OOP are encapsulation, abstraction, inheritance and polymorphism. OOP aims to reuse code through classes, make debugging and testing easier, and better model real-world problems compared to structured/functional programming.
object oriented programming(syed munib ali 11b-023-bs)munibali55
The document discusses object-oriented programming (OOP) by defining its key concepts like class, object, inheritance, encapsulation and polymorphism. It explains the advantages of OOP over traditional procedural programming in building complex software through reuse, maintenance and extensibility. Examples are provided to illustrate OOP concepts like defining classes for entities like humans and mobiles, creating objects, inheriting properties and using encapsulation.
This paper is part of a study focusing on the terminological and socio-organizational analysis of a corpus of 18 national and international standards, written in English, in the domains of business continuity activity management and risk management. The aim is to determine whether lobbying by certain countries seeking to impose their own national standards is a decisive element in standardization. First, we present the building of a new tool, called KONTRAST, designed to exploit the terminological variants in a non-stabilized terminological domain. Then we describe the workflow to build an RDF/SKOS/OWL base from an XML glossary and a use case to illustrate the ability of KONTRAST to detect influence networks.
This document is a lecture on modeling business processes using UML. It discusses introducing UML and the use case diagram, which shows the interactions between actors and the system. It covers the types of relationships and rules for constructing use case diagrams. The lecture is part of a course on theoretical foundations of business process modeling, with topics including process management fundamentals, modeling techniques, and formalization/documentation of processes. Object-oriented modeling methodologies and UML are presented as ways to model business processes.
The document discusses key concepts in object-oriented programming including objects, classes, encapsulation, abstraction, polymorphism, and inheritance. It provides definitions and examples of each concept. For objects, it describes how objects have an identity, state, and behavior. For classes, it explains that a class is a blueprint that defines common properties and behaviors for a collection of objects.
The document discusses object-oriented approaches to software development. It covers the history of object-oriented programming from the 1950s to modern languages like C++ and Java. It then outlines key concepts of the object-oriented model like abstraction, encapsulation, and modularity. The document also discusses object-oriented programming, the software development life cycle, object-oriented analysis using tools like UML, and object-oriented design.
For four years in the late 1990's and early 2000's I worked at Stanford University’s Section on Medical Informatics doing research in Artificial Intelligence. I was one of the primary architects on the Protege project (an open-sourced knowledge representation system) and spent quite a bit of time thinking about how to represent knowledge, the logical structure of knowledge, how to define constraints on information, and how to classify algorithms (a.k.a. “problem-solving methods”).
This talk, from 2001, describes the underlying architecture formal knowledge model used in Protege, how "slot widgets" play in the system, and goes on to describe PAL: the Protege Axiom Language. It's long, and really only for knowledge representation afficionados, but it's pretty complete.
The document discusses the object oriented programming (OOP) paradigm. It describes OOP as a programming paradigm based on objects that contain both data and methods. Objects interact and work together to design applications. The document traces the history and development of OOP, including early languages like Simula and Smalltalk. It notes that OOP provides benefits like modularity and reusability. The OOP paradigm became widely used with languages in the 1990s and remains an important methodology for software development.
Design Patterns Explained: From Analysis through ImplementationTechWell
Alan Shalloway takes you beyond thinking of design patterns as “solutions to a problem in a context.” Patterns are really about handling variations in your problem domain while keeping code from becoming complex and difficult to maintain as the system evolves. Alan begins by describing the classic use of patterns. He shows how design patterns implement good coding practices and then explains key design patterns including Strategy, Bridge, Adapter, Façade, and Abstract Factory. In small group exercises, learn how to use patterns to create robust architectures that can readily adapt as new requirements arise. Lessons from these patterns are used to illustrate how to do domain analysis based on abstracting out commonalities in a problem domain and identifying particular variations that must be implemented. Leave with a working understanding of what design patterns are and a better way to build models of your application domains.
Object Oriented Programming is a programming concept that works on the principle that objects are the most important part of your program. It allows users create the objects that they want and then create methods to handle those objects. Manipulating these objects to get results is the goal of Object Oriented Programming.
Object Oriented Programming popularly known as OOP, is used in a modern programming language like Java..
he main aim of object-oriented programming is to implement real-world entities for example object, classes, abstraction, inheritance, polymorphism, etc.
Agile Architecture: Ideals, History, and a New HopeGary Pedretti
This document summarizes Gary Pedretti's presentation on Agile Architecture. It begins by defining architecture and discussing the ideals and principles of Agile Architecture, which come from the Agile Manifesto and ideas from Kent Beck, Martin Fowler, and Scott Ambler. It then discusses common misunderstandings, like thinking Agile means no planning or documentation. This has led to a backlash where some think heavy planning is needed. However, the presentation offers a new hope through tools like CRC cards and sacrificial architectures that align with Agile principles. It emphasizes communication, modeling, and organizational transformation to successfully adopt Agile Architecture.
This document contains an overview of object-oriented programming (OOP) concepts and common OOP interview questions. It begins with basic questions about OOP terms and features like classes, objects, encapsulation, inheritance and polymorphism. It then covers more advanced topics such as the differences between compile-time and runtime polymorphism, abstract classes, interfaces and access specifiers. The document provides examples in C++ and Java to illustrate various OOP concepts.
The document provides an overview of object-oriented programming (OOP) concepts and common OOP interview questions. It begins with basic questions about OOP terms and features. It then covers more advanced topics like classes, objects, encapsulation, polymorphism, inheritance, and abstraction. The document lists over 40 questions on OOP concepts and includes coding problems. It is intended to help prepare for OOP interviews.
date and time are not dimensions any more. they are mere lookup tables. for the solution to be published, you need to wait for some more time.In the mean while, go thru the impact analysis of the solution....
The document discusses a lecture on object-oriented programming principles given by Dr. Kalamullah Ramli, where he defines objects as combining properties and behaviors through encapsulation, explains how objects interact through passing messages to each other's methods, and outlines some of the key benefits of object-oriented programming such as code reuse and easier maintenance.
Fundamentals of object orientation, objects, classes, classification and object models delivered to post-graduate students of Object Oriented Software Engineering.
Best 20 SEO Techniques To Improve Website Visibility In SERPPixlogix Infotech
Boost your website's visibility with proven SEO techniques! Our latest blog dives into essential strategies to enhance your online presence, increase traffic, and rank higher on search engines. From keyword optimization to quality content creation, learn how to make your site stand out in the crowded digital landscape. Discover actionable tips and expert insights to elevate your SEO game.
Main news related to the CCS TSI 2023 (2023/1695)Jakub Marek
An English 🇬🇧 translation of a presentation to the speech I gave about the main changes brought by CCS TSI 2023 at the biggest Czech conference on Communications and signalling systems on Railways, which was held in Clarion Hotel Olomouc from 7th to 9th November 2023 (konferenceszt.cz). Attended by around 500 participants and 200 on-line followers.
The original Czech 🇨🇿 version of the presentation can be found here: https://www.slideshare.net/slideshow/hlavni-novinky-souvisejici-s-ccs-tsi-2023-2023-1695/269688092 .
The videorecording (in Czech) from the presentation is available here: https://youtu.be/WzjJWm4IyPk?si=SImb06tuXGb30BEH .
Your One-Stop Shop for Python Success: Top 10 US Python Development Providersakankshawande
Simplify your search for a reliable Python development partner! This list presents the top 10 trusted US providers offering comprehensive Python development services, ensuring your project's success from conception to completion.
Ivanti’s Patch Tuesday breakdown goes beyond patching your applications and brings you the intelligence and guidance needed to prioritize where to focus your attention first. Catch early analysis on our Ivanti blog, then join industry expert Chris Goettl for the Patch Tuesday Webinar Event. There we’ll do a deep dive into each of the bulletins and give guidance on the risks associated with the newly-identified vulnerabilities.
GraphRAG for Life Science to increase LLM accuracyTomaz Bratanic
GraphRAG for life science domain, where you retriever information from biomedical knowledge graphs using LLMs to increase the accuracy and performance of generated answers
Introduction of Cybersecurity with OSS at Code Europe 2024Hiroshi SHIBATA
I develop the Ruby programming language, RubyGems, and Bundler, which are package managers for Ruby. Today, I will introduce how to enhance the security of your application using open-source software (OSS) examples from Ruby and RubyGems.
The first topic is CVE (Common Vulnerabilities and Exposures). I have published CVEs many times. But what exactly is a CVE? I'll provide a basic understanding of CVEs and explain how to detect and handle vulnerabilities in OSS.
Next, let's discuss package managers. Package managers play a critical role in the OSS ecosystem. I'll explain how to manage library dependencies in your application.
I'll share insights into how the Ruby and RubyGems core team works to keep our ecosystem safe. By the end of this talk, you'll have a better understanding of how to safeguard your code.
Salesforce Integration for Bonterra Impact Management (fka Social Solutions A...Jeffrey Haguewood
Sidekick Solutions uses Bonterra Impact Management (fka Social Solutions Apricot) and automation solutions to integrate data for business workflows.
We believe integration and automation are essential to user experience and the promise of efficient work through technology. Automation is the critical ingredient to realizing that full vision. We develop integration products and services for Bonterra Case Management software to support the deployment of automations for a variety of use cases.
This video focuses on integration of Salesforce with Bonterra Impact Management.
Interested in deploying an integration with Salesforce for Bonterra Impact Management? Contact us at sales@sidekicksolutionsllc.com to discuss next steps.
OpenID AuthZEN Interop Read Out - AuthorizationDavid Brossard
During Identiverse 2024 and EIC 2024, members of the OpenID AuthZEN WG got together and demoed their authorization endpoints conforming to the AuthZEN API
Building Production Ready Search Pipelines with Spark and MilvusZilliz
Spark is the widely used ETL tool for processing, indexing and ingesting data to serving stack for search. Milvus is the production-ready open-source vector database. In this talk we will show how to use Spark to process unstructured data to extract vector representations, and push the vectors to Milvus vector database for search serving.
Project Management Semester Long Project - Acuityjpupo2018
Acuity is an innovative learning app designed to transform the way you engage with knowledge. Powered by AI technology, Acuity takes complex topics and distills them into concise, interactive summaries that are easy to read & understand. Whether you're exploring the depths of quantum mechanics or seeking insight into historical events, Acuity provides the key information you need without the burden of lengthy texts.
How to Get CNIC Information System with Paksim Ga.pptxdanishmna97
Pakdata Cf is a groundbreaking system designed to streamline and facilitate access to CNIC information. This innovative platform leverages advanced technology to provide users with efficient and secure access to their CNIC details.
Have you ever been confused by the myriad of choices offered by AWS for hosting a website or an API?
Lambda, Elastic Beanstalk, Lightsail, Amplify, S3 (and more!) can each host websites + APIs. But which one should we choose?
Which one is cheapest? Which one is fastest? Which one will scale to meet our needs?
Join me in this session as we dive into each AWS hosting service to determine which one is best for your scenario and explain why!
UiPath Test Automation using UiPath Test Suite series, part 6DianaGray10
Welcome to UiPath Test Automation using UiPath Test Suite series part 6. In this session, we will cover Test Automation with generative AI and Open AI.
UiPath Test Automation with generative AI and Open AI webinar offers an in-depth exploration of leveraging cutting-edge technologies for test automation within the UiPath platform. Attendees will delve into the integration of generative AI, a test automation solution, with Open AI advanced natural language processing capabilities.
Throughout the session, participants will discover how this synergy empowers testers to automate repetitive tasks, enhance testing accuracy, and expedite the software testing life cycle. Topics covered include the seamless integration process, practical use cases, and the benefits of harnessing AI-driven automation for UiPath testing initiatives. By attending this webinar, testers, and automation professionals can gain valuable insights into harnessing the power of AI to optimize their test automation workflows within the UiPath ecosystem, ultimately driving efficiency and quality in software development processes.
What will you get from this session?
1. Insights into integrating generative AI.
2. Understanding how this integration enhances test automation within the UiPath platform
3. Practical demonstrations
4. Exploration of real-world use cases illustrating the benefits of AI-driven test automation for UiPath
Topics covered:
What is generative AI
Test Automation with generative AI and Open AI.
UiPath integration with generative AI
Speaker:
Deepak Rai, Automation Practice Lead, Boundaryless Group and UiPath MVP
Monitoring and Managing Anomaly Detection on OpenShift.pdfTosin Akinosho
Monitoring and Managing Anomaly Detection on OpenShift
Overview
Dive into the world of anomaly detection on edge devices with our comprehensive hands-on tutorial. This SlideShare presentation will guide you through the entire process, from data collection and model training to edge deployment and real-time monitoring. Perfect for those looking to implement robust anomaly detection systems on resource-constrained IoT/edge devices.
Key Topics Covered
1. Introduction to Anomaly Detection
- Understand the fundamentals of anomaly detection and its importance in identifying unusual behavior or failures in systems.
2. Understanding Edge (IoT)
- Learn about edge computing and IoT, and how they enable real-time data processing and decision-making at the source.
3. What is ArgoCD?
- Discover ArgoCD, a declarative, GitOps continuous delivery tool for Kubernetes, and its role in deploying applications on edge devices.
4. Deployment Using ArgoCD for Edge Devices
- Step-by-step guide on deploying anomaly detection models on edge devices using ArgoCD.
5. Introduction to Apache Kafka and S3
- Explore Apache Kafka for real-time data streaming and Amazon S3 for scalable storage solutions.
6. Viewing Kafka Messages in the Data Lake
- Learn how to view and analyze Kafka messages stored in a data lake for better insights.
7. What is Prometheus?
- Get to know Prometheus, an open-source monitoring and alerting toolkit, and its application in monitoring edge devices.
8. Monitoring Application Metrics with Prometheus
- Detailed instructions on setting up Prometheus to monitor the performance and health of your anomaly detection system.
9. What is Camel K?
- Introduction to Camel K, a lightweight integration framework built on Apache Camel, designed for Kubernetes.
10. Configuring Camel K Integrations for Data Pipelines
- Learn how to configure Camel K for seamless data pipeline integrations in your anomaly detection workflow.
11. What is a Jupyter Notebook?
- Overview of Jupyter Notebooks, an open-source web application for creating and sharing documents with live code, equations, visualizations, and narrative text.
12. Jupyter Notebooks with Code Examples
- Hands-on examples and code snippets in Jupyter Notebooks to help you implement and test anomaly detection models.
Threats to mobile devices are more prevalent and increasing in scope and complexity. Users of mobile devices desire to take full advantage of the features
available on those devices, but many of the features provide convenience and capability but sacrifice security. This best practices guide outlines steps the users can take to better protect personal devices and information.
National Security Agency - NSA mobile device best practices
AOM OOPSLA 2009
1. 1
The Adaptive Object-Model Architecture Style – OOPSLA 2009 – October 2009, Orlando FL Copyright 2009, Joseph W. Yoder & The Refactory, Inc.
2
.melborp siht evlos ot euneva gnisimorp a si ti egnahc ot egdelwonk eht htiw elpoep eht
fo sdnah eht ni erawtfos egnahc ot ytiliba eht gnittup taht seveileb dna siht tuoba gnihtemos
od ot stnaw eH .egnahc ot drah oot llits si erawtfos skniht eoJ .stneilc rof segaugnaL cificepS
- niamoD gniyolped dna ,stnemnorivne TEN. dna avaJ eht htob ni gnikrow sedulcni krow tnecer
rehto siH .tnemnorivne TEN. eht gnisu erutcetihcra esirpretne no desab metsys tnemllifluf redro
na detcurtsnoc evah ohw srepoleved fo maet a seesrevo yltnerruc hpesoJ .stpecnoc eseht no
srepoleved srotnem dna sgnittes lairtsudni ni gnitseT dna ,gnirotcafeR ,ngiseD tcejbO ,snrettaP
ngiseD ,PX sa hcus sdohteM eligA sehcaet eH .sionillI ,anabrU ni sediser yltnerruc redoY hpesoJ
.erutcetihcra erawtfos ot hcaorppa eht ni seicallaf ynam detanimulli hcihw ,nrettap
duM fo llaB giB eht fo rohtua- oc si eH .POOCE dna ALSPOO , n o C Q ,OOAJ sa hcus secnerefnoc
ta sklat dna slairotut ynam nevig sa llew sa ,) PoLP( secnerefnoC gnimmargorP fo segaugnaL
nrettaP eht deriahc sah hpesoJ .tnempoleved erawtfos fo ytilauq eht gnivorpmi ot detacided
puorg a ,puorG edislliH ehT fo draob eht fo rahc eciv dna rebmem gnidnatsgnol a si redoY hpesoJ
.sn oitacilppa erawtfos fo sepyt ynam
no srepoleved derotnem sah eH .skrowemarF dna ,esueR ,gnirotcafeR ,smetsyS elbatpadA
,sdohteM eligA ,snrettaP ,klatllamS ,avaJ ,#C ,ngiseD dna sisylanA detneirO- tcejbO ni sezi
- laiceps hpesoJ .noitatnemelpmi dna ,ngised ,erutcetihcra erawtfos no rohtua
nrettap dna rekaeps lanoitanretni na si eoJ .tnempoleved erawtfos fo stecaf
lla fo gnirotnem dna gnitlusnoc ,noitatnemelpmi ,ngised ,erutcetihcra eraw
-t f o s n o d e s u c o f y n a p m o c a , . c n I ,y r o t c a f e R e h T f o e l p i c n i r p d n a r e d n u o f a s i
eH .tcapmi labolg htiw snoitazinagro dna seinapmoc ynam rof smetsys tsubor
depoleved sah dna ,s’0891 dim eht ni erawtfos htiw gnikrow nageb redoY hpesoJ
Short Instructor Bio
ACM 09/10.
OOPSLA'09, October 25–29, 2009, Orlando, FL, USA.
Copyright is held by the author/owner(s).
http://www.adaptiveobjectmodel.com
http://www.refactory.com
joe@refactory.com
The Refactory, Inc.
Joseph W. Yoder
their Business Models”
“Giving Users Control over
Architecture Style
Adaptive Object-Model
Object-
2. Table of Contents
Overview
Adaptive Object-Model Description
Core Architectural Elements of AOM
Some Examples of AOMs in Practice
Other Issues and Related Architectures
Advantages/Disadvantages
When to do and When not to do it
Summary
3
The Adaptive Object-Model Architecture Style – OOPSLA 2009 – October 2009, Orlando FL Copyright 2009, Joseph W. Yoder & The Refactory, Inc.
What are we doing?
Describing a “dynamic” architecture.
Not really “well-known”, known by a
few people. Has not been well
described. Becoming more popular.
Going to describe them with patterns.
Many Patterns work together to solve
the problem.
4
The Adaptive Object-Model Architecture Style – OOPSLA 2009 – October 2009, Orlando FL Copyright 2009, Joseph W. Yoder & The Refactory, Inc.
2
3. Context of the Style
Requirements change within
application’s domain.
Domain Experts know their domain best.
Business Rules are changing rapidly.
Applications have to quickly adapt to
new business requirements.
Changing the application is costly, it
generally includes code and data-storage.
There are cycles of: build-compile-release.
5
The Adaptive Object-Model Architecture Style – OOPSLA 2009 – October 2009, Orlando FL Copyright 2009, Joseph W. Yoder & The Refactory, Inc.
Forces – Shearing Layers
Who (Business Person, Analyst, Developer)
What (Business Rule, Persistence Layer,…)
When (How often, How fast)
There is a different rate of change
on the system.
Foote & Yoder - Ball of Mud PLoPD4
6
The Adaptive Object-Model Architecture Style – OOPSLA 2009 – October 2009, Orlando FL Copyright 2009, Joseph W. Yoder & The Refactory, Inc.
3
4. General Idea
Create an object design (meta-model) that
describes the domain objects which includes
attributes, relationships, and business rules as
instances rather than classes.
The domain objects are instantiated through a
description given by the user or domain expert.
Each new requirement is satisfied by creating a
new description and a new instantiation.
Separate what changes from what doesn’t.
Define Changes without Hand-Coding.
Focus on “What” Not “How”.
7
The Adaptive Object-Model Architecture Style – OOPSLA 2009 – October 2009, Orlando FL Copyright 2009, Joseph W. Yoder & The Refactory, Inc.
Adaptive Object-Model
(Active|Dynamic Object-Model)
An ADAPTIVE OBJECT-MODEL is an object model
that provides “meta” information about the domain
so that it can be changed at runtime
e m i t- nur ta sterpretni ti taht ledom tcejbo ticilpxe
roivaheb sti segnahc metsys ,ledom tcejbo eht egnahc
ADAPTIVE OBJECT-MODELS usually arise from
domain-specific frameworks
Business rules are stored as descriptive (meta)
information in ADAPTIVE OBJECT-MODELS
Sometimes called a "reflective architecture“
or a "meta-architecture ".
8
The Adaptive Object-Model Architecture Style – OOPSLA 2009 – October 2009, Orlando FL Copyright 2009, Joseph W. Yoder & The Refactory, Inc.
4
5. Adaptive Object-Models
Represents classes, attributes, relationships,
and behavior as metadata.
Business knowledge is based on instances
rather than classes.
Users change the metadata (object model)
to reflect changes in the domain.
Stores its Object-Model in a database or in
files and interprets it (can be XML/XMI).
Consequently, the object model is adaptable, when you
change it, the system changes immediately.
9
The Adaptive Object-Model Architecture Style – OOPSLA 2009 – October 2009, Orlando FL Copyright 2009, Joseph W. Yoder & The Refactory, Inc.
Introduction of Metadata and
Adaptive (Active|Dynamic)
Object-Models
"Anything you can do, I can do Meta"
Metadata: If something is going to vary in
a predictable way, store the description
of the variation in a database so that it
is easy to change….Ralph Johnson
”Meta is Beta"
Code is Data, Data is Code – Everything is Data
10
The Adaptive Object-Model Architecture Style – OOPSLA 2009 – October 2009, Orlando FL Copyright 2009, Joseph W. Yoder & The Refactory, Inc.
5
6. Architectural Elements of
Adaptive Object Models
• Metadata • Entity-Relationship
• TypeObject • Strategy/RuleObjects
• Properties • Interpreters/Builders
• Type Square • Editors/GUIs
If you want something to change quickly,
you must push it into the data.
11
The Adaptive Object-Model Architecture Style – OOPSLA 2009 – October 2009, Orlando FL Copyright 2009, Joseph W. Yoder & The Refactory, Inc.
Type-Object
PLoPD3 - Johnson and Woolf
Before After
AirplaneM odel
-sharedAttributes
Airplane +typeOperations() : <unspecified>
1 -type
*
Boeing727 Boeing747 Boe ing757 Boeing767
... Airplane
-specificAttributes
+someOperations() : <unspecified>
12
The Adaptive Object-Model Architecture Style – OOPSLA 2009 – October 2009, Orlando FL Copyright 2009, Joseph W. Yoder & The Refactory, Inc.
6
7. Properties
Before After
Property
Car
Car 0..n
-name : String = color
- color : String = Any
attributes -type : String = String
- modelNumber : String = Any
- …. -value : String = Any
Example: A Store with Catalogue Entries
Sweaters (size, color, material)
Canoes (length, material)
Video Tapes (name, rating, category)
13
The Adaptive Object-Model Architecture Style – OOPSLA 2009 – October 2009, Orlando FL Copyright 2009, Joseph W. Yoder & The Refactory, Inc.
TypeSquare
Entity 0..n type EntityType
0..n properties
properties 0..n
PropertyType
Property
0..n type -name : String
-type : Type
Example: A Store with Catalogue Entries
)…,wolley,eulb,neerg,der(=roloc ,)LX,L,M,S(=ezis( sretaewS
)taolf=htdiw ,taolf=htgnel( seonaC
14
The Adaptive Object-Model Architecture Style – OOPSLA 2009 – October 2009, Orlando FL Copyright 2009, Joseph W. Yoder & The Refactory, Inc.
7
8. Entity-Relationship
supertype legal commissioner 1..n supertype
Accountability Type 0..n Party Type
legal responsible 1..n
0..n
1..n type type 1..n
0..n 0..n
commissioner 1..n
Accountability 0..n Party
responsible 1..n
0..n
Analysis Patterns - Fowler
15
The Adaptive Object-Model Architecture Style – OOPSLA 2009 – October 2009, Orlando FL Copyright 2009, Joseph W. Yoder & The Refactory, Inc.
An AOM Example
16
The Adaptive Object-Model Architecture Style – OOPSLA 2009 – October 2009, Orlando FL Copyright 2009, Joseph W. Yoder & The Refactory, Inc.
8
9. Newborn Screening
Doctor, HealthProf.
Hospital, Lab
Blood Specimen
Mother, Infant
17
The Adaptive Object-Model Architecture Style – OOPSLA 2009 – October 2009, Orlando FL Copyright 2009, Joseph W. Yoder & The Refactory, Inc.
Newborn Screening
Infants, Mothers and Doctors...
Person
+name : String
-address : String
-phone : String
Infant Mother Doctor LabTechnician
+gestetionalAge : Number
18
The Adaptive Object-Model Architecture Style – OOPSLA 2009 – October 2009, Orlando FL Copyright 2009, Joseph W. Yoder & The Refactory, Inc.
9
10. Newborn Screening
Hospital and Lab
Organization
+name : String
-address : String
-phone : String
Hospital Lab
19
The Adaptive Object-Model Architecture Style – OOPSLA 2009 – October 2009, Orlando FL Copyright 2009, Joseph W. Yoder & The Refactory, Inc.
Newborn Screening
Putting it all together
Organization
Person
+name : String
+name : String -address : String
-address : String -phone : String
-phone : String
Infant Mother LabTechnician Doctor Hospital Lab
+gestetionalAge : Number n
n
n 1..1 n n n 1..1
20
The Adaptive Object-Model Architecture Style – OOPSLA 2009 – October 2009, Orlando FL Copyright 2009, Joseph W. Yoder & The Refactory, Inc.
10
11. Refugee
VOLAG
Sponsor
Lab Tests
Medical Evaluations
21
The Adaptive Object-Model Architecture Style – OOPSLA 2009 – October 2009, Orlando FL Copyright 2009, Joseph W. Yoder & The Refactory, Inc.
Refugee
Person Organization
-name: String -name: String
-address: String -address: String
-phone: String -phone: String
Screening *
Results Refugee * Sponsor Volag
-testDate: aDate -originatingCountry
+refugees() +refugees()
+results() +familyMembers()
*
*
22
The Adaptive Object-Model Architecture Style – OOPSLA 2009 – October 2009, Orlando FL Copyright 2009, Joseph W. Yoder & The Refactory, Inc.
11
12. Entity-Relationship: Solution
supertype legal commissioner 1..n supertype
Accountability Type 0..n Party Type
legal responsible 1..n
0..n
1..n type type 1..n
0..n 0..n
commissioner 1..n
Accountability 0..n Party
responsible 1..n
0..n
Analysis Patterns - Fowler
23
The Adaptive Object-Model Architecture Style – OOPSLA 2009 – October 2009, Orlando FL Copyright 2009, Joseph W. Yoder & The Refactory, Inc.
Party and Accountability
Example
John Smith
Sue Smith
Sue is the mother of John
24
The Adaptive Object-Model Architecture Style – OOPSLA 2009 – October 2009, Orlando FL Copyright 2009, Joseph W. Yoder & The Refactory, Inc.
12
13. Party and Accountability
(instance diagram)
anAccountabilityType anAccountability
anAccountabilityType aParty aPartyType
<PARENT> <PARENT> name <Sue> <MOTHER>
aPartyType aParty anAccountability anAccountabilityType
<INFANT> name <John> <CHILD>
25
The Adaptive Object-Model Architecture Style – OOPSLA 2009 – October 2009, Orlando FL Copyright 2009, Joseph W. Yoder & The Refactory, Inc.
Dealing with Dynamic Behavior
Making methods that implement the different
algorithm for each Type or Property could
require a large case-statement and could be
impractical to maintain.
Instances for the similar types can have
different algorithm depending upon context.
• The model has to implements a defined set of
interchangeable algorithms that customize the
behavior of the system.
26
The Adaptive Object-Model Architecture Style – OOPSLA 2009 – October 2009, Orlando FL Copyright 2009, Joseph W. Yoder & The Refactory, Inc.
13
14. Strategies/Interpreters/RuleObjects
(Behavior/Methods)
SomeStrategy Entity
* 1
-sharedAttributes : someType -specificAttribues : type
+sharedInterface() * +someOperations()
...
Strategy1 Strategy2 StragegyN
t c ej b O e l u R
*
1
1
Strategy2.1 Strategy2.2 e l u R e vit i m i r P e l u R et i s o p m o C
n o iti d n o C D N A n oit i d n o C R O n o i ti d n o C T O N
Design Patterns - GOF95
Composite Strategies Interpreter
27
The Adaptive Object-Model Architecture Style – OOPSLA 2009 – October 2009, Orlando FL Copyright 2009, Joseph W. Yoder & The Refactory, Inc.
Composite Strategies
Problem: Strategy leads to a big
class hierarchy, one class for
each kind of policy.
Solution: Make Composite
Strategies using Primitive
Operations.
=> Interpreter pattern
28
The Adaptive Object-Model Architecture Style – OOPSLA 2009 – October 2009, Orlando FL Copyright 2009, Joseph W. Yoder & The Refactory, Inc.
14
15. Adaptive Object Model
“Common Architecture”
htiw sessalC
dna setubirttA
spihsnoitaleR
roivaheB
lanoitarepO )atem( egdelwonK
29
The Adaptive Object-Model Architecture Style – OOPSLA 2009 – October 2009, Orlando FL Copyright 2009, Joseph W. Yoder & The Refactory, Inc.
Other Patterns
Composite – GOF
Interpreter – GOF
Builder – GOF
Mediator/Adaptor – GOF
Dynamic Hooks
History – Francis Anderson PLoPD4
Roles – Baumer, Riehle, Siberski, & Wulf
Fowler PLoP ‘97
RuleObject – Arsanjani PLoP2000
30
The Adaptive Object-Model Architecture Style – OOPSLA 2009 – October 2009, Orlando FL Copyright 2009, Joseph W. Yoder & The Refactory, Inc.
15
16. Interpreters / Builders
Application
Persistence
Mechanism
Database
Metadata Domain
Repository/Namespace Objects
XML Parser Interpreter/Builder
XML
31
The Adaptive Object-Model Architecture Style – OOPSLA 2009 – October 2009, Orlando FL Copyright 2009, Joseph W. Yoder & The Refactory, Inc.
Extending our Example
32
The Adaptive Object-Model Architecture Style – OOPSLA 2009 – October 2009, Orlando FL Copyright 2009, Joseph W. Yoder & The Refactory, Inc.
16
17. Medical Observation - First Model
Person * Observation
Measurement Trait
Quantity
traitValue
unit convertTo:
amount
expressOnUnit:
expressOnUnits:
PhysicalMeasure Blood
EyeColor HairColor Gender …
Height Weight FeedingType Hearing Vision
…
What happens when a new observation is required?
33
The Adaptive Object-Model Architecture Style – OOPSLA 2009 – October 2009, Orlando FL Copyright 2009, Joseph W. Yoder & The Refactory, Inc.
Observation Design
Person Observation
ObservationType
-recordedDate : Date
+address() -observedDate : Date -phenomenon : Symbol
+phone() -duration : TimePeriod
+name() +phenomenon()
Quantity
Measurement Trait
-unit : Unit
-amount : Number
+expressOnUnit(aUnit : Unit) +observationValue() +observationValue()
+expressOnUnits(unitCollection : Collection)
34
The Adaptive Object-Model Architecture Style – OOPSLA 2009 – October 2009, Orlando FL Copyright 2009, Joseph W. Yoder & The Refactory, Inc.
17
18. Observation Design
Example
Height: 3 feet
Eyes Color: Blue
Name: John Smith
Mother: Sue Smith
Father:
Address:
Phone:
35
The Adaptive Object-Model Architecture Style – OOPSLA 2009 – October 2009, Orlando FL Copyright 2009, Joseph W. Yoder & The Refactory, Inc.
Observation Design
(instance diagram)
aPerson
name <John Smith>
obsCollection
anObservationType
aMeasurement
#height
type
value
aQuantity
value <3>
unit <ft>
aTrait
type anObservationType
value <blue> #eyeColor
36
The Adaptive Object-Model Architecture Style – OOPSLA 2009 – October 2009, Orlando FL Copyright 2009, Joseph W. Yoder & The Refactory, Inc.
18
19. Composing Observations
Observations can be more complex
Cholesterol
Components: HDL, LDL
Blood Pressure
Components: Systolic, Diastolic
Vision
Components: Left Eye, Right Eye
37
The Adaptive Object-Model Architecture Style – OOPSLA 2009 – October 2009, Orlando FL Copyright 2009, Joseph W. Yoder & The Refactory, Inc.
Composite Observation Design
Person
+address()
+phone()
+name()
Observation
ObservationType
-recordedDate : Date
-phenomenon : Symbol -observedDate : Date 1..n
-duration : TimePeriod
+phenomenon()
Quantity
Measurement Trait CompositeObservation
-unit : Unit
-amount : Number -observations : Collection
+expressOnUnit(aUnit : Unit) +observationValue() +observationValue()
+expressOnUnits(unitCollection : Collection)
Composite Pattern (GOF)
38
The Adaptive Object-Model Architecture Style – OOPSLA 2009 – October 2009, Orlando FL Copyright 2009, Joseph W. Yoder & The Refactory, Inc.
19
20. Observation Design
Example
Height: 3 feet
Eyes Color: Blue
Name: John Smith
Mother: Sue Smith Blood Pressure:
Father: Systolic: 120 mmHg
Address: Diastolic: 80 mmHg
Phone:
39
The Adaptive Object-Model Architecture Style – OOPSLA 2009 – October 2009, Orlando FL Copyright 2009, Joseph W. Yoder & The Refactory, Inc.
Composite Observation Design
(instance diagram)
anObservType
<#BloodPressure>
aCompObs
aMeasurement anObserType
<120 mmHg> <#SYSTOLIC>
anotherMeasurement anObser-Type
<80 mmHg> <#DIASTOLIC>
40
The Adaptive Object-Model Architecture Style – OOPSLA 2009 – October 2009, Orlando FL Copyright 2009, Joseph W. Yoder & The Refactory, Inc.
20
21. Composite and Primitive
Observation Design
What we know about John?
aPerson
name <John Smith>
obsCollection
EyesColor: Blue Height: 3 feet BloodPressure: 120/80
Systolic: 120 mmHg
Diastolic: 80 mmHg
41
The Adaptive Object-Model Architecture Style – OOPSLA 2009 – October 2009, Orlando FL Copyright 2009, Joseph W. Yoder & The Refactory, Inc.
Validating Observations
Each Observation has its own set
of legal values.
Baby’s Weight: [0 30] pounds
HepatitisB: {positive, negative}
Left/Right Vision: {normal, abnormal}
GUI can enforce legal values
but we want business rules in domain
objects
42
The Adaptive Object-Model Architecture Style – OOPSLA 2009 – October 2009, Orlando FL Copyright 2009, Joseph W. Yoder & The Refactory, Inc.
21
22. Validating Observations Design
ObservationType
Validator
-phenomenon : Symbol
-validator : Validator
DiscreteValidator NullValidator RangedValidator
-descriptorSet : Collection -intervalSet : Collection
-validUnit : Unit
43
The Adaptive Object-Model Architecture Style – OOPSLA 2009 – October 2009, Orlando FL Copyright 2009, Joseph W. Yoder & The Refactory, Inc.
Overall Observation Design
Validator
DiscreteValidator RangedValidator NullValidator
Party descriptorSet intervalSet
validUnit
Observation
ObservationType recordedDate
type comments
Measurement Trait CompositeObservation
value value values
value value
value: value:
convertTo:
Quantity
Is everything an Observation?
How does the model specify the structure of the Composite?
What is the relationship between Trait and DiscreteValidator?
44
The Adaptive Object-Model Architecture Style – OOPSLA 2009 – October 2009, Orlando FL Copyright 2009, Joseph W. Yoder & The Refactory, Inc.
22
23. Observation Design
Validator
validatorName
ObservationType isValid: obsValue
phenomenonType
isValid: obsValue
DiscreteValidator RangedValidator NullValidator
descriptorSet intervalSet
validUnit
PrimitiveObservation CompositeObservation
Type Type Party
Observation
recordedDate
comments
isValid
Quantity
unit
CompositeObservation Primitive Observation quantity
observationValue convertTo:
DiscreteValues
Current Design
45
The Adaptive Object-Model Architecture Style – OOPSLA 2009 – October 2009, Orlando FL Copyright 2009, Joseph W. Yoder & The Refactory, Inc.
Observation Design
Validator
validatorName
ObservationType isValid: obsValue
phenomenonType
isValid: obsValue
DiscreteValidator RangedValidator NullValidator
descriptorSet intervalSet
validUnit
PrimitiveObservation CompositeObservation
Type Type Party
Observation
recordedDate
comments
isValid
Quantity
unit
CompositeObservation Primitive Observation quantity
observationValue convertTo:
Operational level DiscreteValues
Current Design
46
The Adaptive Object-Model Architecture Style – OOPSLA 2009 – October 2009, Orlando FL Copyright 2009, Joseph W. Yoder & The Refactory, Inc.
23
24. Observation Design
Validator
validatorName
ObservationType Knowledge level isValid: obsValue
phenomenonType
isValid: obsValue
DiscreteValidator RangedValidator NullValidator
descriptorSet intervalSet
validUnit
PrimitiveObservation CompositeObservation
Type Type Party
Observation
recordedDate
comments
isValid
Quantity
unit
CompositeObservation Primitive Observation quantity
observationValue convertTo:
DiscreteValues
Current Design
47
The Adaptive Object-Model Architecture Style – OOPSLA 2009 – October 2009, Orlando FL Copyright 2009, Joseph W. Yoder & The Refactory, Inc.
Observation Design
(instance diagram)
anObserv-Type
<#COMP-GAL>
aCompObs
aMeasurement anObser-Type aRangedValidator
<aQuantity> <#GAL>
anotherMeasurement anObser-Type anotherRangedValidator
<anotherQuantity> <#UDT>
48
The Adaptive Object-Model Architecture Style – OOPSLA 2009 – October 2009, Orlando FL Copyright 2009, Joseph W. Yoder & The Refactory, Inc.
24
25. Observation Design
(instance diagram)
anInfant
name aDiscreteValidator
anObservationType aRangedValidator
obsCollection
#GestationalAge
aMeasurement
type
value
aQuantity
value <36>
unit <weeks>
anObserv-Type
<#COMP-GAL>
aCompObs
aRangedValidator
aMeasurement anObser-Type
<aQuantity> <#GAL>
anotherRangedValidator
anotherMeasurement anObser-Type
<anotherQuantity> <#UDT>
49
The Adaptive Object-Model Architecture Style – OOPSLA 2009 – October 2009, Orlando FL Copyright 2009, Joseph W. Yoder & The Refactory, Inc.
Observations: TypeObject
ObservationType TypeObject
phenomenonType 1 descriptor 1..* Observation
isValid: obsValue instance recordedDate
1..* elements comments
elements 1..* isValid
Quantity
PrimitiveObservation CompositeObservation unit
Type Type value 1..* quantity
CompositeObservation Primitive Observation
observationValue convertTo:
Knowledge level DiscreteValues
dvalue 1..*
Operational level
50
The Adaptive Object-Model Architecture Style – OOPSLA 2009 – October 2009, Orlando FL Copyright 2009, Joseph W. Yoder & The Refactory, Inc.
25
26. Observations: Properties
Party
properties
1..*
1..* Observation
instance recordedDate
comments
elements 1..* isValid
Quantity
unit
value 1..* quantity
CompositeObservation Primitive Observation
observationValue convertTo:
Knowledge level
dvalue 1..* DiscreteValues
Operational level
51
The Adaptive Object-Model Architecture Style – OOPSLA 2009 – October 2009, Orlando FL Copyright 2009, Joseph W. Yoder & The Refactory, Inc.
Observations: TypeSquare
contDescr 1
ObservationType 1..* varType PartyType
phenomenonType 1 descriptor
isValid: obsValue 1 descriptor 1..*
1..* elements
Party
PrimitiveObservation CompositeObservation
Type Type properties
1..*
1..* Observation
instance recordedDate
comments
elements 1..* isValid
Quantity
unit
value 1..*
CompositeObservation Primitive Observation quantity
observationValue convertTo:
Knowledge level
Operational level dvalue 1..* DiscreteValues
52
The Adaptive Object-Model Architecture Style – OOPSLA 2009 – October 2009, Orlando FL Copyright 2009, Joseph W. Yoder & The Refactory, Inc.
26
27. Observations: Strategy
1..* type
ObservationType Validator
phenomenonType guard 1
validatorName
isValid: obsValue isValid: obsValue
1..* elements
PrimitiveObservation CompositeObservation DiscreteValidator RangedValidator NullValidator
Type Type descriptorSet intervalSet
validUnit
Knowledge level
Operational level
53
The Adaptive Object-Model Architecture Style – OOPSLA 2009 – October 2009, Orlando FL Copyright 2009, Joseph W. Yoder & The Refactory, Inc.
Medical Observations Design
1..* type contDescr 1
Entities guard 1
Validator
validatorName
ObservationType 1..* varType PartyType isValid: obsValue
phenomenonType 1 descriptor
isValid: obsValue 1 descriptor 1..*
1..* elements
Party DiscreteValidator RangedValidator NullValidator
descriptorSet intervalSet
PrimitiveObservation CompositeObservation validUnit
Type Type properties
1..*
1..* Observation
Behavior
instance recordedDate
comments
elements 1..* isValid
Quantity
unit
value 1..*
CompositeObservation Primitive Observation quantity
observationValue convertTo:
Knowledge level
Operational level dvalue 1..* DiscreteValues
Attributes
54
The Adaptive Object-Model Architecture Style – OOPSLA 2009 – October 2009, Orlando FL Copyright 2009, Joseph W. Yoder & The Refactory, Inc.
27
28. What About Roles?
Problem: How do you deal with dynamic
behavior for an object? For example, a
person can be either a mother, child, or
doctor in our system.
Solution: Create a Role Object that
strategizes the behavior. A “role” is like
a pluggable strategy.
55
The Adaptive Object-Model Architecture Style – OOPSLA 2009 – October 2009, Orlando FL Copyright 2009, Joseph W. Yoder & The Refactory, Inc.
Roles
(an example)
Person 0..n PersonRole
+baseBehavior()
ChildRole DoctorRole MotherRole
+childBehavior() +doctorBehavior() +motherBehavior()
PLoP 97 - Fowler
PLoPD4 - Baumer, Riehle, Siberski, Wulf
56
The Adaptive Object-Model Architecture Style – OOPSLA 2009 – October 2009, Orlando FL Copyright 2009, Joseph W. Yoder & The Refactory, Inc.
28
29. Roles
(Parties, Accountabilities and Properties
is the Beginning of Roles)
In our system, there are different types
of parties, relationships between them,
properties on the parties which include
different observations about the parties.
The pluggable behavior (or different
roles) is defined for a given party by the
legal relationships it can have and the
set of properties they are allowed.
57
The Adaptive Object-Model Architecture Style – OOPSLA 2009 – October 2009, Orlando FL Copyright 2009, Joseph W. Yoder & The Refactory, Inc.
Roles
(Parties, Accountabilities and Properties
is the Beginning of Roles)
Babies
Have Mothers and Doctors
Gestational Age,
Hearing and Vision,
Weight, Race, Ethnicity, DOB, ...
Mothers
Have Babies and Doctors
Hepatitus present at Birth (y/n),
Languages, Race, Ethnicity, ...
58
The Adaptive Object-Model Architecture Style – OOPSLA 2009 – October 2009, Orlando FL Copyright 2009, Joseph W. Yoder & The Refactory, Inc.
29
30. Roles
(Parties, Accountabilities and Properties
is the Beginning of Roles)
aParty aPartyType
name <Sue> <MOTHER>
anAccountabilityType anAccountabilityType
<CHILD> <DOCTOR>
aParty aPartyType
name <John> <INFANT>
anAccountabilityType anAccountabilityType
<PARENT> <DOCTOR>
59
The Adaptive Object-Model Architecture Style – OOPSLA 2009 – October 2009, Orlando FL Copyright 2009, Joseph W. Yoder & The Refactory, Inc.
Other Issues
Persistence
Consistency (versions)
Dynamic GUIs
Managing Releases
Editors (Types and Rules)
Optimizers
…
60
The Adaptive Object-Model Architecture Style – OOPSLA 2009 – October 2009, Orlando FL Copyright 2009, Joseph W. Yoder & The Refactory, Inc.
30
31. Persisting AOM
The metadata is expressed with objects,
those objects can be mapped to relational
databases as well as object-oriented
databases
There is an increasing interest on persisting
metadata as XML/XMI files
61
The Adaptive Object-Model Architecture Style – OOPSLA 2009 – October 2009, Orlando FL Copyright 2009, Joseph W. Yoder & The Refactory, Inc.
Keeping consistency (versions)
It is important keeping consistency within the
metamodel while changing instances of
TypeObject or other object associated with
them.
Example: changing the legal range of a
Validator can make existing observations
invalid.
May have to keep version of the metadata
available and apply the rules based upon the
timeframe the rule applies.
62
The Adaptive Object-Model Architecture Style – OOPSLA 2009 – October 2009, Orlando FL Copyright 2009, Joseph W. Yoder & The Refactory, Inc.
31
32. Metamodel and GUI
The metadata can simplify building user
interfaces. Special GUI components can be
developed for using the metadata.
Example: The Observation model includes
widgets that display list of values from the
DiscreteValidators and also EntryBoxes that
use RangeValidator.
A Mediator and Adaptor layer was developed
for managing the interactions between the
domain objects and the GUIs.
63
The Adaptive Object-Model Architecture Style – OOPSLA 2009 – October 2009, Orlando FL Copyright 2009, Joseph W. Yoder & The Refactory, Inc.
Metamodel and GUI
64
The Adaptive Object-Model Architecture Style – OOPSLA 2009 – October 2009, Orlando FL Copyright 2009, Joseph W. Yoder & The Refactory, Inc.
32
33. PartyType: Metadata-Editors
65
The Adaptive Object-Model Architecture Style – OOPSLA 2009 – October 2009, Orlando FL Copyright 2009, Joseph W. Yoder & The Refactory, Inc.
Accountability: Metadata-Editors
66
The Adaptive Object-Model Architecture Style – OOPSLA 2009 – October 2009, Orlando FL Copyright 2009, Joseph W. Yoder & The Refactory, Inc.
33
34. Observation: Metadata-Editors
67
The Adaptive Object-Model Architecture Style – OOPSLA 2009 – October 2009, Orlando FL Copyright 2009, Joseph W. Yoder & The Refactory, Inc.
Observation: Metadata-Editors
Primitive Observation
Type Editor
Composite Observation
Type Editor
68
The Adaptive Object-Model Architecture Style – OOPSLA 2009 – October 2009, Orlando FL Copyright 2009, Joseph W. Yoder & The Refactory, Inc.
34
35. Observation: Metadata-Editors
69
The Adaptive Object-Model Architecture Style – OOPSLA 2009 – October 2009, Orlando FL Copyright 2009, Joseph W. Yoder & The Refactory, Inc.
Managing releases
The system has releases because of changes
in the metadata not only the code.
Changes in the metadata should be checked
by running test cases. Use of testing tools is
recommended.
Versions of the metadata has to be kept.
May have effective dates for the rules which
are represented by the metadata
70
The Adaptive Object-Model Architecture Style – OOPSLA 2009 – October 2009, Orlando FL Copyright 2009, Joseph W. Yoder & The Refactory, Inc.
35
36. 36
The Adaptive Object-Model Architecture Style – OOPSLA 2009 – October 2009, Orlando FL Copyright 2009, Joseph W. Yoder & The Refactory, Inc.
72
Dynamic Views
kcorB-sfriW .R …can use …can use
, edoY.J
r
,ikcileW .L Renderer
…
several
Entity View coordinates Property
PLoP 2007 –
AOM Rendering Patterns
The Adaptive Object-Model Architecture Style – OOPSLA 2009 – October 2009, Orlando FL Copyright 2009, Joseph W. Yoder & The Refactory, Inc.
71
. ytilibatidua
dna ecnamrofrep sa hcus stnemeriuqer lanoitcnuf-non rof senilediug
edivorp ot pleh osla yehT .sMOA fo noitatnemurtsni dna ,lortnoc
,egasu eht tnemurtsni ot pleh taht snrettap sedulcni :suoenallecsiM
sMOA eht ot roivaheb gniyfidom
ro gnivomer ,gnidda yllacimanyd rof snrettap eht sedulcni :laroivaheB
sMOA fo secnatsni etaerc ot pleh taht snrettap eht sedulcni :lanoitaerC
.snoitacilppa ni sresu-
dne ot sMOA
tneserp ot woh htiw laed taht snrettap eht sedulcni : noitatneserP
.yrassecen naht dnoyeb raf slevel-atem eht ot pu gniog diova ot
seiradnuob dna skrowemarf gnivlove rof senilediug hsilbatse yehT .sMOA
gnitaerc fo ssecorp eht htiw laed taht snrettap eht sedulcni : ssecorP
.elyts larutcetihcra siht nrevog taht seno
eht era yeht dna snrettap cisab eht era esehT .sMOA fo noitatnemelpmi
cisab eht ni tneserp era taht snrettap eroc eht sedulcni :eroC
Part of a Larger Language
37. Other Production Examples:
Insurance
School Workflow
Many Many More …
73
The Adaptive Object-Model Architecture Style – OOPSLA 2009 – October 2009, Orlando FL Copyright 2009, Joseph W. Yoder & The Refactory, Inc.
User Defined Product
(insurance example)
-children * * -children
1 -rules *
Component -type ComponentType Rule
1 1
1 1 +valueUsing:()
1 1 -attributes
-attributes * *
* 1
*
Attribute AttributeType Constant CompositeRule
+name +value
-type +type 1 * 1
+valueUsing:()
*
TableLookup BinaryOperation
*
74
The Adaptive Object-Model Architecture Style – OOPSLA 2009 – October 2009, Orlando FL Copyright 2009, Joseph W. Yoder & The Refactory, Inc.
37
38. Argos Meta-Architecture
(document workflow example)
75
The Adaptive Object-Model Architecture Style – OOPSLA 2009 – October 2009, Orlando FL Copyright 2009, Joseph W. Yoder & The Refactory, Inc.
Argos Business Rule
(document workflow example)
76
The Adaptive Object-Model Architecture Style – OOPSLA 2009 – October 2009, Orlando FL Copyright 2009, Joseph W. Yoder & The Refactory, Inc.
38
39. Successfully Used For:
(some can be found in papers)
www.adaptiveobjectmodel.com
Representing Insurance Policies
Telephone Billing Systems
Workflow Systems
Medical Observations
Banking and Trading
Validate Equipment Configuration
Documents Management System
Gauge Calibration Systems
Simulation Software
77
The Adaptive Object-Model Architecture Style – OOPSLA 2009 – October 2009, Orlando FL Copyright 2009, Joseph W. Yoder & The Refactory, Inc.
Advantages of
Adaptive Object-Models
Can more easily adapt to new
business requirements.
Smaller in terms of classes so
possibly easier to maintain by
experts.
Changes do not require recompiling
the system.
Business People can make changes.
Time to market can be reduced.
78
The Adaptive Object-Model Architecture Style – OOPSLA 2009 – October 2009, Orlando FL Copyright 2009, Joseph W. Yoder & The Refactory, Inc.
39
40. Disadvantages of
Adaptive Object-Models
It demands having infrastructure for
storing, building, interpreting metadata.
Developing AOM can be expensive.
Can be hard to understand and
maintain.
It requires skilled human resources.
Can have poor performance.
79
The Adaptive Object-Model Architecture Style – OOPSLA 2009 – October 2009, Orlando FL Copyright 2009, Joseph W. Yoder & The Refactory, Inc.
Related Approaches
and Technologies
Generative Techniques
Black-box Frameworks
Metamodeling Techniques
Reflection Techniques
Domain Specific Languages
Table-driven Systems
UML Virtual Machine
Intentional Programming
Model Driven Architecture (OMG)
80
The Adaptive Object-Model Architecture Style – OOPSLA 2009 – October 2009, Orlando FL Copyright 2009, Joseph W. Yoder & The Refactory, Inc.
40
41. Black-box frameworks
These frameworks are instantiated by means
of parameterization and object creation.
They don’t need to have a meta-level.
They don’t need to have interpreters and
builders.
They both use very similar patterns (type-
objects, properties, strategies, …)
AOMs can be Black-box frameworks
but don’t have to be--and vice-versa
81
The Adaptive Object-Model Architecture Style – OOPSLA 2009 – October 2009, Orlando FL Copyright 2009, Joseph W. Yoder & The Refactory, Inc.
Code Generators
It provides infrastructure for transforming
descriptions of a system into code.
Descriptions are based on provided primitive
structures or elements.
Code generators produce either executable-
code or source-code.
Can use metadata and editors for describing
code to generate.
82
The Adaptive Object-Model Architecture Style – OOPSLA 2009 – October 2009, Orlando FL Copyright 2009, Joseph W. Yoder & The Refactory, Inc.
41
42. Metamodeling techniques
It focus on manipulating the model and meta-
model behind a system as well as supporting
valid transformations between different
model representations.
The attention is on the meta-model, or a
model or generating a model, rather than the
final application that will reflect the business
requirements.
This technique is used for describing the
domain-specific language.
83
The Adaptive Object-Model Architecture Style – OOPSLA 2009 – October 2009, Orlando FL Copyright 2009, Joseph W. Yoder & The Refactory, Inc.
Domain Specific Languages
DSLs can be a scripting language and work
by means of parameterization.
They don’t need to have a meta-level but
they often do.
They don’t need to have interpreters and
builders.
They both use solving similar patterns, they
just might do it in different ways.
AOMs can be a Domain Specific Language
but don’t have to be--and vice-versa
84
The Adaptive Object-Model Architecture Style – OOPSLA 2009 – October 2009, Orlando FL Copyright 2009, Joseph W. Yoder & The Refactory, Inc.
42
43. Table-driven Systems
Business rules can be parameterized and
stored in a database.
The running system can either interpret these
rules from a database table or the
appropriate function can be called with the
differing values from the database.
Sometimes these are implemented with
triggers and stored procedures.
85
The Adaptive Object-Model Architecture Style – OOPSLA 2009 – October 2009, Orlando FL Copyright 2009, Joseph W. Yoder & The Refactory, Inc.
Model Driven Architecture
MDA is highly related to AOMs
UML Virtual Machine is an AOM
UML Virtual Machine is an MDA approach
Focuses more on the modeling perspective
86
The Adaptive Object-Model Architecture Style – OOPSLA 2009 – October 2009, Orlando FL Copyright 2009, Joseph W. Yoder & The Refactory, Inc.
43
44. Adaptive Object-Model
Object-
(Business Case)
Higher overall ROI
Higher flexibility to change
Cheaper to build applications
Foster business innovation
Incremental development and
prototyping
87
The Adaptive Object-Model Architecture Style – OOPSLA 2009 – October 2009, Orlando FL Copyright 2009, Joseph W. Yoder & The Refactory, Inc.
When AOM is the best solution?
Need for flexibility
High pace of business change
Need for experimentation
Need to empower user
88
The Adaptive Object-Model Architecture Style – OOPSLA 2009 – October 2009, Orlando FL Copyright 2009, Joseph W. Yoder & The Refactory, Inc.
44
45. Reasons for Failure of AOMs
Inadequate bridge between business and
technology level
Communication: different universe of
discourse
Unclear operations and deployment
structure
Takes too long to develop
89
The Adaptive Object-Model Architecture Style – OOPSLA 2009 – October 2009, Orlando FL Copyright 2009, Joseph W. Yoder & The Refactory, Inc.
Process for Developing AOMs
Developed Iteratively and Incrementally.
Be Agile, Scrum, XP, Retrospective
Get Customer Feedback early and often.
Add flexibility only when and where needed.
Provide Test Cases and Suites for both the
Object-Model and the Meta-Model.
Develop Support Tools and Editors for
manipulating the metadata.
Very similar to Evolving Frameworks
by Roberts and Johnson PLoPD3
90
The Adaptive Object-Model Architecture Style – OOPSLA 2009 – October 2009, Orlando FL Copyright 2009, Joseph W. Yoder & The Refactory, Inc.
45
46. Adaptive Object Model
“Common Architecture”
htiw sessalC
dna setubirttA
spihsnoitaleR
roivaheB
lanoitarepO )atem( egdelwonK
91
The Adaptive Object-Model Architecture Style – OOPSLA 2009 – October 2009, Orlando FL Copyright 2009, Joseph W. Yoder & The Refactory, Inc.
Dimensions of Abstraction
L3
language for
defining languages
L2 A language for defining domain specific software
L1 A specific software
L0 An execution of that software
Dimensions of abstraction in Adaptive Object-Models,
Reflection and OMG ’s metamodeling Architecture
Copyright by ECOOP’ 2000 workshop on Adaptive Object-Model. --- http://www.adaptiveobjectmodel.com/ECOOP2000/description.html
92
The Adaptive Object-Model Architecture Style – OOPSLA 2009 – October 2009, Orlando FL Copyright 2009, Joseph W. Yoder & The Refactory, Inc.
46
47. OOPSLA Poster Session
93
The Adaptive Object-Model Architecture Style – OOPSLA 2009 – October 2009, Orlando FL Copyright 2009, Joseph W. Yoder & The Refactory, Inc.
Summary
Adaptive Object-Models can take time to
develop -- but the payoff can be enormous!
Adaptive Object-Models work based upon
domain expert knowledge.
Adaptive Object-Model architectural style
exposes the elements of the domain and
business rules.
Applying well-known design principles (e.g.
TypeObject, Properties, Entity Relationship,
and Strategies/RuleObjects) works well for
developing systems that dynamically adapt
to a changing (business) environment.
94
The Adaptive Object-Model Architecture Style – OOPSLA 2009 – October 2009, Orlando FL Copyright 2009, Joseph W. Yoder & The Refactory, Inc.
47