Object Oriented Analysis and Design with UML Course
Course Code: hsts-c37
What is included in this course
You will learn:
- Extracting a system's requirements using a use-case driven approach
- Leveraging the experience of experts by applying analysis and design patterns
- Defining a set of extensible, reusable software classes (a class library) for the problem domain
- Building interaction diagrams that define the interactions among the objects that are required to achieve the desired system behavior
- Defining a set of candidate classes that suitably model a problem domain
- Establishing metrics, peer reviews and heuristics to improve the quality of the object models
- Effectively documenting all phases of the software process using UML
- Applying an iterative and incremental approach to construction of software systems and components
Course Description
This course presents the key concepts and methodologies required to perform quality object-oriented software engineering, with particular attention to practical techniques such as use-case and CRC analysis, UML diagramming, and patterns. Students practice applying object oriented analysis during the course to improve software designs and to see how software objects can be altered to build software systems that are more robust and less expensive. Students use several methods for analyzing software systems, finding and refining useful classes and relationships between objects. Care is taken not to focus on any one language so that all students can participate in the design exercises without relying on specific programming skills. The course emphasizes the most practical analysis and design methods, including the application of use case analysis, CRC analysis, problem domain analysis, activity diagramming, interaction diagramming, and class diagramming. The Unified Modeling Language (UML) is presented in detail and is used in the exercises and case studies. Practical aspects of project management and implementation are presented from the perspective of experienced object system designers. Special emphasis is given to the use of object patterns in developing software systems.
Follow-up Course
Introduction to Python Programming
Responsive Site Design with Bootstrap
Self-paced training
This course is available in a self-paced video format starting at $60. Click here to learn more and register. For complete self-paced software engineering training, visit our Complete Training Bundle for Software Engineers page.
Corporate and Enterprise Training
Our live courses are also offered via our enterprise training program which comes with:
- In-person training at your location
- Access to recorded sessions of live classes
- Flexible training schedules that match your employees’ availability
- Course curriculum customization based on your training requirements and business goals
- Special rates for small or large groups
Feel free to contact us by email or phone to discuss your training needs and get a quote.
Overall Info About our Live Classes
Highlights
-
30 hours of hands-on training led by experienced instructors
-
Digital courseware and online course tracking
-
Final course project delivery
-
Certificate of Completion for each course
-
Session-based assignment
Enrollment Fee
In-person in DC or live online for $2990 per course
Course Session Dates
Our courses are offered all year around. Upon registration we enroll you to the earliest available class but you can reschedule it free of charge.
Locations
- Virtual live instructor classes via Zoom
- In-person classes in Washington DC and Virginia:
Below are our DC classroom locations:
- Dupont Circle
- 1666 Connecticut Ave NW Washington D.C. 20009
- Logan Circle
- 1624 14th St NW Washington D.C. 20009
- Chinatown
- 601 I St NW Washington D.C. 20001
- Columbia Heights
- 3343 14th St NW Washington D.C. 20010
Below are our Virginia classroom locations:
- Falls Church
- Comining soon...
-
Private custom training on site or at your location
-
Project based training cn site or at your location
Time
-
Online Monday-Friday: 11 am-5:30 pm EST
-
DC Monday-Friday: 9 am-3:30 pm EST
-
DC/Online Saturdays: 11 am-5:30 pm EST
-
DC/Online Sundays: 1 pm-7:30 pm EST
-
Private custom & project based training: your preference
Software Versions
Our classes are taught on the most current version of software whenever possible. To request a specific version, please Contact Us or call us at 240-200-6131
Course Outline
Topics Covered in this Course
1- The Object Paradigm
- Objects and Classes
- Abstraction and Encapsulation
- Methods and Messages
- Interfaces, Inheritance, and Polymorphism
- Access Control
- The Business Case for OO Development
2- Managing and Participating in the OOA&D Approach
- Information Gathering Techniques
- Group Orientated Problem Solving
- Brainstorming, Role-Playing
- Managing Complexity via the "Iterative and Incremental" Approach
- Managing Design Sessions
- Design vs. Implementation
- Quick Prototyping
- Validation and Quality
3- Diagramming & Notational Techniques Using the UML
- Overview of Analysis and Design Phases
- UML Notation
- Analysis Diagramming Techniques
- Design Diagramming Techniques
- Generalization/Specialization
- Aggregation and Composition
- Association, Cardinality, Navigability
- Package and Deployment Diagrams
- Icons, Relationships, and Adornments
4- Requirements and Analysis Phase
- System Functions, Features and Constraints
- Behavioral Analysis
- Domain Analysis
- Identifying Use Cases
- Use Case Descriptions
- Using CRC Cards
- Containment and Composition
- Referential Aggregation
- Inheritance, SubTypes and Is-A Hierarchies
- Association and Link Relationships
- Diagramming System Events
- State Transition Diagramming
5- Design Phase
- Translating Analysis Concepts into Software Classes
- Optimizing Classes and Objects: The Multi-Tiered Architecture View
- Mapping System Functions to Objects
- Object to Object Visibility
- Collaboration Diagrams
- Sequence Diagrams
- Specifying Object Interfaces
- Specification Class Diagrams
6- Patterns
- Benefits of Patterns
- Using Patterns During Analysis
- Using Patterns During Design
- Design Patterns (Gang-of-Four Format)
- GRASP Patterns
- Model-View-Controller Pattern
- Persistence Patterns
- Patterns as Internal Documentation
7- Design Refinement
- Designing for Extensibility
- Designing for Reusability
- Partitioning the Class Space
- Checking Completeness and Correctness
- Testing Business Processes
- Design Metrics
- Discovering Reusable Patterns
8- Project Management and Implementation Issues
- Planning for Reusability
- Transition Strategies and Planning Legacy System Integration
- Managing the Development Cycle
- Partitioning Work
- Source Code Organization
- Choosing Tools and Languages
- Software Quality Metrics
9- OO Languages and Tools
- Survey of OO Languages
- The Role of Class Libraries
- The Role of OOA&D Tools
10- Advanced Design Concepts
- Expanding Inheritance Hierarchies
- Abstract Classes and Virtual Methods
- Overriding and Overloading
- Multiple Inheritance
- Interface versus Implementation Inheritance
11- Persistent Object and Database Issues
- The Coad Data Management Domain
- Object Persistence
- Object-Orientated Database Management Systems (ODBMS)
- Object Orientated versus Relational Databases
- Mapping Objects to Relational Data Structures
View Other Classes!