1 / 16

Inheritance of Automata Classes Using Dynamic Programming Languages (Using Ruby as an Example)

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

jalila
Download Presentation

Inheritance of Automata Classes Using Dynamic Programming Languages (Using Ruby as an Example)

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


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

  2. 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

  3. 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

  4. 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

  5. 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

  6. 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

  7. 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!)

  8. Graphical Notation Being Used • SampleUser automata class presented • It inherited from BasicUser • Added new group Deleted • GroupActivation has been overrided • New state Suspended was added

  9. Basic Registered User Automata • BasicUser 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

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

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

  12. 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

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

  14. 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 • end • Macro methods • Automaton • State • Group • Transition • Each method creates special class • Integrated with Ruby on Rails and Active Record libraries

  15. 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%

  16. Thank you! Questions?

More Related