CISC 323: Intro to Software Engineering Review for Final Exam - - PDF document

cisc 323 intro to software engineering
SMART_READER_LITE
LIVE PREVIEW

CISC 323: Intro to Software Engineering Review for Final Exam - - PDF document


slide-1
SLIDE 1
✂ ✄ ✄☎ ✆ ✝ ✞ ☎ ✟ ✠ ✄ ✡ ✝ ✟ ☛ ☞ ✌ ✍ ✎ ✏ ✍✑ ✒ ✑ ✓ ☛ ☛ ✔ ✕ ✖ ✖ ✗ ✗ ✗✙✘ ✚ ✝ ✘ ✛ ✂ ✄ ✄☎ ✝ ✂ ✘ ✚✜ ✖✣✢ ✚ ✟ ✝ ✚ ✑ ✒ ✑

CISC 323: Intro to Software Engineering

Review for Final Exam

slide-2
SLIDE 2 ✒ ✁ ✂ ✄ ✄☎ ✆ ✝ ✞ ☎ ✟ ✠ ✄ ✡ ✝ ✟ ☛ ☞ ✌ ✍ ✎ ✏ ✍✑ ✒ ✑ ✓ ☛ ☛ ✔ ✕ ✖ ✖ ✗ ✗ ✗✙✘ ✚ ✝ ✘ ✛ ✂ ✄ ✄☎ ✝ ✂ ✘ ✚✜ ✖✣✢ ✚ ✟ ✝ ✚ ✑ ✒ ✑

Lecture Topics

  • Week 1: Introduction, Object-Oriented Programming
  • Week 2: Object-Oriented Programming & UML
  • Week 3: OOP, UML, Software Process
  • Week 4: Object-oriented Analysis
  • Week 5: Object-oriented Design
  • Week 6: Design Patterns
  • Week 7-8: Software Architecture
  • Week 9: Real-time and Safety-critical Systems
  • Week 10: Software Quality
slide-3
SLIDE 3 ✑ ✁ ✂ ✄ ✄☎ ✆ ✝ ✞ ☎ ✟ ✠ ✄ ✡ ✝ ✟ ☛ ☞ ✌ ✍ ✎ ✏ ✍✑ ✒ ✑ ✓ ☛ ☛ ✔ ✕ ✖ ✖ ✗ ✗ ✗✙✘ ✚ ✝ ✘ ✛ ✂ ✄ ✄☎ ✝ ✂ ✘ ✚✜ ✖✣✢ ✚ ✟ ✝ ✚ ✑ ✒ ✑

Omissions

– Material on COM from week 8 not be on the exam – Object-oriented testing from week 10 will not be

  • n exam
slide-4
SLIDE 4
✂ ✄ ✄☎ ✆ ✝ ✞ ☎ ✟ ✠ ✄ ✡ ✝ ✟ ☛ ☞ ✌ ✍ ✎ ✏ ✍✑ ✒ ✑ ✓ ☛ ☛ ✔ ✕ ✖ ✖ ✗ ✗ ✗✙✘ ✚ ✝ ✘ ✛ ✂ ✄ ✄☎ ✝ ✂ ✘ ✚✜ ✖✣✢ ✚ ✟ ✝ ✚ ✑ ✒ ✑

Assignments

  • Assignment 1: Advanced OOP
  • Assignment 2: OO Analysis
  • Assignment 3: OOD, Design Patterns, and

Architecture

  • Assignment 4: Testing and Inspection

– The bulk of the marks on the final will be for performing tasks similar to those asked for in assignments 2, 3, and 4.

slide-5
SLIDE 5
✂ ✄ ✄☎ ✆ ✝ ✞ ☎ ✟ ✠ ✄ ✡ ✝ ✟ ☛ ☞ ✌ ✍ ✎ ✏ ✍✑ ✒ ✑ ✓ ☛ ☛ ✔ ✕ ✖ ✖ ✗ ✗ ✗✙✘ ✚ ✝ ✘ ✛ ✂ ✄ ✄☎ ✝ ✂ ✘ ✚✜ ✖✣✢ ✚ ✟ ✝ ✚ ✑ ✒ ✑

Week 1: Introduction, Object- Oriented Programming

  • This week was mainly an introduction to the

course

  • Topics covered:

– Abstraction – Different types of UML diagrams – Introduction to class diagrams

slide-6
SLIDE 6
✂ ✄ ✄☎ ✆ ✝ ✞ ☎ ✟ ✠ ✄ ✡ ✝ ✟ ☛ ☞ ✌ ✍ ✎ ✏ ✍✑ ✒ ✑ ✓ ☛ ☛ ✔ ✕ ✖ ✖ ✗ ✗ ✗✙✘ ✚ ✝ ✘ ✛ ✂ ✄ ✄☎ ✝ ✂ ✘ ✚✜ ✖✣✢ ✚ ✟ ✝ ✚ ✑ ✒ ✑

Employee Office 1 1..* worksIn Window ConsoleW indow 1 1..* DialogBox Control Event association, showing nav igability and multiplicity "has a" dependency "uses" Generalization "kind of"

slide-7
SLIDE 7
✂ ✄ ✄☎ ✆ ✝ ✞ ☎ ✟ ✠ ✄ ✡ ✝ ✟ ☛ ☞ ✌ ✍ ✎ ✏ ✍✑ ✒ ✑ ✓ ☛ ☛ ✔ ✕ ✖ ✖ ✗ ✗ ✗✙✘ ✚ ✝ ✘ ✛ ✂ ✄ ✄☎ ✝ ✂ ✘ ✚✜ ✖✣✢ ✚ ✟ ✝ ✚ ✑ ✒ ✑

Week 2: Object-Oriented Programming & UML

  • Topics Covered:

– Three elements of OOP: Encapsulation, Inheritance, Polymorphism – Constructors – Abstract classes – Use-case diagrams – Sequence diagrams

slide-8
SLIDE 8
✂ ✄ ✄☎ ✆ ✝ ✞ ☎ ✟ ✠ ✄ ✡ ✝ ✟ ☛ ☞ ✌ ✍ ✎ ✏ ✍✑ ✒ ✑ ✓ ☛ ☛ ✔ ✕ ✖ ✖ ✗ ✗ ✗✙✘ ✚ ✝ ✘ ✛ ✂ ✄ ✄☎ ✝ ✂ ✘ ✚✜ ✖✣✢ ✚ ✟ ✝ ✚ ✑ ✒ ✑

Three elements of OOP

  • Three basic elements of Object-Oriented

Programming:

– encapsulation

✁ ✂✄ ☎ ✆ ✄ ✝ ✞✠✟ ✝ ✄ ✡ ✡☞☛ ✞ ✌✎✍ ✡✑✏ ✒ ✓ ✔ ✏ ✡ ✕✗✖ ✘ ✒ ✡ ✖ ✝ ✏ ✡ ✕ ✏ ☛ ✞✠✟ ✄ ☎ ✙ ✄ ✒ ✒

– inheritance

✚ ✘ ✏ ☛ ✞✜✛ ✞ ✟ ✝ ✄ ☎ ✙ ✄ ✒ ✒ ✢ ☛ ✖ ✔ ✄ ✒ ✞ ✔ ✞ ✙ ✄ ☛ ☎ ✙ ✄ ✒ ✒

– polymorphism

✚ ✡☞☛ ✏ ✄ ✡ ✞ ✟ ✝ ✖ ✌ ✣ ✏ ☎ ✡ ✒ ✞✠✟ ✄ ✝ ✏ ✟ ✏ ☛ ✞ ☎ ✤ ✄ ✥✧✦ ✤ ✞ ✡ ✕ ✔ ✏ ✄ ✟ ✞✠✟ ✝ ✖ ✢ ✔ ✏ ✡ ✕ ✖ ✘ ☎✄ ✙ ✙ ✚ ✘ ✏ ✂✏ ✟ ✘ ✞✠✟ ✝ ✖ ✟ ☎ ✙ ✄ ✒ ✒
slide-9
SLIDE 9
✂ ✄ ✄☎ ✆ ✝ ✞ ☎ ✟ ✠ ✄ ✡ ✝ ✟ ☛ ☞ ✌ ✍ ✎ ✏ ✍✑ ✒ ✑ ✓ ☛ ☛ ✔ ✕ ✖ ✖ ✗ ✗ ✗✙✘ ✚ ✝ ✘ ✛ ✂ ✄ ✄☎ ✝ ✂ ✘ ✚✜ ✖✣✢ ✚ ✟ ✝ ✚ ✑ ✒ ✑

Use-case diagram

Add Resource Remove Resource Update Resource Resource Manager Find Resource

<<uses>> <<uses>>

Assign Skill to Resource Unassign Skill from Resource

<<extends>> <<extends>>

slide-10
SLIDE 10
✁ ✂ ✄ ✄☎ ✆ ✝ ✞ ☎ ✟ ✠ ✄ ✡ ✝ ✟ ☛ ☞ ✌ ✍ ✎ ✏ ✍✑ ✒ ✑ ✓ ☛ ☛ ✔ ✕ ✖ ✖ ✗ ✗ ✗✙✘ ✚ ✝ ✘ ✛ ✂ ✄ ✄☎ ✝ ✂ ✘ ✚✜ ✖✣✢ ✚ ✟ ✝ ✚ ✑ ✒ ✑

Sequence Diagram

Customer Cashier Cook

Place order Give money Send food Announce price Give food Request food

A sequence of messages may repeat

Ask for more money [until enough money]

slide-11
SLIDE 11
✂ ✄ ✄☎ ✆ ✝ ✞ ☎ ✟ ✠ ✄ ✡ ✝ ✟ ☛ ☞ ✌ ✍ ✎ ✏ ✍✑ ✒ ✑ ✓ ☛ ☛ ✔ ✕ ✖ ✖ ✗ ✗ ✗✙✘ ✚ ✝ ✘ ✛ ✂ ✄ ✄☎ ✝ ✂ ✘ ✚✜ ✖✣✢ ✚ ✟ ✝ ✚ ✑ ✒ ✑

Week 3: OOP, UML, Software Process

  • Topics Covered:

– Waterfall process – Software prototyping – Microsoft Process

slide-12
SLIDE 12
✂ ✄ ☎ ☎✆ ✝ ✞ ✟ ✆ ✠ ✡ ☎ ☛ ✞ ✠ ☞ ✌ ✍ ✎ ✏ ✑ ✎✒ ✁ ✒ ✓ ☞ ☞ ✔ ✕ ✖ ✖ ✗ ✗ ✗✙✘ ✚ ✞ ✘ ✛ ✄ ☎ ☎✆ ✞ ✄ ✘ ✚✜ ✖✣✢ ✚ ✠ ✞ ✚ ✒ ✁ ✒

Waterfall Model

System Requirements Software Requirements Product Design Program Design Coding Testing Operations

✤✥ ✦ ✧ ★ ✩ ✦ ✪ ✩ ✫ ✬✭✯✮ ✰ ✱ ✦ ✱✲ ✥ ✦ ✲ ★ ✳ ✭ ✴ ✭ ✵ ✭ ✶ ✩✷ ✸ ✭ ✦ ★ ✩ ✹ ✺ ✱ ✻ ✲ ✭ ✼ ✩ ✹ ★ ✽ ✱ ✻ ✭ ✼ ✫ ✧ ★ ✭ ✸ ✧ ✾ ✿ ✩ ✦ ✬✭ ✷ ★ ✧ ✱ ✦ ❀ ❁ ✭ ✬ ✳ ✦ ✥ ❂ ❃ ✭ ✧ ✮ ❄ ❅ ❆ ❇
slide-13
SLIDE 13
✂ ✄ ☎ ☎✆ ✝ ✞ ✟ ✆ ✠ ✡ ☎ ☛ ✞ ✠ ☞ ✌ ✍ ✎ ✏ ✑ ✎✒ ✁ ✒ ✓ ☞ ☞ ✔ ✕ ✖ ✖ ✗ ✗ ✗✙✘ ✚ ✞ ✘ ✛ ✄ ☎ ☎✆ ✞ ✄ ✘ ✚✜ ✖✣✢ ✚ ✠ ✞ ✚ ✒ ✁ ✒

The Microsoft Triangle

  • Decision making focuses on three of the dimensions of

quality in the end product: – Functions supported – Time to Market – Implementation defects remaining

  • rapid development, daily builds, testing buddies
  • evolving requirements, work from vision statement
  • heavy reliance on testing, multiple testing strategies
  • well established plans and schedules
slide-14
SLIDE 14
✂ ✄ ☎ ☎✆ ✝ ✞ ✟ ✆ ✠ ✡ ☎ ☛ ✞ ✠ ☞ ✌ ✍ ✎ ✏ ✑ ✎✒ ✓ ✒ ✔ ☞ ☞ ✕ ✖ ✗ ✗ ✘ ✘ ✘✚✙ ✛ ✞ ✙ ✜ ✄ ☎ ☎✆ ✞ ✄ ✙ ✛✢ ✗✤✣ ✛ ✠ ✞ ✛ ✒ ✓ ✒

Microsoft Process

Planning (3-12 months) Stabilization (3-8 months) Development (6-12 months) Stabilization (3-8 months) Milestone 0 Subproject 1 Subproject 2 Subproject 3 Feature Complete Visual Freeze Release Code Complete

slide-15
SLIDE 15
✄ ☎ ☎✆ ✝ ✞ ✟ ✆ ✠ ✡ ☎ ☛ ✞ ✠ ☞ ✌ ✍ ✎ ✏ ✑ ✎✒ ✓ ✒ ✔ ☞ ☞ ✕ ✖ ✗ ✗ ✘ ✘ ✘✚✙ ✛ ✞ ✙ ✜ ✄ ☎ ☎✆ ✞ ✄ ✙ ✛✢ ✗✤✣ ✛ ✠ ✞ ✛ ✒ ✓ ✒

Microsoft Process

Release Planning (3-12 months) Stabilization (3-8 months) Development (6-12 months) Stabilization (3-8 months) Milestone 0 Subproject 1 Subproject 2 Subproject 3 Code, test, optimize, stabilize (6-10 weeks) Integration test, debug (2-5 weeks) Buffer time (2-5 weeks)

slide-16
SLIDE 16
✄ ☎ ☎✆ ✝ ✞ ✟ ✆ ✠ ✡ ☎ ☛ ✞ ✠ ☞ ✌ ✍ ✎ ✏ ✑ ✎✒ ✓ ✒ ✔ ☞ ☞ ✕ ✖ ✗ ✗ ✘ ✘ ✘✚✙ ✛ ✞ ✙ ✜ ✄ ☎ ☎✆ ✞ ✄ ✙ ✛✢ ✗✤✣ ✛ ✠ ✞ ✛ ✒ ✓ ✒

Clarifications

  • Dependency vs. Association
✁ ✂☎✄ ✄ ✆✝ ✞☎✟ ✠ ✞ ✆✡ ✞ ✄ ☛✌☞ ✠✎✍ ☞ ☞ ✡ ✆ ☛ ✏ ☞ ✝ ✠✑✄ ✒ ✆ ☛ ✏ ☞ ✝ ✠ ✄ ✆ ✓ ✠✎✔ ✕☞ ✂ ✝ ✆✡ ✠ ✟ ✞ ✡ ✆ ☛ ✏ ☞ ✝ ✠✑✄ ✆ ✓ ✠ ✔ ✕☞ ✖ ✗ ✁ ✘ ☞ ✕ ☞ ✡ ✙ ☞ ✡ ✝ ✔ ✞ ✄ ☛✌☞ ✠ ✍ ☞ ☞ ✡ ✝ ✚ ✟ ✄ ✄ ☞ ✄ ✒ ✞ ✓ ✝ ✚ ✟ ✄ ✄ ✂ ✝ ✛ ✟ ✡ ✜ ☞ ✄✣✢ ✠ ✛ ☞ ✡ ✝ ✚ ✟ ✄ ✄ ✖ ✤✟ ✔ ☛✌☞ ✟ ✓ ✓ ☞ ✝ ✠ ☞ ✙ ✗
  • Composition vs. Aggregation
✁ ✥ ✡ ✝ ✆ ✤ ✕ ✆ ✄ ✞ ✠ ✞ ✆ ✡ ✢ ✙ ☞ ✚ ☞ ✠ ✞ ✡ ✜ ✠ ✛ ☞ ✛ ✆ ✚ ✙ ☞ ✦ ✝ ✚ ✟ ✄ ✄ ✤ ☞ ✟ ✡ ✄ ✟ ✚ ✄ ✆ ✙ ☞ ✚ ☞ ✠ ✞ ✡ ✜ ✠ ✛ ☞ ✝ ✆ ✤ ✕ ✆ ✄ ☞ ✙ ✝ ✚ ✟ ✄ ✄ ☞ ✄✣✧ ✁ ✥ ✡ ✟ ✜ ✜ ✦ ☞ ✜ ✟ ✠ ✞ ✆ ✡ ✢ ✠ ✛ ☞ ✛ ✆ ✚ ✙ ☞ ✦ ✝ ✚ ✟ ✄ ✄ ✝ ✆ ✡ ✠ ✟ ✞ ✡ ✄ ✟ ✦ ☞ ✓ ☞ ✦ ☞ ✡ ✝ ☞ ✠ ✆ ✆ ☛ ✏ ☞ ✝ ✠✑✄ ✆ ✓ ✟ ✡ ✆ ✠ ✛ ☞ ✦ ✝ ✚ ✟ ✄ ✄ ✁ ✍ ✛ ✞ ✝ ✛ ✤ ✟ ✔ ☛✌☞ ✄ ✛ ✟ ✦ ☞ ✙ ✧ ★ ✩ ✪ ✫✎✬ ✫✎✬ ✭ ✪✯✮ ✰ ✪✲✱ ✳ ✴ ✵ ✶ ✷ ✱ ✸ ✰ ✹ ✳ ✸ ✺ ✱ ✷ ✳ ✻ ✱ ✰ ✪ ✳ ✰ ✮ ✼ ✶ ✬ ✪ ✼ ✶ ✽ ✻ ✸ ✱ ✾ ✱ ✴ ✶ ✬ ✱ ✹ ✼ ✷✿ ✼ ✬ ✫ ✰ ✫ ✼ ✸ ✰ ✼ ✻ ✱ ✬ ✹ ✴ ✫ ✺ ✱ ✳ ✬ ✬ ✼ ✹ ✫ ✳ ✰ ✫ ✼ ✸ ✬ ✺ ✱ ✰ ✭ ✱ ✱ ✸ ❀ ✳ ✾ ✳ ✹ ✽ ✳ ✬ ✬ ✱ ✬❂❁
slide-17
SLIDE 17
✂ ✄ ☎ ☎✆ ✝ ✞ ✟ ✆ ✠ ✡ ☎ ☛ ✞ ✠ ☞ ✌ ✍ ✎ ✏ ✑ ✎✒ ✓ ✒ ✔ ☞ ☞ ✕ ✖ ✗ ✗ ✘ ✘ ✘✚✙ ✛ ✞ ✙ ✜ ✄ ☎ ☎✆ ✞ ✄ ✙ ✛✢ ✗✤✣ ✛ ✠ ✞ ✛ ✒ ✓ ✒

UML "Cheat Sheet" (1)

Employee name: String wage: double pay(hours: double) amountToPay(): double

class diagram

Mary: Executive name = "Mary" wage = 35

  • bject diagram

Employee Office

  • ccupant

workplace

worksIn

association with name, roles, quantifiers

1..* 1

slide-18
SLIDE 18
✄ ☎ ☎✆ ✝ ✞ ✟ ✆ ✠ ✡ ☎ ☛ ✞ ✠ ☞ ✌ ✍ ✎ ✏ ✑ ✎✒ ✓ ✒ ✔ ☞ ☞ ✕ ✖ ✗ ✗ ✘ ✘ ✘✚✙ ✛ ✞ ✙ ✜ ✄ ☎ ☎✆ ✞ ✄ ✙ ✛✢ ✗✤✣ ✛ ✠ ✞ ✛ ✒ ✓ ✒

UML "Cheat Sheet" (2)

Arrows:

✁✂ ✄ ☎✝✆ ✂ ✞ ☎ ✟ ☎ ✠☛✡ ☞✌ ✍✎ ✌✏ ☎ ✠ ☎ ✌ ✁ ✑ ✒ ✓ ✔✖✕ ✟ ✕ ✠ ✕ ✔✘✗ ✠☛✙ ✂ ☞ ✚ ✔✖✕ ✟✖✕ ✠ ✕ ✔✛ ✂ ✆ ✆ ✙ ✕ ✆ ✂ ✠ ☎ ✌ ✁ ✑ ✠☛✙ ✂ ☞ ✚ ✍ ✂ ✡ ✞ ✕ ✎ ✂ ✙ ✠ ✌ ✜ ✏ ✕ ✄ ✕ ✙ ✂ ✟ ✒ ✓ ✏ ✛ ✆ ✕ ✁ ✕ ✙ ✂ ✟ ☎✣✢ ✂ ✠ ☎ ✌ ✁ ✑ ☎ ✁ ✤ ✕ ✙ ☎ ✠ ✂ ✁ ☞ ✕ ✛ ☎ ✍✎ ✟✖✕ ✍ ✕ ✁ ✠ ✏ ☎ ✁ ✠ ✕ ✙ ✜ ✂ ☞ ✕ ✔✖✕ ✎ ✕ ✁ ✔ ✕ ✁ ☞ ✡
slide-19
SLIDE 19
✂ ✄ ☎ ☎✆ ✝ ✞ ✟ ✆ ✠ ✡ ☎ ☛ ✞ ✠ ☞ ✌ ✍ ✎ ✏ ✑ ✎✒ ✓ ✒ ✔ ☞ ☞ ✕ ✖ ✗ ✗ ✘ ✘ ✘✚✙ ✛ ✞ ✙ ✜ ✄ ☎ ☎✆ ✞ ✄ ✙ ✛✢ ✗✤✣ ✛ ✠ ✞ ✛ ✒ ✓ ✒

UML "Cheat Sheet" (3)

Abstract Classes & Methods: use italics or write "abstract" Interface: use <<interface>> stereotype or represent by small circle (no methods shown)

CD Song * 1..*

track number

qualifier Resource Skill * * Experience

association class

slide-20
SLIDE 20 ✓ ✂ ✄ ☎ ☎✆ ✝ ✞ ✟ ✆ ✠ ✡ ☎ ☛ ✞ ✠ ☞ ✌ ✍ ✎ ✏ ✑ ✎✒ ✓ ✒ ✔ ☞ ☞ ✕ ✖ ✗ ✗ ✘ ✘ ✘✚✙ ✛ ✞ ✙ ✜ ✄ ☎ ☎✆ ✞ ✄ ✙ ✛✢ ✗✤✣ ✛ ✠ ✞ ✛ ✒ ✓ ✒

Use Case Diagram

circles are "use cases" stick figures are "actors" non-human actor: box with <<actor>>

slide-21
SLIDE 21
✄ ☎ ☎✆ ✝ ✞ ✟ ✆ ✠ ✡ ☎ ☛ ✞ ✠ ☞ ✌ ✍ ✎ ✏ ✑ ✎✒ ✓ ✒ ✔ ☞ ☞ ✕ ✖ ✗ ✗ ✘ ✘ ✘✚✙ ✛ ✞ ✙ ✜ ✄ ☎ ☎✆ ✞ ✄ ✙ ✛✢ ✗✤✣ ✛ ✠ ✞ ✛ ✒ ✓ ✒

Sequence Diagram

✂ ✄ ☎ ✁
  • ✆✝
✞ ✟ ✆ ✠ ✡
☛✌☞ ✁ ✆✍ ✍
✎✏ ✆ ✝ ✑
  • ✆✝
✏ ✆ ✝ ✑
  • ✆✝
☎ ✒ ✞ ✏ ✆ ✝ ✑
  • ✆✝
✟ ✄ ☎ ✏ ✓ ✂ ✁ ☞

Customer Cashier Cook

Place order Give money Send food Announce price Give food Request food Ask for more money [until enough money]

slide-22
SLIDE 22
✂ ✄ ✄☎ ✆ ✝ ✞ ☎ ✟ ✠ ✄ ✡ ✝ ✟ ☛ ☞ ✌ ✍ ✎ ✏ ✍✑
✒ ☛ ☛ ✓ ✔ ✕ ✕ ✖ ✖ ✖✘✗ ✙ ✝ ✗ ✚ ✂ ✄ ✄☎ ✝ ✂ ✗ ✙✛ ✕✢✜ ✙ ✟ ✝ ✙ ✑

Week 4: Object-oriented Analysis

  • Unified Approach
  • Differences between analysis & design
  • Layered approach to developing systems

(View, Business, Access)

  • Use-case and activity modeling
  • Dangers of activity modeling
slide-23
SLIDE 23
✁ ✂ ✄ ✄☎ ✆ ✝ ✞ ☎ ✟ ✠ ✄ ✡ ✝ ✟ ☛ ☞ ✌ ✍ ✎ ✏ ✍✑
✒ ☛ ☛ ✓ ✔ ✕ ✕ ✖ ✖ ✖✘✗ ✙ ✝ ✗ ✚ ✂ ✄ ✄☎ ✝ ✂ ✗ ✙✛ ✕✢✜ ✙ ✟ ✝ ✙ ✑

Documentation & Traceability

  • f use-cases,

analysis, design, UI, and past Experiences Patterns

Repository UML Based Modeling

Construction

Component Based Development User satisfaction usability tests, quality assurance test

Continuous Testing

Refine and iterate

Identify Actors

Develop Use- Cases, activity diagrams Develop interaction diagrams Identify classes, relationships, attributes & methods

Continuous Testing

Designv view and access Layers and prototypes

Apply Design Axioms

Design classes, their attributes, methods, association, structure ... User satisfaction & Usability tests based on use cases

Build UML class diagram

O-O Analysis O-O Design

Layered Approach

prototyping

slide-24
SLIDE 24
✂ ✄ ✄☎ ✆ ✝ ✞ ☎ ✟ ✠ ✄ ✡ ✝ ✟ ☛ ☞ ✌ ✍ ✎ ✏ ✍✑
✒ ☛ ☛ ✓ ✔ ✕ ✕ ✖ ✖ ✖✘✗ ✙ ✝ ✗ ✚ ✂ ✄ ✄☎ ✝ ✂ ✗ ✙✛ ✕✢✜ ✙ ✟ ✝ ✙ ✑

Three-Layered Architecture

Business Layer View Layer Access Layer

slide-25
SLIDE 25
✂ ✄ ✄☎ ✆ ✝ ✞ ☎ ✟ ✠ ✄ ✡ ✝ ✟ ☛ ☞ ✌ ✍ ✎ ✏ ✍✑
✒ ☛ ☛ ✓ ✔ ✕ ✕ ✖ ✖ ✖✘✗ ✙ ✝ ✗ ✚ ✂ ✄ ✄☎ ✝ ✂ ✗ ✙✛ ✕✢✜ ✙ ✟ ✝ ✙ ✑
slide-26
SLIDE 26
✂ ✄ ✄☎ ✆ ✝ ✞ ☎ ✟ ✠ ✄ ✡ ✝ ✟ ☛ ☞ ✌ ✍ ✎ ✏ ✍✑
✒ ☛ ☛ ✓ ✔ ✕ ✕ ✖ ✖ ✖✘✗ ✙ ✝ ✗ ✚ ✂ ✄ ✄☎ ✝ ✂ ✗ ✙✛ ✕✢✜ ✙ ✟ ✝ ✙ ✑

Week 5: Object-oriented Design

  • Transition from OOA to OOD, including

Classification

  • Modular design, including cohesion &

coupling

  • Importance of interfaces, and how to

implement in Java

slide-27
SLIDE 27
✂ ✄ ✄☎ ✆ ✝ ✞ ☎ ✟ ✠ ✄ ✡ ✝ ✟ ☛ ☞ ✌ ✍ ✎ ✏ ✍✑
✒ ☛ ☛ ✓ ✔ ✕ ✕ ✖ ✖ ✖✘✗ ✙ ✝ ✗ ✚ ✂ ✄ ✄☎ ✝ ✂ ✗ ✙✛ ✕✢✜ ✙ ✟ ✝ ✙ ✑

The Challenge of Classification

✁ ✂ ✄ ☎✝✆ ✞ ✞ ✟ ✠ ✆ ✄ ☎ ✡ ✞☞☛ ✌ ✌ ✟ ✍ ✟ ✡ ☛ ☎ ✟ ✎ ✄ ✟ ✌ ✟ ✄ ☎✝✆ ✞ ✞ ✆ ✡ ☎✑✏ ☛ ✞ ✞✓✒ ✔ ☛ ✕ ✖ ✗ ✎ ✕ ✘ ☛ ✄ ✖ ✙☛ ✒ ✌ ✆ ✆ ✙ ✕ ☛ ☎ ✔ ✆ ✕ ☛ ✕ ✚ ✟ ☎ ✕ ☛ ✕ ✒✜✛ ✁ ✢ ☛ ✕ ☎ ✟ ✄ ☛ ✄ ✖ ✣ ✖ ✆ ✞ ✞ ✔☞☛ ✤ ✆ ✎ ✚ ✌ ✆ ✕ ✤ ✆ ✖ ✟ ✄ ✎ ✚ ✥ ✆ ✡ ☎✧✦ ✎ ✕ ✟ ✆ ✄ ☎ ✆ ✖ ☛ ✄☛ ✞ ✒ ✌ ✟ ✌ ☛ ✄ ✖ ✖ ✆ ✌ ✟ ✠ ✄✩★ ☎ ✔ ☛ ☎ ✪ ✫ ✬✑✭ ✮✰✯✱ ✲✴✳ ✯ ✭ ✵ ✶ ✷✑✸ ✱ ✲ ✱ ✯ ✭ ✶ ✸ ✱ ✯ ✲ ✸ ✹ ✵ ✺ ✻✽✼ ✸ ✾ ✻ ✭ ✿ ✵ ✺ ✸ ✲ ❀ ✯ ✭ ✵ ✭ ✸ ❁ ✯ ❂ ❃ ❄

Employer Employee Pet Owner Good Credit Risk

slide-28
SLIDE 28 ✁ ✂ ✄ ☎ ☎✆ ✝ ✞ ✟ ✆ ✠ ✡ ☎ ☛ ✞ ✠ ☞ ✌ ✍ ✎ ✏ ✑ ✎✒
✓ ☞ ☞ ✔ ✕ ✖ ✖ ✗ ✗ ✗✙✘ ✚ ✞ ✘ ✛ ✄ ☎ ☎✆ ✞ ✄ ✘ ✚✜ ✖✣✢ ✚ ✠ ✞ ✚ ✒

Approaches for Identifying Classes

  • The noun phrase approach.
  • The common class patterns approach.
  • The use-case driven approach.
  • The class responsibilities collaboration (CRC)

approach.

slide-29
SLIDE 29 ✁ ✂ ✄ ☎ ☎✆ ✝ ✞ ✟ ✆ ✠ ✡ ☎ ☛ ✞ ✠ ☞ ✌ ✍ ✎ ✏ ✑ ✎✒
✓ ☞ ☞ ✔ ✕ ✖ ✖ ✗ ✗ ✗✙✘ ✚ ✞ ✘ ✛ ✄ ☎ ☎✆ ✞ ✄ ✘ ✚✜ ✖✣✢ ✚ ✠ ✞ ✚ ✒

Splitting System Into Components

  • Guidelines

– Cohesion: Each component should have a clear, simple purpose – Coupling: Dependencies between components should be minimized

slide-30
SLIDE 30
✄ ☎ ☎✆ ✝ ✞ ✟ ✆ ✠ ✡ ☎ ☛ ✞ ✠ ☞ ✌ ✍ ✎ ✏ ✑ ✎✒
✓ ☞ ☞ ✔ ✕ ✖ ✖ ✗ ✗ ✗✙✘ ✚ ✞ ✘ ✛ ✄ ☎ ☎✆ ✞ ✄ ✘ ✚✜ ✖✣✢ ✚ ✠ ✞ ✚ ✒

Week 6: Design Patterns

✁ ✂☎✄ ✆ ✝☎✞ ✟ ✠☎✡ ☛ ☛ ✄ ☞ ✟ ✆ ✄ ✟✌ ✡ ✍ ✆ ✎ ✏ ✡ ☛ ✄ ✞ ✄ ✟ ✄ ☞ ✝☎✌ ✆✑ ✏ ✎ ☛ ✝ ✑ ✟ ✆ ☛ ✑ ✌ ✑ ✒ ✒ ✑ ✟ ✏✔✓ ✑ ✌ ✌ ✎ ☞ ☞ ✝ ✟ ✞ ✍ ☞ ✑ ✕ ✏ ✄ ✒ ✆ ✝ ✟ ✖ ✄ ✆ ✝ ✞ ✟ ✗ ✘☎✙ ✚ ✛ ✛ ✜ ✢ ✣ ✙ ✤✥ ✜ ✦ ✧ ✜ ✙ ✚ ✜ ✢★ ✜ ✚ ✢ ✥ ✩ ✪ ✛ ✚ ✧ ✪ ✜ ★ ✤ ✢ ✛ ✜ ✦ ✛ ✫ ✬ ✭ ✄ ✌ ✮ ✡ ✟ ✝ ✆ ✒ ✯ ✑ ☞ ✖ ✄ ✆ ✌ ☞ ✝ ✕ ✝ ✟✞ ✒ ✝ ✌ ☞ ✑✱✰ ✡ ☞ ✌ ✮ ✝ ☛ ✄ ✌ ☛ ✎ ☞ ✄ ✆ ✬ ✲ ✮ ✄ ✳ ✡ ✟✞ ✑ ✯ ✴ ✑ ✎ ☞ ☛ ✄ ✵ ☛ ✶ ✡ ✆ ☛ ✮ ✄ ✯ ✝ ☞ ✆ ☛ ✶ ✝ ✖ ✄ ✏ ✓ ☞ ✄ ✡ ✖ ✶ ✑ ☞ ✷ ✑ ✟ ✍✡ ☛ ☛ ✄ ☞ ✟ ✆✹✸ ✡ ✟ ✖ ☞ ✄ ✒ ✡ ✝ ✟ ✆ ✡ ✶ ✝ ✖ ✄ ✏✔✓ ✌ ✝ ☛ ✄ ✖ ✡ ✟ ✖ ✎ ✆ ✄ ✖ ☞ ✄ ✯ ✄ ☞ ✄ ✟ ✌ ✄ ✗ ✺ ✛ ✻ ✤ ✩ ✪✼ ✽ ✜ ✾✿ ✤ ✤ ✼ ✚ ✼ ✜ ✾ ✛ ✤ ✾ ✛ ✪ ✜ ✾ ✫ ✛ ✫ ❀ ✚ ✥ ✛ ❁ ✙ ✤ ✩ ✿ ❁ ✛ ❁ ✜ ✧ ✾ ✛ ✛ ✜ ✙ ✢ ✫ ✼ ✚ ✫ ★ ✩ ✫ ✫ ✜ ✼ ✚ ✢ ★ ✪ ✾ ✫ ✫ ✬ ✠☎✡ ☛ ☛ ✄ ☞ ✟ ✆ ☞ ✡ ☞ ✄ ✏✔✓ ✄ ✵ ✝ ✆ ☛ ✑ ✟ ☛ ✮ ✄ ✝ ☞ ✑ ✶ ✟ ✸ ☛ ✮ ✄ ✓ ✑ ✯ ☛ ✄ ✟ ✶ ✑ ☞ ✷ ☛ ✑ ✞ ✄ ☛ ✮ ✄ ☞ ☛ ✑ ✆✑ ✏✔❂ ✄ ✌ ✑ ✒ ✍ ✏ ✄ ✵ ✍ ☞ ✑ ✕ ✏ ✄ ✒ ✆ ✬ ✲ ✮ ✄ ☞ ✄ ✡ ☞ ✄ ✡ ✏ ✶ ✡ ✓ ✆ ✌ ✑ ✆ ☛ ✆ ✡ ✟ ✖ ✕ ✄ ✟ ✄ ✯ ✝ ☛ ✆ ☛ ✑ ✡ ✍ ✍ ✏✔✓ ✝ ✟ ✞ ✡ ✞ ✝ ❂ ✄ ✟ ✍✡ ☛ ☛ ✄ ☞ ✟ ✸ ✶ ✮ ✝☎✌ ✮ ✒ ✎ ✆ ☛ ✕ ✄ ✌ ✡ ☞ ✄ ✯ ✎ ✏ ✏✔✓ ✶ ✄ ✝ ✞ ✮ ✄ ✖❄❃
slide-31
SLIDE 31
✂ ✄ ☎ ☎✆ ✝ ✞ ✟ ✆ ✠ ✡ ☎ ☛ ✞ ✠ ☞ ✌ ✍ ✎ ✏ ✑ ✎ ✒
☞ ☞ ✔ ✕ ✖ ✖ ✗ ✗ ✗✙✘ ✚ ✞ ✘ ✛ ✄ ☎ ☎✆ ✞ ✄ ✘ ✚✜ ✖✣✢ ✚ ✠ ✞ ✚ ✒
  • Design Choices Trade Off Quality

Attributes

  • E.g., to obtain performance, may need to use

a very complex algorithm, reducing modifiability

  • E.g., to obtain availability, may need to

replicate data sources, reducing security

  • Therefore, design choices rely on knowing

required targets for quality attributes

– At what point is security sufficient? – At what point is system sufficiently fast? – … Etc.

slide-32
SLIDE 32 ✁ ✂ ✄ ☎ ☎✆ ✝ ✞ ✟ ✆ ✠ ✡ ☎ ☛ ✞ ✠ ☞ ✌ ✍ ✎ ✏ ✑ ✎ ✁
☞ ☞ ✓ ✔ ✕ ✕ ✖ ✖ ✖✘✗ ✙ ✞ ✗ ✚ ✄ ☎ ☎✆ ✞ ✄ ✗ ✙✛ ✕✢✜ ✙ ✠ ✞ ✙ ✁
  • Summary of Patterns Discussed…
  • Creational Patterns:
✣ ✤ ✥✧✦ ★✪✩ ✫✬ ★ ✭ ✫✬ ★✯✮ ✩ ✰ ✱ ✲✢✳ ✴ ✵✶ ✷ ✩
  • Structural Patterns:
✱ ✤ ✶ ✫✸ ★ ✷ ✩ ✱ ✹ ✮ ✺✸ ✮ ✦ ✴ ★ ✷ ✱ ✭ ✫✻ ✫ ✶ ✷ ✱ ✭ ✵ ✰✼ ✷ ✴✾✽ ✿ ★
  • Behavioural Patterns:
✱ ❀ ★ ✷ ✩ ✫ ★✯✮ ✩ ✱ ❁ ✥✧✦ ✷ ✩❂ ✷ ✩
slide-33
SLIDE 33
✂ ✄ ✄☎ ✆ ✝ ✞ ☎ ✟ ✠ ✄ ✡ ✝ ✟ ☛ ☞ ✌ ✍ ✎ ✏ ✍ ✑
☛ ☛ ✓ ✔ ✕ ✕ ✖ ✖ ✖✘✗ ✙ ✝ ✗ ✚ ✂ ✄ ✄☎ ✝ ✂ ✗ ✙✛ ✕✢✜ ✙ ✟ ✝ ✙ ✑
  • Week 7-8: Software Architecture
  • Decomposing system into set of components,

connectors

✱ ✣ ✰ ✸ ✴ ✬ ✫ ✵ ✵ ✰ ✬ ✮ ✫ ✩ ✦ ✷ ✽ ✩ ✫ ✴✥✤
  • Design tool
✱ ✦ ✷ ✵✧✸ ✦ ✬ ✮ ✺ ✺ ✳ ✤ ✴✾✬ ✫ ★ ✷ ✸ ✩ ✮ ✸ ✮ ✦ ✷ ✶ ✦ ★✪✩ ✳ ✬ ★ ✳ ✩ ✷ ✥ ✷ ✧ ✮ ✩ ✷ ✴ ✺✸ ✵ ✷ ✺ ✷ ✤ ★ ✫ ★ ✴ ✮ ✤ ✱ ★ ✷ ✩ ❂ ✷✦ ✫ ✦ ✥ ✫ ✦ ✴ ✦ ✧ ✮ ✩ ✶ ✴ ❂ ✴ ✶ ✴ ✤ ✽ ✼ ✮ ✩ ✩ ✸ ✫✬ ✩ ✫ ✽ ✷✦ ✱ ★ ✳ ✸ ✸ ✮ ✩ ★ ✦ ✫ ✤ ✫ ✵ ✰ ✦ ✴ ✦ ✮ ✧ ✴ ✺✸ ✵ ✷ ✺ ✷ ✤ ★ ✫ ★ ✴ ✮ ✤ ✸ ✩ ✮ ✸ ✷ ✩ ★ ✴ ✷✦
slide-34
SLIDE 34
✂ ✄ ✄☎ ✆ ✝ ✞ ☎ ✟ ✠ ✄ ✡ ✝ ✟ ☛ ☞ ✌ ✍ ✎ ✏ ✍ ✑
☛ ☛ ✓ ✔ ✕ ✕ ✖ ✖ ✖✘✗ ✙ ✝ ✗ ✚ ✂ ✄ ✄☎ ✝ ✂ ✗ ✙✛ ✕✢✜ ✙ ✟ ✝ ✙ ✑
  • Week 7-8: Software Architecture
  • The architecture process involves quality attribute

tradeoff analysis

✱ ✹ ✷ ✩ ★ ✫ ✴✥✤ ✁ ✳ ✫ ✵ ✴ ★ ✰ ✫ ★ ★✪✩ ✴ ✥ ✳ ★ ✷ ✦ ✬ ✮ ✺ ✷ ✫ ★ ★ ✿ ✷ ✷ ✂ ✸ ✷ ✤ ✦ ✷ ✮ ✧ ✮ ★ ✿ ✷ ✩ ✦ ✄ ✷✆☎ ✽ ☎ ✧ ✷ ✷ ✶ ★ ✿ ✩ ✮ ✳ ✽ ✿ ★ ✴ ✺ ✷ ❂ ✦ ☎ ✝ ✴ ★ ★ ✷ ✩ ✞
  • Analysis tells us which quality attributes are

important, and architecture gives us a way of designing components/systems to meet those requirements

  • Architectural styles give us a way of expressing

architectures in terms of the types of components and connectors

✱ ✟ ✷ ★ ✫ ✵ ✩ ✷ ✶ ✫ ✥ ✮ ✳ ★ ✠✡ ☛☞✌ ✍✎ ✏ ✑✡ ✒ ✓ ☞ ✔ ✌ ✕ ✖ ✍ ✗ ☞ ✔ ✌ ✕ ✘✚✙ ☞ ✎ ✓✜✛ ✢ ✍ ✌ ☞ ✏ ✕ ✣ ✍ ✓ ✍ ✛ ✤ ☞ ✎ ✓ ☞ ✔ ☞ ✏ ✕ ✥ ✎ ✓ ☞ ✔ ☛ ✔ ☞ ✓ ☞ ✔ ✕ ✍✎ ✏ ✠ ✦ ✤
slide-35
SLIDE 35
✂ ✄ ☎ ☎✆ ✝ ✞ ✟ ✆ ✠ ✡ ☎ ☛ ✞ ✠ ☞ ✌ ✍ ✎ ✏ ✑ ✎ ✒
☞ ☞ ✔ ✕ ✖ ✖ ✗ ✗ ✗✙✘ ✚ ✞ ✘ ✛ ✄ ☎ ☎✆ ✞ ✄ ✘ ✚✜ ✖✣✢ ✚ ✠ ✞ ✚ ✒
  • Week 9: Real-time and Safety

Critical Systems

  • Topics covered:

– Introduction to real-time systems – Dimensions of dependability – Metrics for specifying real-time systems quality attributes

slide-36
SLIDE 36
✄ ☎ ☎✆ ✝ ✞ ✟ ✆ ✠ ✡ ☎ ☛ ✞ ✠ ☞ ✌ ✍ ✎ ✏ ✑ ✎ ✒
☞ ☞ ✔ ✕ ✖ ✖ ✗ ✗ ✗✙✘ ✚ ✞ ✘ ✛ ✄ ☎ ☎✆ ✞ ✄ ✘ ✚✜ ✖✣✢ ✚ ✠ ✞ ✚ ✒
  • Week 10: Software Quality
  • Topics covered:

– Software inspection – Inspection vs. testing – Stages of testing – White box testing, black box testing – Coverage metrics

slide-37
SLIDE 37
✄ ☎ ☎✆ ✝ ✞ ✟ ✆ ✠ ✡ ☎ ☛ ✞ ✠ ☞ ✌ ✍ ✎ ✏ ✑ ✎ ✒
☞ ☞ ✔ ✕ ✖ ✖ ✗ ✗ ✗✙✘ ✚ ✞ ✘ ✛ ✄ ☎ ☎✆ ✞ ✄ ✘ ✚✜ ✖✣✢ ✚ ✠ ✞ ✚ ✒
  • Inspection Process

from Software Inspection, Tom Gilb & Dorothy Graham

slide-38
SLIDE 38 ✁ ✂ ✄ ☎ ☎✆ ✝ ✞ ✟ ✆ ✠ ✡ ☎ ☛ ✞ ✠ ☞ ✌ ✍ ✎ ✏ ✑ ✎ ✒
☞ ☞ ✔ ✕ ✖ ✖ ✗ ✗ ✗✙✘ ✚ ✞ ✘ ✛ ✄ ☎ ☎✆ ✞ ✄ ✘ ✚✜ ✖✣✢ ✚ ✠ ✞ ✚ ✒
  • Assignment 1
  • This was a very straightforward OOP

assignment.

slide-39
SLIDE 39
✄ ☎ ☎✆ ✝ ✞ ✟ ✆ ✠ ✡ ☎ ☛ ✞ ✠ ☞ ✌ ✍ ✎ ✏ ✑ ✎ ✒
☞ ☞ ✔ ✕ ✖ ✖ ✗ ✗ ✗✙✘ ✚ ✞ ✘ ✛ ✄ ☎ ☎✆ ✞ ✄ ✘ ✚✜ ✖✣✢ ✚ ✠ ✞ ✚ ✒
  • Assignment 2
  • Goal was to illustrate the importance of

analysis and design

  • You should be able to draw the following UML

diagram types:

– Use-case – Activity – Class – Sequence

slide-40
SLIDE 40
✂ ✄ ☎ ☎✆ ✝ ✞ ✟ ✆ ✠ ✡ ☎ ☛ ✞ ✠ ☞ ✌ ✍ ✎ ✏ ✑ ✎ ✒
☞ ☞ ✔ ✕ ✖ ✖ ✗ ✗ ✗✙✘ ✚ ✞ ✘ ✛ ✄ ☎ ☎✆ ✞ ✄ ✘ ✚✜ ✖✣✢ ✚ ✠ ✞ ✚ ✒
  • Assignment 3
  • The purpose of this assignment was to

reinforce the ideas of design and architecture, by having you go through a design process followed by actual development

  • You should be able to:

– Describe software architectures – Understand quality attributes and their tradeoffs – Implement design patterns as class diagrams and/or code

slide-41
SLIDE 41
✄ ☎ ☎✆ ✝ ✞ ✟ ✆ ✠ ✡ ☎ ☛ ✞ ✠ ☞ ✌ ✍ ✎ ✏ ✑ ✎ ✒
☞ ☞ ✔ ✕ ✖ ✖ ✗ ✗ ✗✙✘ ✚ ✞ ✘ ✛ ✄ ☎ ☎✆ ✞ ✄ ✘ ✚✜ ✖✣✢ ✚ ✠ ✞ ✚ ✒
  • Midterm 1 & 2
  • We have done our best to make up questions

that do not retest what we have asked of you in the midterms. It would be to your advantage to make sure you know how to correctly solve both midterms (you may even want to look at the midterms for the other section).

  • All solutions are posted online.
slide-42
SLIDE 42
✂ ✄ ☎ ☎✆ ✝ ✞ ✟ ✆ ✠ ✡ ☎ ☛ ✞ ✠ ☞ ✌ ✍ ✎ ✏ ✑ ✎ ✒
☞ ☞ ✔ ✕ ✖ ✖ ✗ ✗ ✗✙✘ ✚ ✞ ✘ ✛ ✄ ☎ ☎✆ ✞ ✄ ✘ ✚✜ ✖✣✢ ✚ ✠ ✞ ✚ ✒
  • Assignment 4
  • Based on this assignment, you should be able

to inspect code, and generate test cases