Software Engineering Method Taxonomy
Development Methods
A System and Software
(Sys/SW) Design Methodology*

Links:
Resume | Papers
| Courses | Consulting |
ContEd | HW/SW |
Tech Interests
(Professionalism and Best Practice)
Terminology |
Organizations
|
Certifications |
Standards |
Methods |
Companies |
Tools |
Schools |
Conferences
Viewpoint:
ad hoc |
Object Oriented |
Domain
Engineering Methods |
Enterprise Arch |
Functional |
Data-Structured | Modeling |
Formal | See also related
Quotes
*
"methodology" = study, history, and classification of
methods
ad hoc
Methods
'ad-'häk -- Latin,
"for this";
for the particular end or case at hand without consideration of wider
application [Merriam-Webster]
-
method-less,
undefined, high-risk
-
"Hurry up and code so we can test"
-
"PDR until the noise dies
down"
-
"Program it, then generate the design"
-
"Burry them in documentation!"
|
ad hoc |
Object Oriented |
DE |
Enterprise Arch | Functional |
Data-Structured | Modeling |
Formal
-
Description: Using High-Order Languages (HOL) expands the capability
for the developer to define "abstractions" that model the real-world. The
"things" in the world are objects, which can be grouped in to "classes" and
class-relationships, which define the similarities and differences between
classes and subclasses. Objects can be manipulated through "methods" or
"operations". Operations can interrogate the state of an object (selector,
usually implemented with a function) or change the state of an object
(constructor, usually implemented with a procedure). This approach to decomposition
builds on the history of the other development methods
below...
- Extends the concepts of data abstraction and information
hiding [used with a number of
Formal approaches]
- Localizes data (the state, attributes, input, and output, etc.) with the
the object, similar to
Data-Structured and Modeling
approaches
- Borrows some concepts from Modeling approaches
and
Formal Communicating Sequential Processes to model
dynamic (living, concurrent) objects
- Builds on the Functional approaches, by making
the Operations (within an object/class) functionally cohesive
-
General Notations:
- The "Booch Notation" was one of the first to be applied in
commercial/defense applications, evolving out of the Ada community and Grady Booch's work at the Air Force college. Grady later went to work for
Rational
Software, and their Ada compilation system written entirely in Ada.
See short history on OO Page.
- From this work, other notations have evolved, some language-specific
- Today there are two predominant notations: UML
(plus
SysML) and OPEN
-
Examples: Alphabetical listing of OO methods and links, where known
-
Balin
-
BON (Business Object Notation)
http://www.eiffel.com/products/bon.html
-
Booch [Booch Object-Oriented Development (OOD)
Method]
-
Bulman
-
Coad and Yourdon (Object International) -
http://www.oi.com/
-
CRC : Class/Responsibilities/Collaboration - K. Beck and W. Cunningham, "A
Laboratory for Teaching Object-Oriented Thinking," SIGPLAN Notice, vol.
24 (11)
-
Edwards
-
EVB OORA/OOD - EVB
Software Engineering
- based on the
early Booch method, but provided additional guidance
and detail
- OORA incorporated semantic nets
from AI technology
- EVB was consultant to Magnavox on the first large scale OOD project for
the Army (AFATDS)
-
Felsinger's OOD
-
Firesmith - Don Firesmith was on the AFATDS
project and trained by EVB Software Engineering
-
Fusion Method -
Summary
Note on WWW
-
Rubin Goldberg
-
Gibson
-
Heirarchical Object Oriented Development (HOOD)
http://www.estec.esa.nl/wmwww/WME/oot/index.html used
by the European Space Agency
http://www.estec.esa.nl/wmwww/
-
LVM/OOD Layered Virtual Machines -- Ken Shumate
-
Martin-Odel OO Analysis and Design
-
MOSES
http://linus.socs.uts.edu.au/~cotar/moses
-
ObjectOry - Ivar Jacobson, et al (see
OO Page and
UML Standard)
-
OMT: Object Modeling Techinque - James Rumbaugh, M. Blaha,
W. Premerlani, F. Eddy, W. Lorensen, Object-Oriented Modeling and
Design, Prentice Hall International Edition 1991, ISBN 0-13-630054-5 (see
OO Page and
UML Standard)
-
OOSA, Object Oriented Systems Analysis - Embley et al,
http://osm7.cs.byu.edu/OSA.htm
-
OOSD, Object Oriented System Design - Wasserman, Pircher & Muller (SA/SD
front end)
-
OOSD, Object Oriented Software Development - Ed Colbert
-
OOA, The Shlaer-Mellor Method
http://www.projtech.com/smmethod/smmethod.html
-
-
Project Technology, Inc.
-
tangible things, roles, incidents, interactions, and specifications
-
Page-Jones & Weiss
-
Rational Unified Process® (RUP), see
Rational
-
Seidewitz
-
Semaphore
-
Synthesis by Meilir Page-Jones
-
Wirfs-Brock, et al
|
ad hoc | Object Oriented |
DE
| Enterprise Arch | Functional |
Data-Structured | Modeling |
Formal
Domain Engineering [DE] 
- For DE, Systematic Reuse, or Product-Line Development methods, see DE Links.
|
ad hoc | Object Oriented |
DE
| Enterprise Arch
| Functional |
Data-Structured | Modeling |
Formal
Enterprise or System
Architecture Notations 
- DoDAF or DODAF
-- DoD Architecture Framework
- Used for the definition of enterprise or system architectures
- DODAF is eclectic [composed of elements drawn from various
sources]:
- It appears that the "bulk" of the notation is descended from
SADT (and IDEF)
- However, other notations are allowed, borrowed from a mixture of
Functional and Object Oriented notations: SA,
SD, and UML/Use Cases
- DODAF appears to be fairly "loose" as standards go -- i.e.,
"mileage may vary"
- Defining the purpose, and the intended use of the enterprise
or system architecture, is critical in "managing" the method (and the
customer)
- Therefore, the level of detail (legitimately) will vary
greatly depending on that use and scope
- Not
all views are required
- Alternative
representations can be used for the same view, and
at different abstraction levels
- Some views are purely pictorial with no defined
notation syntax or semantics (e.g., OV-1, which is a type of context
diagram, but is called a "High-Level Operational Concept")
- The relationships (semantics) between the all options, combinations,
or representations are:
- not fully defined by the standard
- nor fully supported by available tools
- The defined views were not adequate and may need to be
extended to capture information critical to the enterprise architecture:
- Extend OV-6 Operational Rules model to also include State
Transition Diagrams, Event-Trace Description Diagrams, and Operational
Process Models (with "swimming" lanes defined by role and time-ordered
tasks)
- Create a Systems Evolution Description and Business
Capabilities as supplemental information (not standard DoDAF)
- Manage requirements outside the DoDAF and related tools
[e.g., using DOORS]
FEAF -- Federal Enterprise
Architecture Framework (IEEE P1471)
ISO RM-ODP --
MDA -- Model-Driven
Architecture, from OMG
MVC -- Model-View-Controller, from OMG
SysML -- Systems Modeling Language
(SysML), from OMG
UML -- Unified Modeling
Language™ (UML®), from OMG (see OO
Standards)
Zachman Framework --
|
ad hoc | Object Oriented |
DE
| Enterprise Arch |
Functional |
Data-Structured | Modeling |
Formal
Functional
Decomposition and Structured Methods
-
Description: The methods which are based on functional decomposition
and stepwise refinement; the breaking down of complex systems into
single-function tasks and subtasks. These techniques were the first to evolve.
The analysis part (data flows) tended to concentrate on the business flow
(which was generally manual in the beginning). The data was simple (integers,
float/real, and characters), but the processing was typically complex. The
early methods were used both for MIS and real-time systems. Extensions of
these methods (e.g., Structured Analysis of Real-Time Systems) gave more
support for real-time systems and concurrent processing.
-
General Notations:
-
Structured Analysis used dataflow diagrams (DFDs), circles or rounded rectangles
connected by arrows and noted with the data that "flowed" between processes.
-
Structured Design used structured charts which showed the decomposition of
functions and their allocation to "units."
-
Data dictionaries were added later to keep track of all the data, to control
the "name space," and to define the composition of each data item indicated
on a data flow or structure chart.
-
Examples:
-
Buhr Machine Charts
-
Composite Structured Design [Myers, 1976]
-
CORE, COntrolled Requirements Expression - a requirements analysis technique
frequently used with MASCOT
-
DARTS, Design Approach for Real-Time Systems
-
DoDAF or DODAF -- DoD Architecture Framework.
-
DCDS, Distributed Computing Design Systems
-
ESML, Extended Systems Modeling Language - A combination of techniques from
SDRTS and Hatley/Pirbhai
-
Gane/Sarson, see
SSA
-
Hatley/Pirbhai, from Boeing
-
IDEF, Integrated Computer Aided Manufacturing
(ICAM) Definition, a version of SADT
(and related tool). See:
-
MASCOT, Modular Approach to Software Construction Operation and Test - Can
use CORE, SA, or JSD as a front end.
-
Myers, see
Composite Structured Design
-
Page-Jones
-
Pseudo Code, step-wise refinement using
- ADL - Ada Design
Language
- PDL = Program Design Language
- See Anna
- The use of a programming language (or other formalized natural
language) to specify system components, architectures, or algorithms in a
human-readable form [may also be parsed, elaborated, executed, or
compiled]
- Attempt is to achieve some language independence to prevent
over-constraining the solution
-
SA, Structured Analysis (DeMarco)
-
SD, Structured Design (Constantine)
-
SA/SD [one of the first functional methods, which was
published individually (SA
and SD)
and combined by
Yourdon Press], see also
Myers
-
SADTTM Structured Analysis and Design Technique,
is a graphical language for describing systems, developed in the early 1970s at
SofTech, Inc. The methodology
was devised to produce a specification that can be fed into other
standard methodologies. See [Dickover,
et al, 1977], [Ross,
1985], and [Marca & McGowan, 1988]. The US Air Force
later revised SADT to create
IDEF.
-
SDRTS, Structured Design of Real Time Systems - An extension of SA/SD, by
Ward & Mellor, to include control flows and state diagrams for real time
systems
-
SSA, Structured Systems Analysis - a variant of
SA/SD) developed by Gane/Sarson
-
STRADIS =
SSA when used by
McDonnell Douglas
-
Ward & Mellor, see
SDRTS
-
Yourdon method -- see SA, SD, and
SA/SD
|
ad hoc | Object Oriented |
DE
| Enterprise Arch | Functional |
Data-Structured | Modeling |
Formal
Data-Structured Methods
-
Description: The methods which are based on decomposition of complex
data; also called Data-Centric Methods. Used for systems that tend to be mostly databases and the modification
of how that data was presented to the user. These techniques evolved early
in the history of software engineering and overlapped with
Functional Methods. Techniques tend to start
with the desired output and work backwards to the desired input. The architecture
defines the "processes" which transform the input data into the
needed output data. These techniques are favored by developers of Management
Information Systems, where data is more complex than the processing on the
data.
-
General Notations:
-
hierarchical trees
-
Entity diagrams, Chen Diagrams, ERDs (Entity-Relationship Diagrams)
-
Examples:
-
DSSD - Data Structured System Design - Warnier/Orr, uses entity diagrams
-
JSP - Jackson Structured Programming, hierarchical trees
-
LCP, Logical Construction of Programs - Warnier Method, hierarchical trees
-
Database Design
-
Hierarchical
-
Network
-
Relational - Chen Method
-
Object
|
ad hoc | Object Oriented |
DE
| Enterprise Arch | Functional |
Data-Structured |
Modeling |
Formal
Methods
-
Description: These techniques treat all system functions as parallel
processes (i.e., they could potentially occur the same time). These techniques
were first developed for controlling trains, elevators, and other controlling
devices and were most widely accepted in Europe. Originally, the techniques
created a concurrent conceptual model, which then had to be converted into
a sequential implementation model (to simulate concurrency), since computers
at that time were more costly. The implementation became easier as computers
began to support multiprocessing (2+ programs running in the same box) and
multiprocessors (2+ CPUs in a single box) and computer languages began to
support concurrent processes (e.g., Ada tasking).
-
General Notations:
-
Examples:
-
JSD - Jackson System Development
-
PAMELA and PAMELA II
-
Rate Monotonic (Realtime) Scheduling [see
Cont-Ed]
|
ad hoc | Object Oriented |
DE
| Enterprise Arch | Functional |
Data-Structured | Modeling |
Formal
(or Mathematical or Logic-Based)
Methods
Key:
italic supports
encapsulation; bold supports
concurrency;
italics-bold supports
both
-
Description: These techniques build on the early math foundations
of computer science. Mathematical proofs are used as a form of verification
of the system. These techniques are frequently used on safety critical or
security critical systems (e.g., nuclear power plant, life support systems,
national security systems, etc.).
-
General Notations:
-
varies by method, but typically based on predicate calculus or set theory
-
Examples:
-
Anna (Annotated Ada), developed by Stanford University
-
CCS, Calculus of Communication Systems
-
"Cleanroom"
software development process
- Named after the hardware "cleanrooms" used for assembling space
systems
- Proposed by Harlan Mills from FIT and SET
- emphasized top-down design and
formal specification
-
COSY, COncurrent SYstems
-
CSP (Communicating Sequential Processes), originally devised by C.A.R. Hoare.
-
Gypsy - method/language used for secure systems
-
HDM, Hierarchical Development Method
-
HOS, Higher Order Software, used on Apollo program
-
RAISE - Rigorous Approach to Industrial Software Engineering
http://dream.dai.ed.ac.uk/raise/
-
SARA, Structured ARchitect's Apprentice
-
VDM - Vienna Development Method (originally developed by IBM, Vienna)
-
WELLMADE
-
Z ("zed," the British pronunciation zee)
-
See
http://www.comlab.ox.ac.uk/archive/formal-methods.html
for more methods
|
ad hoc | Object Oriented |
DE
| Enterprise Arch | Functional |
Data-Structured | Modeling |
Formal
Return to Electronic Resume
|