Software Specification Controllers

Download Report

Transcript Software Specification Controllers

Reiman Gardens Plant
Database
Dec 08-06
Clay Schumacher
Josh Weisskopf
Advisor: Tien Nguyen
Cory Simon

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

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




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

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.

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

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
Registered User
Client
Label Makers
Web
Browser
Public User
Server
HTTP Server
Queries
Responses
Database
PHP


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

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: HTTP Page Requests
Output: HTML, CSS, JavaScript,
and Labelmaker Files

Login Page

Welcome Page

Help Page

Search Results Page

Model Index Page

Add Record Page

View Record Page

Edit Record Page

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
Families
Alternative
Names
Genera
References
Species
Nativities
Users
Accessions
Gardens
Removals
Suppliers
Propagations

All Models inherit from AppModel class

Each class defines key fields and methods

CakePHP provides functions through model
classes for retrieving/saving info from the DB
◦ Defines defaults that can be overridden
◦
◦
◦
◦
◦
◦
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

AppController Superclass

Additional Actions:

Unique Controllers
◦ Contains index, add, edit, and view
◦ Contains search and autocomplete functions
◦ Verifies authentication, access control
◦ Accessions and Gardens: Export to Excel
◦ Species: Upload Image, Remove Image, Full Image
◦ Users: Login, Logout, Register, Reset Password
◦ Species: Overwrites add, edit, view
◦ Genus: Overwrites add, edit


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


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.)

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


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

Subversion

◦ Web Server
◦ Version Control

Trac
◦ Project management
 Wiki
 Issue tracking
 Activity log
Apache

Samba
◦ File Sharing

A basic process was followed for each team
member to accomplish a task

Alpha Release – November 9
◦ Basic functionality

Beta Release – December 3
◦ Feature complete

Final Release – December 15

Imported taxa from USDA database to create
a large load on the system

Over 400 families, 4000 genera, 38000
species

Highlighted deficiencies in code

Beneficial side-effect: system is prepopulated with taxa
◦ Areas that weren’t limiting query results

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


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

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


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

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


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
50
45
40
35
30
25
20
15
10
5
0
Tickets Created
Tickets Closed
Total Open Tickets

Spring: 538

Fall: 658
Hours per Person
Hours per Phase
82.5
123
330
311.5
Clay
Design
Cory
391
Plan
Implement
467.5
Test
352
226.5







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

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