| |
Object-Oriented Analysis and Design With UML
- Description:
- This SoftMoore seminar introduces the fundamental principles of
object-oriented requirements analysis and design using the notation
of the Unified Modeling Language (UML), which integrates many of the
best features from earlier object-oriented methods including the
Booch Method, Object-Oriented Software Engineering (Jacobson), and
the Object Modeling Technique (Rumbaugh). Adopted as a standard by
the Object Management Group in late 1997, UML has been accepted by
the software community as the primary notation for specifying,
constructing, visualizing, and documenting the artifacts of a
software-intensive system. Topics include an overview of basic
object-oriented concepts, requirements capture via use cases,
strategies for identifying objects and classes of objects, development
of class diagrams, specifying object interactions, design of class
hierarchies, specifying object lifecycle and state-dependent behavior,
architectural considerations, an incremental and iterative process
for object-oriented analysis and design, techniques for evaluating
an object-oriented model, and an overview of design patterns for
object-oriented software. Case studies and class exercises will be
integrated with class discussions throughout the course to illustrate
and reinforce the underlying concepts.
-
- Audience:
- This seminar is designed for software professionals who are
interested in applying object-oriented techniques to the analysis
and design activities of software development. Participants should
have strong software development experience. Prior familiarity
with object-oriented concepts and languages would be useful but is
not required.
-
- Recommended Duration:
- 5 Days
-
- Course Materials:
- Each participant will receive a complete set of all course materials
including course notes, class exercises and solutions, and a copy of
the Addison-Wesley textbook UML Distilled (Second Edition) by Martin
Fowler and Kendall Scott.
-
Course Outline
- Basic Object-Oriented Concepts
-
| Software Engineering |
| Classes and Objects |
| Object Identity |
| Encapsulation/Information Hiding |
| Inheritance |
| Polymorphism |
| Benefits of an Object-Oriented Approach |
Overview of UML
| Background and Current Status |
| Model Elements and Relationships |
| Common Mechanisms |
Capturing Requirements with Use Cases
| Actors and System Boundaries |
| Basic Course and Alternative Courses |
| Use Case Relationships |
| Documenting Use Cases |
Modeling the Static Structure
| Modeling Objects and Classes |
| Attributes, Operations, and Methods |
| Links and Associations |
| Multiplicity |
| Class Stereotypes |
| Packages |
| Generalization |
| Aggregation and Composition |
| Dependency |
| Abstract Classes |
| Interfaces |
| Association Classes |
| Active Classes |
Modeling Object Interactions
| Modeling Messages |
| Sequence Diagrams |
| Collaboration Diagrams |
| Modeling Object Lifecycles and State-Dependent Behavior
| States, Events, and Transitions |
| Statechart Diagrams |
| Actions and Activities |
| Sequential and Concurrent Substates |
|
Additional UML Concepts
| Activity Diagrams |
| Component Diagrams |
| Deployment Diagrams |
Architecture
| Multi-tier Software Architecture |
| Logical versus Physical Tiers |
| Architecture Impact on Analysis and Design |
Analysis and Design Process
| Software Lifecycle Models |
| Identifying Objects and Classes |
| An Iterative and Incremental Process |
| Problem Space versus Solution Space |
| The Role of Prototyping |
| Documenting Analysis and Design Models |
Design Patterns
| The Role of Patterns in Software Design |
| Overview of Creational Patterns |
| Overview of Structural Patterns |
| Overview of Behavioral Patterns |
Evaluating an Object-Oriented Design
| Class Coupling and Cohesion |
| Principles of Object-Oriented Design |
Selected Topics in Object Technology
| Object Persistence |
| Object Technology and Software Reuse |
| Testing Object-Oriented Software |
| Object-Oriented Metrics |
|