430 likes | 552 Views
Reiman Gardens Plant Database Dec 08-06. Clay Schumacher Josh Weisskopf Cory Simon Advisor: Tien Nguyen. Planning. Problem Statement. Reiman Gardens Occupies 14 acres on the ISU campus Indoor and outdoor gardens, five greenhouses Keep detailed records of all plants in the gardens
E N D
Reiman Gardens Plant Database Dec 08-06 Clay Schumacher Josh Weisskopf Cory Simon Advisor: Tien Nguyen
Problem Statement • Reiman Gardens • Occupies 14 acres on the ISU campus • Indoor and outdoor gardens, five greenhouses • Keep detailed records of all plants in the gardens • Existing Database System • Difficult to use • Isolated from other software and equipment • Inaccessible to the public
Project Goal • Create a new plant database for Reiman Gardens: • Primary: • Plant record management • Friendly user interface • Low Cost • Secondary: • Create files for label making machines • Allow public access • Print forms for use in the gardens
Basic Requirements • The product shall store nine types of records: Accession, Genus, Species, Supplier, Location, Reference, Family, Photo, and Propagation • The product shall allow users to create, edit, view, and search records • The product shall have three user groups: administrator, staff, and public • The product shall export files containing plant information to be printed by label makers
Design Alternatives • Shared Drive Database • Similar to existing system, host database on the existing shared drive at Reiman Gardens • Local Server • Use a web based approach hosted on a new server at Reiman Gardens.
Final Design Concept • Web based system hosted off site • Capable of satisfying all requirements • Familiar interface for users • Tested and supported design • LAMP server solution stack • Linux operating system • Apache web server • MySQL database management system • PHP scripting language
Design vs. Goals • Positive • Plant record management • Relatively low cost • Customized user interface • Public access • Customized file output • Negative • Cost: previous system was free • Capability: commercial systems have more functionality
Basic Diagram Registered User Client Label Makers Web Browser Public User Server PHP HTTP Server Queries Responses Database
Schedule • Initially had four members – scheduled 135 hours for each 1st Semester, 90 hours for each 2nd semester • Created WBS for each semester and assigned tasks to each group member • Major headings: • Project Plan • Design Document • Implementation • User Manual • Testing
Schedule After First Semester • We had produced a basic system design • Ready for development • Total hours to this point: • 538 (out of 540 scheduled) • Rolando: 123 • Clay: 134 • Cory: 135 • Josh: 146 • Planned to finish implementation by Thanksgiving
Input/Output Specification • Input: HTTP Page Requests • Output: HTML, CSS, JavaScript, and Labelmaker Files
User Interface Specification • Login Page • Welcome Page • Help Page • Search Results Page • Model Index Page • Add Record Page • View Record Page • Edit Record Page
Software SpecificationCakePHP • CakePHP is a rapid development framework for PHP • Based on Model-View-Controller architecture pattern • Easy installation and no configuration required • Active community with useful forums • Object oriented design
Software SpecificationModels Families Alternative Names References Genera Species Nativities Accessions Gardens Removals Users Suppliers Propagations
Software SpecificationModels • All Models inherit from AppModel class • Defines defaults that can be overridden • Each class defines key fields and methods • Validation rules and error messages • Identifying field for auto complete • Input Cues • Related models • Visible fields and related models • Get display name function – for special names • CakePHP provides functions through model classes for retrieving/saving info from the DB
Software SpecificationControllers • AppController Superclass • Contains index, add, edit, and view • Contains search and autocomplete functions • Verifies authentication, access control • Additional Actions: • Accessions and Gardens: Export to Excel • Species: Upload Image, Remove Image, Full Image • Users: Login, Logout, Register, Reset Password • Unique Controllers • Species: Overwrites add, edit, view • Genus: Overwrites add, edit
Software SpecificationComponents • Classes containing useful functions for controllers • Prebuilt components • Email: used by users controller • Auth, Session, Cookie: used for authentication • Custom components • Upload: used for uploading images
Software SpecificationViews • Views are the interface • Layout • Defined in one file and used everywhere • Header • Navigation, Search, Breadcrumbs • Footer • Content • Individually defined for each controller and action • Sandwiched between header and footer • CSS • Defined in one file and used everywhere • Dictates cosmetics (positioning, color scheme, etc.)
Software SpecificationHelpers and elements • Helpers • Classes that provide presentation logic • Standard CakePHP helpers: • HTML, Javascript, Form, Ajax, and Pagination • Additional helpers • Breadcrumbs and Excel .xls generation • Custom helpers • Add, edit, view forms and cosmetic markup • Elements • Reusable chunks of markup (mini-views) • Custom element standardizes search results, indices
Software SpecificationExternal Interface • Label maker software accepts Excel files containing data • Fields: • Accession Number • Common Name, Genus, Specific Epithet • Variety, Subspecies, or Forma • Cultivar, Family • Nativity • Quantity, Size • Source, Date Planted, Notes
Development Tools • Apache • Web Server • Samba • File Sharing • Subversion • Version Control • Trac • Project management • Wiki • Issue tracking • Activity log
Development Strategy • A basic process was followed for each team member to accomplish a task
Release Strategy • Alpha Release – November 9 • Basic functionality • Beta Release – December 3 • Feature complete • Final Release – December 15
Stress Testing • Imported taxa from USDA database to create a large load on the system • Over 400 families, 4000 genera, 38000 species • Highlighted deficiencies in code • Areas that weren’t limiting query results • Beneficial side-effect: system is pre-populated with taxa
Key Challenges Security • Public users cannot edit any database information • Users must be registered by an administrator • Authenticated users use SSL for all data transfers • Authentication verified before any controller action is executed • Data Sanitization – CakePHP Component • Remove any HTML, PHP, Javascript, or SQL in input
Key Challenges Search • One of the most important functions for the database is the search • CakePHP provides model functions to search the database • Powerful, but unfamiliar – learning curve • A challenge to search for records of one model that are related to another
Key Challenges Search • Basic search strings match as “and” terms delimited by spaces • To match a record must contain a match for each term (in any field) • Which related models to search for each model is specified in the model class • User has finer grain control over results displayed – still refining • Code is modular for search and index • Search uses index of each model being searched • Use a common view element to display results
Key Challenges Excel Files • Individual Accession or all Accessions from a garden can be exported to an .xls file • File serves dual purpose • It can be printed and serve as a hardcopy report • It is compatible with label-making software
Status • Currently all requirements are met • The project is very nearly complete • Finish Search • Create Help Page • Visual touch-ups • Expect to be finished by next week
Scope Reduction • Evaluated progress, reduced scope with client approval on November 13 • Redesigned photo requirements • Previous requirement: • Independent model containing pictures associated with Gardens, Species, and Accessions • Reduced requirement • Photo field in Species model only
Project Hours • Fall: 658 • Spring: 538
Evaluation • BCWS: 900 hours @ $10/hour = $9,000 • ACWP: 1,196 @ $10/hour = $11,960 • BCWP: $9000 x 95% = $8,550 • Cost Variance: 9,000 – 11,960 = -2,960 • Schedule Variance: 8,550 – 9,000 = -450 • Cost Performance: 9,000/11,960 = 0.753 • Schedule Performance: 8,550/9,000 = 0.95
Lessons Learned • Lost team member prior to implementation phase • Chose to proceed as planned • Significantly more hours • Should have reassessed requirements and reduced project scope • Could have dropped public access and used a single log on system • Selected CakePHP during design phase • This was the right decision • Should have created CakePHP prototype during design phase • Would have helped the team understand capabilities and limitations • CakePHP is complicated, would have jumpstarted our development