Inheritance of Automata Classes Using Dynamic Programming Languages - PowerPoint PPT Presentation

About This Presentation
Title:

Inheritance of Automata Classes Using Dynamic Programming Languages

Description:

Documentation and software development happens at the same time ... It can be plugged in to many existing system without monkey patching and code breaks ... – PowerPoint PPT presentation

Number of Views:46
Avg rating:3.0/5.0
Slides: 17
Provided by: aderev
Category:

less

Transcript and Presenter's Notes

Title: Inheritance of Automata Classes Using Dynamic Programming Languages


1
Inheritance of Automata Classes Using Dynamic
Programming Languages (Using Ruby as an Example)
Kirill Timofeev
Kirill.Timofeev_at_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
  • 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 gt activation do
  • state deleted
  • group activation, initial gt pending do
  • transition suspend, to gt suspended
  • transition delete, to gt deleted
  • state passive do
  • transition register, to gt pending,
  • guard gt Proc.new ... ,
  • proc gt 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?
Write a Comment
User Comments (0)
About PowerShow.com