For more information contact us
Phone:
+1-425-748-5018
Fax: +1-425-644-2185
TrainingUSA@selagroup.com
Coming courses
Register/More info
More courses from
C++, OO, UML
Clean Code Workshop
C++ Debugging
Effective C++ in RT/Embedded Systems
Advanced Object-Oriented Software Development using ACE
Post Modern C++
Test Driven Development for C++ Developers
Design Patterns in C++
Modern C++
Object Orient Introduction
C++\CLI programming in the .NET environment
Object Oriented Programming in C++
Object Oriented Analysis / Design using UML
Post Modern C++ 2
C Programming
Advanced C Programming
Boost C++
Agile3 - Version: 1
AGILE Techniques for Object-Oriented Design
3 days course
Description
This outline presents a framework for a course on object-oriented analysis and design. This is intended to be a practical seminar that prepares people to “hit the ground running” after they are done. The course materials build on a foundation of concepts that support a level of understanding that will discourage students from applying the course ideas blindly. The course is not tied to any specific methodology or CASE tool. There are many “tools” offered in this course for problem identification and definition (the Satir change model), for capturing user wants and needs (use cases), and for reconciling structural and functional needs (CRC cards). The enterprise may want to use its own tools, such as Rose, to present source code in graphical format for ongoing solution domain analysis. However, those tools are central neither to the design principles nor to the design processes at the core of effective analysis and object-oriented design, and they are given their proper place subordinate to the core course concepts. About the Lecturer Dr. James O. Coplien University of Manchester, Institute of Science and Technology. Jim Coplien is a widely acknowledged expert on C++, software patterns, and patterns of organizational structure. He is a Member Emeritus of the Hillside Group. He was program chair of OOPSLA 1996. His publications include the landmark book “Advanced C++” as well as “Multi-Paradigm Design for C++”. He was a co-editor of two volumes of the Addison-Wesley pattern series.
Intended audience
System Designers and Architects Programmers
Prerequisites
The student should be familiar with basic Java and C++ programming constructs including member functions, inheritance, and information hiding. The student should also be familiar with a typical software development life cycle. The course focuses on software developers, project leads, and software architects as its audience. However, the course presents simple techniques such as use cases and CRC cards that offer powerful foundations for project management; as such, the course is also useful to managers.
Objectives
Analysis is understanding a system. We analyze systems to understand what we have to work with as a base for extension. We analyze domains to understand long-term recurring architectural structures. And we work with customers to understand their needs, and in particular to make sure that the solution will add value to the enterprise. Value comes from reducing cost and increasing profit - and on this first day, we lay the foundations for tools that will address both sides of profitability.
The object paradigm is one form of commonality and variability—a form supported by many programming languages and tools. This section looks at what the object paradigm can (and cannot!) do. The section presents basic definitions that emphasize a modern view that is more focused on objects rather than classes – a mistake the past decade has taught us to correct. This lays a foundation for roles and for techniques such as Java interfaces and C++ abstract base classes used as interfaces.
What most attracts people to the object paradigm is its notion of inheritance and subtyping. Contrary to popular belief, these features don’t appear to support reuse. On the other hand, they support architectural expressiveness and system maintainability—if used properly. This presentation goes beyond a staid definition of OO terms to show how objects can be used to build extensible systems and frameworks. It covers some of the more advanced topics in contemporary applied object orientation.
Topics
The software world
User behavioral requirements (use cases)
The provider business domain (paradigms)
The provider’s behavioral requirements (process)
What is design?
Solving problems
Dealing with want
Dealing with needs
Dealing with cost and schedule
Providing functionality
Building structure
Problem Identification and Definition
Definition of problem
Problem definition and systems thinking
The economic model: cost and revenues
Interviewing Techniques
The Satir change model
The Satir communication model
Who
What
When
Ask Why
Systems Thinking
Adding value to an enterprise
Value -> structure -> process
Hall’s value-based systems engineering
Theories of value
Economic, casuistic, emotive
Emergent system properties
Use Cases
Goal: Increase revenues
Terminology: Scenarios, roles, actors, etc
Fat use cases
Thin use cases
Application Domain Analysis
Goal: reducing cost
The Goals of Architecture and Design
Paradigms, Design and Analysis
Domain Analysis
Commonality Analysis
Variability Analysis
Positive and Negative Variability
The Object Paradigm
Definitions:
Object
Instantiation
Class
Abstract Data Type
Role
Modularity
Coupling and Cohesion
Example of Coupling and Cohesion
Modularity and Conway’s Law
Limits to modularity: aspects, relationships, patterns
Roots in E/R modeling
The stable data argument
Containment and Ownership Relationships
Access Control
Structuring Concepts
Classification, classes, and roles
Examples
Classes as templates
Roles as behavioural slices
A shapes example
Roles and multiple classification
Roles and Java Interfaces
Abstract base classes
The definition of type and abstract data type
Substitutability and the LSP
Polymorphism
Role-based modeling
Subtyping
Example
In-Depth Structuring Concepts
Preconditions and post-conditions
Inheritance versus sub-typing versus delegation
Object-based versus object-oriented
Partial types
Covariance and Contra-variance
Role-based Modeling
CRC cards: Classes, Responsibilities, and Collaborators
Who” is responsible?
Class naming, responsibility naming, etc.
Fine points of CRC facilitation
27 specific facilitation techniques and tools
Methods and Notations
UML (survey only)
ROOM: objects, ports, connectors (survey)
The Eiffel method: preconditions and postconditions
S&M Design: objects as state machines (overview)
Process: Iterative and Incremental Design
Refactoring
Aspects
MPD
The XP planning game
Taking the design into code
CRC card–to–role mapping
Role-to-class mapping
Agile3 Course
I would like a representative to contact me regarding this activity
*
*
*
*
*