Tải bản đầy đủ - 0 (trang)
4 Algorithms, Data Structures & Patterns

4 Algorithms, Data Structures & Patterns

Tải bản đầy đủ - 0trang



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


Concrete Class

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.

CRC Card

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.

and identity.

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.

System Family

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..

London. 1979

D. Adams: So long, and h a n k s for All the Flsh Chapter 31. Pan Books Ltd..

London. 1984

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

Tài liệu bạn tìm kiếm đã sẵn sàng tải về

4 Algorithms, Data Structures & Patterns

Tải bản đầy đủ ngay(0 tr)