COSC3311 – Software Design Section P Vassilios Tzerpos

Download Report

Transcript COSC3311 – Software Design Section P Vassilios Tzerpos

COSC3311 – Software Design
Section P
Vassilios Tzerpos
Department of Computer Science, York University
Slides based on Object Oriented Software Construction
2016-05-27 8:39 AM
0
Course Details
 www.cs.yorku.ca/course/3311
 Slides and other resources:
http://www.cs.yorku.ca/course/3311/sectionP/
 Case studies:
http://www.cs.yorku.ca/course/3311/sectionM/
 Eiffel Help:
www.cs.yorku.ca/eiffel
 Office hours: WF 2:30 – 3:30
 Read newsgroup
 Lab hours next week:
 Monday, January 12
3-4
 Wednesday, January 14 3-4
 Friday, January 16
3-4
Department of Computer Science, York University
Slides based on Object Oriented Software Construction
2016-05-27 8:39 AM
1
Grading





Assignment 1: 7%
Assignment 2: 10%
Assignment 3: 13%
Test: 25%
Exam: 45%
Department of Computer Science, York University
Slides based on Object Oriented Software Construction
2016-05-27 8:39 AM
2
Textbook
 Bertrand Meyer: Object-Oriented Software
Construction, 2nd edition. Prentice Hall, 1997.
 Suggested reading:
 Pete Thomas, Ray Weedon, Object-Oriented Programming
in Eiffel, second edition, Addison-Wesley, 1998.
 Kent Beck, Test-driven development : by example.
Addison-Wesley, Boston, 2003.
 J.M. Jezequel and C. Mingins. Design patterns and
contracts. Addison-Wesley, 2000.
 Erich Gamma et al.: Design Patterns. Addison-Wesley,
1995.
Department of Computer Science, York University
Slides based on Object Oriented Software Construction
2016-05-27 8:39 AM
3
Advice – Course strategy
 Don’t fall behind: First two weeks especially!
 Attend lectures: material is not all in textbook
 Do the readings on time
Department of Computer Science, York University
Slides based on Object Oriented Software Construction
2016-05-27 8:39 AM
4
Week 1 – Readings
 January 5
 Software Quality & Engineering -- The context for design;
what is design; Eiffel programming; classes.
 Readings Required: Chapter 7
 Static Structure
 Classes
 Class POINT …
 Readings Background: Chapters 1, 2
 External Quality
 Internal Quality – Modularity
 Read about, install and use EiffelStudio
Department of Computer Science, York University
Slides based on Object Oriented Software Construction
2016-05-27 8:39 AM
5
The goal: Software quality






REUSABILITY
EXTENDIBILITY
RELIABILITY (Correctness + Robustness)
PORTABILITY
EFFICIENCY
SPECIFICATION
…
Robustness
 Correctness:
 The ability of a software system to perform according to
specification, in cases defined by the specification.
 Robustness:
 The ability of a software system to react in a reasonable
manner to cases not covered by the specification.
Department of Computer Science, York University
Slides based on Object Oriented Software Construction
2016-05-27 8:39 AM
6
Case Study 1– Bank example
 Requirements & Use Cases  Design Constructs
BON
 Design – How?
Contracts
Object equality: equal
Genericity
Agents and Tuples
Design Patterns (Singleton)
Plan-driven: Identify the
Classes
Agile: Test Driven
Development
 EiffelStudio
Clusters and Classes
Tests and ETester
Project Configuration/Ace files
Debugger
Documentation
Department of Computer Science, York University
Slides based on Object Oriented Software Construction
2016-05-27 8:39 AM
7
Requirements – Bank example
 Requirements








Open an account for a customer (savings or chequing)
Deposit
Withdraw
Display details of an account
Change LOC
Produce monthly statements
Print a list of customers
…
 Ambiguities
 What is the difference between savings and chequing?
 Many others …
Department of Computer Science, York University
Slides based on Object Oriented Software Construction
2016-05-27 8:39 AM
8
Case Study 1 – Bank example
 How should we go from Requirements to Code?
 Two basic approaches
 Plan-driven (waterfall type models)
 Agile (incremental approaches)
Department of Computer Science, York University
Slides based on Object Oriented Software Construction
2016-05-27 8:39 AM
9
Requirements to Code?
How to bridge
the gap between
requirements
and code?
???
Code
Department of Computer Science, York University
Slides based on Object Oriented Software Construction
2016-05-27 8:39 AM
10
The waterfall model of the lifecycle
FEASIBILITY STUDY
REQUIREMENTS
ANALYSIS
SPECIFICATION
GLOBAL DESIGN
DETAILED DESIGN
IMPLEMENTATION
VALIDATION &
VERIFICATION
DISTRIBUTION
PROJECT PROGRESS
Department of Computer Science, York University
Slides based on Object Oriented Software Construction
2016-05-27 8:39 AM
11
Problems with the waterfall
 Late appearance of actual code.
 Lack of support for requirements change — and
more generally for extendibility and reusability.
 Lack of support for the maintenance activity (70%
of software costs?).
 Division of labor hampering Total Quality
Management.
 Impedance mismatches.
 Highly synchronous model.
Department of Computer Science, York University
Slides based on Object Oriented Software Construction
2016-05-27 8:39 AM
12
Impedance mismatches
As Management requested it.
As Programming developed it.
As the Project Leader defined it.
As Operations installed it.
As Systems designed it.
What the user wanted.
(Pre-1970 cartoon; origin unknown)
Department of Computer Science, York University
Slides based on Object Oriented Software Construction
2016-05-27 8:39 AM
13
How to think about requirements?
 Use Cases
Department of Computer Science, York University
Slides based on Object Oriented Software Construction
2016-05-27 8:39 AM
14
Bank Requirements – Use Cases
System
boundary
Actors
Use Case
Department of Computer Science, York University
Slides based on Object Oriented Software Construction
2016-05-27 8:39 AM
15
Bank Use Cases
 Challenge question:
 What would the Use Case diagram look like if the
bank supplies ATMs in addition to tellers?
Department of Computer Science, York University
Slides based on Object Oriented Software Construction
2016-05-27 8:39 AM
16
Use Case – Open Account
 Actors: Customer (initiator), Teller
 Overview: the customer applies for and is granted
a new bank account with some initial approved line
of credit. The teller logs on to the system, selects
open account , and supplies the new account
details. The system prints a copy of the contents
of the new account with the date, which the teller
hands to the customer.
Department of Computer Science, York University
Slides based on Object Oriented Software Construction
2016-05-27 8:39 AM
17
Design of Bank – Identify Classes







TELLER
CUSTOMER
SAVINGS_ACCOUNT
CHEQUING_ACCOUNT
MAIN_MENU
BALANCE_INQUIRY
INTEREST_RATE ………
 Where do we start?
Department of Computer Science, York University
Slides based on Object Oriented Software Construction
2016-05-27 8:39 AM
18
Test Driven Development
1. Write a little Test


Test will not work initially (there is no code)
Might not even compile
2. Make the Test work quickly

Commit whatever sins are necessary in the process (e.g.
duplication in the code)
3. Refactor

Eliminate the duplication created in merely getting the
test to work
Department of Computer Science, York University
Slides based on Object Oriented Software Construction
2016-05-27 8:39 AM
19
EiffelStudio – create a new project
Department of Computer Science, York University
Slides based on Object Oriented Software Construction
2016-05-27 8:39 AM
20
Call the new project bank
Department of Computer Science, York University
Slides based on Object Oriented Software Construction
2016-05-27 8:39 AM
21
Compile and Run
print(“hello world!”)
Department of Computer Science, York University
Slides based on Object Oriented Software Construction
2016-05-27 8:39 AM
22
Compile often!
 Always start with a compiled system
 New project wizard
 Copy an existing system
 A compiled system is needed for browsing
 Compile often!
Department of Computer Science, York University
Slides based on Object Oriented Software Construction
2016-05-27 8:39 AM
23
ETester – Create a tests cluster
Click here
Department of Computer Science, York University
Slides based on Object Oriented Software Construction
2016-05-27 8:39 AM
24
Create class ACCOUNT_TEST
Click here
Department of Computer Science, York University
Slides based on Object Oriented Software Construction
2016-05-27 8:39 AM
25
Clusters and Classes
Department of Computer Science, York University
Slides based on Object Oriented Software Construction
2016-05-27 8:39 AM
26
Ace file – Directory Structure
d0
d1
d2
d3
d4
Directory (cluster)
f1.e
f3.e
Class file
Department of Computer Science, York University
Slides based on Object Oriented Software Construction
2016-05-27 8:39 AM
27
Ace File – Ace.ace
http://www.cs.yorku.ca/eiffel/precompiled
system
"bank“
root
root_class: make
default
precompiled ("C:\Eiffel53\precomp\spec\windows\base")
assertion (check)
assertion (require) …
cluster
root_cluster:
"."
all tests:
".\tests"
library base:
exclude
"$ISE_EIFFEL\library\base"
end
end …
"table_eiffel3"; "desc";
Department of Computer Science, York University
Slides based on Object Oriented Software Construction
2016-05-27 8:39 AM
28
Project Configuration (Ace file)
Click here
Department of Computer Science, York University
Root Class
All contracts
ACCOUNT_TEST
turned on
Slides based on Object Oriented Software Construction
2016-05-27 8:39 AM
29
Write Test
test_create_account: BOOLEAN is
local
c: CUSTOMER
do
comment("test_create_account")
create c.make("Archie Fox")
Result := equal(c.name, "Archie Fox")
end
Error code: VTCT
Error: type is based on unknown class.
What to do: use an identifier that is the name of a class in the
universe.
Class: ACCOUNT_TEST
Unknown class name: CUSTOMER
Department of Computer Science, York University
Slides based on Object Oriented Software Construction
2016-05-27 8:39 AM
30
The Test specifies a Design
Department of Computer Science, York University
Slides based on Object Oriented Software Construction
2016-05-27 8:39 AM
31
customer.e
indexing
description: "A bank customer“
class CUSTOMER create
set_name
feature -- Element change
make (a_name: STRING) is
-- Create a customer. Set `name' to `a_name'.
require
a_name_not_void: a_name /= Void
do
name := a_name
ensure
name_assigned: name = a_name
end
feature -- Access
name: STRING
-- of customer
invariant
name_not_void: name /= Void
end
Department of Computer Science, York University
Slides based on Object Oriented Software Construction
2016-05-27 8:39 AM
32
ETester GUI – Green bar
Department of Computer Science, York University
Slides based on Object Oriented Software Construction
2016-05-27 8:39 AM
33
Test: A customer with a savings account
test_create_customer_with_account: BOOLEAN is
local
a1,a2: SAVINGS_ACCOUNT
c: CUSTOMER
initial_deposit: REAL
do
initial_deposit := 500
create a1.make(initial_deposit)
check a1.balance = initial_deposit end
create c.make(a1, "Archie Fox")
a2 := c.account
Result := equal(c.name, "Archie Fox") and
a2 = a1 and a2.balance = initial_deposit
end
Department of Computer Science, York University
Slides based on Object Oriented Software Construction
2016-05-27 8:39 AM
34
Red bar
Department of Computer Science, York University
Slides based on Object Oriented Software Construction
2016-05-27 8:39 AM
35
Use debugger to find problem
Department of Computer Science, York University
Slides based on Object Oriented Software Construction
2016-05-27 8:39 AM
36
EiffelStudio – BON tool
Department of Computer Science, York University
Slides based on Object Oriented Software Construction
2016-05-27 8:39 AM
37
Client-Supplier relationship
Department of Computer Science, York University
Slides based on Object Oriented Software Construction
2016-05-27 8:39 AM
38
Open Account Use case (revisited)
 Actors: Customer (initiator), Teller
 Overview: the customer applies for and is granted
a new bank account with some initial approved line
of credit. The teller logs on to the system, selects
open account , and supplies the new account
details. The system prints a copy of the contents
of the new account with the date, which the teller
hands to the customer.
 We have not yet dealt with the LOC, system menu
and the receipt. We leave this as an exercise.
Department of Computer Science, York University
Slides based on Object Oriented Software Construction
2016-05-27 8:39 AM
39
Withdraw Use Case
 Actors: Customer (initiator) and Teller
 Overview: The customer provides the teller with
an account number and a withdrawal amount. The
teller selects `withdraw-request’ from the system
menu, and enters the data. The System debits the
account by the requested withdrawal amount, and
prints a receipt with the date and the amount,
which the teller gives to the customer.
 Question: What happens if there is not enough
money in the account to withdraw?
Department of Computer Science, York University
Slides based on Object Oriented Software Construction
2016-05-27 8:39 AM
40
test_withdraw
test_withdraw: BOOLEAN is
local
sa1, sa2: SAVINGS_ACCOUNT
initial_deposit: REAL
do
comment("test_withdraw")
initial_deposit := 500
create sa1.make(initial_deposit)
create sa2.make(200)
sa1.withdraw(300)
Result := equal(sa1, sa2)
end
Department of Computer Science, York University
Slides based on Object Oriented Software Construction
2016-05-27 8:39 AM
41
Bank design (BON static diagram)
Department of Computer Science, York University
Slides based on Object Oriented Software Construction
2016-05-27 8:39 AM
42
EiffelStudio feature tool – withdraw
Department of Computer Science, York University
Slides based on Object Oriented Software Construction
2016-05-27 8:39 AM
43
Run tests
Department of Computer Science, York University
Slides based on Object Oriented Software Construction
2016-05-27 8:39 AM
44