Skip to content

Requirements & Specifications

SJun edited this page Dec 10, 2023 · 42 revisions

Requirements & Specifications.

Rev. 2023/10/08 17:25 ver 1.0 (By Songmin Lee).
Initial Creation.

Rev. 2023/11/05 20:48 ver 1.1(By Donghyun Yun).
delete the User Story: Change the sorting.
delete the User Story: Post Comments.
delete the User Story: Report Event.
change User Interface Requirements.

Rev. 2023/11/11 16:13 ver 1.2(By Jun-Young Lee).
delete the User Story: Settings.
delete all components envolving comments or reporting.
modify the filters being applied in event list view.

Rev. 2023/11/19 18:20 ver 1.3(By Jun-Young Lee).
Update wireframe related to posting and filtering in list view.

Rev. 2023/12/03 21:20 ver 1.4(By Seongjun Jo).
update User Interface Requirements to the latest version.
update Functional Requirements to the latest version.

Rev. 2023/12/10 06:06 ver 1.5(By Seongjun Jo).
update Competitive Landscape.

Rev. 2023/12/10 19:18 ver 1.6(By Seongjun Jo).
update user Interface Requirements.

Members

안유리, 윤동현, 이성민, 이준영, 조성준

Project Abstract

“Haengsha” is a service that consolidates dispersed on-campus information about social and academic events into a single visually intuitive platform, featuring a prominent weekly calendar at the top and a comprehensive list of events under it. This user-friendly interface ensures that the SNU community can easily stay up-to-date on upcoming events, complete with personalized recommendations tailored to individual interests. Moreover, event organizers benefit from a streamlined process for effectively disseminating their events with a wide audience.

Customers

All SNU students who are interested in on-campus events.

Event organizers who would like to promote new events.

Competitive Landscape

Currently, numerous SNU events, including seminars, student-organized social gatherings, and academic activities are scattered across various platforms and primarily presented in a list format. For example, most seminars and academic events find their place on departmental websites and are disseminated via email notifications, while student-hosted events are primarily promoted through KakaoTalk chat rooms and Everytime event boards. The absence of a unified platform that visually aggregates this information poses challenges for students in effectively discovering events aligned with their interests. Thus, there is a pressing need for a centralized event platform. The subsequent table provides a comparison of “Haengsha” and its rival services, highlighting their respective features.

Service Name Platform Coverage Presentation Duration Scope Personal Recommendation
KakaoTalk Group Chat Mobile/Web Department-specific List Indefinite Student Council Events / Department-specific Events / Major Schoolwide Events

X

Everytime Mobile/Web All registered SNU students List Indefinite Student Council Events / Student-organized Events / Major Schoolwide Events

X

Departmental Websites Web Department-specific List Indefinite Department-specific Events / Major Schoolwide Events

X

Email Mobile/Web All SNU students List Indefinite Major Schoolwide Events / Department-specific Events / All Internal Academic Seminars / Academic Events

X

Student Council Calendar Web Club Organizers Calendar Only during recruitment period Student-organized Events

X

Haengsha Mobile All registered SNU students List & Calendar One Year Student-organized Events / Major Schoolwide Events / Department-specific Events / All Internal Academic Seminars / Academic Events

O

Functional Requirements

Story #1: User Page

Story #1-1: Sign up as an individual user.

User story

As a individual non-member SNU student eager to check out the ongoing events,

I can enter my basic information and preferences while creating a new account

so that I can register and receive information of diverse events held at SNU.

User Acceptance Criteria

Scenario User clicks “회원가입하기” button on the main page and clicks “개인 유저 가입하기” and provide their preferences.

Given the user has written [email protected] in an email address form 

When the user clicks code send button 

Then the user should see a toast “The code for verifying is sent to your email” and the mail which contains the authorization code should be sent to [email protected].


Given the user types correct authorization code within given validation time,

When the user clicks a next button 

Then the user is shown with a screen asking for setting password, basic information, and terms of usage & privacy policy.


Given the user types password, nickname, department, class(like '17학번'), multiple choices of interests, agreement to app policies,

When the user clicks a signup button 

Then the account with given information(saved user profile) should be created and the user should be navigated to the login page. 

Use case

Goal Create a new account for non-member
Primary actor SNU students
Scope Sign up page
Level Non-member
Precondition User has not created an account with the SNU email
Success end User can access the public calendar page.
Failure end Warned with toast
Trigger User clicks “회원가입하기” on the main page and clicks “개인 유저 가입하기”.
Main success scenario 1. Verify via SNU email
1.1. The main page shows a form for SNU email.
1.2. A user writes the SNU email address and clicks a “인증번호 발송” button.
1.2.1. The SNU id is automatically set as the user’s id.
1.3. The “인증번호 6자리” field appears on the same page.
1.4. The user gets a verification code via his/her SNU email address.
1.5. The user enters the code into the “인증번호 6자리” field.
1.6. The user clicks “다음” button.
2. Set password
2.1. The sign up page shows a form for password and password confirmation.
2.2. The user fills out the forms and clicks the “다음” button.
3. Enter information
3.1. The sign up page shows a form for nickname, department, class, and a field of interest.
3.2. The user fills out the forms and clicks the “다음” button.
4. Agree on privacy policy
4.1. The sign up page shows buttons triggering terms of service modal.
4.2. The users checks checkboxes and clicks “동의 후 회원가입” button
5. Welcome page
5.1. The sign up page shows “행샤 가입이 완료되었습니다!”
5.2. The user is navigated to the login screen when he clicks “로그인 하러 가기” button.
Extensions (error scenarios) 1. The email does not exist.
2. The user puts an already existing ID.
3. The user does not fill all forms in the sign up page.
4. Values in Password and Password confirmation are different.
Variations (alternative scenarios) -

Story #1-2: Sign up as an group user.

User story

As a non-member who leads a group,

I can enter my group’s information and create a new account for my group

so that I can register as a group user.

User Acceptance Criteria

Scenario user clicks the “회원가입 하기” button on the first page and clicks “단체 유저 가입하기”

Given the user enters the information page for group leader

When the user clicks “단체 유저 가입하기” button 

Then the user should see “How to authenticate your group” page.

Use case

Goal Create a new account for non-member
Primary actor SNU students who are the group leader
Scope Sign up page
Level User
Precondition User has not created an account with the SNU email
Success end User can login the app.
Failure end User cannot login the app
Trigger User clicks “회원가입하기” on the main page and clicks “단체 유저 가입하기”.
Main success scenario 1. The main page shows the way to authenticate his/her group.
2. The user sends an email including the group name, user name and documents to verify his/her group to the admin email.
3. Admin register the group user account and sends an email to the user.
4. The user can log in using the account information sent via email.
Extensions (error scenarios) -
Variations (alternative scenarios) -

Story #1-3: Sign in

User story

As a registered user,

I can authenticate myself as a member and get into the app,

so that I can access the main page and view other features on the app.

User Acceptance Criteria

Scenario

Given the user has created an account of which ID is example_snu_id, password is example_pw and filled out the form (example_snu_id and example_pw respectively) 

When the user clicks sign in button 

Then the user should be logged in with the corresponding account and redirected to the home screen.

Use case

Goal Make members sign in the app
Primary actor SNU students
Scope Sign in page
Level User
Precondition User who has an account has not signed in yet
Success end The user becomes logged in and is redirected to the public calendar page.
Failure end Redirect to the first page
Trigger User enters id/pw and clicks “로그인하기” button.
Main success scenario 1. The main page shows a form for ID(SNU email) and password.
2. The user fills out ID and password and clicks the “로그인 하기” button.
3. The user becomes logged in and is redirected to the home screen.
Extensions (error scenarios) 1. There is no user matching the provided ID and password.
2. The user does not fill ID or password.
Variations (alternative scenarios) -

Story #1-4: Reset password when forgotten

User story

As a registered user,

I can send an verification code to my SNU email and reset my password,

so that I can sign in the app when I forget my password.

User Acceptance Criteria

Given the user has not logged in yet

When the user clicks “비밀번호 찾기” link on the main page. 

Then the user should be redirected to reset password page.


Given the user has created an account of which ID is example_snu_id  and filled out the form in the reset password page 

When the user clicks the code send button 

Then the mail that contains verification code should be sent to [email protected]


Given the user types correct code,

When the user clicks the next button,

Then the user can set new password.

Use case

Goal Change password when the user forgets his/her own password
Primary actor SNU students
Scope Reset password page
Level User
Precondition User who has an account has not signed in yet
Success end The user is redirected to the first page with new password
Failure end The user is redirected to the first page without new password
Trigger User clicks “비밀번호 찾기” link on the main page
Main success scenario 1. The reset password page shows a form for SNU email.
2. Verify via SNU email
2.1. A user writes the SNU email address and clicks a “인증번호 발송” button.
2.2. The “인증번호 6자리” field appears on the same page.
2.3. The user gets verification code via his/her SNU email address.
2.4. The user enters the code into the “인증번호 6자리” field.
2.5. The user clicks “다음” button.
3. Reset password
3.1. The sign up page shows a form for password and password confirmation.
3.2. The user fills out the forms and clicks the “변경 완료하기” button.
4. The user is encounters "비밀번호 변경이 완료되었습니다." with "로그인 하러 가기" button.
5. The user is redirected to the login screen
Extensions (error scenarios) 1. There is no user matching the provided email.
2. The user does not fill email.
Variations (alternative scenarios) -

Story #1-5: Change the password

  • This use case is not supported in the latest version(ver 1.4).

Story #1-6: Account Deactivation

  • This use case is not supported in the latest version(ver 1.4).

Story #2: Home Page

Story #2-1 : Scroll event list

User story

As a user,

I can scroll event list,

so that I can see all events held on today

User Acceptance Criteria

Scenario Event items should be scrolled in the list.

Given that I am at the Home screen and there is no modal on the screen,

when I scroll the event items in the list,

then the events items move upward/downward as I scrolled and I should see all the events held on today.

Use case

Goal User wants to see all events held on today
Primary actor All user
Scope Home page
Level User
Precondition User is at the Home Screen with no modal opened
Success end All event items move as user intended
Failure end Event items don’t move / Some events are missing
Trigger User enters into Home page
Main success scenario 1. User enters into Home page
2. Home page presents event list
3. User scrolls the list
4. All event items move upward/downward
Extensions (error scenarios) -
Variations (alternative scenarios) 3. User scroll the list horizontally
3.1 The list remains same

Story #2-2 : See detailed event information

User story

As a user,

I can touch an event item in event list,

so that I can see the detail event information

User Acceptance Criteria

Scenario Detail information of event should be shown with modal

Given that I am at the Home screen, there is no modal on the screen and there is at least one event in the event list,

when I touch an event item,

then a modal showing detail information of the event should be opened

Use case

Goal User wishes to see a detail information about an event
Primary actor All user
Scope Home page
Level User
Precondition User is at the Home Screen with no modal opened
There is at least one event in event list
Success end Modal appears and contains right information
Failure end Modal doesn’t appear / contains wrong information
Trigger User touches an event item
Main success scenario 1. User enters into Home page
2. Home page presents event list
3. User touches an event item
4. Modal is opened with detail information of the event
Extensions (error scenarios) 2. No events are scheduled.
Variations (alternative scenarios) 2. User encounters a guiding text.

Story #2-3: Change the category between ‘Festival’ and ‘Academic’

User story

As a user,

I can touch the category tap,

so that the subscreen changes and I can see the events categorized as festival/academic

User Acceptance Criteria

Scenario Event list should be changed into the selected category

Given that I am at the Home screen and there is no modal on the screen,

when I touch the category tap,

then I should see the event list categorized as I intended

Use case

Goal User wishes to see the other event category
Primary actor All user
Scope Home page
Level User
Precondition User is at the Home Screen with no modal opened
Success end Event list changes into the selected category
Failure end Event list dont’s changes into the selected category
Trigger User touches the category tab
Main success scenario 1. User enters into Home page
2. Home page presents event list
3. User touches the category tab
4. Event list changes into the selected category
Extensions (error scenarios) -
Variations (alternative scenarios) 3. User touches the present category
3.1 The event list stays the same.

Story #2-4 : Change the date

User story

As a user,

I can change the date,

so that I can see the events held on that day

User Acceptance Criteria

Scenario Event list should be re-presented to show all events held on the choosen day

Given that I am at the Home screen and there is no modal on the screen,

when I touch the Canlendar Icon and change the date,

then Home page should re-present with the events held on that day

Use case

Goal User wished to see events held on a specific day
Primary actor All user
Scope Home page
Level User
Precondition User is at the Home Screen with no modal opened
Success end Home page shows new day and events
Failure end Home page shows same/wrong day and events
Trigger User touches Calendar Icon
Main success scenario 1. User enters into Home page
2. Home page presents event list and Calendar
3. User touches Calendar Icon or date item
3.1 Datepicker modal is opened when user touched Calendar Icon
3.2 User selects a date on modal
4. Home page re-present event list and Calendar matching that day
Extensions (error scenarios) 3.2a. Choosen date is too past or future
3.2a.1 Home page re-presents with no error and shows nudge item
Variations (alternative scenarios) 3. User select today
3.1 Home page remains same

Story #2-6: Use the feature “personalized recommendation”

User story

As an SNU student willing to participate an event that intrigues him/her,

I can press a button for “personalized recommendation”,

so that I can see multiple events that may possibly fit into my personal interests.

User Acceptance Criteria

Scenario A pop-up screen should display personalized event recommendations based on the user’s history of likes/favorites and interests. This list of events should update once per day at 3am.

Given that I am at the Home screen and there is no pop-up screen open,

when I press a button for “personalized recommendation”,

then a modal with the message "오늘의 맞춤 추천이에요!" should pop up, along with a list of personalized recommendations of up to 10 events that are set to occur on or after the given day.

Use case

Goal User is recommended with future & ongoing events that may fit his interests
Primary actor Individual user
Scope Home page
Level Individual user
Precondition User is at the Home Screen with no pop-up screen opened
Success end Modal pops-up and contains personalized event recommendations
Failure end Pop-up screen doesn’t appear / does not contain personalized events / events shown were already held in past
Trigger Individual user presses a button for personalized recommendation
Main success scenario 1. User enters the Home page
2. Home page presents event list
3. User presses a personalized recommendation button
4. Recommendation screen is popped-up, displaying ongoing/future events that may fit the user's interests.
Extensions (error scenarios) -
Variations (alternative scenarios) 1. User is at the home screen with no pop-up screen open. User has signed up on the given day.
1.1 User presses the personalized recommendation button.
1.2 Recommendation screen pops up but does not display any events, as it is not yet 3am of the following day.
2.Event organizer is at the home screen with no pop-up screen open.
2.1 Event organizer presses the personalized recommendation button.
2.2 No personalized event recommendations are provided for the user, as he is an event organizer. A modal with the message "단체 계졍은 추천 기능을 이용할 수 없어요" is shown.

Story #3: List View & Search

Story #3-1: Display in List View

  • This use case is not supported in the latest version(ver 1.4).
  • Story #3-2 and #3-3 replace this.

Story #3-2: Filtering in List View

User story

As a student interested in participating academic events held next Tuesday,

I can designate the date and select category 'academic',

so that I can see the academic events held in that particular day.

User Acceptance Criteria

Scenario User selects the date to filter out events and select one or two categories from 'academic' and 'festival'.

Given that user is at the List view page with default filter settings.

when either choose the start and end date, categories and press the apply/cancel button.,

then the events should be adequately displayed following the applied filters if user applies and when user cancels previous list view is maintained.

Use case

Goal User wants to filter out events that takes place on a certain day.
Primary actor All user (SNU students + Event managers)
Scope List view page
Level User
Precondition Signed in user in list view presses filter button.
Success end Filter is successfully applied and the user is redirected to list view displaying the events filtered out correctly.
Failure end Event items are not filtered out accordingly.
Trigger 1. User presses the “apply” button after choosing the criteria.
2. User presses the “cancel” button to return to previous settings.
Main success scenario 1. User enters into list view page and presses the filter button
2. Pop-up appears where user can select the start and end dates and one or all two categories('academic' and 'festival').
3. User applies/cancels the filter settings.
4. User is redirected to list view page with the filters applied.
Extensions (error scenarios) 1. User does not select any category from available two check boxes showing 'academic' and 'festival'.
1.1 When user presses “apply”, it warns the user should select at least one category.
1.2. When user presses “cancel”. User returns to previous list view.
Variations (alternative scenarios) -

Story #3-3: Searching Events in List View with Filters Applied

User story

As a student interested in band-related events,

I can search “band” in the search bar,

so that I can see all events which contain the search word in its title or description.

User Acceptance Criteria

Scenario User types in search words in the search bar and relevant events are listed.

Given that the user is at the List view page with (default or provided) filter settings.

when the user inputs search word of interest,

then in list view, only the events that match the user's search word in either their titles or descriptions, and also meet the previously applied filters (start and end dates, category of event), will be shown.

Use case

Goal User wants to search events that contains the search word and satisfies the previously set filters.
Primary actor All user (SNU students + Event managers)
Scope List view page
Level User
Precondition Signed in user in list view with certain filter settings.
Success end Events that contain the search word in either their titles or descriptions are shown in list view.
Failure end 1. Event items that do not contain the search words appear.
2. Filters are not applied.
Trigger User enters search word in search bar.
Main success scenario 1. User enters into list view page with certain filter options.
2. User writes down search words into the search bar.
3. User is redirected to a list view page that holds events that contains the search word in either their titles or descriptions.
4. Among the selected events, the event with most like appear at top.
Extensions (error scenarios) 1. User inputs search word that is too long(>50) or too short (<2).
1.1 User is warned with a message that user can only search for under 51 letters and over 1 letter.
2. User types invalid search keywords such as emojis and only whitespaces.
2.1. User is warned with a message that special keys and strings consisted of only whitespaces are invalid.
3. User inputs search word that is not contained in any of the events.
3.1 User is redirected to a empty list view page with a message “No such Events.”
Variations (alternative scenarios) -

Story #3-4: Viewing Events in Detail

User story

As a student interested in “snu autumn festival”,

I can click the event from list view,

so that I can see the events in detail with uploaded information and comment sections.

User Acceptance Criteria

Scenario User clicks the specific event from the list view and scrolls down to see the details.

Given that user is at the list view page.

when the user clicks a specific event of interest,

then the user is redirected to a detail view showing the event descriptions, likes, favorites(scraps).

Use case

Goal User wants to view the specific event.
Primary actor All user (SNU students + Event managers)
Scope List View, Detail View
Level User
Precondition Signed in user in list view.
Success end The user is redirected to a detail view showing the event descriptions, likes, favorites.
Failure end Event description is not displayed, likes and favorites are not updated.
Trigger User clicks the specific event.
Main success scenario 1. User enters into list view page with certain filter options or search words.
2. User clicks the event of interest and is redirected to the detail view of the event.
3. The detail page shows the title, post date, post owner, post category('academic' and 'festival'), content section, TP of events, like button.
Extensions (error scenarios) 1. User is in airplane mode.
1.1 Network error toast appears.
2. Content is longer than 10,000 letters.
2.1 Content is displayed only up to 10,000 letters.
Variations (alternative scenarios) 1. User presses like or favorite.

Story #3-5: Press Likes, Favorites in Detailed View

User story

As a student interested in “snu autumn festival”,

I can add the event to my favorites or also press the like button,

so that I can file a list of interesting events or receive personalized recommendations based on them.

User Acceptance Criteria

Scenario User presses the favorite or like button.

Given that user is at detailed view page,

when the user presses the favorites button,

then the user sends the event to its favorites page, and the button icon is filled with color to notify that the user has pressed the button. The number of favorites for the user is also incremented by one.

The scenario for pressing the like button on an event is similar, but instead of sending the event to the user’s favorites page, the event is stored in the internal database under the user’s interests section. Again, the number of likes for the event increases by one.

Use case

Goal User wants to file to its favorite list of events or recommend to others by pressing the like button.
Primary actor All user (SNU students + Event managers)
Scope Detail View
Level User
Precondition Signed in user in detail view without posting like or favorite to the certain event before.
Success end The number of likes and favorites are updated and are filled with color to notify that the user has already pressed the button.
Failure end Icon does not change, numbers do not change.
Trigger User clicks the like/favorites button.
Main success scenario 1. User clicks the like/favorites button.
2. Like/favorites button is filled with color to denote that the user has now liked/added to favorites.
3. The numbers next to the buttons are updated.
4. DB is updated so that it keeps track of user’s likes/favorites.
Extensions (error scenarios) -
Variations (alternative scenarios) -

Story #3-6: Undo likes, Erase from Favorites in Detailed View

User story

As a student no longer interested in “snu autumn festival”,

I can press the like or favorites button once more,

so that erase the event from my favorites list or can also undo likes.

User Acceptance Criteria

Scenario User clicks favorite or like button previously “turned on” to erase from the favorites list or undo likes.

Given that the user is at detail view page and it has either liked/added to favorites,

when the user clicks the like/favorites button,

then the user erases the event from its favorites/undo likes, and the button icon is unfilled with color to notify that the user has not liked or added to its favorites. The numbers are decremented by 1.

Use case

Goal User wants to file to its favorite list of events or recommend to others by pressing the like button.
Primary actor All user (SNU students + Event managers)
Scope Detail View
Level User
Precondition Signed in user in detail view with posting like or favorite to the certain event before.
Success end The number of likes and favorites are updated and are filled with color to notify that the user has already pressed the button.
Failure end Icon does not change, numbers do not change.
Trigger User clicks the like/favorites button.
Main success scenario 1. User clicks the like/favorites button.
2. Like/favorites button filled with color is now turned “off” and changes to unfilled state to denote that the user has not liked or added to the favorites.
3. The numbers next to the buttons are updated.
4. DB is updated so that it keeps track of user’s likes/favorites.
Extensions (error scenarios) -
Variations (alternative scenarios) -

Story #3-7: Post New Event

User story

As an event manager who wants to post the new “violin recital” event,

I can post the event,

so that I can notify the users that such event is scheduled in detail.

User Acceptance Criteria

Scenario Event manager (Group user) posts the event indicating TPO and details.

Given that the user is at list view page,

when the user hits the post button,

then the user is redirected to a post view where the user can add TPO, details, and photos (if necessary).

Use case

Goal User wants to post new event.
Primary actor Event Mangers (Group Users)
Scope List View, Post View
Level User
Precondition Signed in group user in list view.
Success end The post is successfully stored into the DB. Other users can view the details of the event and can be found in list view.
Failure end Events are not properly posted. List views do not show the updated event.
Trigger Group user hits the visible “post” icon from list view.
Main success scenario 1. User (event manager) hits the “post” icon from list view.
2. User is redirected to a post view.
3. User fills up the essential information (event name, organization, post category('academic' and 'festival'), start/end dates, place, hours, descriptions)
4. When selecting the date, the user can press the date icon and the calendar appears where the user can select the date.
5. User can add photos if necessary by clicking the “attach photos”. The user will be able to select photos from its local “gallery”.
6. User clicks the post button and data is sent to the DB.
7. All users can find the event in list view, detail view, and home page.
Extensions (error scenarios) 1. User (event manager) does not fill in the designated “essential informations” and hits the post button.
1.1 User is warned that it must add the missing information to complete posting the event and does not post the event.
Variations (alternative scenarios) -

Story #4: Favorites

User story

As a user,

I can see a list of my favorite events,

so that I can revisit them or get recommendations for similar events.

User Acceptance Criteria

Scenario The user presses the “favorite” button next to the event.

Given that the user is on the detailed view for an event,

when the user presses the “즐겨찾기” button,

then the user will show up on the “favorites” list.

Use case

Goal User wants to add the event to the favorites list.
Primary actor All users and groups
Scope Detailed page for the event
Level User
Precondition User is signed in and at the detailed page for an event.
Success end The event marked as favorite shows up on the “favorites” page.
Failure end The event marked as favorite is not listed on the “favorites” page.
Trigger The user presses the “즐겨찾기” button in bottom app bar.
Main success scenario 1. The user presses the “즐겨찾기” button for the event.
2. In the database, the user’s list of favorites is updated and shows up on the favorites page.
Extensions (error scenarios) -
Variations (alternative scenarios) 2. Group user cannot mark event as favorite, so Favorite Screen shows guiding text rather than empty screen.

Non-functional Requirements

User Interface Requirements

image

image

image

image

Clone this wiki locally