| Overview 
 
 
				
				Learn how to use Object-Oriented techniques to analyze real-world requirements and to design solutions that are ready to code. Students learn how to identify and design objects, classes, and their relationships to each other, which includes links, associations, and inheritance. A strong emphasis is placed on diagram notation for use cases, class and object representation, links and associations, and object messages. This course utilizes UML 2.0 notation.
				
 Audience
 
 
 
 
Analysts, designers, and programmers responsible for applying OO techniques in their software engineering projects.
 Prerequisites
 
 Familiarity with structured techniques such as functional decomposition is helpful.
 
 Course duration
 
 5 Days
 
 Course outline
 
 
 
	Introduction to Analysis and Design
		Why is Programming Hard?The Tasks of Software DevelopmentModulesModelsModelingPerspectiveObjectsChangeNew Paradigms 
 Objects
		EncapsulationAbstractionObjectsClassesResponsibilitiesAttributesComposite ClassesOperations and MethodsVisibilityInheritanceInheritance ExampleProtected and Package VisibilityScopeClass Scope 
 Advanced Objects
		Constructors & DestructorsInstance CreationAbstract ClassesPolymorphismPolymorphism ExampleMultiple InheritanceSolving Multiple Inheritance ProblemsInterfacesInterfaces with Ball and Socket NotationTemplates 
 Classes and Their Relationships
		Class ModelsAssociationsMultiplicityQualified AssociationsRolesAssociation ClassesComposition and AggregationDependencies
	Using Class Models 
 Sequence Diagrams
		Sequence DiagramsInteraction FramesDecisionsLoopsCreating and Destroying ObjectsActivationSynchronous & Asynchronous The Objects Drive the InteractionsEvaluating Sequence DiagramsUsing Sequence Diagrams 
 Communication Diagrams
		Communication DiagramsCommunication and Class DiagramsEvaluating Communication DiagramsUsing Communication Diagrams 
 State Machine Diagrams
		What is State?State NotationTransitions and GuardsRegisters and ActionsMore ActionsInternal TransitionsSuperstates and SubstatesConcurrent StatesUsing State MachinesImplementation 
 Activity Diagrams
		Activity NotationDecisions and MergesForks and JoinsDrilling DownIterationPartitionsSignals
			Parameters and PinsExpansion RegionsUsing Activity Diagrams 
 Package, Component, and Deployment Diagrams
			Modeling Groups of Elements - Package DiagramsVisibility and ImportingStructural DiagramsComponents and InterfacesDeployment DiagramComposite Structure Diagrams
	Timing Diagrams
    Interaction Overview Diagrams
             
 Use Cases
		Use CasesUse Case Diagram ComponentsActor GeneralizationInclude
			ExtendSpecializeOther SystemsNarrativeTemplate for Use Case NarrativeUsing Use Cases  
 Process
		ProcessRisk ManagementTestReviewsRefactoringHistoryThe Unified ProcessAgile Processes 
 The Project
		InceptionElaborationElaboration IIConstruction IterationsConstruction Iterations - The Other Stuff 
 Domain Analysis
		Top View - The Domain PerspectiveData DictionaryFinding the ObjectsResponsibilities, Collaborators, and AttributesCRC CardsClass ModelsUse Case ModelsOther ModelsJudging the Domain Model 
 Requirements and Specification
		The GoalsUnderstand the ProblemSpecify a SolutionPrototypingThe Complex UserOther ModelsJudging the Requirements Model 
 Design of Objects
		DesignFactoring Design of Software ObjectsFeaturesMethodsCohesion of ObjectsCoupling between ObjectsCoupling and VisibilityInheritance 
 System Design
		DesignA Few RulesObject CreationClass ModelsInteraction DiagramsPrinting the CatalogPrinting the Catalog IIPrinting the Catalog IIIObject LinksAssociations 
 Refactoring
		RefactoringClues and CuesHow to RefactorA Few Refactoring Patterns 
 Appendix A - UML Syntax
 
 Appendix B - Design by Contract
		ContractsEnforcing ContractsInheritance and Contracts 
 Appendix C - University Summary
 
 Appendix D - Implementations 
 |