330 likes | 473 Views
Referee Scheduler. CIS 758 Blue Elephant Tony DiCola Mauktik Gandhi Jeff Mathew Tim McConnell Todd Sahl Eugene Talagrand. Presentation Outline. Product Demonstration / Overview Functional Requirements Intro Non-Functional Requirements Intro Process Intro
E N D
Referee Scheduler CIS 758 Blue Elephant Tony DiCola Mauktik Gandhi Jeff Mathew Tim McConnell Todd Sahl Eugene Talagrand
Presentation Outline • Product Demonstration / Overview • Functional Requirements Intro • Non-Functional Requirements Intro • Process Intro • Non-Functional Requirements in Detail • Traceability through Design, Arch., Impl.
Product Demo • Let’s check it out
C Core Functionality U Usability P Performance S Security S Supportability Requirements Overview Functional Requirements Non-Functional Requirements
Core Functionality C S • Main Use Case • Allowing Referees to Schedule Online • Main Additional Functional Req. • Security – No Unauthorized Browsing C S U S P
Core Non-Functional Reqs U S P • Usability • Easy to Learn to Use • Supportability • Easy to Learn to Program • Performance • Speedy Enough Under Concurrent Load
Process Intro • Lightweight RUP, ala Craig Larman • Step-by-Step OOAD • Inception, Elaboration • Bounded Iterations • New Methodology, Martin Fowler • Adaptive, People Oriented • Rapid UI Prototyping w/ Feedback • T-Model, Middleware Technologies • From J2EE Best Practices Article
Metrics? • Fowler: Product of Manufacturing Optimization • Ramnath: Do It Please • Blue Elephant: We Tried • Timesheets • Hard to Keep Up With
Metrics: Results • Anecdotal Results: • Productivity Increased as: • Configuration Management Settled Down • Initial Problems: • Eclipse • Tomcat • Hibernate, MySQL • Struts • Members Became Familiar with Core Architecture – MVC, Struts, JSP, JSTL
Concurrency • Transient vs. Persistent Objects • Optimistic Locking • Built in Support in Hibernate • Finer Grain Control Available with Custom Code
C S U S P Security - Requirements • Access to registered users only • Prevent public browsing • Access control and Roles • Referees vs. Administrators • Password Security • Encrypted passwords in database • Email notification when password changes
C S U S P Security - Architecture • User class hierarchy • Hibernate mapping • Access Control Filter • Logical Paths • Tomcat Roles ?
C S U S P Security - Architecture • Password Service • SHA1 – One-way encryption function • Random password Generation • Email Service • Java Mailing API
C S U S P Usability - Requirements • No End User Training Possible • Successful Adoption Hinges on Transparent Usability • End Users are not Computer Experts • Accessibility
C S U S P Usability - Design • Transparent Navigation • Shallow Information Hierarchy • Tabbed Interface • Clear, Consistent Page Sections • Consistent Placement of Feedback
C S U S P Usability – Design Continued • Task Oriented Design • Minimal Text & Images, No ‘Happy Talk’ • Built In Help • JavaScript Validation of Input • Accessibility • Text-Only Browser Support • Minimal Browser Dependency
C S U S P UsabilityArchitecture & Impl. • Common, Ubiquitous Technologies • Server Pages, JavaScript, CSS • Focus on Architecture Extensibility • Templating, Page Composition • Used Standardized Libraries • JSTL - Simpler Language, Easier for Page Designers
C S U S P Usability Process • Iterative Prototype • Broad and Shallow • Little or No Functionality • Feedback From Clients and Users
C S U S P Supportability Requirements • Extensibility • Additional Use Cases to be Implemented • Requirements Change Over Time • Maintainability • Future Maintenance Programmers Need to Understand Architecture, Code • Configurability
C S U S P Supportability Design • Separation of Concerns into Tiers • Presentation Layer • Workflow Layer • Business Delegate Layer • Domain Model Layer • Data Access Object Layer • Data Source Layer
C S U S P Supportability Design Contd. • Separation of Concerns into Tiers • Decoupling of Components of Application • Limits Effect of Change in one area • Makes Code Easier to Comprehend • Allows Parallel Development via Interfaces
C S U S P Supportability Design Contd. • Documentation of Design • Short Papers on Technologies / Design Patterns • Use Case Diagrams / Sequence Diagrams • Pointers to Good Resources • Doxygen API Documentation
C S U S P Supportability Architecture • Strict Adherence to MVC Pattern • Use of Popular Frameworks • Workflow by Struts • Persistence by Hibernate • Configurability • Strategy Patterns • Externalized Strings
C S U S P Supportability - Process • Incremental Refactorings • Refactored Packages • Page Composition • Externalized Strings • Class Based CSS Design
C S U S P Performance - Requirements • Thousands of Games and Users • During Initial Sign-Up Period, Several Hundred Concurrent Users • Site Must Remain Usable and Responsive under Load
C S U S P Performance – Design Cont. • Presentation Layer: • XSL-T was used for the first 4 Weeks • Provides Extensibility, but very Computationally Intensive • JSP/JSTL Refactoring • One Week of Performance Testing
C S U S P Performance – Design Cont. • Keeping Games in Memory • Required 300 MB of RAM for 300 users • Client Side Sorting, Filtering of Conflicting Games Offloaded to User to Reduce Server Load • Optimized Primary Database Query • Trade-off between memory, CPU and Database performance
C S U S P Performance - Process • Speed of Main Use Case always considered • Refactored Session cache design