This page gathers my raw ideas as they appear in my brain. Therefore comments on this page is just something like as idea snapshot. It do not reveal anyhing on Ideal Software Architecture, but the way concepts comes into my conscience.

Legend
The thoughts incorporated in ISA appear with this green box containing the location where this idea is taken into account.
The thoughts partly incorporated in ISA appear with this blue box containing the location where this idea is taken into account.
The thoughts rejected from ISA appear with this red box containing the location where this idea is rejected if any.
The thoughts not actually incorporated in ISA appear with this gray box containing the location where this idea is not taken into account. The purpose of this box is mainly for blog internal management.
No tags for this post.
Previous 4 / 6 Next

401 Comments

  1. Luc Laf

    In user interface there are two policies for validation of user input: (1) Edit the whole thing then validate explicitly (a variant is arm the command, then do it or disarm it), (2) Validate each field and validate implicitly (either after each field edition, or when leaving).
    The behavior depends of the use case and of the user habits.
    So the use case could: Not let the choise to user (mostly for behavior (1)) or let the choise to the user. Is this later case, this behavior could be set at the O.S. level. At global scope, and tunable for each individual use case.
    This validation policy is a use case property.

    Reply
  2. luclaf

    Since in LL every think is an object, an operation for instance is an object. It could be defined outside of the “literal” scope of the class it belong to. This allows to have more flexibility in LL editing and source control.
    Warning: Do not break the class/module identity principle explained in OOSC by B. Meyer.

    LL first meta-model, because it breaks the above warning
    Reply
  3. luclaf

    For LL it is better to have type inference than to be fully dynamic, first because of usability and understability and second because the performance are much better (Cf. Programmez 197 juin 2016 page 15).

    LL basics and syntax
    LL first meta-model
    Reply
  4. Luc Laf

    Display managment
    A possible appeoach is to get a display manager from the O.S. , then to display or edit an object by giving it as an argument of the coresponding operation.
    This operation also could have this other argument:
    – a display context, resulting of the display of other objects, responsible of their arangment
    – a display adapter, that describe the way this object is projected on a display unit (color, location, font, etc.).
    The acces capabilities come from the access rights associated with the object.

    The O.S. provides a default display adapter. It derives from the theme configured by the user of the O.S.

    Reply
  5. Luc Laf

    Delivery unit : Component and Assembly
    We can see an object, say a car, in two perspectives: 1) The way it is made, and 2) the way it is used.
    From the perspective 1) the object is about putting together a set of Components
    For 2) the object is an Assembly it interact with, as this Assembly in it self and/or with one part of the interface of its Components.

    So, is it interesting to distinguish that two perpectives ?

    An Assembly can be a Component of a more general Assembly (a wheel for instance is an assembly of a tyre and of a rim, it is also a component of a car). The reverse is also true.

    In software engeneering, this mounting concept is at first usefull in the 1) perspective in order to put to front the notion delivery unit.

    Therefore, to the above question the answer is NO. It is not interesting to distinguish that two perpectives.

    The Component word is already used in the Composition relation (Cf. UML) between a Composite and a Component. It is also assigning a role to the delivery unit that is as not alway: A car is not always a component (it is rarely in fact).
    Therefore, the word Component sould avoided in this context.

    Following that thinking, ISA should define the notion of Delivery unit thru an Assembly object.
    Assembly :
    1/ Assemble Objects and Assemblies.
    It specifies its proper Objects and enumerates and qualifies preexiting Assemblies.
    2/ Manifest its dependancies.
    It enumerate the set of Interfaces and other Assemblies on witch it depends on to work. Objects implementing these Interfaces must be injected or available in a given way, at the appropriate moment by the runtime environnement.
    3/ Exposes its own interface (DP Facade).
    This interface is a View a) on it proper Objects + b) on the Interfaces of the Assemblies it aggregate.
    3/ Specify its internal intercations (DP Mediator)
    Describing the way the its proper Objects, internal Assemblies and Dependancies interacts together a) to by operationnal and b) to provide the behavior exposes by its interface.

    LL first meta-model
    Reply
    • luclaf

      In order to stick to the B. Muller unique module / class fusionned concept, the Assembly could be just an Object with the only supplemental capability to delivered.
      With all its consequences.
      For instance, (re)use cannot be made at a finer grain that bypass the Assembly notion.

      Why introduce the Assembly concept and not just remain with Classes ?
      – Class doesn’t adress the delivery major subject in computing engineering.
      – The class grain is too small to be the eligible to be the delivery unity.
      – OO paradigm doesn’t provides any classes groupment mechanism.
      – The reusing a class is of course important, but this grain is too fine when managing a large system with multiple dependancies.
      – A more general notion that the local Class one is preferable to define the access to the class members, because it depends of the use of the class, not only of the Class by it self.
      – In the real world, this notion rise several times in many different manners : Library, Application, COM/DCOM, JAR, EAR, WAR, obj, Web Methods Project and Build, Docker container, etc. The need for that kind of feature is obvious.

      Think for instance at a speed counter of a car. Its full interface has the mounting one, with screw, clips and the like; plus the displaying part. Those two parts are useful to assemble the car, but only the second one is exposed by the car to drivers. The decision of what members of the interface of a class is exposed is finally made at the car Assembly level, not at the counter one that only propose set of features.

      Available paradigms overview
      The State axiom – Part 4
      What to express ? The ISA roadmap
      LL first meta-model
      Reply
      • Luc Laf

        If the Assembly is the delivery unit and is also mandatory to use a Class, a question rise: Are Classes only available, accessible, thru it’s Asssembly or is the Development Universe an exception where they can be acceded freely ?

        That Classes are only available thru Assembly after they were delivered (therefore after emerging from a Development Universe) seems a good thing. This is precisly what is the purpose of the notion of Delivery.

        In a Developpemnt Universe there are two kind of Classes:
        1) The one you (re)use coming from the external. In this case it is also obvious that they come from an Assembly.
        2) The one you are responsible for. Here it is always a good practice to made your Classes in a reusability perspective for many reason (Cf. OOSC B. Muller). On the other hand, ease of use is a must have for LL. Developper freedom is also important, at least for tries and training.
        Since it is difficult to make a general choise here, it could be a good idea to put a Property on the Developpemnt Universe that specify the Class mode: Free or Embedded.

        – In the Free mode, a Class can be defined independantly of any Assembly. It can therefore by associated with O..* Assemblies.
        – In the Embedded mode, a Class belong to 1..1 Assembly.

        LL basics and syntax
        Reply
      • Luc Laf

        The Module notion of Java 9, JSR 376 is also about this notion of Assembly.

        Reply
  6. Luc Laf

    SOA and OO
    * SOA mostly useful to integrate complex systems (contract between provider and consumer). But this contract is often difficult to build (difficulties in SOA adoption – work better when the contract is imposed by one party (the provider) like often in REST API).
    – SOA cannot support Object linking or embedding (like in OLE and DDE).
    + SOA is nice to separate concerns in layers. The UI and the business concerns can be well separated.
    + SOA also can offer low coupling via ESB (similar to Mediator OO Design Pattern).
    – It complexifies the software building (multiple interfaces, mapping of DTO, layers and systems responsability limits dilemna, etc.).
    – It lead to functional oriented implentations (large procedure inside not Object delegation).
    * SOA is a declination of the functional paradigm.
    – SOA is inefficent on large and complex data (a data grid in a client/server solutions like Microsofte VB or Oracle Forms is for instance much more simple and efficient).

    The SOA paradigm case
    Reply
    • luclaf

      – SOA do not provided integration at the UI level (layer).
      – SOA do not provides integration at the data level (layer) for instance for bulk load.

      The SOA paradigm case
      Reply
  7. Luc Laf

    OO do not provide any notion of layer. Separate concerns in layers is a nice architecture pattern, so this is an OO issue.
    The Assembly, defined as deliverable a grouping of Classes and of Assemblies, can be an answer to the lack of layering in OO. Together with the notion of View, that allows to hide some part of the Class interface.
    An Assembly could be made to define a layer.
    It is much more powerful that SOA, because the underlying notion of Object is not lost.

    The SOA paradigm case
    LL basics and syntax
    Reply
  8. Luc Laf

    Why SOA is so difficult to adopt ?
    Probably because of Service Contract.
    Perhaps because Service Contract is bad, it is nice of course, but because human do not like to engage them in a contact.
    Because even if they can change it after,changing it is a form of discredit of them self.

    Perhaps its the reason of the REST success, because services are exposed lately, it is the front of a running application, then it is what it is, but it run.

    The SOA paradigm case
    Reply
    • Luc Laf

      In fact it is the “think before doing” versus “do then think if needed” dilemma.
      This is why software modeling is so hard to adopt, why there are so badly designed things in software.

      These 2 approaches are both wrong. Because, at least, :
      – you cannot think to every things, the return of doing things is always needed.
      – you cannot hope to do a nice thing if you don’t think about it, refactoring is also needed at some point.

      This is where Pragmaticism shows its value. Stop oppose that 2 approaches. Both are needed in a “va et vient” manner, iteratively, incrementally.

      With Pragmaticism, you can :
      – start from one point or from the other (do first or think first), but in both cases with the other point illuminating you.
      – go to the other point
      – repeat until you have reached a delivery milestone

      To examine how to deal with these 2 approaches let’s have a look to limits:
      – If the problem is very simple, then the right approach is 100% doing and 0% thinking.
      – If the problem is very complex, then the right approach is 0% doing and 100% thinking.

      What is the curve joining that 2 extremum points ?
      Is there a single curve, or one in a way and another in the other way, similar to hysteresis in magnetism ?

      A seamless approach between requirements, design, coding, run, etc. is the better way to support that flexibility.

      LL basics and syntax
      Reply
    • Luc Laf

      It is argued,that the REST notion is also prefered because it is pre-supposed to be stateless by default that’s SOAP do not makes any assumption on the system state.
      Of course,for cloud easy deployment and easy scalability the stateless services are prefered, but this is certainly not the reason why usual SOA is not easily adopted.

      The SOA paradigm case
      Reply
  9. Luc Laf

    Like SOA, Organic is an other paradigm to speak about in the Paradigm choise post for ISA.

    Reply
  10. Luc Laf

    Look for massive paralelism 1 thread per object
    https://software.intel.com/en-us/modern-code/training/short-video-series#

    Reply
  11. Luc Laf

    While ISA Objects are single threaded State Machine could not allow parallel fork/join tracks because they cannot be effectively executed concurently.
    To perform parallelism, dedicated Slave Objects have to be allocated. Launch messages have to be send sequentialy by the Master Object. Then the Master Object wait in a single state for all its Slaves to send a finish message (internaly Web Methods Process Engine works this way).

    Open question : Does this mechanism made explicit, or should it be hiddenas a base mecanisum, or offer both modes?

    LL basics and syntax
    Reply
  12. Luc Laf

    One of the major succcess reason of a programming language is it’s capacity to easily build a User Interface.
    Visual Basic and HTML (and PHP) are exemple of that. But also CMS like WordPress.
    Powerfull UI framework like Java Swing or Microsoft WPF are used by professionals but fails be largely adopted.

    LL must incorporate this UI facility at its heart. WordPress or Confluence must be seen has example of what to provide.

    LL basics and syntax
    Reply
  13. Luc Laf

    Stream is a good principle to follow for efficiency and scalability. This is truebin computing but not only (energy, etc.).
    LL and more gsneraly ISA must be stream oriented. The Observer Design Pattern support is one of the way to follow it.

    LL basics and syntax
    Reply
  14. Luc Laf

    A way to scale is to use relationship with cursors instead of direct references to objects (already exposed in a previous post).
    However, an object by itself can be huge. To avoid that problem it is possible to limit staticaly the amount of memory and of fields an object can have.
    – 64 bits for booleans and/or some integers.
    – 64 fields or relationships
    – max object size 65 536 bytes -> 8 192 sbytes

    A way to manage theses values is to have a O.S. service that render current running systems limits and default values.

    Reply
  15. luclaf

    Organic versus hierarchic
    Organic means putting together related objects and components.
    Hierachic means decomposition of a solution in by sets of related object and components. Sets relates in a hierarchical manner.

    Organic implies that 1/ object and components are embeded, 2/ object number and size imcrease complexity (sum for i=1 to N of Si) 3/ relationship complexity can also increase complexity up to N*(N-1).

    Hierarchic is done to limit system complexity, in particular intergration of systems. Mediator, Facade design patterns , SOA and software bus are here to supports that.

    ISA should address that problematic and offer guidelines and solutions. Guidelines could be a metric with a threshold of when in the system life to switch between these to approch.

    The SOA paradigm case
    LL first meta-model
    Reply
  16. Luc Laf

    Heavy graphical user interface (JavaFX, XAML/WFC, etc.) are today separated in (1) an XML for presentation layout, (2) regular code for control and the undelying object (model) and (3) an another file for style (typically CSS).
    In LL, have only 1 language is the target.
    The concept of view, in particular a User Interface View, could easily provide an alternative to (1). You have just to add properties that manage things like the layout.
    (2) Is not a problem, they are regular objects respectively Functional Objects and Business Objects.
    (3) Could be a Style Object that you apply to a User Interface View. Style provides styling features thru regular LL properties. Cascading is just supported thru object inheritance.

    LL basics and syntax
    Reply
  17. Luc Laf

    An Object could be the instance of several Classes thru the dynamic addition mechanism.
    Presentation of this Object in a UI can be made thru a polyhedron where each face present a facet, a class, a view for each Class it instanciate.
    This polyhedron can be rorated freely by the user. One face can represents the Object summary. A 3D interface make sense here.

    Reply
  18. Luc Laf

    Why Rich Applications fails ?
    1/ This is the case of most applications built on Java Applet, SilverLight for instance, of Flash also at a lower scale.
    2/ This not the case of MS Office, of IDE like Eclipse, IntelliJ or Visual Studio.

    The discriminant is not the Richnest in it self but what are the difference between these kind applications : The runtime deployment.
    Almost all applications needs a kind of runtime to execute : Java JVM, C runtime, Windows, JQuery, etc.
    Here come the question of its acceptability.
    If the runtime is already distributed or comes transparently with the application: There is no problem (C runtime, Windows in a given version, JQuery).
    If the runtime have to be installed in any other way, the problem begins. The acceptibility must be strong to do it. This is the case for the JVM when the use of Eclipse or IntelliJ is wanted (Java is targeted by both!). Elsewhere, this rarely the case for many reasons.

    Therefore in ISA required runtime must be loaded transparently (basic ISA support, embedded, or loaded from network). This join the wishe “Plug and play generalized” and “Distribution“.

    LL basics and syntax
    Reply
  19. Luc Laf

    Some SOA difficulties :
    – Scope
    – Granularity (coarse grained vs microservice)
    – Transaction (compensation)
    – Abtraction levels (montage plan versus effective services and signature)
    – Maturity levels
    – Promote a functionnal decomposition approach (lack of Business Objects layer)
    – All functional decomposition problems pointed out by B. Meyer.

    The SOA paradigm case
    Reply
  20. Luc Laf

    Useless concept :
    The dangereous NULL and also heavy to manage

    LL basics and syntax
    Reply
  21. Luc Laf

    A single 10 characters key is sufficient to ensure privacy.
    This key produce long string signature (say 1000 digits) with a 1 way function for authentication. The key it self is never stored, but this signature is stored.
    So a brute force attack can try combination of key to retrieve this signature.
    If 1 microsecond is needed by a core to try a key and if 1000 core are running in parallel. You try 1000 key per seconds. So pirats can try 100 millions key per day.
    With a 10 character keys having a variation exends on 100 characters, you have 1E+20 possible combination.
    A pirats need 1E+12 days to break the key, so more than 2 billion years.

    LL basics and syntax
    Reply
  22. luclaf

    Genericity on a multiple inheritance and also dynamic language enforce to reduce the Object to a single type (in a given context however). This is not so desirable… or even somewhere contradictory.
    This is parculary the case for collections for instance. Exemple : List but which T ?, Object ? in this case what is the advantage of genericity???
    Requiring some operations for a generic behavior to be usable could be done thru a required Interface ((like (I)Comparator in Java and C#).

    LL basics and syntax
    Reply
  23. luclaf

    Class merge the concept of Type and of Module.

    The Nature of an Object is the single Class it has when it born and the one it reamins all lonhg its life, up to its death; all that in a given context.
    Exemple: Person, Car, Engine.

    The Types of an Object are additional Classes an Object can acquire or loose during its life.

    LL first meta-model
    Reply
    • luclaf

      The Nature can refer to a more general Object thru its Manifestation Property. This is the way diferrents business domain share referential (similar to MDM – Master Data Management, but with the full power of OO).
      Exemple:
      At Air France, there is one service for Aircraft Technical Control. Physical Person Objects are people that check the aircraft and commit tehnical actions. They are responsible of that including in law.
      The is also an Employees system where people are managed to pay them for instance. Here the core object is Employee.
      Thru a third more fondamental system these people are both known as Individual.
      So in the Aircraft Technical Control system, an Object of Nature Physical Person manifest one Individual. And in the Employees system, an Object of Nature Employee also manifest up to one Individual.

      This is the way ISA solve the Referential “data” problem. Thru a one way relation on Nature from a more specific system to a more general one (transitively).

      LL basics and syntax
      Reply
      • luclaf

        The diffusion of the manifestation relationship update is automatic thru ISA mecanism is on both roles of it.

        Reply
  24. Luc Laf

    In Text character have an infra text bit for text that appears on request or dynamically (tooltip).
    This text is for details, comments, etc.
    Usefull to express details in LL language.


    This can also be done for hyperlinks.
    But:
    – Is hypertext a (simple) text ?
    – How to express both the text of the hyperlink and the targeted OID ?
    – A link can also be on an image.
    – The link can also inject directly the target textuel link summary (in replacement of the HERE word for instance).
    – The link can be expressed by a dedicated glyph NOT part of Unicode
    – The link can be expressed simply by the OID.

    But:
    – Hyperlink is a nice feature

    LL basics and syntax
    Reply
  25. luclaf

    OID unicity
    27 bits for node ID -> 134 million of nodes -> 134 000 peoples with 100 machines each for 10 years in 1 organization.
    37 bits for sequencial number given by the OS for all Objects on a node -> 137 billion of object -> 38 days with 1 new object each microsecond
    => NOT ENOUGH
    With this kind of policy some nodes with high creation rate must have a range of node ID.
    With a range of 1000 node ID -> 38000 days -> 104 years.
    => OK for a unique OID in one organization on 64 bits.

    Instead of giving a range, a node OS could ask the Universe manager a new node ID when needed.
    The Universe manager could identified on 6 bits -> 64 Universes in one organization ->
    21 bits for node ID -> 2 millions of node per Universe.
    1 Universe can have a range of ID allocated manually by administrator.
    For production Universe if a range of 30 is allocated -> 60 millions of node for the Production Universe-> 600 000 people with 100 nodes for each.

    WARNING
    Does OID just have to be unique in a given Universe ?
    Between Universes it is preferable to have the same OID for the same Object in particular on Object tranfert in an other Universe to preserve links on that Object.

    LL basics and syntax
    Reply
  26. Luc Laf

    Be No-Project friendly
    ISA should offer a support to no-project orientation. A basement all Information System evolutions can rely on. Not something each project reinvent from specification to production.
    See :
    What’s Wrong with the Project Approach?
    January 11th, 2011
    Bob Marshall
    https://flowchainsensei.wordpress.com/

    If You Need to Start a Project, You’ve Already Failed
    Evan Leybourn
    2015
    https://www.infoq.com/articles/noprojects1-projects-flawed

    LL first meta-model
    Reply
  27. Luc Laf

    `LL`
    For OID the format can be a set of sbytes. One for each of this concepts : Class, Object, Grouping, Version, Universe.
    The string representation of an OID is not positional to allow more flexibility it is done by a letter prefix followed by the sbyte decimal value. The first letter of the concept. Any no-alphanumeric digit is ignored.
    Example:
    O40541 : Object with ID 45041
    C4229 41621-558 30970 O45041 : Object with ID 45041 of Class e-CS\Pollen UML GUI Designer\Generator\Model reader
    C4229 41621-558 30970 O45041 G10574 28306-768 84331 : Object with ID 45041 of Class e-CS\Pollen UML GUI Designer\Generator\Model reader from the France-Paris Group
    C4229 41621-558 30970 O45041 V42 G10574 28306-768 84331 : Object with ID 45041 in Version 42 of Class e-CS\Pollen UML GUI Designer\Generator\Model reader from the France-Paris Group
    Code
    class LongHash {
    public static void main(String args[]){
    String sClassFullName = "e-CS\\Pollen UML GUI Designer\\Generator\\Model reader";
    String sPrefix = "C";
    if (args.length != 0){
    sClassFullName = args[0];
    sPrefix = "X";
    }
    int iLastIndexOfSeparator = sClassFullName.lastIndexOf("\\");
    if (iLastIndexOfSeparator == -1){
    iLastIndexOfSeparator = sClassFullName.length() / 2;
    }
    int iPosition = iLastIndexOfSeparator + 1;
    String sNameSpace = sClassFullName.substring(0, iPosition);
    String sClassName = sClassFullName.substring(iPosition);
    long lNameSpaceCode = getLongPositiveValues(sNameSpace.hashCode());
    long lClassCode = getLongPositiveValues(sClassName.hashCode());

    System.out.println(sNameSpace + "=>" + lNameSpaceCode);
    System.out.println(sClassName + "=>" + lClassCode);

    System.out.println(sPrefix + format(lNameSpaceCode) + "-" + format(lClassCode));

    }

    private static long getLongPositiveValues(int i){
    if (i >= 0 ) {
    return (long) i;
    }
    long l = (long) i;
    l = Integer.MAX_VALUE - l + 1;
    return l;
    }

    private static String format(Long l){
    return new java.text.DecimalFormat("#####,####0").format(l).trim();
    }
    }

    LL first meta-model
    LL basics and syntax
    Reply
  28. luclaf

    O.S.
    It is a class.
    This class have a property Access that give an access to the instance of the O.S.
    This O.S. Object have a Factory operation that return an implementation of the requested Interface.
    The Interface are anyones, but also those of the O.S. Interface Category.
    The O.S. Object have a Supported Interfaces names property returning strings, giving an Interface Category.

    Reply
  29. Luc Laf

    Use Case and Reuse Case introduced in the SOA paradigm post.
    Be careful to not lead by successive decomposition to some thing like SADT / SART that is not nice and not OO as B. Meyer explains in OOSC.
    The UC and RUC should be limited in depth of invocation.
    – RUC has Scenarii
    – UC inherit RUC
    – UC associated with Actor by a Usage relationship
    – UC associated with UC by a Usage relationship

    => RUC cannot reuse => RUC is terminal

    Reply
    • Luc Laf

      What is seems the more important to avoid decomposition approach is to not have abstraction level between Use Case (notion like UC stereotyped “Top Level Use Case”, etc.).

      Reply
  30. Luc Laf

    `LL`
    Business Rules are also Object to incorporate with Use Case to functional specifications (Up View).
    They are also a runtime Object with :
    – A constructor having all of the needed Object to operate the rule.
    – Is applicable property
    – Is valid and Is invalid operations
    – Value operation that returns a number
    – Message operation that return a message

    The operations are by default on the base class throwing an Not supported exception

    What is there to express ? The ISA roadmap.
    LL first meta-model
    Reply
  31. luclaf

    Have different concurrent update strategies to manage object version.
    – First update win (final coherence)
    – Merge like do version control tools (GitHub, SVN, etc.) or Oracle Replication. The class invariant is a way to control the Object correctness.

    Reply
  32. luclaf

    The ascending compatibility is mandatory. It is a key point to be durable.
    So :
    – “deprecated” features are not allowed.
    – Initial chose must be done very carefully.
    – Prefer the “disadvised” term and to limit strongly its usage.
    This advise is more a software building process one, but having an architectural impact.

    LL basics and syntax
    Reply
  33. Luc Laf

    To manage classes versioning there is a need for a Version number that is public and incremented at each realize, and a Build number, that is internal and incremented at each “commit” of the code.

    Reply
    • Luc Laf

      This dual versioning Version number, Build number is also needed for Documents.

      Reply
    • Luc Laf

      `LL`
      The class build number is only needed in the developments universes.

      Typically, class build number is altered when promoting from a local node development Universe to a shared development Universe.
      Class version number is altered when promoting from a development Universe to an Universe of an other category.

      LL basics and syntax
      Reply
      • Luc Laf

        `LL`
        The advantage of not having a sbyte to support the Class versioning, is that Objects can refer to their classes with a single sbyte, not 2 sbytes for each one. This is an important memory resource preservation.
        In that perspective, the class sbyte OID have two parts one for the class full name hatched, and one for the version. In the development Universe, the Version field of Identity can be used for the build number. It is not relevant in the other Universes.

        Therefore according to Step into OO paradigm – State axiom – Part 4, about 9000 versions is a large maximum. Referving the 13 lower bits of the Class OID sbyte allows 8192 versions. It is suffisant.
        The remaining 51 bits allows 2,2518E+15 classes hash codes. With 1 billion class in the real world universe, the collision probability remain very low (1 chance on 2 millions).

        LL basics and syntax
        Reply
  34. Luc Laf

    It is possible to have static reservation of network resource (bandwidth) with a slight evolution of the Ethernet standard.
    It is just needed to allocate time slots.
    Say there is a 1 seconds frame divided in 1000 parts. The first part is for clock synchronization (and power supplying – see next post). Follow the static parts and then the dynamics part. Typically the static frame parts are 200 and the remaining time is for dynamic usage.
    The synchronization frame is a 1 during 999µs and a 0 for 1µs.

    LL basics and syntax
    Reply
  35. Luc Laf

    Connexion:
    – 2 wires: Signal and Power +, Power 0. Similar to Ethernet with power supply provided by the synchronization 1 (see above). Static resource allocation can also be used to increase power supply.
    – 4 wires: Power +, Power 0, Signal A, Signal B in phase opposition similar to Ethernet.
    – 5 wires: 2 AC Power phases (typically 220V/50Hz), 1 Ground, Signal A, Signal B in phase opposition similar to Ethernet.
    -140 wires: 64 address bus, 64 data bus, Power +, Power 0, Clock, Peripheral has token, Peripheral interruption request, other wires are reserved for further use.

    LL basics and syntax
    Reply
  36. Luc Laf

    `LL`
    There is no Process.
    So any Object used by my use case can (MUC) be modifiyed by any other use case (OUC) execution without any mean to control that. This could lead to processing inconsistency, despite the class invariant mechanism, because the insconsistancy can be between Objects, not at the single Object level.
    To avoid that MUC must reserve the Object for modification (Commands). In fact a suite of Objects.
    To manage that, any operation must have a Resource acquisition section that acquire the entire suite of needed Objects in order to avoid deadlocks. This section only have Queries. It is executed before the body of the methods. If an Object (OF) exclusive access acquisition fails: An exception is thrown holding OF. All the previously acquired Objets are freed. Then the Resource acquisition section waits for a notification of freedom of OF. When OF is free, the Resource acquisition section is executed again from the beginning.

    LL basics and syntax
    Reply
    • Luc Laf

      This is only necessary when an inter-Object state consistency is required. The regular 1 thread per Object, class invariant and post-conditions are in other cases sufficient.
      This inter-Object state consistency can also be managed by a Facade Object or thru the mechanism of Use Case exclusion.

      Reply
  37. Luc Laf

    `LL`
    Null and Multiplicity
    • There is no question for single value range. The Place multiplicity is fixed in the Class multiplicity definition. Therefore, it could be checked at compile time.
    • If the multiplicity is an effective range an integer values, the Place multiplicity can have any value in that range defined by the Class. This also can be controlled at compile time for ranges when their maximum value is superior to 1, because a “indexed“ access have to be done. En force an “indexed” access for that kind of range could be the solution, even for 0..1 range.
    • For instance the access to a propertie is always done on all its elements.
    • A person childs display  Displays all the childs of the person, 0, 1, 2, etc.
    • Sum a person wages  Make the sum of all wages of the person. Give 0 if it has no wages.
    • A person childs multiplicity  The multiplicity property is always available on any property, variable or argument (Place), that this place be based on a Relationship or on a Field. It gives here the current number of childs of the person.
    • One or several accessors must be defined on the Class.
    • Person get by name a person childs Toto.  Here the Class Person has an Operation get by name with two arguments a list of Person (a person childs) and a name (Toto).
    • Rq: Classes have many operations like that working on list of Person Objects. This kind of Operation could be specifically grouped and have a these “keyword” refering uniformly the list.


    • NB: For Place with 0 multiplicity, does nothing like in Objective C could be the best option. If it is optional, the associated resulting features are also optional and not executed in this case.

    Useless concepts LL basics and syntax
    Reply
  38. Luc Laf

    Multiverse act as an SOA bus in an Organization.
    It allows communication between Universe manager.
    It works following a client server base.
    Transmitting banalized Request and Response Objects.

    LL basics and syntax
    Reply
  39. Luc Laf

    `LL`
    Minimize memory wasteful is one dimension of the ISA efficiency, of its performance.
    Using 64 bits to encode a boolean is a very large waste of memory space.
    To encode a boolean 2 bits are needed: 1 for the value, 1 for the accuracy (optional).
    So, it is possible to encode 32 booleans in a 64 bits word (a sbyte, our unit of work). A gain of more than 1 magnitude!

    LL first meta-model because boolean are just 3% of prmitive type usage this not a good optimisation

    For the integer, the small ones, the same reasonment could be followed. To gain 1 order of magnitude, it is needed to have at leats 10 integer in a sbyte. The optional character also needs to to supported.
    Then it is possible to have 10 numbers of 5 bits. This use 60 bits.
    The range for 5 bits is only 32 values. So what can be encoded here: The 32 first natural number are certainly the most useful (not signed so).
    Is a first natural type with 32 values interresting? It can supports: month in year, hours in day, relationship end multiplicity, the quantity of merchandise in many cases, number of children, number of legs, etc.
    More generaly, in any case the someones pronoun is used.

    Low space gain, huge speed impact LL first meta-model
    Reply
  40. Luc Laf

    `LL` Serialization format:
    Readbility is contradictory to performance.
    Having 2 formats, one for debug that is readable, another for release that is tuned for performance.
    The same way you compile a programm in debug or release target.
    The release format remaining readable with a tool.

    The release performance is not only for network communication speed but also for serialization/deserialization efficiency. So the size,data mechanism appears much better in the second aspect because the allocation size in known before data read.

    LL basics and syntax
    Reply
  41. Luc Laf

    In thread management and OO approach for ISA,have a look to GPU.
    They are widely used in machine learning for massively parallel computing, so it could be interesting to have a look to the way they works.

    LL basics and syntax
    Reply
  42. Luc Laf

    One one hand, bag of data is a useless concept, and in particular its stream of bytes declination.
    On the other hand, stream is a very useful pattern that must be incorporated to ISA.
    So in ISA, a “Stream of Objects” pattern must be put into play.

    For instance, a stream of audio sequence object. Each audio sequence object having an index, a duration, etc. It could also be rerequested.
    A Streamable object have at least an Index property. A Stream object must have a get next and a get at index operations.

    Reply
  43. Luc Laf

    `LL`
    Object extension
    In regular OO extension is usually made thru inheritance.
    In ISA, being both static and dynamic means there is 2 way of extension at the Class level and at the Object level:
    Comparison:
    – Static; Class; Intemporal => extend only; Interface, abstract Class, concrete Class;
    – Dynamic; Object; Temporal => extend and reduce; concrete Class only;

    Multiple inheritance (extension) with merging of common more abstract Classes: Only one Object at the root not as much as there is inheritance paths.

    LL basics and syntax
    Reply
    • Luc Laf

      `LL`
      We have discussed today about that with my colleagues.
      This this our drawing.

      Reply
      • Luc Laf

        `LL`
        Static:
        A is the root class, it has a a1 proper member.
        B inherits from A, it has a b1 and a x proper members.
        C inherits from A, it has a c1 and a x proper members.
        E inherits from A, it has a e1 proper member.
        D inherits from B and C, it has a d1 proper member.
        F inherits from D, it has a f1 and a x proper member.

        Common members from common parts in the inheritance graph have the same semantic: They are merged.
        So D have the following members: a1, b1, c1, d1, x from B, x from C.

        LL basics and syntax
        Reply
        • Luc Laf

          `LL`
          Dynamic:
          Having a D object O1.
          E is added to O1 => O1 have now the following members: a1, b1, c1, d1, x from B, x from C, e1. The already existing members remains unchanged. To ensure O1 consistency, the class invariant of E is played and forbid the addition in case of violation.

          1 an operation(D O1) {
          2 D, E O2: O1 + F.
          3 O1 e1.
          4 O1 – E.
          5 }

          Line 1: O1 is an argument of type D.
          Line 2 right: F is added to O1, this means that a F constructor is called and the E class invariant played. The O1 is now of types D and E.
          Line 2 left: O2 is of types D and E. The underling smartpointer is the same has O1. This part is optional.
          Line 3: Type checking is done at compile time. The member e1 is acceded.
          Line 4: F is removed from O1.

          LL basics and syntax
          Reply
  44. Luc Laf

    Incoruptable object feature is provided thru 1. Persistancy check at save time for persitent objects. 2. By an Attribute on the Object Class for volatile objects.
    In 2. setting the Incorruptable Attribute add/remove a hook on each operation and setter that implements a 1 room Memento DP via serialization.
    This is done except for operations that explictly tell that they manage incorruptability local.

    LL basics and syntax
    Reply
  45. Luc Laf

    Save is an operation on persistent objects (it cannot be on class since an object have several ones).
    Load is an operation of the O.S.

    Reply
  46. Luc Laf

    View an deep inheritance class structure can be done on a root class and telling in the View to build contructor for each concrete class in the inheritance tree witihn a given Assembly.

    LL basics and syntax
    Reply
  47. Luc Laf

    Object oriented neural network
    Example:
    Person own Cars between two dates.

    What is a Request ?
    An objective to KNOW something.

    If you can express it in a path with constraints in the model, a formal request (SQL) can be written.
    Example: What are the cars a given person own at the moment?

    If you cannot write it formally, some “intelligence” have to be solicitated.
    Example: What car should I suggest to own to a given Person ?

    To do so some formal requests can be injected in input for a given request giving the corresponding output answer of the neural network. This could resquest is a priori sufficient for the system to auto learn.

    Neural network can be OO organized. With one neural network (NN) associated with each class for a request.
    Example: 1 NN with Car, 1 NN with Person and 1 NN with Own relationship. These 3 NN connected to a 4th NN giving the result of the request.
    Possibly the 3 first NN could be shared by several requests.

    LL basics and syntax
    Reply
    • Luc Laf

      Having Objects and relationships has input and output of NN open many perpectives:
      = Structural properties it is possible to benefits:
      – Typing
      – Property (stable) / Attribute (volatile) distinction.
      = Behavorial;
      – Operation call: Stimuli, input arguments, answer, exception, …
      – Life cycle (state machine)

      This is far much rich that just unstructured data. This could open perpectives to increase learning drivers, speed and accuracy.

      LL basics and syntax
      Reply
      • Luc Laf

        See:
        Object-Oriented Neural Networks in C++
        Auteur(s) : Joey Rogers
        Editeur(s) : Apress
        Nombre de pages : 310 pages
        Date de parution : 10/10/1996
        EAN13 : 9780125931151
        ===================
        Object-Oriented Artificial Neural Network with C++SSE550 Object-Oriented Programming IProject I (Chapter 1-5)February 13, 2012Samuel Bixler
        ===================
        C# Artificial Intelligence (AI) Programming: A Basic Object Oriented (OOP) Framework for Neural Networks
        By Matthew Cochran on Jun 20 2006
        http://www.c-sharpcorner.com/article/C-Sharp-artificial-intelligence-ai-programming-a-basic-object/

        LL basics and syntax
        Reply
  48. Luc Laf

    Answer what is a request is an important question.

    Reply

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.