Requirement Specification
Requirement Specification Template 2.0 - 6.4.2021 (NarsuMan)
- Wimma Lab 2021
- Version Number 1.5
Topics
Topics in order of appearance
- Introduction
- About client
- About author
- Service Description
- Stakeholder map
- Stakeholders and Profiles
- Client's wishes and needs
- Identified risks
- Selected Customer Stories
- Service-Related Customer Paths
- Relevant Use Cases
- Main Features / Functionalities
- MockUp Prototype
- Preliminary User Stories
- Service System Requirements
- Restrictions Affecting the Service
- Service Related Equipment Requirements
- Requirements related to the service execution environment
- Service-defined features / functionalities
- Functional Requirements for the Service
- Non-functional requirements of the service
- Preliminary Service Architecture
- Preliminary Service Placement View
- Preliminary database description of the service)
- Service Integrations with Other Systems
- On Quality of Service Assurance
- Standards and Sources
Introduction
Jamk (Jyväskylä University of Applied Sciences) offers a course named Future Factory. Jamk Future Factory is Jamk's innovation and learning platform which connects students and working life. At Future Factory course students solve real development challenges which are given by different companies. Jamk wants a service/system where the courses students can easily choose assignments which they are interested in. Service is like a marketplace for companies assignments/projects. Companies can fill out the form where they tell about the project. Then some of the given information will be seen for the students.
Our project task is to design and develop this kind of service/system for the Jamk Future Factory.
About client
The client for the requirements specification is Jamk, and the contact person is Mikko Keskinen. The product is for Jamk's Future Factory consept, especially for the Future Factory course. Mikko Keskinen is one of the specialist of the Future Factory consept. JAMK Future Factory is Jyväskylä University of Applied Sciences' “New Generation Academy” innovation and learning platform that connects students and working life.
About Author
Overflow company's project team which consist of 6 members. Overflow is a virtual company which offers solutions for different development projects.
Service Description
Our purpose is to create service for JAMK's Future Factory - course. Service will be useful for companies, students and lecturers. If companies or private persons have some kind of a project for students, they can place assignments to the service. Then students can choose assignments which they are interested in and service will automatically create teams for the assignments. This is very approachable for employers to give challenges for students and it's great if students could choose what they are interested in. It also saves lecturer's time when they don't have to create teams, manage students etc.
Stakeholder map
For the project we have made a stakeholder map:
Stakeholders and profiles
The profile / stakeholder descriptions below are for guidance.
Stakeholder group/Specific profile | Description | About Motivation |
---|---|---|
Onni Opiskelija | Student 1 | Represent stakeholder group Students |
Keijo Gona | Student 2 | Represent stakeholder group Students |
Jarmo Jakaja | Client 1 | Represent stakeholder group Clients |
Tinna Toimari | Client 2 | Represent stakeholder group Clients |
Pienpanimo Kanuuna | Client 3 | Represent stakeholder group Clients |
Oliver Ohjaaja | Teacher/Instructor | Represent stakeholder group Teachers/Instructors |
Overflow Developer | Developer | Represent stakeholder group Developers |
Heikki Hakkeri | Evildoer | Represent stakeholder group Evildoers |
Ulla Ylläpitäjä | Maintenancer | Represent stakeholder group Maintenancers |
Jamk | Development client | Represent stakeholder group Development clients, Future Factory |
Client's wishes and needs
Consider what kind of wishes / needs the end user has regarding the service? Interview people in a real situation?
RequirementID | Category | Description |
---|---|---|
CUSTOMER-REQ-0001 | Customer Requirement | Logging in to the service requires to take different data security regulations into account. |
CUSTOMER-REQ-0002 | Customer Requirement | FF-course is held five times per year, most likely twice in both autumn and spring semesters and once during the summer. |
CUSTOMER-REQ-0003 | Customer Requirement | The project teams should consist of students from different fields. |
CUSTOMER-REQ-0004 | Customer Requirement | The students choose the teams by themselves according to their interests. |
CUSTOMER-REQ-0005 | Customer Requirement | The skills required in the project are shown in the project information. |
CUSTOMER-REQ-0006 | Customer Requirement | Assignments/projects can have multiple teams providing their own solutions. |
CUSTOMER-REQ-0007 | Customer Requirement | One project group can have up to 30 members and one team consists of about 5 members. |
CUSTOMER-REQ-0008 | Customer Requirement | FF-Marketplace creates the teams automatically when enough students have signed to a team. |
Identified risks
What are the risks associated with product development, product markets, potential competitors, resources? These are good to identify at an early stage
RiskID | Category | Description |
---|---|---|
Risk-0001 | Schedule problems | This could occur either by the developing team and their actions or due to the clients demands (JAMK). |
Risk-0002 | Technical difficulties | Such as data security and information privacy (consider GDPR) + system implementation and software integrations. Frequent changes in the requirement could also be part of a technical risk. |
Risk-0003 | Poor quality code | This is somewhat related to technical difficulties, but deserves it's own description. Poor quality code can occur for a number of reasons, for example when projects are underestimated and developers rush to complete the iteration. Poor quality code could also mean that the code is difficult to read (affects maintaining the product later by other developers) or the code could be rushed and released without testing (bugs). |
Risk-0004 | Management issues | One example could be doing some procedures in the wrong order in the development process and thus making the development process harder for ourselves. |
Risk-0005 | End-user Engagement | This risk is where a product is released to the market but the users are resistant to change, or there is conflict between users. Users of the software should actually adopt the software. |
Risk-0006 | Lack of Ownership | While the early stages of the software development are rather clear regarding ownership, the owner of the product needs to maintain it in the future. The owner should be established (JAMK?). |
Selected Customer Stories
Customer Story 1
Onni Opiskelija: (Motivated to find a team)
As a student I want different required applications and services to be easy to use. JAMK has quite many different services that are required, such as Moodle, Peppi and Office 365. Adding one more to the list adds a bit more workload to students, as we might have to manage different credentials and try to follow these services. I also think that some of the JAMK's services aren't that good in mobile applications.
I'm quite accustomed in using different mobile applications. I think it's a fun idea to make kind of a Tinder app for students and clients/employers for creating matches and teams. The applications also gives some freedom of choice to the students and we aren't necessarily forced into a project we might not be interested at all.
I must say that I like the possibility to login to the service via our school Office365 credentials. This removes one thing I don't like about using multiple services (multiple credentials). This also helps in information security.
The process of finding project openings and finding teams is made possible with either a list option or a swipe mechanic, which some users might prefer when browsing with their phones. Choosing a team after finding the suitable one is also made easy, you just press the green or red button. I also got a clear confirmation when I was matched with a team, so I know I got the process right.
I'm very happy about the application and would like to see such fun usage in other courses as well.
Customer Story 2
Tinna Toimari: (Private client/employer)
At first I was a bit on the back of my feet when I heard there would be an application required finding a team for my needs. This is a new method for team finding and I was a bit hesitant of how it would work.
However, the process of acquiring credentials for the service was made easy and I got them to my email that I provided on the Future Factory form when I first contacted JAMK.
As a client of Future Factory, my motivation for using the service is to make the process of finding applicants for my assignment easier for me. I also prefer using anything else but email for monitoring the team creation status, for example to see how many possible students are interested in my assignment, so I can make changes to my "offering" to make the assignment more interesting to students. I would very much like some sort of an automation process for getting a notification when the team is complete and lucky for me this option was provided in the application.
Customer Story 3
Oliver Ohjaaja: (Teacher at JAMK)
As a teacher of JAMK and project instructor of teams I was first a little suspicious about getting new application additionally with all of other applications to handle. After i got used to application, I understood that this application is very helpful for me to do my job but also students have been very excited about this.
For students this is absolutely more meaningful than for me, because they can have an impact on what kind of project they can work with.
For me this application saves some time as project instructor, for example I don't have to build teams from students, application will handle that by itself. In its entirety this kind of application is very useful for JAMK.
Customer Story 4
Pienpanimo Kanuuna: (Potential client/employer)
As potential employer I was very excited when I heard that this kind of application was going to launch. I have thought for a while, that it would be pretty cool to get part of something like this and get to known with local students.
Because of this application I can take a look of projects that other companies have offered and what kind of projects students will sign up for. I'm also interested about projects that JAMK offers. This way I can get some hints for me what kind of projects students are interested and I can maybe do some adjustments to project ideas I was thinking.
I think because of this application, next time when JAMK's Future Factory will be organized, I will muster up and sign up with my project idea!
Service-related customer paths
Customer service path
FF-admin adds assignment
Student full journey
*4.Example of Team roles test: https://www.123test.com/team-roles-test/
Student in FF-marketplace
When team is full
Relevant use cases
Use case | Section | Feature |
---|---|---|
Use case 1 - Browsing assignments | Project assignments | |
Use case 2 - Reserve spot in team | Project assignments | |
Use case 3 - Authenticate and confirm spot selection by email | Project assignments | |
Use case 4 - Add assignment | Project assignments | |
Use case 5 - Manage project team | Project assignments | |
Use case 6 - Login / authentication | Authentication |
Main functionalities / features
- Main Functionalities
- FF admins and coaches can log in to the service
- FF admin can add new assingments to the service
- Student can use service without registering a new account(?)
- Student can filter the assignment search to their liking
- Student can reserve a spot in a team & project to join
- Teacher can keep track of how the teams are filling up
- Power automate flow gets the team data after assignment teams are filled
User Interface as MockUp
FFmarketplace frontend
- FF Marketplace MockUp
- Few captures from the Mockup:
There were done some changes on the plan of the popup, this is the new plan (on the mockup there is the old one):
Admin frontend
Some captures of the admin panel plan.
These plannings/designs are directional.
Preliminary user stories
- User Story: [As a student I want to see what assingments are available] ()
- User Story: [As a teacher who oversees assignments I want that the service tells me when a teams are formed] ()
- User Story: [As a student, I want to sorth the assignments based on what skills and roles are needed] ()
- User Story: [As a client, I want to specify what kind of students my assingment needs and how many students I need. Fields/roles] ()
- User Story: [As a client, I want to create advertisement that attracts right type of students.] ()
System Requirements from technical perspective
System requirements are commonly described as high level requirements, which are used to define the system as a whole. Different requirements of system can be gathered from several point of views. Common way is to describe system as collection of different functionalitys. There is also a need to understand system from quality point of view as non-functional requirements. Non-functional point of view consist of serveral areas from performance, security, scalability and more.
Still functional and non-functional requirement perspectives are not enough to describe a system. Because there is a needs to cover system as whole we have to define a technical environment for service. Commonly technical requirements are defining environment which is required to execute and run service proper way. Some of non-functional requirements are linked with technical requirements (eg. performance). By defining proper environment is important part of requirement gathering process. Still it is advisable to identify purely the technical requirements(or limitations) of the system and record them also as part of the requirements specification. Remember to avoid excessive concentration on the describing of technical requirements may not be recommended. Further design process can reveal more needs for technical environment.
In this section, it is worth considering, for example, the following
- How is the service produced? As a SAAS / PAAS / IAAS / HOSTED service etc
- Whether to use Cloud Services as part of the solution or to utilize own servers
- Is it the so-called A hybrid service that utilizes multiple separate services
- How must the service be available 24 / 7h 100%? So is that even possible :)?
- What kind of SLA is prepared for the service?
- How much does the production of the service cost?
- What kind of data storage / archiving needs are related to the service?
RequirementID | Category | Description | Related Functionality |
---|---|---|---|
SYSTEM-HW-REQ-0002 | System Technical Requirement | Palvelun tärkeimpien palvelujen on oltava vähintään kahdennettu N+1 | |
SYSTEM-HW-REQ-0003 | System Technical Requirement | Palvelimen muistikapasiteeti >16GB | |
SYSTEM-HW-REQ-0004 | System Technical Requirement | Prosessori Intel/AMD x64 | |
SYSTEM-HW-REQ-0005 | System Technical Requirement | Palvelimen fyysinen sijainti on oltava kotimaassa (Suomi) | |
SYSTEM-HW-REQ-0005 | System Technical Requirement | Verkkoyhteyden nopeus >100MB/s | |
SYSTEM-HW-REQ-0005 | System Technical Requirement | Laitekaapin suositeltava koko 1m X 1m X 2m |
Avainsanat: pilvipalvelun tuotanto, Palveluiden hallinta, SLA
Constraints and standards
The implementation and use of different software / services is often governed by laws and regulations. The requirements required by these are usually recorded as restrictions and their impact often affects the implementation of the entire software system. For this reason, they are worth identifying and finding out in a timely manner because of the impact may be quite crucial in the long run.
Id | Vaatimuksen kuvaus | kategoria | Vastuullinen |
---|---|---|---|
CONSTRAINT-REQ-S00000 | Constrain | Palvelun kirjautumisprosessin on noudatettava XYZ-käytäntöjä | |
CONSTRAINT-REQ-S00001 | Constrain | On huomioitava Standardi ZZZ osana palvelun tapahtuma login talletusta | |
CONSTRAINT-REQ-S00002 | Constrain | GDPR (General Data Protection Regulation). | |
CONSTRAINT-REQ-S00003 | Constrain | User authentication has restrictions due to GDPR and interactions with existing services used by JAMK. |
Functionalities and features
Priorisoi oleelliset ominaisuudet/toiminnot
- P1 = Mandatory
- P3 = Needed
- P5 = Nice to have
Feature | Priority | Links |
---|---|---|
Example Feature 1 | P1 | FUNCTIONAL-REQ-C0001 |
Example Feature 2 | P1 | FUNCTIONAL-REQ-C0011 |
Functional Requirements of the service/system
What are the functional requirements? Functional requirements describe the operation required of a software / system Functional requirements are the most easily identifiable. Avoid writing multiple Requirement in the same sentence! Each Requirement separately .. You can present them in a table or refer to one as a whole
RequirementID | Category | Description | Related Functionality |
---|---|---|---|
FUNCTIONAL-REQ-C0001 | Functional Requirement | Login / user authentication. This isn't yet decided if we require users to login with for example Office 365 credentials or authenticate them with some other method. | Log in |
FUNCTIONAL-REQ-C0002 | Functional Requirement | Student profile. Regardless of how the above is done, students need a profile for themselves to be able to choose their assignment. | Kirjautuminen ft1, Tilaushallinta |
FUNCTIONAL-REQ-C0003 | Functional Requirement | Language settings. As an exchange student, my finnish language isn't that good and I appreciate the ability to be able to use the service in english. I couldn't sign in to a team otherwise. | |
FUNCTIONAL-REQ-C0004 | Functional Requirement | Instructions / tutorial. As a student, I'd like to have a small tutorial about the usage of the service, the very basics is enough for me, but I would also appreciate the option for skipping the tutorial. | Tämä voi myös olla non functional requirement |
FUNCTIONAL-REQ-C0005 | Functional Requirement | Team browsing. I like the swipe functionality for browsing teams. However, I'd also like to see a list of the teams to be able to form some kind of a big picture of how many teams are there + I don't have to swipe through 100+ teams. | Browse assignments |
FUNCTIONAL-REQ-C0006 | Functional Requirement | Team selection. "For students, the team selection option should be as simple as a "Sign" button or similar." - Student XYZ | |
FUNCTIONAL-REQ-C0007 | Functional Requirement | Team creation. Create teams automatically when enough students are signed, as a coach I don't want to do this manually. | |
FUNCTIONAL-REQ-C0008 | Functional Requirement | Team confirmation. As a student I hate services that aren't clear enough in whether the process succeeded or failed. | |
FUNCTIONAL-REQ-C0009 | Functional Requirement | Team removal. As a student I appreciate the option to be able to change my decisions in an agile way. I'd rather make the changes needed myself than bother someone else about it. I'd like to be able to remove myself from a team if needed. | |
FUNCTIONAL-REQ-C0010 | Functional Requirement | Team bookmarking / add favorites. I'd like to able to like or otherwise bookmark the most interesting teams in case I want to review them later without going through all the teams again. This is not implemented but wouldn't hurt if it was. | |
FUNCTIONAL-REQ-C0011 | Functional Requirement | Feedback / report system. As a teacher/coach I'm using the service extensively and I would very much like the option of providing feedback and reporting possible problems in the service. Feedback button please! |
Non Functional (aka Quality) requirements of the service
What were the non-functional requirements? How well does the service / component or other part of the service perform during the load? What are the bottlenecks. What requirements should the service be able to meet?
Performance
What are the requirements for the service from a performance perspective?
RequirementID | Category | Description | Related Functionality |
---|---|---|---|
PERFORMANCE-REQ-0000 | Non-Functional Performance | Logging in is possible simultaneously for 100 users (100 request/s) | Kirjautuminen ft1 |
PERFORMANCE-REQ-0001 | Non-Functional Performance | Scalability. Service performance is as good with 12 000 concurrent users as it would be with 10 users. Such service as FF-Marketplace has high user spikes during enrolls to the Future Factory course and much lower usage between them. | |
PERFORMANCE-REQ-0002 | Non-Functional Performance | Short response times for processes in the service, e.g., showing teams assignment infos to students. | |
PERFORMANCE-REQ-0003 | Non-Functional Performance | What happens in the backend if multiple students try to assign themselves to the same available spot in a team at the very same time? | Database |
PERFORMANCE-REQ-0004 | Non-Functional Performance | ||
PERFORMANCE-REQ-0005 | Non-Functional Performance |
Security
What are the requirements for the service from a security perspective?
RequirementID | Category | Description | Related Functionality |
---|---|---|---|
SECURITY-REQ-0001 | Non-Functional Security | Salasanassa on käytettävä vähintään MD5-tason salausta, koska standardi XY112 sitä edellyttää | Kirjautuminen ft1 |
SECURITY-REQ-0002 | Non-Functional Security | Application should use SSL or HTTPS for external communications. When communicating personal information of any kind, that data must be encrypted. | |
SECURITY-REQ-0003 | Non-Functional Security | Indentifying information, other than an email address, about students will not be saved. | |
SECURITY-REQ-0004 | Non-Functional Security | All data that the app collects should be stored in a safe place and backups should also be encrypted. (Users should also know how long their data will be retained for.) | |
SECURITY-REQ-0005 | Non-Functional Security | Backups for data every X hours. | |
SECURITY-REQ-0006 | Non-Functional Security | Requirements for user passwords (if there will be any) such as password length, special characters etc. | |
SECURITY-REQ-0007 | Non-Functional Security | Logging & monitoring (with GDPR restrictions), for example such accounts as admin accounts and database actions. Team OverFlow didn't have the time needed to implement solutions for these. | |
SECURITY-REQ-0008 | Non-Functional Security | Avoid exposure of sensitive data for example in the possible error messages to users. | https://owasp.org/www-project-top-ten/2017/A3_2017-Sensitive_Data_Exposure |
SECURITY-REQ-0009 | Non-Functional Security | Other OWASP Top 10 topics should be considered as well. | https://owasp.org/www-project-top-ten/ & https://owasp.org/www-project-proactive-controls/v3/en/c1-security-requirements |
SECURITY-REQ-0010 | Non-Functional Security | Only authenticated sources can fill up assignment data to the service. This prevents outsiders to interact with the FF-Marketplace to enhance security. | |
SECURITY-REQ-0011 | Non-Functional Security | Only enrolled students can join teams & assignments. | Tämä on toki osaltaan turvallisuuteen liittyvä, mutta voisi sopia paremmin johonkin toiseen kategoriaan? |
SECURITY-REQ-0012 | Non-Functional Security | Students can't make team selection for other students. | Tämäkin kohta johonkin toiseen kategoriaan? |
SECURITY-REQ-0013 | Non-Functional Security | As the service runs on Kubernetes & Docker + database on a virtual machine (?), security regarding these platforms should be taken in to consideration, like container scanning etc. |
Usability (käytettävyys)
VaatimusID | Tyyppi | Kuvaus | Ominaisuus johon vaikuttaa |
---|---|---|---|
USABILITY-REQ-0001 | Non-Functional Usability | Instructions / tutorial. As a student, I'd like to have a small tutorial about the usage of the service, the very basics is enough for me, but I would also appreciate the option for skipping the tutorial. | |
USABILITY-REQ-0002 | Non-Functional Usability | Language selection (Finnish & English). | |
USABILITY-REQ-0003 | Non-Functional Usability | Web page accessability. "When websites and web tools are properly designed and coded, people with disabilities can use them. However, currently many sites and tools are developed with accessibility barriers that make them difficult or impossible for some people to use." | |
USABILITY-REQ-0004 | Non-Functional Usability | The service functions fluidly and is responsive: actions done by users should be fast, whether it's adding a team to the service or students browsing teams. | |
USABILITY-REQ-0005 | Non-Functional Usability | Possible errors & error codes and exceptions are easy to understand (but they shouldn't show too much information, for example about OS and other server-side related info -> information leakage). | https://owasp.org/www-project-proactive-controls/v3/en/c10-errors-exceptions.html |
Availability
What is meant by availability? What kind of issues/instructions must be taken into account when implementing of availabilty in service?
RequirementID | Category | Description | Related Functionality |
---|---|---|---|
USABILITY-REQ-0000 | Availabilty | Login Feature | |
USABILITY-REQ-0001 | Availabilty | Availability (saatavuus) 99% of the time. Some downtime is allowed for example during maintenance between the enrollment periods. | |
USABILITY-REQ-0002 | Availabilty | Disaster recovery plan should be made to ensure that the service is back online as fast as possible after an unplanned incident. | https://www.ibm.com/services/business-continuity/disaster-recovery-plan |
USABILITY-REQ-0003 | Availabilty | ||
USABILITY-REQ-0004 | Availabilty | ||
USABILITY-REQ-0005 | Availabilty |
Testability
What issues need to be considered for product quality assurance ?. During development, the necessary interfaces or tool software must be created for the software product, to control the product version under test. These requirements need to be recorded in a timely manner as they are crucial to the product’s testing capabilities. An example is the management of logs, their collection, initialization.
RequirementID | Category | Description | Related Functionality |
---|---|---|---|
TESTABILITY-REQ-0000 | Non-Functional Testability | Käyttäjärekisteri on kyettävä palauttamaan alkutilaan ennen testien ajoa | Kirjautuminen ft1 |
TESTABILITY-REQ-0001 | Non-Functional Testability | Lisätietoa | |
TESTABILITY-REQ-0002 | Non-Functional Testability | Lisätietoa | |
TESTABILITY-REQ-0003 | Non-Functional Testability | Lisätietoa | |
TESTABILITY-REQ-0004 | Non-Functional Testability | Lisätietoa | |
TESTABILITY-REQ-0005 | Non-Functional Testability | Lisätietoa |
General Software architecture and deployment
Software implementation requirements can be set for pre-defined technologies that must be followed in development. This situation often occurs when the software is related to a previously implemented solution
Deployment diagram
The deployment view allows you to describe how different parts of a service are running and executed when it's in production.
General Database architecture
You can find database architecture of the product here (Notice! There might be made some changes afterwards which are not yet added there): General Database architecture
Palvelun laadun varmistus
Ohjelmisto
Palvelun/Ohjelmiston alustavat hyväksyntätestit
Acceptance tests generally focus on the customer / end user perspective. The aim is to validate, ie to validate whether the product meets the customer's wishes and whether it meets the set requirements. Acceptance tests can be used to determine whether a product is also sufficiently high-performance, usable, or secure for customer use.
Preliminary approval tests are attached to the requirements in tabular form.
Lähde | Testitapaus Id | Description | Category |
---|---|---|---|
Example Feature 1, FUNCTIONAL-REQ-0001 | Example Test Case 1 | esim. Tarkista kirjautuminen palveluun uutena käyttäjänä | Hyväksyntätesti |
Example Feature 2, FUNCTIONAL-REQ-0201, USE-CASE-017 | Testitapaus 2 | esim. Tarkista kenkilökohtaisten tietojen poisto | Hyväksyntätesti |
Feature 3, | Testitapaus 101 | esim. Takista Kirjautuminen toimivalla salasanalla | Hyväksyntätesti |
Standards and references
As part of the definition of requirements, it is essential to identify important sources that are useful or relevant to the whole. Standards and pre-distributed guidelines are useful sources and as needed clarify the meaning of the Requirements.
DocumentID | Name | Link | Description |
---|---|---|---|
REF1 | JHS 165 ICT | JHS Suositukset vaatimusmäärittelylle | Requirement specification's recommendation |
REF2 | SO 9241-11 | Käytettävyys | Usability |
REF3 | ISO9001 | Laadunhallinta | Quality |
REF4 | GDPR | GDPR asetus | General Data Protection Regulation |
REF5 | EN 301 549 | Availability | Availability |