3.9 Further Reading

 < Day Day Up > 



3.9 Further Reading

State diagrams are used to design a large number of different systems in computer science. The basic theory of state diagrams and their application to computing can be found in any textbook on formal models of computing such as [SAV98]. These books use state diagrams as part of larger computing machines to implement finite-state automata (FSA) and then use FSA to design more general computational models, such as random-access computers and Turing machines. State diagrams have also been widely used in hardware design, and most books on computer architecture (see, for example, [MAN93] or [CAR01]) have a section on how to use state diagrams to design hardware components. The use of state diagrams in the design of software is found in a number of design methodologies, such as Rumbaugh et al. [RUM91] or Booch [BOO91] and has been included in the Unified Modeling Language (UML) (see Booch [BOO99]). State diagrams to design concurrent programs have been proposed by a number of authors, such as Sanden [SAN94] and Magee and Kramer [MAG99].

State diagrams in this chapter were implemented as monitors. Hoare [HOA74] originally introduced monitors. The version of a monitor used in Java is based on the Lampson and Redell [LAM80] extensions to this monitor model. The implementation of monitors using program guards can be found in Lea [LEA00], and a number of design books (notably [BOO91]) use state diagrams to represent passive objects and map them to program guards. The monitors used in this chapter map very nicely to Ada Protected Types, as defined in [ADA95], where the use of a "when" clause removes the necessity for implementing the program guards.

Finally, many of the problems solved in this chapter or given as problems at the end of the chapter are classical problems in computer science (such as the producer/consumer, barber shop, dining philosophers, and Santa Clause simulations) and can be found in a number of books on operating systems or concurrent programming (see, for example, [STA01]).



 < Day Day Up > 



Creating Components. Object Oriented, Concurrent, and Distributed Computing in Java
The .NET Developers Guide to Directory Services Programming
ISBN: 849314992
EAN: 2147483647
Year: 2003
Pages: 162

flylib.com © 2008-2017.
If you may any questions please contact us: flylib@qtcs.net