-
Notifications
You must be signed in to change notification settings - Fork 0
/
skills-template.html
435 lines (403 loc) · 29.6 KB
/
skills-template.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<!-- CSRF Token -->
<meta name="csrf-token" content="3xpcoIQ9kwWdXUbyM8asUeT6xyT6ViWkumPAxeNq">
<title>SESTOPIA</title>
<link rel="shortcut icon" type="image/x-icon" href="https://softwarewiki.faridibin.tech/favicon.png">
<!-- Scripts -->
<script src="https://softwarewiki.faridibin.tech/js/app.js?v=2020-08-08" defer></script>
<!-- Fonts -->
<link rel="dns-prefetch" href="//fonts.gstatic.com">
<link href="https://fonts.googleapis.com/css?family=Nunito" rel="stylesheet">
<!-- Styles -->
<link href="https://softwarewiki.faridibin.tech/css/app.css?v=2020-08-08" rel="stylesheet">
</head>
<body>
<div id="app">
<div class="loader">
<div class="loading-animation"></div>
</div>
<div class="navbar-container">
<nav class="navbar navbar-expand-lg bg-white" data-sticky="top">
<div class="container">
<a class="navbar-brand" href="https://softwarewiki.faridibin.tech">
<img alt="SESTOPIA" src="https://softwarewiki.faridibin.tech/images/logo.png" class="py-1"
height="40">
</a>
<div class="d-flex align-items-center order-lg-3">
<a href="#subscribe" data-toggle="modal"
class="btn btn-primary text-white ml-lg-4 mr-3 mr-md-4 mr-lg-0 d-none d-sm-block order-lg-3">Subscribe</a>
<button aria-expanded="false" aria-label="Toggle navigation" class="navbar-toggler"
data-target=".navbar-collapse" data-toggle="collapse" type="button">
<img alt="Navbar Toggler Open Icon" class="navbar-toggler-open icon icon-sm"
src="https://softwarewiki.faridibin.tech/images/icon-menu.svg">
<img alt="Navbar Toggler Close Icon" class="navbar-toggler-close icon icon-sm"
src="https://softwarewiki.faridibin.tech/images/icon-x.svg">
</button>
</div>
<div class="collapse navbar-collapse order-3 order-lg-2 justify-content-lg-end"
id="navigation-menu">
<ul class="navbar-nav my-3 my-lg-0">
<li class="nav-item ">
<a class="nav-link" href="https://softwarewiki.faridibin.tech">Home</a>
</li>
<li class="nav-item active">
<div class="dropdown">
<a aria-expanded="false" aria-haspopup="true"
class="dropdown-toggle nav-link nav-item arrow-bottom"
data-toggle="dropdown-grid" href="#" role="button">Skills</a>
<div class="row dropdown-menu">
<div class="col-auto" data-dropdown-content>
<div class="dropdown-grid-menu">
<a href="https://softwarewiki.faridibin.tech/skills/coding"
class="dropdown-item active">
Coding
</a>
<a href="https://softwarewiki.faridibin.tech/skills/elicitation-of-requirements"
class="dropdown-item ">
Elicitation of Requirements
</a>
<a href="https://softwarewiki.faridibin.tech/skills/high-quality-documentation"
class="dropdown-item ">
High Quality Documentation
</a>
<a href="https://softwarewiki.faridibin.tech/skills/planning-measurement-process"
class="dropdown-item ">
Planning Measurement Process
</a>
<a href="https://softwarewiki.faridibin.tech/skills/problem-solving"
class="dropdown-item ">
Problem Solving
</a>
<a href="https://softwarewiki.faridibin.tech/skills/regression-testing"
class="dropdown-item ">
Regression Testing
</a>
<a href="https://softwarewiki.faridibin.tech/skills/user-interface-prototyping"
class="dropdown-item ">
User Interface Prototyping
</a>
<a href="https://softwarewiki.faridibin.tech/skills/verification-and-validation"
class="dropdown-item ">
Verification and Validation
</a>
</div>
</div>
</div>
</div>
</li>
</ul>
<form class="mt-3 mt-lg-0" method="GET" action="/search">
<div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text bg-white pr-0">
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24"
viewBox="0 0 24 24" fill="none" class="injected-svg icon icon-xs bg-dark"
data-src="assets/img/icons/interface/icon-search.svg"
xmlns:xlink="http://www.w3.org/1999/xlink">
<path
d="M11 19C15.4183 19 19 15.4183 19 11C19 6.58172 15.4183 3 11 3C6.58172 3 3 6.58172 3 11C3 15.4183 6.58172 19 11 19Z"
stroke="#2C3038" stroke-width="2" stroke-linecap="round"
stroke-linejoin="round"></path>
<path d="M21 21L16.65 16.65" stroke="#2C3038" stroke-width="2"
stroke-linecap="round" stroke-linejoin="round"></path>
<!-- Code injected by live-server -->
</svg>
</span>
</div>
<input class="form-control" placeholder="Type your search" type="search" name="q"
value="">
</div>
</form>
</div>
</div>
</nav>
</div>
<section class="bg-light">
<div class="container">
<div class="row justify-content-between align-items-start">
<div class="col-lg-8 mb-4 mb-lg-0">
<div class="d-flex">
<nav aria-label="breadcrumb">
<ol class="breadcrumb">
<li class="breadcrumb-item">
<a href="https://softwarewiki.faridibin.tech/skills">Skills</a>
</li>
<li class="breadcrumb-item">
<a href="https://softwarewiki.faridibin.tech/skills/coding">Coding</a>
</li>
</ol>
</nav>
</div>
<h2 class="h1 mt-4">Requirements Elicitation <small>By Zaid Abdulhadi (25406897)</small></h2>
<a href="#" class="badge badge-dark mb-3">Requirements Elicitation</a>
<hr class="my-md-2 my-lg-3">
<div class="row">
<div class="col-xl-11">
<article class="article">
<a href="#name-of-skill" class="text-dark h4 d-block" id="name-of-skill">Requirements Elicitation</a>
<div class="lead">How to find out what users and stakeholders really need ? Research has shown that many large projects fail because of inadequate requirements.
Requirements elicitation explores the problem world. It is one of the most important and sensitive practices in software engineering projects as it deals with the origins of a project.
Requirements elicitation is composed of information gathering from users, stakeholders, and other technical and non-technical groups.
The majority of the technical requirements are not documented anywhere and has to be discovered as it resides in the minds of the stakeholders.
Since different issues arise overtime within the Software Development Life Cycle (SDLC), the elicitation process becomes more complicated with the changing stakeholder requirements.
The article below discusses different aspects for this software engineering skill.
</div>
<a href="#classification-of-skill" class="text-dark h4 d-block"
id="classification-of-skill">Classification of Skill</a>
<p>
Requirements elicitation is a skill that requires both, strong technical skills in addition to strong non-technical (soft skills).
Bridging between business problems and its technological solution involves both, a lot of interaction with the stakeholders and strength in understanding the technology (software).
Therefore, the requirement analyst should have sufficient software knowledge to be able to gather the technical constraints in addition to being a great communicator.
To clarify more the important skills for a good requirement analyst who can elicit requirements:
<li>Fundamentals skills: One must possess communication skills, management skills, problems solving skills, as well as research skills.</li>
<li>Business Analysis skills: Comprehension and documentations skills are paramount to this role especially when coupled with creativity.</li>
<li>Technical skills: Knowledge of software and IT skills in addition to experience in creating test cases and running acceptance testing with stakeholders.</li>
</p>
<a href="#prerequisites-for-skill" class="text-dark h4 d-block"
id="prerequisites-for-skill">Prerequisites for Skill</a>
<p>
A requirement analyst is needed to conduct elicitation. Experience in understanding the problem domains of different software project and identifying the critical system stakeholders are important traits.
Prerequisites for this skill include excellent communication skills to interact with the stakeholders for interviews, run background studies for the system-to-be, and gather useful data through questionnaires, flowcharts and surveys.
A good requirement analyst also must have a strong eye for scope to help the stakeholders narrow down requirements toward a set of important requirements that can be implemented.
</p>
<a href="#related-software-engineering" class="text-dark h4 d-block"
id="related-software-engineering">Related Software Engineering Area(s)</a>
<p>
Requirements elicitation activities are related to Software Requirement Engineering as a whole.
Moreover, Requirement Engineering is related closely to Software Design, Software Testing, Software Maintenance, Software Configuration Management, Software Quality in addition to other areas.
</p>
<a href="#rationale-for-skill" class="text-dark h4 d-block"
id="rationale-for-skill">Rationale for Skill</a>
<p>
Requirements elicitation is a skill that has a big role in determining the level of success of a certain project, therefore it plays a big role in a project's fate.
With the endless and changing requests of stakeholders, the requirement analyst working in the elicitation plays an important part in this role.
This skill was chosen because it extracts useful requirements and helps software engineers select the correct elicitation techniques for identifying the right stakeholders and paves the way towards the right interaction.
Organizational and technical constraints for the system-to-be is also clarified in the elicitation phase. <br></br> With all of this in place, the elicitation done helps to minimize errors or missing requirements, after the project's delivery, that is usually costing hundred times more to fix.
Since there will be continuous discussions with the stakeholders, alternative feasible solutions are always suggested to satisfy the completion of the project within the given timeframe meeting the delivery deadline.
For example, a requirement engineer would explain what is meant by a “wicked problem”, by providing examples of such problems (in one of the meetings with stakeholders) to avoid having any.
</p>
<a href="#roles-for-skill" class="text-dark h4 d-block" id="roles-for-skill">Roles
for Skill</a>
<p>
The Requirement Engineer and Technical requirement analyst play an essential role in requirement engineering and specifically in requirements elicitation.
They are responsible in eliciting the needed requirements from main users and other stakeholders. Since the RE/BA are responsible in capturing the intial details from the customer/stakeholders, they have a responsibility to minimze the cognitive distance with the software PM/development team.
</p>
<a href="#work-related-to-skill" class="text-dark h4 d-block"
id="work-related-to-skill">Work Related to Skill</a>
<p>
After gathering several requirements through various elicitation techniques (and possibly selecting the most optimal approaches), requirement modeling is produced once all the requirements are elicited.
The requirement modeling can be modeled using UML (Unified Modeling Language), while it is provided to the clients/stakeholders in the business language. Use case diagrams and activity diagrams would also accomplish this.
<br></br>
Click on the underlined link (on the right) for an example of a Use Case diagram:
<<a href="https://i.ytimg.com/vi/jhHP6AeRFj8/maxresdefault.jpg"> <ins> UC diagram example </ins></a>>
<br></br>
</p>
<a href="#real-world-example" class="text-dark h4 d-block"
id="real-world-example">Real-World Example</a>
<p>
Selecting One artifact-driven elicitation technique that could be used would be Card sorts and Repository grids.
A hypothetical example would be having an open dialogue to discuss a project similar to a streaming website, such as "YouTube". The scenario provided is based on the <em> Brainstorming and User Story </em>
technique. In this scenario, "the card" was used to note down these requirements.
The round of discussions for gathering requirements would be as follows (written down on the Cards):
<li> <em> Point 1:</em> "A Website for streaming Videos created by Users."</li>
<li> <em>Point 2:</em> "Different types of users exist. Some are contributors, and some are only watchers (users streaming videos only) "</li>
<li> <em>Point 3:</em> "The contributors would be called creators. And as a creator, they can upload videos 24/7."</li>
<br>
At this point, there can be a conversation or an open dialogue discussion on the points written down on the cards:
<li> <ins><em>Discussion 1:</em></ins> "Finding a video/video category: there should be a search bar based on keywords."</li>
<li> <ins><em>Discussion 2:</em></ins> "How to upload: There should be an upload button that creates a one-shot upload from the local machine of a user to the website"</li>
<li> <ins><em>Discussion 3:</em></ins> "User files sizes: Video files should be restricted to 100 MB and a length of 5 minutes"</li>
<li> <ins><em>Discussion 4:</em></ins> "User file format: Standard video files as .mp4 and .mpg"</li>
<br>
<img src="https://www.modernanalyst.com/Portals/0/Users/064/44/33344/Challenge%20Humor.JPG" width="400" height="400" right="1000">
</p>
<a href="#role-of-academia" class="text-dark h4 d-block" id="role-of-academia">Role
of Academia or Industry in Cultivating the Skill</a>
<p>
Research papers and academic books nurture the idea of elicitation.
Currently, there is a focus on the types of interviews being done, and whether they are structured interviews or unstructured, to check which collects more information compared to the other.
Different research papers are conducting surveys and evaluating some techniques for eliciting requirements of computer-based systems, paying particular attention to how they deal with social issues.
</p>
<a href="#tools-supporting-the-skill" class="text-dark h4 d-block"
id="tools-supporting-the-skill">Tools Supporting the Skill</a>
<p>
Elicitation techniques have complementary strengths and limitations.
There are artifact-driven and stakeholder-driven elicitation techniques.
Elicitation is being practiced on small and large complex projects. <br>
The following provides a list of techniques used for elicitation:
<ol type="I">
<li><strong> Brainstorming and User Story </strong></li>
<li><strong> Document Analysis </strong></li>
<li><strong> Focus Group </strong></li>
<li><strong> Interviews </strong></li>
<li><strong> Interface Analysis </strong></li>
<li><strong> Observation </strong></li>
<li><strong> Prototyping </strong></li>
<li><strong> Survey/Questionnaire </strong></li>
</ol>
<p> A 7 minute video explaining what is Artifcat-Driven elicitiation: </p>
<iframe width="560" height="315" src="https://www.youtube.com/embed/uL2ykbxaQ2o" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
<br>
<br>
<p> To compare the various elicitation techniques and showing the strengths and weaknesses of each, please refer to the below table: </p>
<table>
<thead>
<tr>
<th>Name of technique </th>
<th>Strengths </th>
<th>Weaknesses </th>
</tr>
</thead>
<tbody>
<tr>
<td> Brainstorming and User Story</td>
<td> Speed of idea collection</td>
<td> Sometimes, participants are not creative and prepared </td>
</tr>
<tr>
<td>Document Analysis</td>
<td>Reuse of existing material</td>
<td>Finding information could be difficult</td>
</tr>
<tr>
<td>Focus Group</td>
<td>Saves time and cost by eliciting many requirements</td>
<td>Shortage of solid/numerical data</td>
</tr>
<tr>
<td>Interviews</td>
<td>Direct way of questioning the stakeholders</td>
<td>The interviewer must be well-prepared and experienced in software projects to get the needed answers </td>
</tr>
<tr>
<td>Observation</td>
<td>Captures and elicits information not found in the documentation </td>
<td>Due to the limited period, abnormal observations may be missed </td>
</tr>
<tr>
<td>Prototyping</td>
<td>Minimizes the adherence distance</td>
<td>Limited to a certain scale due to cost andn budget factors </td>
</tr>
<tr>
<td>Survey/Questionnaire</td>
<td>Yields a large set of results that could be quantitative </td>
<td>Could open the door to some unanswered questions due to missing information </td>
</tr>
</tbody>
</table>
</p>
<a href="#skill-self-assessment" class="text-dark h4 d-block"
id="skill-self-assessment">Skill Self-Assessment</a>
<p>
6/10
The best way to assess and self-evaluate is to measure <em>what one knows versus what one does not know</em>.
My knowledge in this area is limited to the readings I have done, in addition to eliciting requirements for projects done in Academia, however not in practical real world projects.
This is the main reason why I would give myself this rating, as I feel I am lacking adequate industry experience, and as a result, I may have missed touching some corners.
In addition to that, I cannot judge how useful a Group Brainstorming session with multiple stakeholder is, compared with a one-on-one interview with a stakeholder, and which is more effective in terms of communication channel and productivity.
This rating is based on my understanding, after acknowledging and realizing how important it is to elicite. The input it provides is massive to steer a project in the right path.
In addition to that, I think there could be some issues in recalling all of the points being discussed after every successive interview/meeting. Also, there should be equal attention on all details being discussed (so there is nothing missed).
Elicitation requirements sheds the light and emphasizes how important communication and agreement are for the success of a project.
</p>
<a href="#references" class="text-dark h4 d-block" id="references">References</a>
<p>
<ol type="1">
Please find below the list of references used in writing this web page:
<br>
<br>
<li>Wikipedia. Requirements_elicitation. https://en.wikipedia.org/wiki/Requirements_elicitation</li>
<li>Pierre Bourque, Richard E. Fairley (2014). Swebok V3.0. Guide to the Software Engineering Body of Knowledge</li>
<li>Axel van Lamsweerde (2009). Requirements Engineering: From System Goals to UML Models to Software Specifications</li>
<li>Pankaj Kamthan. On Distances in Software Engineering. https://users.encs.concordia.ca/~kamthan/courses/soen-6011/se_distances.pdf</li>
<li>JosephA.Goguen, CharlotteLinde. Techniques for Requirements Elicitation. https://pdfs.semanticscholar.org/dfa9/c873a3039c27fef9901bad0341f47c8275e2.<br>pdf?_ga=2.103306437.497009371.1596861978-1104115924.1596861978</li>
</ol>
</p>
</article>
</div>
</div>
</div>
<div class="col sticky-lg-top">
<div class="pl-xl-0">
<ul class="list-group mb-3 mb-md-4">
<div class="list-group-item">
<h5 class="mb-0">Page Content</h5>
</div>
<a href="#name-of-skill" class="list-group-item list-group-item-action py-2">Name of
Skill</a>
<a href="#classification-of-skill"
class="list-group-item list-group-item-action py-2">Classification of Skill</a>
<a href="#prerequisites-for-skill"
class="list-group-item list-group-item-action py-2">Prerequisites for Skill</a>
<a href="#related-software-engineering"
class="list-group-item list-group-item-action py-2">Related Software Engineering
Area(s)</a>
<a href="#rationale-for-skill"
class="list-group-item list-group-item-action py-2">Rationale for Skill</a>
<a href="#roles-for-skill" class="list-group-item list-group-item-action py-2">Roles for
Skill</a>
<a href="#work-related-to-skill"
class="list-group-item list-group-item-action py-2">Work Related to Skill</a>
<a href="#real-world-example"
class="list-group-item list-group-item-action py-2">Real-World Example</a>
<a href="#role-of-academia" class="list-group-item list-group-item-action py-2">Role of
Academia or Industry in Cultivating the Skill</a>
<a href="#tools-supporting-the-skill"
class="list-group-item list-group-item-action py-2">Tools Supporting the Skill</a>
<a href="#skill-self-assessment"
class="list-group-item list-group-item-action py-2">Skill Self-Assessment</a>
<a href="#references" class="list-group-item list-group-item-action py-2">References</a>
</ul>
</div>
</div>
</div>
</div>
</section>
<footer class=" pt-4 pb-4 footer-1">
<div class="container">
<div
class="row flex-column flex-lg-row align-items-center justify-content-center justify-content-lg-between text-center text-lg-left">
<div class="col-auto">
<div class="d-flex flex-column flex-sm-row align-items-center text-small">
<div class="text-muted">
© 2020 SESTOPIA - Team A
</div>
</div>
</div>
<div class="col-auto mt-3 mt-lg-0">
<ul class="list-unstyled d-flex mb-0">
<li class="mx-3">
<a href="#" class="hover-fade-out">
<img src="https://softwarewiki.faridibin.tech/images/github.svg" alt="Github"
class="icon icon-xs bg-white" data-inject-svg>
</a>
</li>
</ul>
</div>
</div>
</div>
</footer>
<div class="modal fade" id="subscribe" tabindex="-1" role="dialog" aria-labelledby="subscribeLabel"
aria-hidden="true">
<div class="modal-dialog modal-dialog-centered" role="document">
<div class="modal-content">
<div class="modal-header border-bottom-0">
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">×</span>
</button>
</div>
<div class="modal-body">
</div>
</div>
</div>
</div>
<a href="#top" class="btn btn-primary rounded-circle btn-back-to-top" data-smooth-scroll data-aos="fade-up"
data-aos-offset="2000" data-aos-mirror="true" data-aos-once="false">
<img src="https://softwarewiki.faridibin.tech/images/icon-arrow-up.svg" alt="Icon" class="icon">
</a>
</div>
</body>
</html>