Chapter 1 Introduction
Chapter 1 Introduction
Contents
2. Object-oriented
3. Software
1. Software methods and the
Why design? architectural
modeling unified modeling
design
language
5. Comet: a uml-based
7. Multiple views
4. Method and software modeling and 6. Uml as a
of software
notation design method for standard
architecture
software applications
8. Evolution of 9. Evolution of
software modeling object-oriented
and design analysis and design
methods methods
Why design?
• Build a pet house
Why design?
• High building
Why design?
Why design?
1. SOFTWARE MODELING
• Modeling is widely used in science and engineering to provide abstractions of
a system at some level of precision and detail
• According to the Object Modeling Group (OMG), “modeling is the designing of
software applications before coding.”
• In model-based software design and development, software modeling is used
as an essential part of the software development process.
• A better understanding of a system can be obtained by considering it from
different perspectives (multiple views): requirements models, static models,
and dynamic models of the software system
• A graphical modeling language such as UML helps in developing,
understanding, and communicating the different views.
2. OBJECT-ORIENTED METHODS AND
THE UNIFIED MODELING LANGUAGE
• Object-oriented methods are based on the concepts of
information hiding, classes, and inheritance.
• With the proliferation of notations and methods for the
object-oriented analysis and design of software applications
the Unified Modeling Language (UML) was developed to
provide a standardized graphical language and notation for
describing object-oriented models. However, because UML is
methodology-independent, it needs to be used together with
an object-oriented analysis and design method.
2. OBJECT-ORIENTED METHODS AND
THE UNIFIED MODELING LANGUAGE
• Modern object-oriented analysis and design methods are model-based and
use a combination of use case modeling, static modeling, state machine
modeling, and object interaction modeling.
• Almost all modern object-oriented methods use the UML notation for
describing software requirements, analysis, and design models.
• In use case modeling, the functional requirements of the system are
defined in terms of use cases and actors.
• Static modeling provides a structural view of the system. Classes are
defined in terms of their attributes, as well as their relationships with other
classes.
• Dynamic modeling provides a behavioral view of the system. The use
cases are realized to show the interaction among participating objects.
Object interaction diagrams are developed to show how objects
3. SOFTWARE ARCHITECTURAL
DESIGN
• A software architecture (Bass, Clements, and Kazman 2003; Shaw and
Garlan 1996) separates the overall structure of the system, in terms of
components and their interconnections, from the internal details of the
individual components.
• A software architecture can be described at different levels of detail. At a
high level, it can describe the decomposition of the software system into
subsystems. At a lower level, it can describe the decomposition of
subsystems into modules or components.
• The software quality attributes of a system should be considered when
developing the software architecture. These attributes relate to how the
architecture addresses important nonfunctional requirements, such as
performance, security, and maintainability.
4. METHOD AND NOTATION
• A software design notation is a means of describing a software
design either graphically or textually or both.
• UML is a graphical notation for object-oriented software applications.
class CardAccount
{
cardId: String;
account tNumber: String;
accountType: String
}
4. METHOD AND NOTATION
• A software design concept is a fundamental idea that can be applied to
designing a system. For example, information hiding is a software design concept.
• A software design strategy is an overall plan and direction for developing a
design. For example, object-oriented decomposition is a software design strategy.
• Software structuring criteria are heuristics or guidelines used to help a
designer in structuring a software system into its components. For example, object
structuring criteria provide guidelines for decomposing the system into objects.
• A software design method is a systematic approach that describes the
sequence of steps to follow in order to create a design, given the software
requirements of the application
• The Collaborative Object Modeling and Design Method, or COMET, uses the UML
notation to describe the design. COMET is based on the design concepts of
information hiding, classes, inheritance, and concurrent tasks. It uses a design
strategy of concurrent object design.
5. COMET: A UML-BASED SOFTWARE MODELING AND
DESIGN METHOD FOR SOFTWARE APPLICATIONS
• Subroutines were originally created as a means of allowing a block of code to be shared by calling it from different parts of a
program
• Dijkstra developed one of the first software design methods with the design of the T.H.E. operating
system (Dijkstra 1968), which used a hierarchical architecture. This was the first design method to
address the design of a concurrent system, namely, an operating system.
• In the mid- to late 1970s, two different software design strategies gained prominence: data flow–
oriented design and data structured design.
• An alternative software design approach was that of data structured design. This view was that a full
understanding of the problem structure is best obtained from consideration of the data structures.
• In the database world, the concept of separating logical and physical data was key to the development
of database management systems. Various approaches were advocated for the logical design of
databases, including the introduction of entity relationship modeling by Chen
9. EVOLUTION OF OBJECT-ORIENTED ANALYSIS
AND DESIGN METHODS
• In the mid- to late 1980s, the popularity and success of object-oriented
programming led to the emergence of several object-oriented design methods,
including Booch, Wirfs-Brock, Wilkerson, and Wiener (1990), Rumbaugh et al.
(1991), Shlaer and Mellor (1988, 1992), and Coad and Yourdon (1991, 1992).
• The emphasis in these methods was on modeling the problem domain,
information hiding, and inheritance.