Inheritance of Automata Classes Using Dynamic Programming Languages

  • Slides: 16
Download presentation
Inheritance of Automata Classes Using Dynamic Programming Languages (Using Ruby as an Example) Kirill

Inheritance of Automata Classes Using Dynamic Programming Languages (Using Ruby as an Example) Kirill Timofeev Kirill. Timofeev@dataart. com 29. 05. 2009

Table of Context Automata-Based Programming and Its Benefits Extended Automata Approach Dynamical Programming Languages

Table of Context Automata-Based Programming and Its Benefits Extended Automata Approach Dynamical Programming Languages Graphical Notation being Used Inheritance of Automata Classes Comparison by Extending Ruby on Rails Plugin Conclusions

Automata-Based Programming and Its Benefits Minimalistic core: transitions, states, and functions (actions and guard

Automata-Based Programming and Its Benefits Minimalistic core: transitions, states, and functions (actions and guard conditions) Documentation and software development happens at the same time Visual and obvious specifications Possibility of automata (and software) verification and reverse engineering

Extended Automata Approach: Object Automata Approach Acts automata as an object-oriented class Nested groups

Extended Automata Approach: Object Automata Approach Acts automata as an object-oriented class Nested groups (encapsulation): reduce duplicataed transitions Automata inheritance: reduce number of states and transitions required for a new automata creation

Dynamical Programming Languages Allow runtime program extension Dynamic creation of new methods Macro scripts

Dynamical Programming Languages Allow runtime program extension Dynamic creation of new methods Macro scripts usage and executing any text instruction as a program code (evaluation) Partial support of functional style by using lambda functions and closures And. . . DSL – Domain Specific Language

Some Fact of Dynamical Languages There is no spoon strict definition of dynamical languages

Some Fact of Dynamical Languages There is no spoon strict definition of dynamical languages In 2008 the proportion of dynamic languages to the languages with static type checking was 40% The most popular dynamical languages: Javascript, Python, Ruby Buzz word again: Ruby on Rails

Functional Programming Languages Complex programs are build on simple functions aggregation Polimorphism of data

Functional Programming Languages Complex programs are build on simple functions aggregation Polimorphism of data types Easy to test and verify software: no side effects More expressive syntax by using closures and lambda functions (hello, DSL!)

Graphical Notation Being Used Sample. User automata class presented It inherited from Basic. User

Graphical Notation Being Used Sample. User automata class presented It inherited from Basic. User Added new group Deleted Group Activation has been overrided New state Suspended was added

Basic Registered User Automata Basic. User automata class presented Has five states: Deleted, Pending,

Basic Registered User Automata Basic. User automata class presented Has five states: Deleted, Pending, Passive, Active, and Suspended On entering Active state system generates the activation code (lambda function) Guard conditions on event Unsuspend

Extended User Registration Automata Advanced. User automata class presented Inherited from Basic. User automata

Extended User Registration Automata Advanced. User automata class presented Inherited from Basic. User automata New group Activation with states: Captcha and Active New group Deleted: Suspended and Deleted (delete user's data)

A Nightmare without Nested Groups and Inheritance – Part 1/3 Statistic Number of transitions:

A Nightmare without Nested Groups and Inheritance – Part 1/3 Statistic Number of transitions: 11 Number of states: 5

A Nightmare without Nested Groups and Inheritance – Part 2/3 Are you still not

A Nightmare without Nested Groups and Inheritance – Part 2/3 Are you still not afraid in the dark? ! Statistic States: 8 Transitions: 20 (O'RLY? ) Statistic (with groups and inheritance) States: 8 Transitions: 9 Groups: 3

A Nightmare without Nested Groups and Inheritance – Part 3/3 VS

A Nightmare without Nested Groups and Inheritance – Part 3/3 VS

Ruby Domain Specific Language automaton : user, : initial => : activation do state

Ruby Domain Specific Language automaton : user, : initial => : activation do state : deleted group : activation, : initial => : pending do transition : suspend, : to => : suspended transition : delete, : to => : deleted state : passive do transition : register, : to => : pending, : guard => Proc. new {. . . }, : proc => Proc. new {. . . } end end Macro methods Automaton State Group Transition Each method creates special class Integrated with Ruby on Rails and Active Record libraries

Conclusion Automata is a great approach which helps a lot to describe and create

Conclusion Automata is a great approach which helps a lot to describe and create systems with a complex behavior It's easy to maintain a system by using object-automata approach, groups, and inheritance It can be plugged in to many existing system without monkey patching and code breaks Syntax matters. By using helpers and macros (building DSL) it's possible to reduce an automata code by 50%

Thank you! Questions?

Thank you! Questions?