# Project Plan
**Author**: Team 117
## 1 Introduction
We are building an app that supports a simple, single-player word game on the Android OS. This document serves as a project plan that shows project development process following a Rational Unifed Process (RUP) model.
## 2 Process Description
Our team adopted the RUP as a guideline to plan the project. There are four phases identified in the RUP (Inception, Elaboration, Construction and Transition). Each consists of several development process activities such that its milestone can be achived by the end of the phase. Four phases with their milestones are defined below:
- Inception: Team will understand the scope of the project in this phase.
- Elaboration: Team will gather and understand the requirement and design the system architecture.
- Construction: Team will implement the business features and have a functional product.
- Transition: Team will deploy the product to the clients.
There will be following activities in each of the four phases. It is common for activities to span several phases and there will be overlaps between some activities.
| Activities |Inception | Elaboration | Construction |Transition |
|------------:|----------:|-------------:|--------------:|----------:|
|Business Modelling | X| | | |
|Requirements Gathering| X| X| | |
|Analysis & Design | | X| X| |
|Implementation| | | X| X|
|Testing| | X| X| X|
|Deployment| | | | X|
### Business Modelling
- In this activity, team will envision the project by first understanding its scope and setting the ground for the system architecture and key deliverables. Team will also communicate with clients to achieve a common understanding of the target product among all stakeholders. Based on this, team will assess the major components in a business model and allocate time and resource accordingly. This activity mainly resides in the phase of Inception.
- Entrance criteria: Initial request from clients to build a product.
- Exit criteria:
- Initial project plan approved by all stakeholders.
- Overall system architecture design and a business model is completed, such that major high-level requirements are addressed and agreed among the dev team.
### Requirements Gathering
- Starting from Inception and continuing into Elaboration phase, detailed requirements will be gathered and communicated between developers and clients during this activity.
- Entrance criteria: Initial requirements requested by the clients.
- Exit criteria: A clear definition of the product capabilities (what it can do) and limitations (what it can not do), agreed by key stakeholders.
### Analysis & Design
- Starting from the second half of the Elaboration phase, the dev team will transform the requirements into a concrete design of the system architecture. During this activity, team will demonstrate their choice of the system design. Key critiaria to make this choice include:
- reflect team's understanding of the system
- satisfies most or all of the client's needs
- easy to implement
- Entrance criteria: Requirements gathering is completed.
- Exit criteria: A design document filled out by the team. In this document, team will discuss design considerations, architectural design and low-level design. This document can be updated in the Constuction phase if changes to the system design are necessary when it comes to actual implementation.
### Implementation
- In the Construction phase, team will iteratively and incrementally build the system and implement the designed features towards a complete product. Team will aim for an alpha/beta release by the end of this activity. Implementation is also required in the Transition phase to deal with issues, which include but not limited to the following:
- Updates on the released product might be required
- Software bugs discovered that need to be fixed
- Issues reported by the users in their experience of using the product
- Entrance criteria: Once the design document is ready to use.
- Exit criteria: An initial version of the application that has all the functionalities to perform the required tasks.
### Testing
- This activity spans over several phases. In the Elaboration phase, a test plan without results will first be developed by the team to determine an overall testing strategy and to design test cases. In the Construction phase, testing will be conducted simutaneously with implementation, to validate the features that are implemented as desired. Testing the release of the product is needed in the Transition phase, to support the implementation activity.
- Entrance criteria: Analysis & Design activity is completed. Team have the artifacts to develop a test plan without results.
- Exit criteria: All functionalities pass the test cases as expected.
### Deployment
- In the development activity, team will hand over a fully functional product to the customers for them to test. Team will also collect and address issues reported by the customers, fix previously unidentified bugs and improve system performance and compatability. This activity mainly occurs in the Transition phase.
- Entrance criteria: An initial version of the performing product.
- Exit criteria: Final release of the product available to the clients.
## 3 Team
Team members with their roles are listed in the table below. Due to the small size of the team and limited time, everyone within the team will be engaged in the implementation and testing activity. Three of us will take a leadership role in project management, software architecture design, UI/UX design and test plan design based on each person's specialty. A short description for each role is also presented.
| Team Member |Project Manager | Software Architect | UI/UX Designer |Software Developer | QA Manager |Tester |
|-------:|----------:|-----------:|-----------:|------:|--------:|---------:|
|Chenyang Lu | | | X| X| X| X|
|Michael Matsako |X| | | X| | X|
|Sourav Samanta | | X| X| X| | X|
|Zhengyang Gu | | | | X| | X|
### Project Manager
A PM is in charge of planning, managing and overseeing all activities to make sure the project stays on track and the development team has the resources to get the work done. Key responsibilities include hosting team meetings, keeping track of project status and constantly checking project specs with regard to the development plans.
### Software Architect
A software architect serves as a key contact point between clients and the development team. Main responsibilities include gathering and defining business requirements among key stakeholders, deciding the system and the technology that the project is going to use, overseeing the architecture design and making high-level decisions to optimize between business requirement and development efforts.
### Software Developer
A software developer is the one who actually builds the application with required features. He needs to understand the work to be completed based on project planning and does the coding within the given time and budget. She is also required to be mindful with any forthcoming difficulties that could possibly hinder the project process and keeps the project manager updated.
### UI/UX Designer
A UI/UX designer visualizes the product, which isn't readily visible, by utilizing various levels of prototypes for the development team to assess. Key designs include the layout of the application, the interactions between users and the interfaces. The goal is to ensure the user interface only fulfills the required functionalities, but is also intuitive and responsive.
### QA Manager
A QA manager designs and owns the test plan, a collection of test cases and scripts derived from the criteria defined in the business requirements. The QA also defines the strategy of testing and chooses an approach to perform the testing in an environment that best represents the client's experience. The role of a QA manager is not just detecting bugs and errors, but assessing the product from a real user standpoint.
### Tester
A tester will implement the test plan owned by the QA manager. By following instructions from the test scripts, the tester will compare the actual results with expected results and engage with developers to fix anything that breaks. The goal of the tester is to ensure the test plan is successfully executed and there is no unexpected error in the product.