Introducing Allors Applications, Tools & Platform
The Goal To Increase Software Manufacturability – Design for manufacturability (DFM) describes the process of designing or engineering a product in order to facilitate the manufacturing process in order to reduce its manufacturing costs. » _ for _ manufacturability
How to Achieve our Goal Ubiquitous Language Separation of Concerns Embrace, Extend and Evolve OO Support Agile Software Development Integrated, but Open and Extensible The KISS principle ("Keep it Simple, Stupid") states that design simplicity should be a key goal and unnecessary complexity avoided »
Separation of Concerns Functional Separation of Concerns – Use Subject Orientation Technical Separation of Concerns – An Integrated Pattern Language
Subject Orientation
In contrast with – Component Based Development – Service Oriented Architecture – Bounded Context in DDD Can be applied at – Source level (Allors) – Binary level (HyperJ)
Integrated pattern language An integrated pattern language – Strategy Based – Factory of Factories – Inversion of Control Dependency Injection Service Locator Event-driven programming
Strategy Based
Factory of Factories
Dependency Injection Constructor Injection public abstract class ObjectBase : IStrategyBased, IDeletable { private IStrategy strategy; protected ObjectBase(IStrategy allors) { this.strategy = allors; } public virtual IStrategy Strategy { get { return this.strategy; } }
Injection & Service Locator
Service Locator Management Static allocation of objects – Through configuration file – Through population Dynamic allocation of objects (JIT) – Through SessionCreated Event on Population – Through PropertyNotFound Event on Properties
Event-driven programming No need for explicit Observer Pattern Use of Association side of Relation
Embrace, Extend & Evolve OO Meta Domain Population Independence Rolling Transactions Disconnected Working Relation Oriented Analysis and Design (ROAD) – Multiple Type Declarations – 3 rd Generation OOAD – Relation Methods
Meta Domain
Subject Orientation
Population Independence Use ‘Best Fit for the job’ Population Currently available Populations – Memory (Connected & Disconnected) – Sql Scheduled Populations – File based
Rolling Transactions No explicit Transaction demarcation Always in a Transaction
Disconnected Working Just in Time Checkout & Explicit Check in
Relation Oriented Analysis & Design Relation Oriented vs Object Oriented Relation Oriented Methods Multiple Type Declarations 3 rd Generation OOAD
Who defines the behavior Is it the Object Type or the Relation Type!
Overloading RO Methods Same signature, Different behavior
Overloading RO Methods - Advantages New level of polymorphism More robust (contrary to Contract Based) – No null pointer exceptions Half way technology for Relation Orientation
Multiple Type Declarations Definition Advantages Example Implementation
Muldecs - Definition A Multiple Type Declaration (muldec) declares that the specified object should implement multiple types – the objects assigned to the variable should implement all types (usually interfaces) Muldecs can be supported at – The platform level (JVM, CLR, C++ linker …) – The language level (Java, C#, C++, …) – The framework level (Allors, …) Muldecs can be overloaded
Muldecs - Advantages Reduces the gap between statically and dynamically typed languages Less casting Higher level of modularization – Looser coupling is possible Better evolution – More additive Especially suited for 3 rd generation OOP
Muldecs - Example
Muldecs – Implementation in Allors
Muldecs - Notations C derivatives – type1 type2 … variable – methodName( type1 type2 … argument) Uml
3 rd Generation Object Oriented Programming (OOP) Can be seen as a evolution from – 1 st Generation OOP (Inheritance) – 2 nd Generation OOP (Delegation) Builds upon – Relation Oriented Method Overloading – Multiple Type Declaration
1 st Generation OOP
2 nd Generation OOP
3 rd Generation OO
Support Agile Software Dev. Focus on Customer Valued Functionality Automatic upgrades Unified Testing Immersive UI Testing
Integrated, but Open & Extensible Applications Meta Domain Roll your own Population Use Inversion of Control (IOC) – And everything is Open Source!
Allors Applications Prebuilt Subject Domains – To use either directly, or to extend – With a horizontal or vertical scope – Allowing flexible upgrades
Meta Domain Design time – Extend the Meta Domain Compile time – Use template engine to generate code/artefacts Runtime – Use Meta Domain at Runtime
Questions?