Lab 2 - Requirements Specification, Modeling, Planning
During this homework you will make a part of the SRS - Software Requirements Specification, initial design of the Domain Model and create the project plan.
Requirements Specification
During the first homework your team has gathered 50+ requirements. You need to choose 5 of them and create 5 use cases. You must choose the most important business requirements, avoid choosing requirements like "logging in". Each use case must have at least following parts covered:
- Title
- Precondition
- Primary Actor
- Main Success Scenario
- Extensions - possible alternatives of the main success scenario
Produced use cases should be delivered by GitHub wiki. All use cases must have same type of template. We recommend to write each use case on a new page and reference them with URL links on your homework 2 master page.
Modeling
This is the first step towards understanding of how to build your POS application. Till this point we were focused on what functionality an application should support. As we will produce our POS application with an OOP language, we will practice modeling with domain model (model classes). We recommend to produce the domain model of your POS application with the modeling software GenMyModel. You must deliver your domain model as an image (jpeg) or pdf file of the UML class diagram.
How to Model?
- List class candidates
- Add them to the class diagram
- Add links
- Add attributes
- Add methods/operations
How to Find Classes?
- Previous experience
- Go through all requirements and finding there nouns (bill, payment, waiter, ...)
- Categorize classes based on the domain
- Physical objects (cash register, ...)
- Specifications (product, ...)
- Locations (restaurant, ...)
- Transactions (reservation, ...)
- Roles (cashier, ...)
How to Find Links?
- Previous experience
- Categorizing
- A is B physical part (cash drawer – cash register, …)
- A is B logical part (BillRow – Bill, …)
- A is physically inside B (cash register – Restaurant, …)
- A belongs to B during some transaction or report(OrderedProduct-Reservation)
- A is B's member (cashier - Restaurant)
- A uses/manages B-s (Cashier – POS Terminal)
Model Submission
Domain model, that you need to create using GenMyModel software (or similar type software) and deliver as a class diagram (jpg or pdf). Model must contain classes, links between classes, class attributes (with attribute type specified - like String,Int,Date,..). Functions/Operations are optional, if you will add them we will consider that as a plus. Model must have at least 20 classes, 30 links and 60 attributes.
Planning
At this point your team has produced and analyzed a lot of requirements and can proceed to the next step - initial project plan. You initial project plan must be composed of four main aspects, dividing your work into the following four parts:
- Functionality that passed the detailed analysis and has specifications - Use Cases.
- Functionality/work that must be implemented/performed before the first live version release.
- Functionality/work that must be implemented/performed without delays right after the first live release (important functionality that can, however, be omitted in the first live release)
- Functionality/work that is desirable to implement/perform, however it is not as critical as with previous parts.
Listed parts of your work/development must be described as tasks in an xls spreadsheet (you can use google online spreadsheets). Tasks are small and simple pieces of work needed to achieve the aims described in the requirement. Each of the requirements will need a bunch of the smaller tasks needed to satisfy it. In other words you should divide the work behind each of the requirements into smaller meaningful and independent tasks. Each task must have at least the following parts:
- Description (what must be done)
- Assignee
- Priority
- Time Estimation (in hours)
You need to divide your tasks between your team members. You also need to keep in mind that each of your team members is working 8h a day. You need to cover all requirements for your application and assign priorities based on the following priority classes:
- P1 – Task is analyzed and has the highest priority
- P2 – Task must be completed before the first live release
- P3 – Task must be completed right after the first live release (can be omitted in the first live release)
- P4 – Task must be implemented, but has the lowest priority
Based on the completed project plan you also need to provide the following estimates:
- Exact date when you are going live with the first release?
- What is P1+P2 time estimate?
- What is P1+P2+P3 time estimate?
- What is the total time estimate for all requirements implementation?
Your project plan must be completed in an xls spreadsheet (you can use google online spreadsheets). Additionally, you need to provide a pie chart consisting of four sectors - P1 tasks total time, P2 tasks total time, P3 tasks total time and P4 tasks total time.
You should cover all requirements! or if you produced a lot of requirements during the previous homework, it is OK to cover most important ones, if the total amount of tasks will exceed 150.
Summary
Your team must submit the following:
- Specification as use cases for at least 5 important requirements
- Domain model as a class diagram (we recommend to use GenMyModel)
- Project plan xls spreadsheet
Detailed instructions for listed tasks are provided in the sections above.
Results must be delivered with the GitHub wiki (at least provide links to your solutions there). You also need to send an email with your wiki link to your lab assistant when you publish all your results.