Object-Oriented Analysis and Design
Lesson 1:Introduction to
Software Engineering
Objectives
Define object technology and identify its place in the evolution of software engineering
Describe the differences between a structured approach and an object-oriented approach to software development
Identify the advantages and disadvantages of an object-oriented approach to software development
Discuss the need for analysis and design
Evolution ofSoftware Engineering Data flow
Programming languages
Software systems
Analysis and design methodologies
Object Technology
Objects maintain properties about their state
Advantages of anObject-Oriented Approach
Maintainable
Reusable
Scalable
Analysisand Design
Unified Software Development Process
Software crisis
Summary
Define object technology and identify its place in the evolution of software engineering
Describe the differences between a structured approach and an object-oriented approach to software development
Identify the advantages and disadvantages of an object-oriented approach to software development
Discuss the need for analysis and design
Lesson 2:Understanding the
Object Paradigm
Objectives
Explain the difference between classes and instances
Identify the benefits of abstraction and encapsulation
Define a simple object model using the “has a” and “uses a” relationships
Describe Jacobson’s application object types
Classes
Classes
Objects
Instantiation
Encapsulation
Methods
Accessors
Mutators
Abstraction
Used to manage complexity
ObjectRelationships
“has a”
“uses a”
Application Objects
Entity objects
Interface objects
Control objects
Summary
Explain the difference between classes and instances
Identify the benefits of abstraction and encapsulation
Define a simple object model using the “has a” and “uses a” relationships
Describe Jacobson’s application object types
Lesson 3:Inheritance
and Polymorphism
Objectives
Identify the benefits of inheritance
Identify the benefits of polymorphism
Define abstract classes
Identify the benefits of multiple inheritance
Inheritance
Inheritance “is a” relationship
Superclasses
Inheriting attributes- Subclasses
Inheriting methods
Extending components with inheritance
Polymorphism
The ability of subclasses to override methods defined in classes that are higher in the class hierarchy
Abstract Classes
Declare methods without providing implementation
MultipleInheritance
Inheritance from two or more superclasses
Summary
Identify the benefits of inheritance
Identify the benefits of polymorphism
Define abstract classes
Identify the benefits of multiple inheritance
Lesson 4:Software Development
Life Cycle
Objectives
Define software development life cycle
Describe the Waterfall life cycle model
Describe the V-Shaped life cycle model
Describe the Incremental life cycle model
Describe the Spiral life cycle model
Software DevelopmentLife Cycle Model
Requirements gathering
Design
Implementation
Testing
WaterfallLife Cycle Model
Classic, or linear-sequential, life cycle model
Characterized by a series of discrete phases that must be completed in a linear sequential order
V-ShapedLife Cycle Model
Adds emphasis to testing
IncrementalLife Cycle Model
Evolutionary- A working version of the software is
created by the end of the first iteration, and subsequent iterations build on the work of earlier iterations
SpiralLife Cycle Model
Incorporates risk analysis
Divided into four phases- Planning- Risk analysis- Engineering- Evaluation
Summary
Define software development life cycle
Describe the Waterfall life cycle model
Describe the V-Shaped life cycle model
Describe the Incremental life cycle model
Describe the Spiral life cycle model
Lesson 5:The Unified SoftwareDevelopment Process
Objectives
Describe the Unified Process
Identify the phases of the Unified Process
Identify the core workflows of the Unified Process
The Unified Process
Use-case driven
Architecture-centric
Iterative and incremental
Life Cycle ofthe Unified Process
Cycles- Single cycle
Phases
Inception
Elaboration- Architecture baseline
Construction- Beta release- Beta test
Transition
Iterations
Increments
Core Workflows
Requirements
Analysis
Design
Implementation
Test
Summary
Describe the Unified Process
Identify the phases of the Unified Process
Identify the core workflows of the Unified Process
Lesson 6:The Unified
Modeling Language
Objectives
Describe the history of the UML
Describe the purpose of a modeling language
Describe the purpose of models
Identify UML views
Models
Modeling levels- High-level models- Abstract models- Full specification models
Views
Static
Use-case
Implementation
Deployment
State machine
Activity
Interaction
Model management
Summary
Describe the history of the UML
Describe the purpose of a modeling language
Describe the purpose of models
Identify UML views
Lesson 7:Computer-Aided
Software Engineering
Objectives
Identify the role of CASE tools in the software development process
Identify the criteria for selecting a CASE tool
Identify the benefits and limitations of CASE tools
Install and use Argo/UML
Selecting a CASE Tool
Methodology
Flexibility
Collaboration
Diagram validation
Summary
Identify the role of CASE tools in the software development process
Identify the criteria for selecting a CASE tool
Identify the benefits and limitations of CASE tools
Install and use Argo/UML
Lesson 8:The Requirements
Workflow
Objectives
Describe the purpose of the requirements workflow
Describe the activities of the requirements workflow
Describe the deliverables of the requirements workflow
Create a list of candidate requirements
Create a simple domain model
Activities of theRequirements Workflow Listing possible requirements
Describing the context of the system
Capturing functional requirements
Capturing nonfunctional requirements
Requirements andthe Unified Process
Four deliverables- Domain model or business model- Use-case model- User-interface descriptions or
prototypes- Supplementary requirements document
Summary
Describe the purpose of the requirements workflow
Describe the activities of the requirements workflow
Describe the deliverables of the requirements workflow
Create a list of candidate requirements
Create a simple domain model
Lesson 9:Use-Case Modeling
Objectives
Identify the actors and use cases of a system
Describe the four types of use-case relationship
Develop a use-case model to capture project requirements
Introduction toUse-Case Diagrams
Actors
Use cases
Use-case relationships- Association- Generalization- Include- Extend
Developing aUse-Case Model
Top-level use-case diagrams
Top-level use-case descriptions
Sub-level use-case diagrams
Summary
Identify the actors and use cases of a system
Describe the four types of use-case relationship
Develop a use-case model to capture project requirements
Lesson 10:Activity Diagrams
Objectives
Describe the benefits of activity diagrams
Interpret activity diagrams
Create activity diagrams to describe use cases
Introduction toActivity Diagrams
Creating activity diagrams
Branches and merges
Forks and joins
Summary
Describe the benefits of activity diagrams
Interpret activity diagrams
Create activity diagrams to describe use cases
Lesson 11:Interface Designand Prototyping
Objectives
Identify the major goals of user interface design
Describe the different types of prototypes
Create a paper prototype
Design a system interface
Use the Backus-Naur Form to create an interface control document
User Interface Design
User interface ergonomics- Metaphor- Self-evidence- Consistency- State visualization
User InterfacePrototyping
Rapid prototyping
Paper prototyping
SpecifyingSystem Interfaces
Metasyntax- Backus-Naur Form
Summary
Identify the major goals of user interface design
Describe the different types of prototypes
Create a paper prototype
Design a system interface
Use the Backus-Naur Form to create an interface control document
Lesson 12:The Analysis Workflow
Objectives
Describe the purpose of the analysis workflow
Identify analysis classes
Define use-case realization—analysis
Analysis Classes
Entity class Boundary class Control class
Use-Case Realizations—Analysis A collaboration diagram
A flow-of-events description
A special-requirements description
Summary
Describe the purpose of the analysis workflow
Identify analysis classes
Define use-case realization—analysis
Lesson 13:Analysis Modeling
Objectives
Interpret collaboration diagrams
Create collaboration diagrams to illustrate a rough vision of system design
Create flow-of-events descriptions to accompany collaboration diagrams
Use CRC cards to aid in developing collaboration diagrams
Identify attributes
CollaborationDiagrams
Sequence numbers
Parameter passing
Return values
Message conditions
Multiplicity
Flow of Events and Special Requirements Textual description of the sequence of
events
Class Analysis
Attributes
Aggregation
Generalization
Summary
Interpret collaboration diagrams
Create collaboration diagrams to illustrate a rough vision of system design
Create flow-of-events descriptions to accompany collaboration diagrams
Use CRC cards to aid in developing collaboration diagrams
Identify attributes
Lesson 14:The Design Workflow
Objectives
Identify design subsystems
Identify design classes
Use interaction diagrams to assist in creating use-case realizations—design
Create a flow-of-events—design
Define implementation requirements
Create deployment diagrams to describe system architecture
Design Model
Design subsystems
Design classes
Use-case realizations—design
Use-CaseRealizations—Designs Class diagrams
Interaction diagrams
Flow-of-events—design
Implementation requirements
Architectural Design
Multi-tier models
Summary
Identify design subsystems
Identify design classes
Use interaction diagrams to assist in creating use-case realizations—design
Create a flow-of-events—design
Define implementation requirements
Create deployment diagrams to describe system architecture
Lesson 15:Class Diagrams
Objectives
Use class diagrams to illustrate system design
Describe the difference between reference objects and value objects
Identify when it is appropriate to use associations, aggregation, and composition
Use generalizations to illustrate inheritance
Introduction toClass Diagrams
Classes participate in four principal relationships- Association- Aggregation- Composition- Generalization
Association
Navigability
Multiplicity
Aggregation
Reference objects
Value objects
Composition
A type of “has a” relationship between a class and a value object
Generalization
The “is a” relationship
Summary
Use class diagrams to illustrate system design
Describe the difference between reference objects and value objects
Identify when it is appropriate to use associations, aggregation, and composition
Use generalizations to illustrate inheritance
Lesson 16:Sequence Diagrams
Objectives
Interpret sequence diagrams
Use sequence diagrams to illustrate the interactions between classes
Introduction toSequence Diagrams
Return values
Message conditions
Deletion
Multiplicity
Return stack
Summary
Interpret sequence diagrams
Use sequence diagrams to illustrate the interactions between classes
Lesson 17:Statechart Diagrams
Objectives
Interpret statechart diagrams
Develop statechart diagrams to illustrate the internal workings of individual classes
Introduction toStatechart Diagrams
States
Transitions
Superstates
Summary
Interpret statechart diagrams
Develop statechart diagrams to illustrate the internal workings of individual classes
Lesson 18:Design Quality Issues
Objectives
Identify elements of good design
Define cohesion
Define coupling
Use object-oriented design metrics
Interpret design metrics
Elements ofGood Design
Encapsulation
Abstraction
High cohesion
Loose coupling
Object-OrientedDesign Metrics
Chidamber and Kemerer- CBO- DIT- NOC
Metrics for object-oriented design- MHF- AHF- MIF- AIF- PF- CF
Summary
Identify elements of good design
Define cohesion
Define coupling
Use object-oriented design metrics
Interpret design metrics
Lesson 19:The
Implementation Workflow
Objectives
Describe the implementation process
Identify executable components
Generate program code from design classes
Define unit testing
Create an integration build plan
The Implementation Workflow
Identifying components
Integration build planning
Generating code from design classes
Unit Testing
Specification testing
Structure testing
Summary
Describe the implementation process
Identify executable components
Generate program code from design classes
Define unit testing
Create an integration build plan
Lesson 20:The Test Workflow
Objectives
Describe the test workflow
Define test case
Define test procedure
Define test component
Test Cases
Designing test cases
Test Procedures
Describes the method for performing one or more tests
Describes how inputs are entered into the system using the user interface
Summary
Describe the test workflow
Define test case
Define test procedure
Define test component
Object-OrientedAnalysis and Design
Introduction to Software Engineering
Understanding the Object Paradigm
Inheritance and Polymorphism
Software Development Life Cycle
The Unified Software Development Process
The Unified Modeling Language
Computer-Aided Software Engineering
Object-OrientedAnalysis and Design
The Requirements Workflow
Use-Case Modeling
Activity Diagrams
Interface Design and Prototyping
The Analysis Workflow
Analysis Modeling
The Design Workflow
Object-OrientedAnalysis and Design
Class Diagrams
Sequence Diagrams
Statechart Diagrams
Design Quality Issues
The Implementation Workflow
The Test Workflow