-
Notifications
You must be signed in to change notification settings - Fork 10
Project Plan
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.
-
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.
- 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. - Standards
See the appropriate wiki page. - 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.
- 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 |
| 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 |
| 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. |
| 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 | |
| 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 |
- 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 |
| 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 |
| 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 |
- 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 |
| 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 |
- 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.
TBA as they (hopefully do not) arise.
- 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