43
Clay Schumacher Josh Weisskopf Cory Simon Advisor: Tien Nguyen Reiman Gardens Plant Database Dec 08-06

Clay SchumacherJosh Weisskopf Cory Simon Advisor: Tien Nguyen

Embed Size (px)

DESCRIPTION

Reiman Gardens Plant Database Dec 08-06. Clay SchumacherJosh 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 - PowerPoint PPT Presentation

Citation preview

Page 1: Clay SchumacherJosh  Weisskopf Cory Simon Advisor:  Tien  Nguyen

Clay Schumacher Josh Weisskopf Cory Simon

Advisor: Tien Nguyen

Reiman Gardens Plant Database

Dec 08-06

Page 2: Clay SchumacherJosh  Weisskopf Cory Simon Advisor:  Tien  Nguyen

Planning

Page 3: Clay SchumacherJosh  Weisskopf Cory Simon Advisor:  Tien  Nguyen

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

Problem Statement

Page 4: Clay SchumacherJosh  Weisskopf Cory Simon Advisor:  Tien  Nguyen

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

Project Goal

Page 5: Clay SchumacherJosh  Weisskopf Cory Simon Advisor:  Tien  Nguyen

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

Basic Requirements

Page 6: Clay SchumacherJosh  Weisskopf Cory Simon Advisor:  Tien  Nguyen

Market SurveyBG-Base

Page 7: Clay SchumacherJosh  Weisskopf Cory Simon Advisor:  Tien  Nguyen

Market SurveyKE EMu

Page 8: Clay SchumacherJosh  Weisskopf Cory Simon Advisor:  Tien  Nguyen

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.

Design Alternatives

Page 9: Clay SchumacherJosh  Weisskopf Cory Simon Advisor:  Tien  Nguyen

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

Final Design Concept

Page 10: Clay SchumacherJosh  Weisskopf Cory Simon Advisor:  Tien  Nguyen

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

Design vs. Goals

Page 11: Clay SchumacherJosh  Weisskopf Cory Simon Advisor:  Tien  Nguyen

Basic Diagram

HTTP Server PHP

Database

Queries Responses

Server

Web Browser

ClientLabel Makers

Public User

Registered User

Page 12: Clay SchumacherJosh  Weisskopf Cory Simon Advisor:  Tien  Nguyen

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

Page 13: Clay SchumacherJosh  Weisskopf Cory Simon Advisor:  Tien  Nguyen

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

Page 14: Clay SchumacherJosh  Weisskopf Cory Simon Advisor:  Tien  Nguyen

System Design

Page 15: Clay SchumacherJosh  Weisskopf Cory Simon Advisor:  Tien  Nguyen

Input/Output Specification

Input: HTTP Page Requests Output: HTML, CSS, JavaScript,

and Labelmaker Files

Page 16: Clay SchumacherJosh  Weisskopf Cory Simon Advisor:  Tien  Nguyen

User Interface Specification

Login Page

Welcome Page

Help Page

Search Results Page

Model Index Page

Add Record Page

View Record Page

Edit Record Page

Page 17: Clay SchumacherJosh  Weisskopf Cory Simon Advisor:  Tien  Nguyen

Software SpecificationModel-View-Controller

Page 18: Clay SchumacherJosh  Weisskopf Cory Simon Advisor:  Tien  Nguyen

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 SpecificationCakePHP

Page 19: Clay SchumacherJosh  Weisskopf Cory Simon Advisor:  Tien  Nguyen

Software SpecificationModels

Species

Genera

Families

Suppliers

GardensUsers

Nativities

Accessions

Alternative Names

Removals

Propagations

References

Page 20: Clay SchumacherJosh  Weisskopf Cory Simon Advisor:  Tien  Nguyen

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 SpecificationModels

Page 21: Clay SchumacherJosh  Weisskopf Cory Simon Advisor:  Tien  Nguyen

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 SpecificationControllers

Page 22: Clay SchumacherJosh  Weisskopf Cory Simon Advisor:  Tien  Nguyen

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 SpecificationComponents

Page 23: Clay SchumacherJosh  Weisskopf Cory Simon Advisor:  Tien  Nguyen

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 SpecificationViews

Page 24: Clay SchumacherJosh  Weisskopf Cory Simon Advisor:  Tien  Nguyen

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 SpecificationHelpers and elements

Page 25: Clay SchumacherJosh  Weisskopf Cory Simon Advisor:  Tien  Nguyen

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

Software SpecificationExternal Interface

Page 26: Clay SchumacherJosh  Weisskopf Cory Simon Advisor:  Tien  Nguyen

Implementation and Testing

Page 27: Clay SchumacherJosh  Weisskopf Cory Simon Advisor:  Tien  Nguyen

Subversion◦ Version Control

Trac◦ Project management

Wiki Issue tracking Activity log

Development Tools Apache

◦ Web Server

Samba◦ File Sharing

Page 28: Clay SchumacherJosh  Weisskopf Cory Simon Advisor:  Tien  Nguyen

A basic process was followed for each team member to accomplish a task

Development Strategy

Page 29: Clay SchumacherJosh  Weisskopf Cory Simon Advisor:  Tien  Nguyen

Alpha Release – November 9◦ Basic functionality

Beta Release – December 3◦ Feature complete

Final Release – December 15

Release Strategy

Page 30: Clay SchumacherJosh  Weisskopf Cory Simon Advisor:  Tien  Nguyen

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

Stress Testing

Page 31: Clay SchumacherJosh  Weisskopf Cory Simon Advisor:  Tien  Nguyen

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 ChallengesSecurity

Page 32: Clay SchumacherJosh  Weisskopf Cory Simon Advisor:  Tien  Nguyen

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 ChallengesSearch

Page 33: Clay SchumacherJosh  Weisskopf Cory Simon Advisor:  Tien  Nguyen

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 ChallengesSearch

Page 34: Clay SchumacherJosh  Weisskopf Cory Simon Advisor:  Tien  Nguyen

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

Key ChallengesExcel Files

Page 35: Clay SchumacherJosh  Weisskopf Cory Simon Advisor:  Tien  Nguyen

Conclusion

Page 36: Clay SchumacherJosh  Weisskopf Cory Simon Advisor:  Tien  Nguyen

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

Status

Page 37: Clay SchumacherJosh  Weisskopf Cory Simon Advisor:  Tien  Nguyen

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

Scope Reduction

Page 38: Clay SchumacherJosh  Weisskopf Cory Simon Advisor:  Tien  Nguyen

Ticket Activity

9/14-9/20

9/20-9/27

9/28-10/4

10/5-10/11

10/12-

10/18

10/19-

10/25

10/26-11/1

11/2-11/8

11/9-11/15

11/16-

11/22

11/23-

11/29

11/30-12/6

12/7-12/13

0

5

10

15

20

25

30

35

40

45

50

Tickets CreatedTickets ClosedTotal Open Tickets

Page 39: Clay SchumacherJosh  Weisskopf Cory Simon Advisor:  Tien  Nguyen

Subversion Commit Activity

Page 40: Clay SchumacherJosh  Weisskopf Cory Simon Advisor:  Tien  Nguyen

Spring: 538

Project Hours Fall: 658

311.5

226.5

467.5

82.5

Hours per Phase

PlanDesignImplementTest

330

352

391

123

Hours per Person

Clay

Cory

Josh

Rolando

Page 41: Clay SchumacherJosh  Weisskopf Cory Simon Advisor:  Tien  Nguyen

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

Evaluation

Page 42: Clay SchumacherJosh  Weisskopf Cory Simon Advisor:  Tien  Nguyen

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

Lessons Learned

Page 43: Clay SchumacherJosh  Weisskopf Cory Simon Advisor:  Tien  Nguyen

Demo