# Project Plan
**Author**: Team036
## 1 Introduction
The andriod application, "Job Compare", is to provide the user the functionality to compare two jobs displaying side by side, so that the user can make effective decision of choosing their next job.
It allows the user to perform multiple actions like add/edit current job, add job offers, adjusting comparision settings and compare jobs etc.,
## 2 Process Description
The project development process includes multiple activities as below:
1. Requirements Elicitation / Engineering
2. Design
3. Implementation / Code Development
4. Verification and Validation (Testing)
5. Release / Code Deployment and Maintenance
#### 1. Requirements Engineering
This phase is first step in the product / sofware building. Here one gathers the business/product requirements from production manager/business team. These requirements include both functional and non-functional (architecture/development contributes to the non-functional as well). There will be braindtorming/discussion about understanding them and identify the critical components that required to be built or will have an impact.i.e., high-level scope is identified.
#### 2. Design
In this phase, the gathered requirements are analyzed from system perspective and dependencies & assumptions are identified too. Using design techniques and tools, one puts their understanding of the to-be system in the design artifacts(UML, Use Case diagrams, design description doc etc.,) and review it with stakeholders(Eg: submit as assignments)
- **Entry Criteria:** System requirements in terms of functionalities to be built
- **Exit Criteria:** Produce approved system/model design
#### 3. Implementation
This Code construction phase follows the approved system/model designs. This phase is to develop the application as per design based for the given requirements. Developers perform the unit testing using tools like JUnit/Jasmine etc., to validate whether application functions as intended. Devlopers improve the code quality and sustain security compliance/standards by static/dynamic security validation using tools like Checkmarx, Blackduck scans, SonarQube etc., Developers provide code manifestation/install plan instructions.
- **Entry Criteria:** Approved system/model design
- **Exit Criteria:** developed and deployable code, install plan instructions
#### 3. Verification and Validation (Testing)
The implemented code is verfied against the requirements and validation their functional implementation. In this phase, developed code is deployed/set up in different environment from development environment and test engineer verifies the functional requirements, reports if any bugs/issues in the application using JIRA/HP ALM or any bug tracking tools and certifies it to go to production. Specialized testing for non-functional requirements like Performance, security requirements will be done using specific tools like JMeter/Loadrunner, Burp suite tool etc., Tester will produce test plan, test case matrix mapping to the requirements.
- **Entry Criteria:** unit tested code, test plan and test cases ready and approved
- **Exit Criteria:** All tests are passed. Tester provides functional sign-off on the code verified against the requirements
#### 4. Release/Code Deployment and Maintenance:
This phase is to deploy the code(following the installation steps) in production environment. Post-deployment validation, production engineering/product technical support team will monitor the application using tools and alerts Eg: Grafana, Splunk, Opera etc.,
- **Entry Criteria:** Tester certified/signed-off code, install plan instructions given by developers.
- **Exit Criteria:** Code is deployed in production enviroment and application is up and running with passing validation tests.
## 3 Team
#### Team members' names:
- Abdul Jakeer Gurramkonda
- Aray Sultanbekova
- Kamolphan Liwprasert
- Lipu Wu
#### Roles:
- **Business Analyst(BA)/Technical Product Manager(TPM):**
The role of Analyst/Technical Product Manager is to translate the business requirements into technical requirements, and produce diagrams and documentations for further reference. They do acceptance testing once the final product/application is ready.
- **Systems/Solutions Architect:**
The role of an architect is to provide system design or solution approach and define any client contractual specification (Eg: API spec) to deliver functional, non-functional requirements. Architect will be reviewing and signing-off the low-level/implementation design produced by developers.
- **Developer:**
The role of the developer is to come up with technical design for implementation and once the design document is approved by Stakeholders(Business Analyst/TPM/architect), will do the coding/implementation of the requirements. Developer should implement code adhering to the SSDLC standards.
Developer is also responsible for unit testing their code before turning over to tester and provides bug fixes if reported any by tester or customer. Developer needs to provide the instructions to deploy the code.
- **Test Engineer:**
The role of the tester is to create a Test plan describing in-scope and out-of-scope, test data requirements, dependencies/assumptions, testing environment details, testing timelines etc., and design and develop test cases.
The Tester will test the application as per requirements and provides the final sign-off to promote the code to production environment.
- **Release/deployment Engineer:**
Release engineer role is to follow the deployment manifestation or install plan instructions to deploy to production. Release engineer will also do basic validation like service/application booting up and running as expected.
- **Project Manager(PM):**
Project manager makes sure that the project is delivered within the deadline. Project manager leads the project grooming and planning discussion.
#### Team Member Roles
| Team Member | Role|
| -------- | -------- |
| Abdul Jakeer Gurramkonda | BA/TPM, developer |
| Aray Sultanbekova | developer, release engineer |
| Kamolphan Liwprasert | solution architect, developer |
| Lipu Wu | project manager, tester |