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

  1. 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.
  2. 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

  1. 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.
  2. Standards
    See the appropriate wiki page.
  3. 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

  1. 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. 2 units TBD

Task Breakdown

  1. Iteration 1
Task Assigned to Status
Initial database design (UML, relational model, schema) Michael, Brandon Complete
Research PHP Unit Testing and JSON notifications Rodney, Ryan, Alex Complete
Development of push notification server framework Steve Complete
Begin project plan documentation Jamie Complete
iOS skeleton program for client device Paul Complete
2. Iteration 2
Task Assigned to Status
Expert in Michael Taft's Moon Calendar Brandon Carried Over
Joomla expert (research plug-in development) Ryan Complete
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
  1. 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"
  1. 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
  1. 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
  1. 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

  1. A working iDevice application (with dummy data) to demo to the client
  2. A working web service of Ephemeris data.
  3. A working prototype incorporating the previous two points.

Issues

TBA as they (hopefully do not) arise.

Hardware and Software Requirements

  1. 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.
  2. Software
    PHP Eclipse (or similar PHP IDE)
    GitHub
    Xcode
    dotProject
⚠️ **GitHub.com Fallback** ⚠️