1
00:00:00,006 --> 00:00:01,009
- [Instructor] Requirement analysis

2
00:00:01,009 --> 00:00:05,004
needs system functionalities specified in some form.

3
00:00:05,004 --> 00:00:08,003
Either use cases or user stories.

4
00:00:08,003 --> 00:00:10,000
Analyzing user stories,

5
00:00:10,000 --> 00:00:12,007
helps identify conditions of satisfaction

6
00:00:12,007 --> 00:00:16,000
or acceptance criteria for the functionality,

7
00:00:16,000 --> 00:00:18,009
and analyzing use case specifications

8
00:00:18,009 --> 00:00:21,004
helps us identify domain classes,

9
00:00:21,004 --> 00:00:24,001
their attributes and associations.

10
00:00:24,001 --> 00:00:26,004
This gives us domain diagrams

11
00:00:26,004 --> 00:00:28,002
that are structural representation

12
00:00:28,002 --> 00:00:30,001
of our system in terms of,

13
00:00:30,001 --> 00:00:32,006
key entities and their attributes.

14
00:00:32,006 --> 00:00:35,006
These entities most often translate into,

15
00:00:35,006 --> 00:00:38,004
design classes and database tables.

16
00:00:38,004 --> 00:00:41,005
From the use case diagrams that we created,

17
00:00:41,005 --> 00:00:46,001
let me pick one which I will use just as an example here.

18
00:00:46,001 --> 00:00:48,004
One of the simplest ones here

19
00:00:48,004 --> 00:00:51,009
is the search food products use case.

20
00:00:51,009 --> 00:00:55,000
Let us look at its user story first.

21
00:00:55,000 --> 00:00:57,007
Following the standard user story format,

22
00:00:57,007 --> 00:00:59,003
we can write it as,

23
00:00:59,003 --> 00:01:03,003
as a user, I want to search for a food product by name,

24
00:01:03,003 --> 00:01:06,003
so that I can see its nutritional value.

25
00:01:06,003 --> 00:01:07,008
What this means is that,

26
00:01:07,008 --> 00:01:10,005
not only we need to do a product search

27
00:01:10,005 --> 00:01:13,008
but we also need to show its nutrients.

28
00:01:13,008 --> 00:01:18,003
And here is the use case specification for such use case.

29
00:01:18,003 --> 00:01:21,004
The primary actor is any user here

30
00:01:21,004 --> 00:01:23,006
and the secondary actor, is the database

31
00:01:23,006 --> 00:01:25,006
to be used for searching.

32
00:01:25,006 --> 00:01:29,007
For now, we are thinking of using the database from USDA.

33
00:01:29,007 --> 00:01:33,000
The precondition is that, user should be able to access

34
00:01:33,000 --> 00:01:35,009
the web application over the internet.

35
00:01:35,009 --> 00:01:39,002
In basic flow, user chooses the search option

36
00:01:39,002 --> 00:01:42,003
and Red30 asks to enter a search string.

37
00:01:42,003 --> 00:01:44,007
Once user enters the search string,

38
00:01:44,007 --> 00:01:47,000
Red30 displays the product names

39
00:01:47,000 --> 00:01:49,009
that have that search string in their names

40
00:01:49,009 --> 00:01:54,001
and also the nutrients and their quantities in them.

41
00:01:54,001 --> 00:01:55,009
The alternate flow could be

42
00:01:55,009 --> 00:01:58,009
that Red30 doesn't find anything with matching names

43
00:01:58,009 --> 00:02:01,006
and accordingly displays a message.

44
00:02:01,006 --> 00:02:03,004
Writing the use case in this way,

45
00:02:03,004 --> 00:02:05,006
helps us see the flow of interaction

46
00:02:05,006 --> 00:02:08,004
between the user and the system.

47
00:02:08,004 --> 00:02:11,008
We can now move on to creating a domain diagram

48
00:02:11,008 --> 00:02:15,007
in which we identify, key nouns, their properties,

49
00:02:15,007 --> 00:02:18,007
and possible relationships among them.

50
00:02:18,007 --> 00:02:23,003
As an example, if I take this excerpt from the use case,

51
00:02:23,003 --> 00:02:28,001
I find food products and nutrients as two key nouns

52
00:02:28,001 --> 00:02:31,007
that can become possible entities in our system.

53
00:02:31,007 --> 00:02:34,006
Food product has an attribute name

54
00:02:34,006 --> 00:02:37,002
and also a list of nutrients.

55
00:02:37,002 --> 00:02:39,005
We can also infer from this text

56
00:02:39,005 --> 00:02:40,009
that nutrients are present

57
00:02:40,009 --> 00:02:43,004
in products in certain quantities.

58
00:02:43,004 --> 00:02:46,004
So this gives us, two domain classes.

59
00:02:46,004 --> 00:02:48,002
Product and nutrient.

60
00:02:48,002 --> 00:02:51,004
Product has product name and nutrients

61
00:02:51,004 --> 00:02:54,002
and nutrient has name and quantity.

62
00:02:54,002 --> 00:02:57,004
The association between them is aggregation,

63
00:02:57,004 --> 00:03:00,003
as product contains nutrients.

64
00:03:00,003 --> 00:03:03,008
Now, that gives us possible classes when we get to design.

65
00:03:03,008 --> 00:03:06,006
And also to our data modeling.

66
00:03:06,006 --> 00:03:08,004
But before we go there,

67
00:03:08,004 --> 00:03:11,005
we need to continuously check for two things.

68
00:03:11,005 --> 00:03:13,006
First, whatever we are building,

69
00:03:13,006 --> 00:03:15,007
we are building it in the right way,

70
00:03:15,007 --> 00:03:19,004
and second, that we are building the right thing.

71
00:03:19,004 --> 00:03:22,001
To assess whether we are building in the right way,

72
00:03:22,001 --> 00:03:26,002
pertains to using correct methodology, tools and techniques.

73
00:03:26,002 --> 00:03:29,009
It also requires assessing architectural feasibility,

74
00:03:29,009 --> 00:03:32,008
which means coming up with a high level architecture,

75
00:03:32,008 --> 00:03:35,008
and, then developing a proof of concept

76
00:03:35,008 --> 00:03:38,002
to check if it works.

77
00:03:38,002 --> 00:03:41,003
To assess whether we are building the right thing,

78
00:03:41,003 --> 00:03:44,001
the best way is to show it to our customer

79
00:03:44,001 --> 00:03:46,000
and seek their feedback.

80
00:03:46,000 --> 00:03:49,009
This reduces project risk and gives us more confidence.

81
00:03:49,009 --> 00:03:53,008
So, let us do these two things for our Red30 product.

82
00:03:53,008 --> 00:03:57,005
First, let us see what we want to show to our customer.

83
00:03:57,005 --> 00:04:01,003
We can show our customer a low fidelity mockup,

84
00:04:01,003 --> 00:04:02,006
drawn on a paper

85
00:04:02,006 --> 00:04:06,002
which focuses mainly on structure for a rough idea

86
00:04:06,002 --> 00:04:09,003
or, we can have a high fidelity prototype

87
00:04:09,003 --> 00:04:11,002
that focuses on user experience

88
00:04:11,002 --> 00:04:13,005
for a real look and feel.

89
00:04:13,005 --> 00:04:16,001
For this case study, I'm going to build a mockup

90
00:04:16,001 --> 00:04:18,005
using a tool called balsamiq

91
00:04:18,005 --> 00:04:21,009
which makes it a little more formal than a paper mockup

92
00:04:21,009 --> 00:04:25,002
and also gives some idea about look and feel.

93
00:04:25,002 --> 00:04:28,001
In balsamiq you can create your projects,

94
00:04:28,001 --> 00:04:31,008
and then within each project, you can create wireframes.

95
00:04:31,008 --> 00:04:34,004
These wireframes have various components

96
00:04:34,004 --> 00:04:37,008
such as hyperlinks, text, buttons et cetera,

97
00:04:37,008 --> 00:04:40,006
which you can link to create the kind of workflow

98
00:04:40,006 --> 00:04:43,000
that you want to show to your customer.

99
00:04:43,000 --> 00:04:45,008
As you can see I have created several wireframes

100
00:04:45,008 --> 00:04:48,001
that capture key use cases of search,

101
00:04:48,001 --> 00:04:50,008
compare, login, record meal,

102
00:04:50,008 --> 00:04:53,006
view diet log and track nutrition.

103
00:04:53,006 --> 00:04:55,008
These wireframes are rough sketches

104
00:04:55,008 --> 00:04:59,003
of what I will actually build over next few iterations.

105
00:04:59,003 --> 00:05:01,009
You could start with just one of the wireframes,

106
00:05:01,009 --> 00:05:04,002
and build the rest over sprints,

107
00:05:04,002 --> 00:05:06,000
or you could create several of them

108
00:05:06,000 --> 00:05:08,006
if you have enough clarity at this point.

109
00:05:08,006 --> 00:05:10,008
The idea is to keep them simple,

110
00:05:10,008 --> 00:05:12,009
and always be open to change them

111
00:05:12,009 --> 00:05:14,009
as your project progresses.

112
00:05:14,009 --> 00:05:18,001
I will run this wireframe now,

113
00:05:18,001 --> 00:05:22,009
which will take me to first wireframe, showing the homepage.

114
00:05:22,009 --> 00:05:26,000
From there, I select search

115
00:05:26,000 --> 00:05:28,001
which takes me to search box

116
00:05:28,001 --> 00:05:31,008
and let's say I enter tomato basil soup here,

117
00:05:31,008 --> 00:05:33,005
this gives me all products

118
00:05:33,005 --> 00:05:35,006
with tomato basil soup in their names

119
00:05:35,006 --> 00:05:38,008
along with their manufacturer's brand names.

120
00:05:38,008 --> 00:05:41,007
At this point, I have put some fake data here

121
00:05:41,007 --> 00:05:44,006
and there is no back-end linked to any database.

122
00:05:44,006 --> 00:05:46,004
There is a selection radio button,

123
00:05:46,004 --> 00:05:48,003
on the right of each of these

124
00:05:48,003 --> 00:05:52,000
and the table at the bottom shows nutrients in hundred units

125
00:05:52,000 --> 00:05:53,008
of the selected product.

126
00:05:53,008 --> 00:05:56,001
If I select the second product,

127
00:05:56,001 --> 00:05:59,004
I can see the nutrients for the new selected product.

128
00:05:59,004 --> 00:06:02,009
In this way, this mockup shows screen transitions

129
00:06:02,009 --> 00:06:07,000
with some sample data for first two products.

130
00:06:07,000 --> 00:06:08,007
If I show it to my customer,

131
00:06:08,007 --> 00:06:12,002
it is easier for them to ask questions such as changes

132
00:06:12,002 --> 00:06:16,000
or point out any mistakes I may have made.

133
00:06:16,000 --> 00:06:18,003
Another benefit of using such a tool

134
00:06:18,003 --> 00:06:20,006
is that you can share the link of this mockup

135
00:06:20,006 --> 00:06:23,006
with your team members as well as your customers,

136
00:06:23,006 --> 00:06:25,008
and ask them to try it out.

137
00:06:25,008 --> 00:06:29,000
A great way to get a quick well-rounded feedback

138
00:06:29,000 --> 00:06:31,000
from all your stakeholders.

