Concurrent Programming in Java
© 1996-1999 Doug Lea
1.3 Design Forces
Follow-ups
Readings and Resources
Accounts of high-level object-oriented software analysis and design
that cover at least some concurrency issues include:
- Atkinson, Colin. Object-Oriented Reuse, Concurrency and
Distribution, Addison-Wesley, 1991.
- Booch, Grady. Object Oriented Analysis and Design, Benjamin
Cummings, 1994.
- Buhr, Ray J. A., and Ronald Casselman. Use Case Maps for
Object-Oriented Systems, Prentice Hall, 1996. Buhr and Casselman
generalize timethread diagrams similar to those used in this book
to Use Case Maps.
- Cook, Steve, and John Daniels. Designing Object Systems:
Object-Oriented Modelling With Syntropy, Prentice Hall, 1994.
- de Champeaux, Dennis, Doug Lea, and Penelope Faure. Object
Oriented System Development, Addison-Wesley, 1993.
- D'Souza, Desmond, and Alan Wills. Objects, Components, and
Frameworks with UML, Addison-Wesley, 1999.
- Reenskaug, Trygve. Working with Objects, Prentice Hall, 1995.
- Rumbaugh, James, Michael Blaha, William Premerlani, Frederick
Eddy, and William Lorensen. Object-Oriented Modeling and Design,
Prentice Hall, 1991.
Accounts of concurrent software specification, analysis, design, and
verification include:
- Apt, Krzysztof and Ernst-Rudiger Olderog. Verification of
Sequential and Concurrent Programs, Springer-Verlag, 1997.
- Carriero, Nicholas, and David Gelernter. How to Write Parallel
Programs, MIT Press, 1990.
- Chandy, K. Mani, and Jayedev Misra. Parallel Program Design,
Addison-Wesley, 1989.
- Jackson, Michael. Principles of Program Design, Academic Press,
1975.
- Jensen, Kurt, and Grzegorz Rozenberg (eds.). High-level Petri
Nets: Theory and Application, Springer-Verlag, 1991.
- Lamport, Leslie. The Temporal Logic of Actions, SRC Research
Report 79, Digital Equipment Corp, 1991.
- Leveson, Nancy. Safeware: System Safety and Computers,
Addison-Wesley, 1995.
- Manna, Zohar, and Amir Pneuli. The Temporal Logic of Reactive
and Concurrent Systems, Springer-Verlag, 1991.
Several specialized fields of software development rely heavily on
concurrency. For example, many simulation systems,
telecommunications systems, and multimedia systems are highly
multithreaded. While basic concurrency techniques form much of the
basis for the design of such systems, this book stops short of
describing large-scale software architectures or specialized
programming techniques associated with particular concurrent
applications. See, for example:
- Fishwick, Paul. Simulation Model Design and Execution, Prentice
Hall, 1995.
- Gibbs. Simon and Dennis Tsichritzis. Multimedia Programming,
Addison-Wesley, 1994.
- Watkins, Kevin. Discrete Event Simulation in C, McGraw-Hill,
1993.
Technical issues are only one aspect of concurrent software
development, which also entails testing, organization, management,
human factors, maintenance, tools, and engineering discipline. For
an introduction to basic engineering methods that can be applied to
both everyday programming and larger efforts, see:
-
Humphrey, Watts. A Discipline for Software Engineering,
Addison-Wesley, 1995.
For a completely different perspective, see:
For more information about integrating performance concerns into
software engineering efforts, see for example:
-
Jain, Raj. The Art of Computer Systems Performance Analysis,
Wiley, 1991.
Further distinctions between open and closed systems are discussed in:
-
Wegner, Peter. "Why Interaction Is More Powerful Than Algorithms",
Communications of the ACM, May 1997.
Doug Lea
Last modified: Sun Oct 17 15:02:27 EDT 1999