example software for a virtual library (borrowing books using the internet) internt terminal db
TRANSCRIPT
Example
Software for a virtual library (borrowing books using the Internet)
Internt terminal
DB
Preferences
You have a team of 2 peopleFirst deliverance after 3 monthsDevelop software for:
User InterfaceUser – library communicationDatabaseAdministration
Use iterative implementationFinal release after 8 months
Main activities Requirement analysis and definition System design User interface
Design Implementation
User – library communication Design Implementation
Database Design Implementation
Administration Design Implementation
System integration Testing Deliverance
Iterative implementation Gantt chart
ID Task Name Start End DurationQ1 03 Q2 03 Q3 03
Jan Feb Mar Apr May Jun Jul Aug
1 112h2003-01-202003-01-01Requirements analysis
2 112h2003-02-072003-01-21System design
11 34h2003-08-072003-08-01User interface
12 34h2003-08-132003-08-07User - library communication
5 50h2003-03-052003-02-25Database
6 50h2003-03-132003-03-05Administration
7 46h2003-03-202003-03-13System integration
8 50h2003-03-282003-03-20Testing
9 16h2003-03-312003-03-28System deliverance
3 50h2003-02-172003-02-07User interface
4 50h2003-02-252003-02-17User - library communication
13 34h2003-08-192003-08-13Database
14 34h2003-08-252003-08-19Administration
15 10h2003-08-262003-08-25System integration
16 30h2003-08-292003-08-26Testing
17 8h2003-08-292003-08-29Final system deliverance
10 704h2003-07-312003-04-01Iterative development
Task
Define main requirementsCreate Use Case diagram capturing the
requirementsCreate an architecture designCreate conceptual designCreate sequence diagramsCreate class diagram
Actors
Two main actors:The person borrowing books, UserThe person administering the library, Librarian
The User
A user should be able to:Search for booksReserve bookLogin to be able to borrow books
Search for books
Name: Search for books
Initiator: User
Goal: Get a list of books
1. User enters search criteria, e.g. author, title, ISBN, etc.
2. The system searches its database for matches
3. The system returns the result
Extensions:
2. Search failed, no results
a. System allows User to try again
b. Resume at 1
Reserve book
Name: Reserve book
Initiator: User
Goal: Reserve specified book
1. The User wants to reserve specified book
2. The system marks specified book as reserved
Extensions
2. All copies of the book are already reserved
a. The system adds the User to reserve queue
b. The system notifies the User
c. Stop
The Librarian
The Librarian should be able to:Mark a book as available when a book is
returned (Unreserve book)Add new book to the database
Unreserve book
Name: Unreserve book
Initiator: Librarian
Goal: Mark a book as available
1. The Librarian gets a returned book
2. The Librarian unreserves the book
Extensions
2. Another user has reserved a copy of this book
a. The system marks the book as reserved by the next user in the reserve queue
b. Stop
Use Case diagram
Login
Unreserve book
Add new book
Librarian
Reserve book
<< include >>
Search for books
User
Three-Tiers Client-Server Architecture
Database
Databasedriver
Libraryserver
Adminclient
Userclient
Presentation layer (Client)
Application layer (Server)
Data layer
Library server conceptual design
User
AdminUser
ReserveQueue
** **
Library
*
1
*
1
* 1* 1
Book
1
1
1 *1 *
1
1
Sequence diagram for Search
Library DatabaseUser : User
search()query()
returnResult()
showResult()
Sequence diagram for Unreserve
Server : Librarya Librarian : Librarian a Book : Book q : ReserveQueue
unReserveBook() unReserve()getNextUser
reserve()
Sequence diagram for login, search and reserve
a User : User Server : Library a Book : Book q : ReserveQueueOnlineUser : User
login()
search()
showResult()
reserveBook()reserveBook()
reserve()addUserToQueue()
addReservedBook()
notify()
logout()
Library server class diagram
ReserveQueue
usersbook
getNextUser()addUserToQueue()
Library
userslibrariansbooks
login()logout()search()addNewBook()reserveBook()unReserveBook()
Librarian
unReserveBook()addNewBook()
* 1* 1
User
nameIDrQueues
reserveBook()changeUserDetails()getReservedBooks()addReserveQueue()
** **
*
1
*
1
Book
authortitleISBNrQueuereservedreservedByUser
reserve()unReserve()
1
1
1
1
1 *1 *