Value: 10% of the Course Mark
Due: Monday 28th February (Week 3), 1pm
1. Task
In this sprint, you will be expected to:
Within your team, allocate team roles.
Convert the initial specification for your assigned service category into a list of requirements.
Decide on a stack architecture for your service.
Identify any initial constraints that will affect the team’s performance in the project
Create an initial API interface design for your service.
Plan for the completion of work for the following sprint to complete a MVP of the service.
2. Team Roles
Based on your individual and collective strengths, discuss and as a team allocate the following roles:
Team Lead / Scrum Master
Product Owner
Delivery Manager (Optional)
These roles aren’t formal positions of responsibility within the group - they are simply a means of helping you structure your approach to managing the project by having people responsible for specific aspects of it. You are welcome to change the roles, if you as a team see fit during the term.
In a Confluence page called Team, document your decision-making process and the reasoning behind the team’s decision.
3. Requirements Analysis
Using Confluence, convert the specification for your assigned service into a list of requirements.
You may, but are not expected to use a controlled language notation such as Connextra Notation (User Stories & Acceptance Criteria). A list of dot points with statements detailing the definition of done will suffice, however.
You will need to logically group features that are related, and differentiate between functional and non-functional requirements.
Document this in a Confluence page called Requirements in your team workspace.
4. Initial Software Architecture Design
As a team, you will need to decide the stack you will use to develop the service. In particular, you will need to decide what frameworks you will use to create each of the following layers of your service:
Deployment Method
Server / API Layer
Application Layer
Persistence Layer
In your discussions, you should consider factors and constraints including, but not limited to the following:
Current team member knowledge of frameworks
Difficulty of frameworks to learn
How well the framework is documented
Availability / pricing of platforms
Your software architecture design can change between now and when you implement the service - this is simply an initial draft design.
You will also need to decide on your repository provider (GitHub / Bitbucket). This is up to you, however the course has 2 requirements for this:
You must be able to link your Jira tickets to branches and Merge Requests / Pull Requests
You must be able to setup automated Continuous Integration. GitHub provides free CI through GitHub Actions. If you would like to use Bitbucket please make a post on the forum, as we will be able to set it up for you.
Document your decisions and reasoning inside a Confluence page called Architecture.
5. Initial API Design
Convert your list of requirements into an initial API Interface Design for your chosen service. Your interface design will need to include the following:
Route names
Route description
CRUD method (GET, POST, PUT, DELETE)
Parameters
Return values
Exceptional flows
Descriptions of composite parameter / return types
You are welcome to use an alternative approach to designing your API, such as GraphQL, however all design decisions must be documented. You may use Swagger for this phase if you wish, however you are not required to. You will need to create a finalised API Design with Swagger in the next sprint.
Place your design inside a Confluence page called Interface.
6. Project Planning
From your requirements analysis and design, plan for the completion of work for a Minimum Viable Product (MVP) of the service.
The breakdown of tasks is up to you as a team, however you should (a) ensure that tasks are broken down at a technical level and not just a product level, and (b) document your logic behind the breakdown of tasks.
Using Jira, you will need to:
Create a sprint that details all of the work up until the end of Sprint 2;
Create tickets / work items for each task;
Appropriately group tickets together under epics;
Where needed, split tickets down into subtasks;
Allocate assignees and reporters to each ticket;
Allocate Story Points to each ticket;
Allocate Priorities to each ticket;
Sequence the tickets appropriately in the backlog; and
Highlight dependencies and prerequisites between tasks as needed.
Document any important reasoning that occurs as part of this process inside a Confluence page called Planning.
7. Constraint Analysis
Identify and document any constraints - potential bottlenecks, blockers or other obstacles that may arise in the project and affect your performance as a team. Briefly note down any measures you as a team can put in place to exploit the constraints.
Document this inside a Confluence page called Constraints.
8. Communications
As part of this sprint you will need to demonstrate your ability to communicate and work as a team. You will need to have:
A sprint planning meeting;
Regular standups, either synchronous or asynchronous (at least 3 a week); and
A sprint retrospective meeting.
You will need to take minutes for your meetings and record these on Confluence. Minutes should contain information on:
Who was there;
What was discussed; and
Action items.
Meeting minutes should also be taken at project check-ins.
You are welcome to use whatever asynchronous communication platform you as a team choose (MS Teams, Slack, Facebook, Discord) - however your tutor will setup a MS Teams Channel for you to communicate in, and this is the only place we will look when marking your communication and resolving disputes.
Inside a Confluence page called Communications, document any reasoning and screenshots of communications outside MS Teams.
9. Marking Criteria
Criteria | Description |
---|---|
Team Roles (5%) |
|
Requirements & Constraint Analysis (15%) |
|
Initial Software Architecture Design (20%) |
|
Initial API Design (20%) |
|
Project Planning (30%) |
|
Communications (10%) |
|
10. Submission
For this sprint, we will take the state of your Jira board and Confluence space at the deadline as your submission. You do not need to run any submission commands.
Late submissions will not be accepted.
Applications for Special Consideration and ELS assessment accomodations will not include extensions as this is a group project with no scope for extending deadlines. The course authority will determine an appropriate adjustment in cases where a Special Consideration request is approved or a student has an equitable learning plan. Students in either of these positions should email se2021@cse.unsw.edu.au.