Sie sind auf Seite 1von 12

I need to provide a document with the list of the requirements for the sales example.

Functional requirements (they provide a description of services/behaviors of the system):


1. Start sale transaction (the system must be able to manage that operation) F1
a. For example the cashier press a button that start the sale transaction; it does not know what it is
behind.
2. End sale transaction. F2
3. Log-in. F3
4. Log-out. F4
5. Read the barcode. F5
Those above are the basic function that the system must implement; it is important to notice that we
do not enter in the details in this phase. Moreover we have some requirements that comes from the
domain; for example we have to define what is a sale transaction and to do this we need a glossary (to
provide it I can use a class diagram how we will see) and ask to the customer what it means for him a
sale transaction. These kind of requirements (the domain one) are the most trivial to manage.

Non functional requirements (constraints on the services):


1. Efficiency (if not efficient I need to check the implementation of the application)
The funct. req. F1 shall be concluded in less than 1 sec. NF1
2. Efficiency The funct. req. F5 shall be concluded in less than 0.5 sec. NF2
3. Domain (not depend from us) Currency is Euro,
4. Domain VAT is 21%

Scenario (sequence of steps {event} that describe a typical interaction with the system. To provide it
we use the use cases):
1. Handle Sales:
a. Start sales transaction.
b. Read the barcode is a simple action, done automatically.
c. Retrieve product info a system operation, not simple as the previous one.
d. Repeat b. and c. for all the products.
e. Manage payment.
f. Print receipt.
g. End sale.

ISO 9126 / ISO 25010

Defines 6 properties of software systems


5 non functional
Functionality
Reliability
Usability
Efficiency
Maintainability
Portability

Non functional requirements


The non functional req. depend of the purpose of application. Usually we decide it with the clients.
Ex: a web server must be always reliable, cause if is not accessible there will be a lost of money (think
about the possibility not to use facebook for a some minutes, it is consider really disappointing).

From these that we can see from the figure particularly important are privacy requirements and safety
requirements (an example of the last one is not use pointer in C)
There are a lot of non-functional req. that we must be take care.
Examples:
Product requirements
Requirements which specify that the delivered product must behave in a particular way e.g. execution
speed, reliability, etc.
Organisational requirements
Requirements which are a consequence of organisational policies and procedures e.g. process
standards used, implementation requirements, etc.
External requirements
Requirements which arise from factors which are external to the system and its development process
e.g. interoperability requirements, legislative requirements, etc.
Perception of waiting times they badly affects efficiency:
<0.1 sec not percepted
>1 sec - annoying
For this example we can think about our telephones, if they are not reactive we think that they

are not working properly.

Non functional requirements may be more critical than functional requirements and if these are not
met the system becomes useless.

NF Req should be measurable:


Error must be no more than 2 typically and for this reason I put some variable to understand if my SW
fit the requirements
Not measurable
The system should be easy to use by experienced controllers and should be organised in such a way
that user errors are minimised.
Measurable
Experienced controllers shall be able to use all the system functions after a total of two hours training.
After this training, the average number of errors made by experienced users shall not exceed two per
day.

I need to measure the system and understand if is usable. Using Threshold its possible understand and
measure the usability of the software. In a certain way we can say that we use the requirements for
contract stuff.

Measure for NF reqs


The basic idea is to always have some parameters to do some comparison. For
example, if my app works well only with Android 5.0 I will not have many user
that will use it I must pay attention on that kind of stuff.

Requirements interaction (it is the most important problem that we face)


Conflicts between different non-functional requirements are common
in complex systems.
Spacecraft system
To minimise weight, the number of separate chips in the system should be minimised,
To minimise power consumption, lower power chips should be used,
However, using low power chips may mean that more chips have to be used. Which is the most
critical requirement? We cant limit the number of chips and have few energy consumed!
Domain requirements
In that case we can have or new functional requirements or constraints in non functional requirements.
Derived from the application domain and describe system characteristics and features that reflect the
domain,
Domain requirements can be new functional requirements, constraints on existing requirements or
define specific computations,
If domain requirements are not satisfied, the system may be unworkable.
Example train protection system:
The deceleration of the train shall be computed as:
Dtrain = Dcontrol + Dgradient
where D gradient i s 9 . 8 1 m s 2 * compensated gradient/alpha and where the values of
9.81ms2 /alpha are known for different types of train.

Domain requirement problems we need to understand properly them


Understandability
Requirements are expressed in the language of the application domain,
This is often not understood by software engineers developing the system.
Implicitness
Domain specialists understand the area so well that they do not think of making the domain
requirements explicit.
Ex: if you try to explain the programming to a person that doesnt have the
proper background, he will not understand and the explainer will be annoyed by
the situation we must avoid this.

Glossary
Sale = commercial transaction between customer and retailer, where customer buys a number of
products from the retailer. So it is saying that it is composed of many components.
Product = ..
The sale is compose of one of many elements

Class diagram tool that help us to do the analysis


Can be used
To refine glossary
To describe application model
To describe system design
Class diagram can be use for describing the app model and the system design as well (expressing
contest).

What classes in UML for glossary?


For physical objects
Ex Pilot, Aircraft, Airline, Airport
For legal / organizational entities
Company, airline, university, department
Descriptors
Ex Aircraft type, Pilot Qualification
Time (events)
Departure of aircraft
Commercial transaction
Event + exchange of money / good / service
Time (intervals)
Use case are...
A Set of scenarios with common user goal

Example use case:


Handle sales
Scenario 1: sell n products
Scenario 2: sell n products, abort sale because customer has no money it could
be a problem with the bank system or with the credit card.
Scenario 3: sell n products, customer changes one of products

Other user cases:


Handle coupons
Handle users
In this diagram i need to create the actors that are involved in this use case. We do not involve the
customer because is the cashier that interact with the system. Notice that if the Administrator is not
present is the cashier itself that manages the F3 requirements.
Actors
Casher
Product
Administrator
Credit-Card System
Inventory and Catalogue System
Cases
Functional req. 1 Handle sales
Retrieve name and price
Handle payment
Functional req. 2 Manage Coupons
Functional req. 3 Manage Users

The <<include>> means: TODO

System Design
We have the system with the HW components like printer, credit card and barcode reader to deal with.
The design is a subsystems (SW and Not) that compose the whole system and I will provide another
class diag which contain peripherals or devices needed to carry out the tasks that I need to do.

Class diagram:
Class diagram is suitable for express contents, so its possible use it even for hw
and both hw and sw. In fact a question that we may ask is: why we use this
diagram for HW? Because a class diagram is useful to express concepts it is
used just to show the general structure and the functions inside what we are
handled like we can see for the Pos System.

Verify and Validate (V&V) of requirements It has to be done when Ive


already done all
Natural language, UML
Inspection, reading can be done:
By user, by developer that uses:
UML
Some syntactic check by tools to do:
Prototyping of what is asked trying to understand the customer's idea and we use a:
Formal language
Model checking
At the moment we are just introducing the general problems, later we will enter in details.

User Interface Design


Used in mass marked and consumer software, where the user have to interact with the application.

In the picture above there is a simply explanation of what generally happen with a customer, he
expresses his idea and the person try to realize what he asked.
Now we need to provide the most easy way to use interface, in order to simplify to the user the usage
of the application.
Its a super mega iper important part of the system.
Interactions means these are all the possible inputs that come from a
user

Example of 3 possible UI, we can find it in mybalsamiq.

Principles and ideas


Ergonomy
Safety, adaptability, comfort, usability,...
Emotional design
Beyond ergonomy, the interaction (object) should cause positive emotions in the user
User eXperience (UX)
Usability + feelings + emotions + values
Transparent technology
No emphasis on technology
Feedback, user centered design
No decision based on personal opinions, but feedback from real users

Basic design example: (we are beyond the technology in that case). In the first case we have two
possible implementation for the same thing and we see how in the first implementation maybe is it
easier to understand that the button that are upper than the other two active the upper flame. In the
second picture instead we see a remote control with to many buttons and it is not easy to understand
how to turn on the TV, maybe putting a button bigger
than the other would have been better.

We have to keep in mind User Centered design technique (UDC), where the context is the mass
market design and this means that all the people must be able to use it without thinking too much.

UDC process techniques need of the user


Personas
Identify and describe typical user representative of a class of users (aka
clustering). It describes a real person and it is useful to individuate its need. It is a very common
approach especially in the academic field.

Examples:
persona 1
male, middle age, professional, high income, married with children
persona 2
female, young, student, low income, not married
For each persona describe life scenarios
Persona 1, work day: wake up, breakfast, drive children to school, drive to office
Persona 2, week end day: ...
For each persona /scenario identify possible interaction with application/object
We can identify different kind of people that can use our system.
You have to create a fake story for persons for understand the needs for those persons.

When we have to define the requirements we have to individuate the Focus group:
Moderator + group of homogeneous people
Moderator starts and monitors discussion on a defined topics
Open or script guided
Long
Group interaction

To make an idea or have some tips we can use:


Questionnaire
Written questions with open /close answers
Statistical analysis, more data points possible
Otherwise we can also realize an:
Interview
Deep discussion, one to one
Open or guided by script/questions
The interviewer reports log that can be also very long and detailed

Ethnographics is another technique where you put a researcher inside a group of people.
Researcher is hidden in an environment and observes facts and behaviour of user / population
Expensive, long but there is the risk of being too invasive
Prototypes generally realize on papers
Low fidelity
Paper / pencil, sketches, post its
High fidelity
Computer executable mock ups
Aka Powerpoint
Aka Balsamiq
Sketch The picture below (on the right) is an example of prototype a little bit
detailed and specific rather than a simple prototype on papers that we can see
below on the left. Generally the sketch is the result of a focus group after an
interview for example.

You can provide the people a prototype and wait for a


feedback or reaction from them so we can collect information and this is an enormous advantage.
Feedback could be:
Feedback low fi prototype
Cognitive / ergonomy experts apply checklists / experience to identify possible issues
Feedback hi fi prototype
Selected users use the prototype in a lab
Feedback via
Ethnographics
Interviews
Focus group
Feedback, final system
Imagine to have a webpage and you count how many people click a button and at the end of a certain
period you see if it is really necessary or not. Something more easier to understand is if we put a game
in our webpage: if it goes well then we can put some banners in it to improve earnings or if not we
just delete it.
Define and collect measures about:
- Usage of system (time spent on different pages / part of pages, errors)
- Effect of system (ex rate from browse to purchase)

A/B test is another kind of feedback. In general we do not use only one technique that exclude the
others but we can use more of them and reach different solution. There is not a best solution in general
but after have reached some of them we start thinking about what could be the most suitable.
The conversion is the % of how much the people buy something.
Tripadvisor do something like this, test in a subset of users. Those users can be selected by some
characteristic (age, zone, ecc...).
So to summarize we can affirm that there is a lot of study behind mobile application. In mass market
products User interaction is the key and user centered design is to focus on user feedback and use
some technique to define a process.

Das könnte Ihnen auch gefallen