Title: COP 3331 OBJECT-ORIENTED ANALYSIS AND DESIGN
1COP 3331 OBJECT-ORIENTED ANALYSIS AND DESIGN
- Bob Myers
- Department of Computer Science
2COP 3331 Object Oriented Software Engineering
- What is Software Engineering (SE)?
- Involves more than just coding
- Problem Definition
- Problem Analysis
- High level system design (including hardware!)
- Design of classes/objects
- Implementation
- Testing
- Maintenance
3Modeling!
- Modeling is a nice way to abstract and simplify
some of the activities in software engineering - There are many modeling notations
- UML - Unified Modeling Language
- A nice way of representing things with diagrams
- Different types of diagrams for use with
different stages of software engineering - Works well with OOP.
4UML First Pass Use Case Diagrams
Package
SimpleWatch
Actor
ReadTime
SetTime
WatchUser
WatchRepairPerson
Use case
ChangeBattery
Use case diagrams represent the functionality of
the system from users point of view
5UML First Pass Class Diagrams
Class
Multiplicity
Association
SimpleWatch
1
1
1
1
1
1
2
2
Battery load()
Time now()
PushButton state push()release()
LCDDisplay
blinkIdx blinkSeconds() blinkMinutes() blinkHours(
) stopBlinking() referesh()
Attributes
Operations
Class diagrams represent the structure of the
system
6UML First Pass Sequence Diagram
Object
WatchUser
pressButton1()
blinkHours()
pressButton1()
blinkMinutes()
pressButton2()
incrementMinutes()
refresh()
pressButtons1And2()
commitNewTime()
stopBlinking()
Message
Activation
Sequence diagrams represent the behavior as
interactions
7UML First Pass Statechart Diagrams
State
Initial state
Event
button2Pressed
button12Pressed
Blink
Hours
Transition
button1Pressed
button2Pressed
button12Pressed
Blink
Minutes
button1Pressed
button12Pressed
button2Pressed
Blink
Stop
Seconds
Blinking
Final state
8Other SE issues
- Requirements Elicitation and Analysis
- Communication
- Management Issues
- Testing and Quality Assurance
- Design Patterns
- This is the stuff you will have to deal with in
the real world, if you work for a company doing
software development.