Presentation is loading. Please wait.

Presentation is loading. Please wait.

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

Similar presentations


Presentation on theme: "Inheritance of Automata Classes Using Dynamic Programming Languages (Using Ruby as an Example) Kirill Timofeev 29.05.2009."— 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 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 Table of Context

3 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 Automata-Based Programming and Its Benefits

4 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 Extended Automata Approach: Object Automata Approach

5 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 Dynamical Programming Languages

6 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 Some Fact of Dynamical Languages

7 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!) Functional Programming Languages

8 Graphical Notation Being Used SampleUser automata class presented It inherited from BasicUser Added new group Deleted Group Activation 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 Macro methods Automaton State Group Transition Each method creates special class Integrated with Ruby on Rails and Active Record libraries

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

16 Thank you! Questions?


Download ppt "Inheritance of Automata Classes Using Dynamic Programming Languages (Using Ruby as an Example) Kirill Timofeev 29.05.2009."

Similar presentations


Ads by Google