major syst em functions. Function flow block diagrams were then developed to
capture the dynamics of the system’s behavior. Meanwhile, software designers
were creating data flow diagrams to model software systems. Manufacturing
designers were creat ing the Structured Analysis and Design Technique (SADT)
which was later transformed into Integrated Computer-Aided Manufacturing
(ICAM) Definition or IDEF0. Data flow diagrams, N
2
charts, and IDEF0
diagrams all capture the same basic time-lapsed flow of information, energy,
and physical items among functions. State transition diagrams (or state
machines) were developed and enhanced by several engineering disciplines to
capture dynamic behavior; these techniques have been applied for some
TTDSE efforts. Finally, Petri nets have been developed to model the dynamics
of systems. Many TTD SE practitioners use some subset of these modeling
techniques. All of these techniques are covered in later chapters of this book.
1.4.2 UML
UML is a specification language for modeling objects that is approved by the
Object Manage Group. UML 2 was adopted in 2004 and is often described as a
graphical modeling language. Critical ideas underlying object-oriented model-
ing are multiple views at varying levels of abstraction, object, class, inheritance,
and extensibility. All useful approaches to systems and software engineering
use modeling approaches that enable modeling a system at multiple levels of
abstraction. An object is a basic building block of OO programming that can
receive messages, process data, and then send messages to other objects. An
object can be viewed as a component or actor that has the resourc es to receive,
process, and send data. A class in object-oriented terminology is a grouping of
related variables or functions; this is a key to addressing a system at multiple
levels of abstraction. Inheritance (now often called generalization) is the
process of creating instances of a class based upon specializations of class
parameters; this is often the key to software reuse. Extensibility is a way of
extending the UML modeling language. For example, ster eotypes permit
extending elements of UML to a specific problem domain.
UML 2.0 contain s 13 different diagram categories that can be aggregated
into three diagram types; see Table 1.4. Structure diagrams address those issues
or elements that are part of the system being modeled. Concepts for structure
diagrams include actor, attribute, class, component, interface, object, and
package. Behavior diagrams examine the activities that must happen in the
system being modeled. Behavior diagra m concepts include activity, event,
message, method, operation, state, and use case. Interaction diagrams (con-
sidered by some to be a subset of behavior diagrams) address the flow of data
and control among the elements in the system being modeled. Concepts for
interaction diagrams include aggregation, association, composition, depends,
and generalization (or inheritance).
Some important ideas in UML are the use case diagram, which is a high level
view of the use cases; the class diagram, which describes the relationship
24 INTRODUCTION TO SYSTEMS ENGINEERING