kurifu / CMUSV-PET

Final course project for CMU's Foundations of Software Engineering Fall 2010

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Assumptions

  • A project is owned by a single user and only the owner and admins can view the project

  • The lifecycle of a project is not changeable

  • Only admin can create a user

  • Only admin can delete a project

  • A project can not be deleted with an owner, it needs to be reassigned to another user

Database design

Users Table

User_id:integer  username:string  email:string  crypted_password:string  password_salt:string  user_class:string

Deliverables Table

Project_id:integer  Deliverable_id:integer  lifecycle:string   phase:string   deliverable_type:string  deliverable_name:string    deliverable_desc:text  deliverable_url:string  complexity:string  unit_of_measurement:string  estimated_size:float  production_rate:float  estimated_effort:float

Projects Table

project_id:integer  project_name:string  project_desc:text  project_status:string  lifecycle:string

Progress

Iteration 3:

Story cards completed:

  • Story Card 8, “As a user, I can upload a deliverable”

  • Story Card 17, “As an admin, I can create a user As an admin, I can delete a user As an admin, I can reassign projects As an admin, I can see all projects As an admin, I can delete projects.”

  • Story Card 13, “As a user, I can view historical data in each phase of the project for each deliverable type”

  • Story Card 1, “As a user, I can login PET.”

  • Story Card 2, “As a user, I can navigate from the project homepage to the project creation page”

  • Story Card 4, “As a user, I can edit an existing project from the project homepage”

  • Story Card 5, “As a user, I can review an existing project from the project homepage”

  • Story Card 6, “As a user, I can jump from the create a project page to the project phase page(s)”

  • Story Card 7, “As a user, I can jump from the project phase page to the add deliverable page”

Some story cards have been re-estimated

  • Story Card 1: 2 points up to 8 points

  • Story Card 2: 2 points down to 1 point

  • Story Card 5: 2 points down to 1 point

Iteration 2:

Story cards completed:

  • Story Card 15, “As a user, I can view the project phase page. As a user, I can see all deliverables associated with each phase.”

  • Story Card 10, “As a user, I can provide deliverable size and production rate to PET and expect PET to calculate effort with the correct equation”

  • Story Card 14, “As a user, I could view the project estimation screen, which shows accurate estimates for every phase of the project”

  • Story Card 11, “As a user, I can add a new deliverable type if it is not provided in the list”

  • Story Card 12, “As a user, I can select a measurement type for a new deliverable type from a drop down list.”

  • Story Card 9, “As a user, I can provide deliverable complexity and type to PET and expect PET to provide the unit of measurement”

Iteration1:

Story cards completed:

  • Story Card 3, “As a user, I can create a project and enter name, description and lifecycle”

  • Story Card 8, “As a user, I can add a new deliverable type from the existing list of deliverable types. As a user, I can enter name, description, complexity, estimated size and production rate to the new deliverable.”

  • Story Card 15, “As a user, I can view the project phase page. As a user, I can see all deliverables associated with each phase.”

  • Story Card 10, “As a user, I can provide deliverable size and production rate to PET and expect PET to calculate effort with the correct equation”

Getting Started

Get the source code on github, using the following command:

git clone git@github.com:cmusv/Fall-2010-FSE-Rail-Blazers.git

Bundle and DB setup

bundle install
bundle exec rake db:schema:load
bundle exec rake db:setup (to load the seeds.rb data)

Key design decisions

Team Rail Blazers made the decision to use xml to store static data. Disadvantages of using DB:

  • Accessing DB is a “cost” from a real life project

  • Consumes a bit of memory each access

Solution: put static data in XML files

  • We will have accessor methods to pull out the data from XML, then store these values into Dyanmic Tables

Advantages of this Approach:

  • Static data does not affect and will not be affected by Dynamic data; completely separate

  • We avoid joining 4 tables when looking up an entry in the Deliverables table; the static data will already be there because we already populated them

Static Tables Turned into XML Files:

  • Lifecycle

  • Phase

  • Deliverable_Type

  • Unit of Measurement

XML Accessor Methods:

  • Will need to parse XML file and return one or more values in one or more formats (single value, array, array of specific values, etc)

Future works

  • Extend PET on mobile platforms (Android/ iPhone/ WP7)

  • Email notifications

  • Graphical progress tracking

  • More detailed effort logging system

  • Multiple user collaboration

  • Automated documentation ( creating a pdf with info stored in application)

About

Final course project for CMU's Foundations of Software Engineering Fall 2010


Languages

Language:Ruby 83.8%Language:JavaScript 16.2%