Anda di halaman 1dari 35

Online Hotel Reservation System

MSE Presentation 2 Cem Oguzhan February 21, 2005

Outline
        

Project Overview Action Items Project Plan Architecture Design Formal Specification Formal Inspection Check List Test Plan Questions Demo (Hotel Reservation System)

Project Overview


Project Statement


To provide a web site that can allow a user to search and reserve a hotel room or cancel his/her reservation over the internet at any time. Users can reserve up to three rooms with their own room preferences at the time. Dynamic price search for rooms. Travel agents can request an account to be a member to the HRS.

Action Items from the last presentation.




 

Project Plan


Cost Estimate

Current Progress
       

232 total hours (Phase 1 & Phase 2) 77 hours research 78 hours documentation 21 hours design 56 hours coding 800 SLOC 25% of implemented features 6 Documents

Project Plan


Cost Estimate

Productivity
 

800 SLOC / 56 hours = 14.2 SLOC/hour 6 Documents / 78 hours = 0.07 Docs/hour 800 SLOC / 0.25 = 3200 SLOC (estimated total) 4-5 Documents

Remaining Work


Project Plan


Cost Estimate

Remaining Effort


2400 SLOC / (14.2 SLOC/hour)




= 169 hours or 25 days (7 hours per day) = 11 days

72 hours for documentation




Project Plan


WBS

High Level
  

Coding/debugging 25 days Testing 7 days Documentation 11 days

Project Plan -WBS




Deliverables for Presentation 3


      

Action Items (documentation) User Manual (documentation) Component Design (documentation) Assessment Evaluation (testing) Project Evaluation (documentation) References (documentation) Technical Inspection Letters (documentation)

Project Plan
  

Development (2/22 3/31) Testing (4/1 4/11) Documentation (4/12 4/29)

Architecture Design


The architecture of the HRS is based on 3-tier architecture. There are three logical tiers:
  

the presentation tier. the middle tier. the data tier.

Architecture Design


The diagram shows 3-tier type of architecture.

Architecture Design


Presentation Tier

The presentation-tier for the Hotel Reservation System is ASP.NET Web Forms with User Controls. Detail of the Presentation Tier

Architecture Design Presentation Tier

Architecture Design Presentation Tier

Architecture Design Presentation Tier

Architecture Design
User userName : String email : String password : String phone : String address : String city : String state : String zip : String verifyLogin() logout() getUser() 1 +theUser Administrator userName : String password : String 1 +approveAccount

Middle Tier
Hotel Chain
1 +theHotel Chain 1..* +theHotel Hotel hotelID : String name : String address : String city : String state : String phone : String rating : Integer 1 findHotel() newHotel() updateHotel() 1+theHotel

verifyLogin() +theAdmin logout() approveAccount() 1 disApproveAccount() generateReport() 1

+theHotel 0..*

0..* Mail sendMail(e_address : String) : Boolean +theHotel

Customer firstName : String lastName : String cardType : String cardNumber : Integer experationDate : Date createAccount() updateAccount()

0..* +requestAccount TravelAgent companyName : String status : String requestAccount() generateReport() 1

0..*

+theReservation Reservation 0..*

+theRoom

1..*

Room roomNumber : Integer price : Double bedType : String smoking : String roomLock : Date getRoomRate() getRoomAvl() newRoom() updateRoom()

+theReservation 0..*

reservationNumber : Integer checkIn : Date checkOut : Date resvDate : Date +theReservation price : Double 0..* totalCost : Double makeReservation() getReservation() cancelReservation() calculateTotalCost()

+allocation 1

The class diagram above captures middle-tier, business specific layer, of the Hotel Reservation System.

Architecture Design - Login


: ser : S gnIn.aspx : Ed tAccount.aspx 1: user prov des requested nformat on

3: ver fyLog n(user ame:Str ng,pass ord:Str ng)

4: Ver fy

5: [IsVer fy]

Sequence d agram sho s that user successfu y og n for ed t ng h s/her account

2: ne

ser

Architecture Design Making a Reservation


: User : FindHotel.aspx : Hote l Chai n : HotelResult.aspx : RoomPref erences.aspx :Conf irmReserv ation.aspx 1: prov ide requested inf ormation 2: f indHotel(city :String, state:String) 3: new : Hotel 4: f indHotel(city :String, state:String)

5: v erif y

6: [IsVerif y ]

7: selectHotel() 8: room pref erences

9: select room pref erences 10: new : Room

11: getRoomAv l()

12: v erif y 13: res erv e 14: [IsVerif y ] new : Reserv ation

15: makeReserv ation(r:Reserv ation)

16: Verif y

17: [IsVerif y ] conf irmation

This sequence diagram shows successf ull reserv ation and user already logged in. Operation Signature: getRoomAv l(hotelID : String, bedTy pe : String, smoking : String, checkIn : Date, checkOut : Date) : Room

Detail View

Architecture Design Canceling a Reservation

2: ne

3: get eservation(reservation u ber:Integer)

4: cancel()

5: cancel eservation(reservation u ber:Integer)

6: verify 7: [IsVerify]

s er

1: provides requested infor ation

eservation

ancel eservation.aspx

onfir

ancel eservation.aspx

Architecture Design Requesting an Account


: Agent

1: pr vide requested inf r ati n 2: ne

3: requestAccount() 4: verify 5: [verify ] sendMail(e_address:St ring)

The sequence diagra sho s that the travel agent successfully applies t an account. perati n Signature: requestAccount(userNa e : String, e ail : String, pass ord : String, panyNa e : String, status : String, phone : String, address : String, ity : String, state : String, zip : String) : Boolean



 

equestAccount.aspx

: Mail

: TravelAgent

 

Architecture Design Generating a Report


: Agent : Report.aspx : TravelAgent

1: provides requested infor ation 2: generateReport(startingDate:Date, endingDate:Date)

3: Report

Architecture Design an Hotel


: Admin : AddHotel.aspx 1: provides requested information 2: new

Adding

: ConfirmAddHotel.aspx

: Hotel

3: newHotel() 4: verify 5: [IsVerify]

The sequence diagram shows successfuly adding a hotel. The admin is already login. Operation Signuture: newHotel(hotelID : String, name : String, address : String, city : String, state : String, phone : String, rating : Integer) : Boolean

Architecture Design Tier

Data

Architecture Design


Error Handling
The full stack trace and requested URL that generated the error is written to the Application Event Log on Internet Information Services (IIS) server

Security
The Hotel Reservation System uses ASP.NET Forms Authentication to validate users.

Formal Specification
--Custumer and TravelAgent have unique user name context User inv uniqueUserName: User.allInstances->forAll(u1,u2 | u1<>u2 implies u1.userName<>u2.userName) --Each reservation belongs to one hotel Enforce by the multiplicity of association HotelReservation --Each reservation allocates one room Enforce by the multiplicity of association ReservationRoom

Formal Specification
--check in date can not be later than check out date context r:Reservation inv checkInNotBeLaterCheckOut: r.checkIn<r.checkOut --room can t be overbook context Reservation inv overBookRoom: Reservation.allInstances->forAll(r1, r2 | r1.reservationNumber <> r2.reservationNumber and r1.allocation.roomNumber = r2.allocation.roomNumber implies r1.checkOut <= r2.checkIn or r2.checkOut <= r1.checkIn)

Formal Specification
-- A hotel can never have more reservations for a date than rooms context Hotel inv notOverBook: Date.allInstances->forAll(d|Hotel.allInstances-> forAll(h| h.theReservation-> select(h.theReservation.dates->includes(d))-> size <= h.theRoom->size ) ) -- each hotel is located at one city and state context Hotel inv oneLocation: Hotel.allInstances->forAll(h1,h2 | h1 = h2 implies h1.city = h2.city and h1.state = h2.state) --hotel star rating should be between 1-5 context Hotel inv starRating: Hotel.allInstances->forAll(h | h.rating >0 and h.rating < 6)

Formal Specification
verifyLogin(userName:String,password:String):Boolean =User.allInstances-> exists(u:User | u.userName = userName and u.password = password) -- update the customer account context Customer::updateAccount(userName:String,email:String,password:String,firstName:String,lastName:String, cardType:String,cardNumber:Integer,experationDate:Integer,phone:String,address:String,city:String,state: String,zip:String):Boolean --the customer should be exist and login pre:verifyLogin(userName,password) --the customer's userName can not be updated and userName of old customers record are not changed post:Customer.allInstances.userName = Customer.allInstances.userName@pre post:Customer.allInstances->select(c:Customer | c.userName <>userName)->forAll(c:Customer | c.email = c.email@pre and c.password = c.password@pre and c.firstName = c.firstName@pre and c.lastName = c.lastName@pre and c.cardType = c.cardType@pre and c.cardNumber = c.cardNumber@pre and c.experationDate = c.experationDate@pre and c.phone = c.phone@pre and c.address = c.address@pre and c.city = c.city@pre and c.state = c.state@pre and c.zip = c.zip@pre) --only the customer's information is updated post:Customer.allInstances->select(c:Customer |c.userName = userName)->forAll( c:Customer | c.email = email and c.password = password and c.firstName = firstName and c.lastName = lastName and c.cardType = cardType and c.cardNumber = cardNumber and c.experationDate = experationDate and c.phone = phone and c.address = address and c.city = city and c.state = state and c.zip = zip)

Formal Specification
--add new hotel context Hotel::newHotel(hotelID:String, name:String,address:String, city:String, state:String, phone:String, rating:Integer):Boolean --pre: the admin is logined --the hotel is not exist pre:Hotel.allInstances->forAll(h:Hotel | h.hotelID <> hotelID) --existing hotels record are not changed only a new hotel is added post:Hotel.allInstances.hotelID = Hotel.allInstances.hotelID@pre-> including(hotelID) post:Hotel.allInstances.name = Hotel.allInstances.name@pre->including(name) post:Hotel.allInstances.address = Hotel.allInstances.address@pre-> including(address) post:Hotel.allInstances.city = Hotel.allInstances.city@pre->including(city) post:Hotel.allInstances.state = Hotel.allInstances.name@pre->including(state) post:Hotel.allInstances.phone = Hotel.allInstances.name@pre->including(phone) post:Hotel.allInstances.rating = Hotel.allInstances.rating@pre->including(rating)

Formal Specification
--make a reservation context Reservation::makeReservation(r:Reservation) --pre:r.theUser.verifyLogin(r.theUser.userName,r.theUser.password) --pre: Reservation.allInstances->excludes(r) --post:Reservation.allInstances.reservationNumber = Reservation.allInstances.reservationNumber@pre-> including(r.reservationNumber)

Formal Inspection Check List


1. 2. 3. 4.

5. 6. 7. 8.

9. 10. 11.

12.

The documentation follows MSE portfolio standard which is describe at http://www.cis.ksu.edu/~sdeloach/mse/portfolio.htm Every requirement has only one clear interpretation. The requirements of the system are consistent . The architecture of the system is sufficiently clear from the documents and diagrams. The architecture design implements all specification and requirements. The symbols used in the class diagrams conform to the UML standards. The symbols used in the sequence diagrams conform to the UML standards. The class diagrams have a corresponding description provide in the architectural design document. The descriptions of all class diagrams are clear and make sense. All classes in the HRS are found in the USE model. The role names and multiplicities in the USE model match correctly to UML diagrams of the HRS. The operations in the USE model match with the methods of the corresponding class diagrams of the HRS.

Test Plan


Unit Testing with TestSharp2004 Performance Testing with JMeter

Test Plan
        

test cases

Search a room Login Crate a new customer account Apply for an account Generate a report Cancel a reservation Add/Update a Hotel Add/Update a Room Approve/Disapprove travel agent account

Questions

Demo

Anda mungkin juga menyukai