Project Plan - paulmoore/AstroCalendar GitHub Wiki
Project Plan
Vision
To create a simply designed, extensible Astronomical Calendar platform, while following the extreme programming paradigm. The platform will be user and developer friendly, stable, and secure. The platform will revolve around the Swiss Ephemeris library and PHP scripts that call it. The first client side development will be done for the iPhone as an application. Android development will be pursued if time permits.
Main Components
Task Components
There are three main tasks which must be accomplished.
First, Michael Taft's Moon Calendar must be ported to our platform. His work, originally done in Java, contains the important names and functions to do with Hindu Moon astrology, which the new platform should support and be able to print. Whether our system sends an email to the user or a spreadsheet of information, it must be in a printable form. The existing calendar supports multiple languages, this functionality must be ported as well.
Second, the work done previously by a COSC 310 group must be ported to our platform. The new system should also have the functionality of determining moon rise and set. Like the previous project, the new system should have a library of locations (longitude and latitude), but must furthermore calculate the sunrise and set for a selected time zone/location. The new system must also have a graphical calendar for “moon days” (tithis), sunrise and set, and must have a printable view of all information. The print functionality must be similar to that described in the first part.
Finally, time permitting, the work Dr. Khemlevsky has done in excel, must be ported to the platform. Specifically, the modules related to Astrology including calculations, graphical presentations and events interpretations, (many of which can be found in the MS Excel file). Also, include the rectification part by using Tattwa/AntarTattwa birth time rectification.
Architecture Components
The project has four main divisions. The first component of the project is the API, which is a Joomla application/component. This component handles all interactions between plug-ins and client devices. The second component is the data plug-in, which manages and stores all raw data from either the Swiss Ephemeris DLL or NASA. The third component is the preferences plug-in, which manages all of the user log-in information, accounts, customizations, and preferences in a local Joomla database. The final component is the iPhone application development, which provides the user with a user friendly calendar that is interfaced with the platform. This application will display the user's preferred information (as selected using the preferences plug-in), including specified calendar dates and times, charts, and notifications.
Project Organization
Team Structure
The team has been grouped as follows: Paul and Steve, Jamie and Ryan, Rodney and Michael, Alex and Brandon. Each component of the project has an expert/lead. The API/Joomla lead is Ryan. The client/iOS lead is Paul, The data/ephemeris plug in-lead is Michael. The user preference plug-in lead is Rodney. The documentation lead is Jamie. Any issues or complaints that arise will be mediated by Andrew, and all top level decisions must be made as a group.
Monitoring and Reporting Mechanisms
All time and task tracking will be done through dotProject.
Weekly team meetings are Tuesday at 12:30pm in SCI 310.
Personal project reports are due at the weekly Tuesday meeting, and no later than Thursday. Reports can be submitted in person or by Vista Blackboard.
Reporting to the client is done via weekly client meetings on Wednesdays at 5:00pm in FIP 253.
Change management is handled by github to submit and track code from team members. View the main repository here.
Risks
Software Project Risks
Risk
Affects
Description
Size Underestimate
Project and Product
The size of the system has been underestimated
Technology Change
Business and Project
The underlying technology on which the system is built is superseded by new technology (ie. A new system replaces iPhone or Android, etc)
Product Competition
Business
A competitive product is marketed before the system is completed
2. Risk Analysis
Risk Type
Risk
Probability
Effect
Estimation
Underestimating how much time the project will take to complete
Moderate
Serious
Estimation
Underestimate the size of the software
Low
Serious
Organizational
The organization is restructured so that different management are responsible for the project
Very Low
Serious
People
Team members having heavy course load, which interferes with their commitment to the project
High
Serious
People
Team member illness at critical time
Moderate
Tolerable to Serious
People
Poor communication between team members
Low to Moderate
Serious to Catastrophic
Requirements
Changes to requirements that require major design rework are proposed
Moderate to High
Serious to Catastrophic
Technology
Hardware failure/power surge incurring data loss
Low
Catastrophic
3. Risk Management
Risk
Strategy
Underestimating how much time the project will take to complete.
Create tasks for completion at regular, short intervals, and have regular meetings to ensure the project is being kept on track, while allowing an extra ~10% of time each task to be completed.
Underestimate the size of the software.
Evaluate feature list and remove redundancies and non-critical features.
The organization is restructured so that different management are responsible for the project.
Create clear and concise documentation that outlines the project’s scope, accomplishments, goals, requirements and deadlines to the give to the new management.
Team members having heavy course load, which interferes with their commitment to the project.
The extreme programming paradigm ensures that multiple team members know how to complete different aspects of the project.
Team member illness at critical time
See above
Poor communication between team members
Schedule regular team meetings to ensure all team members are on task an in accordance with the project plan. Andrew has agreed to mediate any conflicts that may arise.
Changes to requirements that require major design rework are proposed.
Maintain open communication and regular testing with the client. Worst case: inform the client that such changes will create serious delays and said changes may not be completed within the time/resources that are available.
Hardware failure/power surge incurring data loss
Github has both a local and remote repository. Maintaining regular commit and push habits will prevent data loss.
User Stories
From
Title
Story
Estimate
Priority
Michael Taft
Quick View
The user views the astrological data for the next 7-8 days.
3 units
Iteration 4
Time Period
The user retrieves astrological data for selected time range
5 units
Iteration 4
Print
The user emails a copy of the data, to an email address, in an easily printed format (i.e., line by line or in a table).
4 units
Iteration 4
Moon Phase
The user goes to the moon calendar to view a lunar phase.
2 units
Redundant
Moon data
The user goes to a specific moon tithi to view its details.
1 unit
Iteration 4
Lunar Data
User selects a moon day (Tithi) and views its details: Moon rise, Moonset, Position in cycle (ie FUll moon, new moon, waning, waxing, etc), and what day it is in the lunar cycle (and perhaps sanskrit name eg: Ikadashi)
1 Unit
Iteration 4
Language
Research the feasibility to have the ability to use multiple languages.
1 Unit (research)
Iteration 4
Youry's Excel
Local iPhone Alerts/Reminders
Users can select if they want to be reminded of the 11th moon day, new moon, or full moon.
5 units
Iteration 4
Navigate
The user wishes to navigate from the moon calendar to the sun calendar (or vice versa) via the toolbar.
1 unit
Iteration 4
Planet Phase Changes
The user wants to view the day the planets change phase.
2 units
TBD
Terminology Help
The user opens a help menu to learn more about terms and phrases.
4 units
TBD
Location
The user opens the sun calendar and views their location.
2 units
TBD
Sun Events
The user selects a solar day to view events.
1 unit
TBD
Add Event
The user goes to a specific date to add an event.
5 units
TBD
Sun Date
The user clicks on a sun day to view solar related data.
Ephemeris expert (determine the scope of what is needed, how to interface with PHP)
Michael
Complete
Project Architecture redesign
Steve
Complete
Complete project plan
Jamie
Carried Over
PHP, objective c, and Joomla tutorials
Brandon
Complete
Ephemeris library demo using C
Alex
Complete
API Breakdown, PHP Unit Testing
Rodney
Complete
Github setup. iOS tutorials. Skeleton view controller, runnable on iPad/Phone (with unit tests). Licensing through Apache. Tapku library for UI.
Paul
Complete
DotProject setup. Asynchronous networking. JSON requests. Calendar UI research and development.
Steve
Complete
3. Iteration 3
Task
Assigned to
Status
Rewrite project plan in markdown for wiki
Jamie, Paul
Complete
Create github accounts and watch AstroCalendar
ALL
Complete
Progit.org/book how to use git
All
Complete
Code standards wiki
Paul, Jamie
Carried over
PHP working with C - make simple CDLL to work with C
Alex, Michael
Complete
PHP working with C and ephemeris
Michael, Alex
Carried over
UI Flow of mock up (HCI)
Ryan, Paul
Complete
Start building on UI – calendar integration to skeleton project
Paul, Rodney
Complete
Design API interface
Rodney, Steve
Complete
Designed JSON interface
Steve, Rodney
Complete
Asynchronous http get requests on iOS devices
Steve,Rodney
Complete
JSON parsing using built in iOS frameworks
Steve, Rodney
Complete
Begin Master Data Handler class design
Steve, Paul
Complete
Networking – web API (learn restful API design, how to interface web with client, responding to HTTP requests)
Ryan, Brandon
Carried over
Joomla database setup and extending it
Ryan, Michael
Carried over
PHP receiving get requests
Rodney, Alex
Complete
PHP sending JSON
Alex, Rodney
Complete
User stories and have Youry order them.
Brandon, Rodney, Jamie
Complete
HCI Usability of UI
Jamie, Ryan
Complete
Expert in Michael Taft's Moon Calendar.
Paul, Ryan
Carried over
Expert in Michael Taft's Moon Calendar
Paul, Ryan
Carried Over
Iteration 4
Task
Time Estimate
Assigned to
Status
Compile the PHP/Sweph library
4 units
Michael
Carried over
Integrate the PHP/Sweph library with JSON/API
3 units
Rodney
Carried over
Determine which functions of sweph are necessary
2 units
Alex, Rodney
Carried over
How to get latitude and longitude from iPhone
2 units
Steve
Carried over
Set up Joomla
1 unit
Steve
Carried over
Retrieve "date data request objects"
1 unit
Paul
Complete
Data manager class
3 units
Steve
Complete
API endpoint to connect to
2 units
Rodney
Carried over
Simple Joomla application that makes a call to ephemeris plug-in/API
2 units
Ryan, Brandon
Complete
Simple Joomla application that receives a get request from the iDevice
2 units
Brandon, Ryan
Carried over
Wiki project plan updating
2 units
Jamie
Complete
Update user stories
2 units
Brandon, Rodney, Jamie
Complete
API diagramming for the Wiki
1 unit
Ryan
Complete
US: Research iDevice email abilities
1 unit
Ryan
Complete
US: Quick View (7-8 day view of moon/sun rise/set)
3 units
Brandon, Paul
Complete
US: Time Period - information for selected date range
5 unit
Rodney, Mike, Steve, Paul
Carried over
US: Moon Data - view details of specific tithi
1 units
Paul
Complete
US: Moon Phase - view moon phase from moon calendar
2 units
Paul
Complete
US: iDevice alerts
5 units
Steve, Paul
Complete
US: Navigate - to and from sun and moon calendars
1 unit
Paul
Complete
US: Planet phase changes
2 units
Brandon, Alex
Carried over
US: Help menu
4 units
Brandon
Carried over
US: Location viewed in sun calendar
2 units
Steve, Paul
Carried over
US: Sun events
1 unit
Steve, Paul
Carried over
US: Add events
5 units
Paul, Steve
Carried over
US: Sun date
2 units
Steve, Paul
Carried over
Note that "US:" stands for "User Story"
Iteration 5
Task
Time Estimate
Assigned to
Status
Compile Sweph library on the server
2 units
Michael, Alex
Complete
Integrate the PHP/Sweph library with JSON/API
3 units
Rodney,Jamie
Complete
Determine which sweph functions are necessary
2 units
Alex, Brandon
Carried over
Update project plan
1 unit
Jamie
Complete
Implement lat/long iDevice retrieval
2 units
Steve, Paul
Carried over
Set up Joomla on the server
2 units
Michael, Brandon
Carried over
API endpoint to connect to
2 units
Rodney, Alex
Complete
Integration: simple Joomla application that receives a get request from the iDevice
2 units
Rodney, Ryan, Steve
Carried over
Integration: Retrieving the moon information for a user selected date range (BREAK THIS DOWN)
7 units
Paul, Steve, Mike, Rodney
Carried over
Research when the planets change phase
1 unit
Brandon, Alex
Carried over
Implement the retrieval of information about planet phase change
2 units
Paul
Carried over
Help menu- research definitions and events
3 units
Brandon
Complete
Implement help menu using Brandon's research
2 units
Paul
Carried over
View current location in the sun calendar
3 units
Paul, Steve
Carried over
Ability to view sun events
2 units
Steve, Paul
Carried over
Ability to add new sun events
2 units
Paul, Steve
Carried over
Sun date
2 units
Paul, Steve
Carried over
Iteration 6
Task
Time Estimate
Assigned to
Status
Determine which sweph functions are necessary, including Pakshas (wane/waxing), Tithi (lunar day), and lunar month.
2 units
Alex, Brandon
Complete
Update project plan
1 unit
Jamie
Complete
Begin Developer's Guide
2 units
Jamie
Complete
Begin User's Guide
2 units
Jamie
Complete
Implement lat/long iDevice retrieval
2 units
Steve, Paul
Carried over
Set up Joomla on the server
1 unit
Michael, Brandon
Scratched
Integrate Joomla component with the API
2 units
Rodney, Ryan, Steve
Scratch
Implement retrieval of Paksha/Tithi data from API/Sweph
1 units
Steve, Mike, Ryan
Carried over (Just needs lat/long)
Research when the planets change phase
1 unit
Brandon, Alex
Complete
Implement the retrieval of information (including planet phase change). Integrate with Data Handlers
2 units
Paul
Complete
Implement help menu using Brandon's research
2 units
Paul
Carried over
View current location in the sun calendar
3 units
Paul, Steve
Carried over
Ability to view sun events
2 units
Steve, Paul
Carried over
Ability to add new sun events
2 units
Paul, Steve
Carried over
Sun date
2 units
Paul, Steve
Carried over
Find formula for calculating Tithi and Paksha
2 units
Ryan
Complete
Iteration 7
Task
Time Estimate
Assigned to
Status
Implement lat/long iDevice retrieval
2 units
Steve, Paul
Complete
Implement retrieval of Paksha/Tithi data from API/Sweph
1 units
Steve, Mike, Ryan
Complete
Implement help menu using Brandon's research
2 units
Paul
Complete
View current location in the sun calendar
3 units
Paul, Steve
Incomplete
Ability to view sun events
2 units
Steve, Paul
Complete
Ability to add new sun events
2 units
Paul, Steve
Incomplete
Sun date
2 units
Paul, Steve
Complete
Installation Guide
3 units
Michael
Complete
Complete Developer`s Guide
3 units
Jamie, Paul, Steve, Rodney, Alex, Michael, Ryan
Complete
Complete User's Guide
2 units
Jamie, Rodney
Complete
Complete Release Notes
1 unit
Michael
Complete
Complete Testing Guide
1 unit
Rodney
Complete
Prepare Presentation
2 units
Jamie, Steve, Paul
Complete
Finish and rehearse project presentation
2 units
ALL
Complete
Complete Project Plan
0.5 units
Jamie
Complete
Project Time Line
Iteration
Date
Milestone
Iteration 1
October 13-18th
Determine standards, communication, project scope
Iteration 2
October 19-25th
Finish research, determine project architecture.
Iteration 3
October 26- November 1st
App running on iphone/pad (display demo calendar). Wiki up to date with project plan and standards. PHP script calls a CDLL demo, and displays result. 8 github accounts and repository pulled down. iOS device capable of sending HTTP request. Youry ranked user stories. Basic JSON functionality (JSON and PHP demo script).
Iteration 4
November 2-8th
UI programmed and working. Joomla needs to be operational. iDevice needs to be able to request data from the web service. Ephemeris library needs to compile and run with PHP. Need to know which ephemeris functions we need. PHP server needs to accept HTTP requests and send JSON data as a response. We need (from Youry) a locked feature list of EXACTLY what sun and moon data needs to be displayed.
Iteration 5
November 9-15th
Get sudo, fttp/sftp access to Youry's OC server. Install PHP5 on the OC server. Set up Joomla on the OC server. Compile sweph on OC server. Get the UI interacting with Steve's data handlers. Determine all necessary functions for retrieving necessary data from sweph.
Iteration 6
November 16-22nd
Complete "Michael Taft" functionality. Retrieve lunar information from Sweph. iPhone integrate with API. UI displays actual data. Have the ability to add new events. Have Joomla set up and the component working on the server.
Iteration 7
November 23-29th
FINISH ALL TASKS. Michael Taft functionality. Prototype ready. Presentation ready. Documentation complete.
**END**
November 30- December 2nd
Final presentation
Deliverables
A working iDevice application (with dummy data) to demo to the client
A working web service of Ephemeris data.
A working prototype incorporating the previous two points.
Issues
TBA as they (hopefully do not) arise.
Hardware and Software Requirements
Hardware
Mac machine(s) for iOS development.
iDevice(s) for testing.
Windows or Linux machine(s) for PHP/Joomla development.
Android device(s) for testing.
Software
PHP Eclipse (or similar PHP IDE)
GitHub
Xcode
dotProject