Zoom Outline PDF View  or  Email  


Object Oriented Analysis & Design Using UML




SUMMARY:   This comprehensive, skills-based course covers the topics crucial to all OO modelers: object-oriented terminology and technology, analysis and design methods, and the graphical Unified Modeling Language (UML), the industry standard for documenting models of software systems.

AUDIENCE:   Developers and other IT professionals having little or no previous exposure to object technology. Analysts, designers, and programmers seeking to capture business models, workflows, and software characteristics using industry-standard notation. Those seeking to migrate to web-based application development or use object-oriented programming languages such as Java, C++, and C#.

PREREQUISITES:   None. Prior exposure to OO concepts, modeling, and programming is an asset.

DURATION:   4 Days

APPROACH:   The course mixes presentation of concepts and techniques with extensive practical exercise. Each student receives a course manual that includes the content of the lectures, and a sheaf of artifacts for an example case study. After each lecture, students break out into teams of four to seven, review the example study to see how what they've just learned is applied, then apply the same skills to an exercise study. Whenever possible, students are encouraged to replace work on the exercise case study with practice on software they are developing in their actual work.

OBJECTIVES:  
  • Use OO terminology and apply OO concepts
  • Interpret and create requirements, analysis, and design models in UML
  • Recognize and use common UML notation
  • Read and create standard UML artifacts:
    Use case diagrams
    Conceptual models
    Communication and sequence diagrams
    Activity diagrams
    State diagrams
    Class diagrams
  • Describe and apply common design patterns
    Follow best practices to develop software with high cohesion and low coupling
    Participate confidently in OO development teams

COURSE CONTENT:  
  1. Introduction
    • Getting acquainted
    • Course objectives
    • Case studies
    • What is abstraction?
    • What is a model?
    • Why do we construct models?
    • What is analysis?
    • What is “object-oriented” about object-oriented analysis?
    • What is design?
    • What is “object-oriented” about object-oriented design?
    • Can a problem have more than one solution?
    • Which solution is best?
    • When are analysis and design performed?
  2. Determining System Requirements
    • What is a system?
    • What is an actor?
    • What is a use case?
    • Why perform use case analysis?
    • How do I develop a use case model?
    • Which actors participate in which use cases?
    • How specific should a use case be?
    • How do I eliminate the “how”?
    • What should I notice about use cases?
    • Summary of the requirements phase
  3. Analysis - Understanding the Problem
    • Where does analysis fit into a software project?
  4. Analysis - Objects and Classes
    • What is a savings account?
    • Why group together the pieces of data?
    • How do I group together the pieces of data?
    • Why group data and control together?
    • How do I group together the data and control?
    • What is encapsulation?
    • Should data be visible outside the encapsulaion?
    • What is information hiding?
    • What is an object?
    • How do I represent objects?
    • What is an operation?
    • How do I ask an object to perform an operation?
    • What is an attribute?
    • What if I have many objects that are similar?
    • What is a class?
    • What is an instance?
    • How do I find the classes?
  5. Analysis - Class Relationships
    • What is a link?
    • What if I have many links that are similar?
    • What is an association?
    • What is a reflexive association?
    • What is aggregation?
    • What is composition?
    • What if I have several classes that are similar?
    • How can I apply abstraction to similar classes?
    • What is inheritance?
    • Who inherits from whom?
    • How does inheritance facilitate reuse?
    • Summary of the analysis phase
  6. Design - Defining a Solution
    • Where does design fit into a software project?
  7. Design - Object Interaction
    • What are interaction diagrams?
    • How do I draw collaboration diagrams?
    • How do I draw sequence diagrams?
  8. Design - States and Transitions
    • What is a state?
    • What is an event?
    • What is an action?
    • What is a transition?
  9. Design - Patterns
    • How do designers assign system responsibilities?
    • What are GRASP patterns?
    • What does the Expert GRASP pattern advise?
    • What does the Creator GRASP pattern advise?
    • What does the Low Coupling GRASP pattern advise?
    • What does the High Cohesion GRASP pattern advise?
    • What does the Controller GRASP pattern advise?
    • Are there other kinds of design patterns?
    • What is the Model-View Separation pattern?
    • What is the Data Manager pattern?
    • Where do I pull all this stuff together?
  10. Design - Refinements
    • When do I care about implementation?
    • How far can abstraction take me?
    • What is multiple inheritance?
    • What is polymorphism?
    • Summary of the design phase
  11. Design - Considerations
    • What is persistence?
    • How can I solve the persistence problem?
    • How do I code for persistence?
    • What is reuse?
    • What is your reuse aptitude?
    • How can I find classes that are available for reuse?
    • How do I reuse a reusable class?
    • Is reuse about saving coding effort?
    • How do I write portable software?

    BC/07

© 2007 Verhoef Training, Inc.

Schedule Dates

Course offered as
Inhouse or Public


There are no classes scheduled for this subject at this time.

Send us a request for this class

or

contact your account manager for scheduling information.

Contact Us


Copyright © 2007 - Verhoef Group of Companies - All Rights Reserved