<CH> introduces Thomas explains his role as layouter and text author introduces historic develoment of the idea <T> introduces Christian and his work met CH a year ago at ESUG Values are in all our work Recognizing them makes modeling easier improves readability Helps with maintenance
<T> What we also found: Systems are fragile: different data workflows (Data not standardized. Sharing/aliasing between modules. Unexpected changes, Nil, errors, connection lost.) Complicated: variants not modeled, concurrency, understand legacy/foreign code, all-in-one solutions
<T> what we also share is a functional style Makes a difference MacLennan said: distinguish Nature of data is often values. To ignore them leads to conceptional errors. Complementary concept handle them properly
<T> MacLennan teaches us: Values are abstractions (universals, concepts) Values are never created or destroyed Values wont change Values are referentially transparent 2 Instances are not distinguishable So, you can share them Why not model that in software?
<CH> Date Time Rectangle
<CH> why is this a value? Output text should not change after creation literal representation really useful Concise and readable at a glance, easily understandable with all details and structure no magic practical, tool support, living code test code easy completer works fine
<T>so, what is a ComplexValue? Values in Values create once – never change any content No cyclic structures Concrete, finite, complete
<T> Can build class hierarchies same capabilities like a regular object
<T> we want tool support ´for modeling specify attributes and generate Model exploration and model changing is easy
<T> where we also can find values Configurations: move specifics from code into declarations excellent for the setup of modules and systems all benefits of normal source code
<T> we dont know, why xml strings should live In an Image Not referencable
<T>Adequate There are Values – why use Objects? Simple/Reliable Dont care No side effects, No cycles, No illegal Values <CH>Pretty Readable at a glance Concise and Understandable Practical Print and transportable Supported by tools (references, refactoring, formatter, highlighter) Trivial