sample task

Gergő Pintér, PhD

gergo.pinter@uni-corvinus.hu

sample task – flashcard application

The prepresentative of a language association entrusts your software development company to create a flashcard application, which will help people to learn a minority language. The task is to design this software.

the user story

We would like you to create a flashcard app for smartphones. Just the usual stuff: it shows cards and then if needed it shows the other side of the card with the meaning.

Oh, and words should be in groups. A word can appear in multiple groups. The user selects a group to practice. Then, the app shows a card with the word (or expression) in the target language. The user can do 3 things:

  1. Tap the card to show its other side, both sides should be shown at the same time,
  2. The use can swipe left to indicate that they do not know the word, or
  3. swipe to right indicating the they know the word well.

The app should count the swipes and keep statistics. And one more thing: the statistics should be tracked per user basis.

requirements analysis

  • starts with understanding the task
    • read, reread, and reflect on it
  • collect every detail, specifically the ambiguous parts
  • take notes, maybe draw

why do requirements analysis?

one reason is

the rising costs of finding and fixing defects based on Figure 3.4 of [1] (Ambler, 2002)

why do requirements analysis well?

misunderstanding the task can cost a lot

the decreasing probability of introducing defects based on Figure 3.3 of [1] (Ambler, 2002)

the user story

We would like you to create a flashcard app for smartphones. Just the usual stuff: it shows cards and then if needed it shows the other side of the card with the meaning.

Oh, and words should be in groups. A word can appear in multiple groups. The user selects a group to practice. Then, the app shows a card with the word (or expression) in the target language. The user can do 3 things:

  1. Tap the card to show its other side, both sides should be shown at the same time,
  2. The use can swipe left to indicate that they do not know the word, or
  3. swipe to right indicating the they know the word well.

The app should count the swipes and keep statistics. And one more thing: the statistics should be tracked per user basis.

We would like you to create a flashcard app for smartphones. Just the usual stuff: it shows cards and then if needed it shows the other side of the card with the meaning.

Oh, and words should be in groups. A word can appear in multiple groups. The user selects a group to practice. Then, the app shows a card with the word (or expression) in the target language. The user can do 3 things:

  1. Tap the card to show its other side, both sides should be shown at the same time,
  2. The use can swipe left to indicate that they do not know the word, or
  3. swipe to right indicating the they know the word well.

The app should count the swipes and keep statistics. And one more thing: the statistics should be tracked per user basis.

let’s collect the requirements

open PlantUML editor

with a Work Breakdown Structure (WBS) diagram skeleton

questions

  • “per user basis”
    • might indicate user management
      • create, read, update, and delete (CRUD)
      • log in, log out
    • or it can be completely offline
  • “user selects a group”
    • is this action starts the “game”
  • it is not mentioned explicitly, but cards management is possible required
    • CRUD
    • sort into group
    • remove from group
    • “word can appear in multiple group”
      • one to many connection!
  • “keeps statistics”
    • for what purpose? only to display it, or for the repetition mechanics?

additional questions

  • which platforms should be supported?
  • what does ‘per user basis’ mean?
  • who and how creates the cards?
  • what is the teaching language?
    • only one language supported?
  • does the front side of a card contain only a word/expression?
    • any additional info like word class
  • does the back side of a card contain only a meaning?
    • any additional comments or connected words
  • price of the application?
    • subscription model / one time payment / free

possible architecture

offline application, a simple case

evaluation

  • simple
    • it can contain advanced features like detailed statistics for the user, but it is stored on the device
    • telemetry is possible to add if the customer require some statistics above what the app store provide
  • the application package contains everything
    • including the word database
  • does not depend on internet collection

these are just some considerations, the customer needs to decide

possible architecture 2

service-based application, a more complicated case

evaluation

  • more complicated, it consists of two different software
    • the server need to run constantly otherwise the application may be unusable
      • depends on the implementation
  • can support subscription model
    • needs payment handling, which complicates things further
  • the application package can still contain the word database
    • but the available word packages can be controlled based on the subscription plan
  • it may depend on internet collection
    • for authentication/authorization
    • for account syncronization
    • subscription

these are just some considerations, the customer needs to decide

customer wants telemetry

  • app is like in scenario 1
  • but we need to run a server for the telemetry
  • at least the communication is one directional

  • like architecture 1, we only build the app
  • telemetry is outsourced the a 3rd party service
    • not our responsibility!

database transfer

  • cutomer is a language association, probably doesn’t have technical expertise
    • they’ll probably send an excel file in e-mail
  • can we load the into an app?
    • of course
  • do we want to do that?
    • not necessarily

database transfer

standardizing input

think over every possibility

  • it is acceptable to provide alternatives for the customer
    • they often don’t even know what they want
  • to provide the alternatives, you have to think them over
    • it is also necessary for the price estimation
  • start with bird’s eye view
    • then focus on the details more and more

references

[1]
S. Ambler, Agile modeling: Effective practices for extreme programming and the unified process. John Wiley & Sons, 2002.

requirements analysis in as a mindmap

open markmap editor

with an incomplete requirements analysis