Tải bản đầy đủ - 0trang
4 Algorithms, Data Structures & Patterns
Aframework for complete applications in a specific domain.
An array indexed via arbitrary key values rather than integers. Hash
tables demonstrate one way of implementhg associative arrays.
Class A fundamental building block in object-orlented languages. A class
specifies and encapsulates its internal data structure as well as the
functionality of its instances or objects. A class' description may build
on one or more other classes by inheritance.
In our descriptions c k n t denotes a component or subsystem that
exploits functionality offered by other components.
A component that cooperates with another component. An element of
a CRC c a d .
An encapsulated part of a software system A component has an
interface that provides access to its services. Components serve as
building blocks for the structure of a system. On a programming
language level components may be represented as modules, classes.
objects or a set of related functions. A component that does not
implement all the elements of its Interface is called an abstract
A class from which objects can be instantiated. In contrast to abstract
classes, all methods are implemented in a concrete class. The term is
used to distinguish derived concrete classes from their abstract
Concrete A component that implements all elements defined in its interface.
Component Used to distinguish components from the abstract component that
defines their interface, in the same way that a concrete class is
distinguished from an abstract class.
The common name for data structures that hold a number of
elements. Examples of containers are lists, sets, and arrays.
Class-Responslbflity-Collaborator card. A design tool and notation
[see page 429). We also use CRC cards to descrlbe components that
are not classes.
DemuMplexlng A mechanism that routes incoming data from an input port to its
intended receivers. There is a l:Nrelationship between input port and
receivers. Demultipleldng is commonly applied to incoming wents
and data streams. The reverse operation is known as multiplexing.
The activity performed by a software developer that results in the
software architecture of a system Very often the term design is also
used as a name for the result of thls activity.
Denotes concepts, knowledge and other items that are related to a
subject. Often used as 'application domain' to denote the problem
area an application addresses.
Drag and Drop
User activity supported by modem GUls. Drag and drop allows a user
to perform an operation on a graphical object by selecting it and
dragging it to another place on the screen. For example, a document
can be printed by selecting it and dragging it to a printer icon.
Dynamic A mechanism that defers the association of an operation name (a
Blndlng message) to the corresponding code (a method) until run-time. It is
used to implement polymorphism in object-oriented languages.
A seml-finished software (sub-) system intended to be instantiated. A
framework defines the architecture for a family of (sub-) systems and
provides the basic building blocks to create them. It also defines the
parts of itself that must be adapted to achieve a specific functionality.
In an object-oriented environment a framework consists of abstract
and concrete classes. Instantiation of such a framework consists of
composing and subclassing the existing classes.
Functional A partlcular aspect of a system's functionality, usually related to a
Property specified functional requirement. A functional property may be either
made directiy visible to users of an application by means of a
partlcular function, or it may represent aspects of its implementation.
such as the algorithm used to compute the function.
Graphical user interface.
Coding in a very inflexible way, for example by using a literal number
or a smng instead of a variable. Such literal numbers are also known
as 'maglc numbers' since the number itself may give no clue to
understanding where it came from and what it is for.
A feature of object-oriented languages that allows new classes to be
derived from existing ones. Inheritance defines Implementation
reuse, a subtype relationship, or both. Depending on the
programming language, slngle or multiple inheritance is possible.
Code expansion at compile time that inserts the code of a function or
procedure body instead of the code used to call the function, Mining
long function bodies can lead to code 'bloat', with negative effects on
storage consumptlon and paging effects.
An object originated from a specific class. Oflen used a s a synonym
for object in an object-oriented environment. This term may also be
used in other contexts (see Instanfiation).
A mechanism that creates a new instance from some template. The
term is used in several contexts. Objects are Instantiated from
classes. C++ templates are instantiated to create new classes or
functions. A n appllcatlon framework is instantiated to create an
application. The phrase 'instantlatlng a pattern' is sometimes used to
refer to taking the pattern as described and filling in the necessary
details to fit a specific application.
Intercession The addition to, or modification of, the structure, behavior or state of
a system by the system itself.
A wide-area network of computers within a company. Such a network
may be secured from outside access, and provides a platform for
company-wide information exchange. cooperative work and work
Introspection The examination of selected aspects of the structure, behavior and
state of a system by the system itself.
Inter-process communication. Examples of IPC mechanisms are
shared memory, pipes, message queues and network communication.
Messages are used for the communication between objects or
processes. In an object-orlented system the term message is used to
describe the selection and activation of an operation or method of an
object. This kind of message
is synchronous, which means that the
sender waits until the receiver finishes the activated operation.
Processes typically communicate asynchronously, in which the
sending process continues its execution without waiting for the
receiver to reply. Remote procedure calls (RPC) are a means of
synchronous inter-process communication.
Denotes an operation performed by an object. A method is speclfied
within a class. The term is also used in 'software development
method', which consists of a set of rules, guidelines and notations to
be used by engineers during the development process.
A 'small' class that defines an additional interface or functionality to
be added to classes by multlple hheritance. Mix-In also denotes the
mechanism for adding such functionality by inheriting from classes.
Module A syntactical or conceptual entity of a software system Often used a s
a synonym for component or subsystem Sometimes, 'modules' also
denote compilation units or files. Other writers use the term a s an
equivalent to 'package' when referring to a code body with its own
name space. We use the term as stated in the first sentence.
Multiple Inheritance in which a class can have many superclasses.
A feature of a system not covered by itsfunctIonal description. A non-
functional property typically addresses aspects related to the
reliability, compatibllity, efficiency, cost, ease of use, maintenance or
development of a system.
Object An identifiable entlty in an object-oriented system Objects respond
to messages by performing a method [operation). An object may
contain data values and references to other objects, which together
define the state of the object. An object therefore has state, behavior.
Communication that crosses machine boundaries. Note that the term
'inter-process communication' depicts different types of
communication, depending on whether the communicating processes
exist on the same machine or on different machines. Such
communication types may dlffer in latency, throughput and error
An 'on-the-wire' protocol' defines how higher-level communicatlon
toolkits (such a s DCE. CORBA, or Network OLE)transform messages.
obJects,data and other entities into buffers that can be passed 'across
the wire'. The term 'wire'today also includes transmission media
such as microwave, fiber. and radio transmissions.
In a distributed system peers are the processes that communicate
with each other. In contrast to components in Client-Server
architectures, peers may act a s clients, as servers or as both, and may
change these roles dynamically.
The sum of hardware and/or software a system uses for its
implementation. Software platforms include operating systems.
libraries, and frameworks. A platform implements a virtual machine
with appllcatfons running on top of it.
A concept in which a single name may denote different things. A
function name may be bound over time to several different
operations, or a variable may be bound to objects of different types.
This concept makes it posslble to implement flexible systems based
on abstractions. In object-orlented languages polymorphism is
implemented by the dymmic bfnding mechanism of operations. This
implies that a Axed portion of code may behave differently depending
on its couaborathg objects.
Relationship A connection between components. A relationship may be static or
dynamlc. Statlc relationships show directly m source code. They deal
with the placement of components within an architecture. Dynamic
relationships deal with the Interaction between components. They
may not be easily visible from source code or diagrams.
Responsibility The functionality of an object or a component in a specific context. A
responsibility 1s typically specified by a set of operations. The
responsibllity sectlon is an element of a CRC card.
Role The responsibility of component within a context of related
components. An implemented component may take different roles.
even within a single pattern.
Somebody Else's Problem. Software Engineering Process, or Software
Engineering with Patterns--whatever you want it to be.
A component or subsystem triggered by client requests. When a client
request arrives the server attempts to fulfill it, either on its own, or by
delegating subtasks to other components.
Inheritance in which a class can have at most one direct superclass.
A set of collaborating components performing a given task. A
subsystem is considered a separate entity within a software
architecture. It performs its designated task by interacting with other
subsystems and components.
A class from which another class inherits.
A collection of software and/or hardware performing one or several
tasks. A system can be a platform, an application or both.
A set of related systems solving similar tasks. Systems in a system
family share a great part of their architecture and implementation,
often because every system is derived from the same framework.
When a single system evolves over time, its delivered releases also
build a system family.
A standard for character representation using 16-bit coding. Unicode
includes characters for almost all written languages, as well a s
representations for punctuation, mathematical and other symbols.
D. Adams: 7he HitchhUcer's Gulde to the Galaxy,page ZA6. Pan Books Ltd..
D. Adams: So long, and h a n k s for All the Flsh Chapter 31. Pan Books Ltd..
K. h o l d . J. Gosling: 7he Jam Programming Language, Addison-Wesley.
1996. see also http://Java.sun.com
C. Alexander: The Timeless Way of Building. Oxford University Press. 1979
C. Alexander. H. Nets. A. Annlnou. I. Klng: A New Theory of Urban Design.
Oxford Unlversity Press. 1987
C. Alexander. M. Silversteln. S. Angel. S. Ishikawa. D. Abrams: 7he Oregon
Ewperiment. Oxford University Press, 1975
C. Alexander. S. Ishikawa. M. Silverstein wlth M. Jacobson. I. Fiksdahl-King.
S. Angel: A Pattern Language - Towns~Buildings~ConstrucIlon,
University Press. 1977
A. Aho. R Sethi. J. UUman: Compilers - Principles, Techniques, and Tools.
Addison Wesley. 1986
Siemens AG: Am-P: KompfexspeZlfrrcaUon. internal document. 1993
Apple Computer Inc.: Inside Mactntosh Volume I. Cupertino. CA. 1985
Apple Computer Inc.: Macintosh Programmers Workshop Pascal 3.0
Reference, Cupertino, CA, 1989
M.J.Bach: The Design of the UhTX Operatlq System Prentice Hall. 1986
L. Bass. J. Coutaz: Developing Soj?ware for the User Interne, AddisonWesley. 1991
H. Balzert: Die Entwicklung von SoJware-Systernen,B.1. Wissenschaftsverlag,
Mannheim Wien Ziirich, 1985
K. Beck: Patterns and Software Developrnent, Dr. Dobb's Journal, 19(2),pp.
18-23. February 1994
K. Beck: Smalltalk Best Practice Patterns. Prentice-Hall. 1997
K. Beck, W. Cunningham: A Laboratory For Teaching Object-Oriented
Thinking. Proceedings of OOPSLA '89, N. Meyrowitz (Ed), Special Issue of
SIGPLAN Notices. Vol. 24, No. 10. pp. 1-6, October1989
A.P. Black, M.P. Immel: Encapsulating Plurality, Procecdings of ECOOP '93,
pp. 57-79, IECOOP931
K. Beck, R. Johnson: Patterns Generate Architectures. Proceedings of ECOOP
'94, pp. 139-149. [ECOOP94]
F. Buschmann. K. Kiefer, M. Stal. F. Paulisch: The Meta-Information-Protocol:
Run-Time Type Information for C++,Proceedings of IMSA '92, pp. 82-87,
F. Buschmann, R. Meunier: A System of Patterns, Proceedings of P h P '94.
pp. 325-343. [PLoP94]
F. Buschmann. R. Meunier: Building a SoJware System Electronic Design,
February 20, 1995
J.J. Barton. L.R.Nackrnan: Scientific and Engineering C++- A n Introduction
with Advanced Techniques and Examples, Addison-Wesley. 1994
G. Booch: Object-Oriented Analysis and Design With Applications, Second
Edition, Benjamin/Cummings, Redwood City, California, 1994
G. Booch: Un~fiedMethod for Object-Oriented Developrnent, Version 0.8.
Rational Software Corporation
K. Brockschmidt: Inside OLE 2, Microsoft Press, 1994
Phil Brooks: Master-Slave Patternfor Parallel Compute Services, submitted to
the 1996 Conference on Object-Oriented Technologies and Systems (COOTS)
R.J.A. Buhr. R.S.Casselman: Use Case Maps for Object-Oriented Systems,
Prentice Hall, 1996
F.R. Campagnoni: IBM's System Object Model, Dr. Dobb's Journal. Special
Report. #225 Winter 1994/95, pp. 24-28
Chorus systemes: Chorus Kernel v3.2, Implementation Guide. CS/TR-90-5
J. Coutaz, L. Nigay, D. Salber: Agent-Based Architecture Modelling for
Interactive Systems, The Amodeus Project, ESPRIT Basic Research Action
7040. System Modelling/WP53. April 1995
S. Chiba, T. Masuda: Designing an Extensible Distributed Language with a
Meta-Level Architecture, Proceedings of ECOOP '93, pp. 482-501, [ECOOP93]
P. Coad: Object-OrientedPatterns, Communications of the ACM, Vol. 35, No.
9. September 1992
P. Coad with D. North and M. Mayfield: Object Models
&Applications,Yourdon Press, Prentice Hall, 1995
- Strategies, Patterns,
J.O. Coplien: Advanced C++- Programming Styles and Idioms. AddisonWesley, Reading, MA. 1992
J.O. Coplien: The Counted Body Idiom. Pattern Mailing List Reflector. Feb
J.O. Coplien: Generativepattern languages:An emerging direction of software
design, C++ Report, SIGS Publications, July-August 1994
J.O. Coplien: A Generative Development-hocess Pattern Language.
Proceedings of PLOP '94. pp. 183-237. IPLoP941
J.O. Coplien: The History
J.O. Coplien: Pattern Mailing List Reflector. V96 #35, April 1996
J. Coutaz: PAC, an Object OrIented Model for Dialog Design. HumanComputer Interaction - INTERACT '87 proceedings, H.-J. Bullinger a n d B.
Shackel (Eds), pp. 4 3 1-436, Stuttgart, Germany, Elsevier Science Publishers
B.V. (North-Holland), 1987
Iain Craig: Blackboard Systems, Ablex Publishing Corporation, Norwood.
New Jersey, 1995
J. Crowley: Navigation for an Intelligent Mobile Robot, IEEE Journal of
Robotics and Automation, Vol. RA- 1, No. 1, pp. 31-4 1, March 1985
W. Cunningham: 7'he CHECKS Pattern Language of Information Integrity,
Proceedlys of PLOP '94, pp. 1 4 5 155, IPLoP941
H. Custer: Inside Windows NT. Microsoft Press. 1993
P. Coad, E. Yourdon: Object-Oriented Analysis, Prentice Hall, second edition,
D. Chapman, E. Zwicky: Building Internet Firewalk, O'Reilly
E.W. Dijkstra: Solution of a Problem in Concurrent Programming Control,
CACM, Vol. 8, No. 9, p. 569, Sept. 1965
ANSl document X3J 16/95 0088 WG2 1/N0688: Programming Language C++.
draft working paper. July 1995
0 . Lehrmann Madsen (Ed.): ECOOP '92 - European Conference on ObjectOriented Programming. Proceedings of 6th European Conference. Utrecht,
The Netherlands, June/July 1992, Lecture Notes in Computer Science 6 15,
Springer-Verlag. Berlin Heidelberg New York. 1992
0. Nierstrasz (Ed.):ECOOP '93- Object-Oriented Programming, Proceedings of
7th European Conference. Kaiserslautern, Germany. July 1993, Lecture
Notes in Computer Science 707, Springer-Verlag,Berlin Heidelberg New York,
M. Tokoro, R. Pareschi (Eds.): ECOOP '94 - Object-Oriented Programming,
Proceedings of 8th European Conference. Bologna. Italy, July 1994, Lecture
Notes in Computer Science 82 1, Springer-Verlag,Berlin Heidelberg New York,
W. Olthoff (Ed.): ECOOP '95 - Object-Oriented Programming, Proceedings of
9th European Conference. h h u s . Denmark, August 1995. Lecture Notes in
Computer Science 952. Springer-Verlag,Berlin Heidelberg New York. 1995
L.D. Erman, F. Hayes-Roth. V.R. Lesser. D.R. Reddy: The Hearsay-11 SpeechUnderstanding S y s tern Integrating Knowledge to Resolve Uncertainty. ACM
Computing Surveys 12 (2). pp. 213-253, 1980, reprinted in Blackboard
Systems. pp. 31-86, [EM881
R. Eisenhauer, S. Kumsta, F. Miralles, K. Mobius, U. Steinmiiller, P. Stobbe.
C. Vester: Architektur-Handbuch ftir Software-Architekten, Siemens Nixdorf
Inforrnationssysteme AG. internal report, 1994
R. Engelmore, T. Morgan (Eds): Blackboard Systems, Addison-Wesley. 1988