marko 0.1.0 → 0.3.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +47 -0
- data/Gemfile.lock +3 -2
- data/README.md +16 -13
- data/Rakefile +5 -0
- data/STORY.md +44 -0
- data/_layouts/footer.md +4 -0
- data/_layouts/header.md +3 -0
- data/_layouts/layout.html +73 -0
- data/_layouts/robots.txt.erb +4 -0
- data/_layouts/sitemap.xml.erb +20 -0
- data/_layouts/styles.css +92 -0
- data/docs/changelog.html +74 -0
- data/docs/css/styles.css +92 -0
- data/docs/index.html +297 -0
- data/docs/readme.html +297 -0
- data/docs/robots.txt +4 -0
- data/docs/sitemap.xml +30 -0
- data/docs/story.html +132 -0
- data/exe/marko +4 -2
- data/lib/assets/demo/README.md +2 -2
- data/lib/assets/demo/src/ur/uc.general.flow.md +1 -1
- data/lib/assets/init/README.md +1 -1
- data/lib/assets/init/Rakefile +2 -2
- data/lib/assets/init/tt/custom.md.tt +19 -0
- data/lib/assets/init/tt/default.md.tt +4 -0
- data/lib/assets/samples/0_index.md +14 -0
- data/lib/assets/samples/1_intro.md +55 -0
- data/lib/assets/samples/2_stakh.md +21 -0
- data/lib/assets/samples/3_actors.md +10 -0
- data/lib/assets/samples/4_cases.md +53 -0
- data/lib/assets/samples/5_entities.md +18 -0
- data/lib/assets/samples/6_concerns.md +60 -0
- data/lib/assets/samples/SRS-IEEE-830-1998.md +293 -0
- data/lib/assets/samples/SRS-RUP.md +283 -0
- data/lib/assets/samples/business-case.md +116 -0
- data/lib/assets/samples/ears.md +112 -0
- data/lib/assets/samples/gen_punch_domain.rb +183 -0
- data/lib/assets/samples/requirements.md +105 -0
- data/lib/assets/samples/stakeholders.png +0 -0
- data/lib/assets/samples/vision.md +191 -0
- data/lib/marko/artifact.rb +3 -1
- data/lib/marko/assembler.rb +1 -0
- data/lib/marko/cli.rb +10 -2
- data/lib/marko/markup/compiler.rb +3 -9
- data/lib/marko/markup/decorator.rb +45 -30
- data/lib/marko/markup/storage.rb +37 -19
- data/lib/marko/tree_node.rb +3 -2
- data/lib/marko/version.rb +1 -1
- data/lib/marko.rb +8 -0
- data/sancho.yml +6 -0
- metadata +35 -4
- data/lib/assets/init/tt/artifact.md.tt +0 -3
@@ -0,0 +1,116 @@
|
|
1
|
+
# Business Case
|
2
|
+
|
3
|
+
@@skip
|
4
|
+
|
5
|
+
The purpose is communication! Each section should be written in the parlance of the intended audience; it should only contain enough information to help decision making.
|
6
|
+
|
7
|
+
## Executive Summary
|
8
|
+
|
9
|
+
@@todo It should succinctly convey vital information about the project and communicate the entire story to the reader.
|
10
|
+
|
11
|
+
## Finance
|
12
|
+
|
13
|
+
@@todo for those who will be approving funding and should include
|
14
|
+
|
15
|
+
@@skip
|
16
|
+
|
17
|
+
__A financial appraisal__ - identify the project's financial implications, compare project costs to forecast benefits, ensure every cost is considered, assess value of money, and predict cash flow.
|
18
|
+
|
19
|
+
__A sensitivity analysis__ - assess project risks, measure the impact of project outcomes or assumptions, and lets project accountants experiment with possible scenarios.
|
20
|
+
|
21
|
+
## Project Definition
|
22
|
+
|
23
|
+
@@skip
|
24
|
+
|
25
|
+
This is the largest part of the business case and is for the project sponsor, stakeholders, and project team. It should address the following...
|
26
|
+
|
27
|
+
### Business Objective
|
28
|
+
|
29
|
+
@@todo What is your goal?
|
30
|
+
@@todo What is needed to overcome the problem?
|
31
|
+
@@todo How will the project support the business strategy?
|
32
|
+
|
33
|
+
### Benefits and Limitations
|
34
|
+
|
35
|
+
@@todo explain why you need a project in financial and non-financial benefits in turn
|
36
|
+
|
37
|
+
@@skip
|
38
|
+
|
39
|
+
* Generate revenue
|
40
|
+
* Save costs through efficiencies
|
41
|
+
* Improve quality
|
42
|
+
* Improve customer service
|
43
|
+
* Remain competitive
|
44
|
+
* To align to corporate strategy
|
45
|
+
|
46
|
+
### Option Identification and Selection
|
47
|
+
|
48
|
+
@@todo identify the potential solutions to the problem and describe them in enough detail for the reader to understand.
|
49
|
+
|
50
|
+
@@skip
|
51
|
+
|
52
|
+
For instance, if the business case and proposed solution makes use of technology, make sure to explain how the technology is used and define the terms used in a glossary.
|
53
|
+
|
54
|
+
The final business case may contain three to five options - the short list - that includes a do nothing or benchmark option.
|
55
|
+
|
56
|
+
### Scope, Impact, and interdependencies
|
57
|
+
|
58
|
+
@@todo describes the work needed to deliver the business objective and identifies those business functions affected by the project
|
59
|
+
|
60
|
+
@@todo state the project's scope and boundaries
|
61
|
+
|
62
|
+
@@todo consider the failure of other interrelated projects and how such dependencies may impact benefits
|
63
|
+
|
64
|
+
### Outline Plan
|
65
|
+
|
66
|
+
@@todo list the major deliverables and include a brief project plan
|
67
|
+
|
68
|
+
@@skip
|
69
|
+
|
70
|
+
Ideally, the project should be divided into stages with key decisions preceding each stage. Use this section to answer the following questions:
|
71
|
+
|
72
|
+
* What is required?
|
73
|
+
* How is id done?
|
74
|
+
* Who does what?
|
75
|
+
* When will things happen?
|
76
|
+
|
77
|
+
### Market Assessment
|
78
|
+
|
79
|
+
@@skip
|
80
|
+
|
81
|
+
Provide a thorough assessment of the business context and make the underlying business interests explicit. Show a complete understanding of the marketplace in which your business operates, considering political, economical, sociological, technological, legal, and environmental factors (or PESTLE, if you like)
|
82
|
+
|
83
|
+
### Risk assessment
|
84
|
+
|
85
|
+
@@skip
|
86
|
+
|
87
|
+
Summarize the significant risks and opportunities and how they are managed. The risks included should cover those that could arise from you projects or the organization's ability to deliver change, including the following questions:
|
88
|
+
|
89
|
+
* What risks are involved?
|
90
|
+
* What are the consequences of a risk happening?
|
91
|
+
* What opportunities may emerge?
|
92
|
+
* What plans are in place to deal with the risks?
|
93
|
+
|
94
|
+
### Project Approach
|
95
|
+
|
96
|
+
@@skip
|
97
|
+
|
98
|
+
The project approach describes how the project is tackled. That is, the way in which work is done do deliver the project. For instance, a project with much of the work contracted out is likely to take a different approach to a project that develops an in-house solution.
|
99
|
+
|
100
|
+
### Purchasing Strategy
|
101
|
+
|
102
|
+
@@skip
|
103
|
+
|
104
|
+
This section describes how a project is to be financed and whether a decision to buy, lease, or outsource should be taken by the organization before purchasing.
|
105
|
+
|
106
|
+
Moreover, the purchasing strategy should describe the purchasing process used. A formal procurement process may save time and money and reduce project risk.
|
107
|
+
|
108
|
+
## Project Organization
|
109
|
+
|
110
|
+
@@skip
|
111
|
+
|
112
|
+
The section is of most interest to the project manager, project team, and managers responsible for delivering work to the project, and should include:
|
113
|
+
|
114
|
+
1. __Project governance__ - show how the project is structured and the different levels of decision-making.
|
115
|
+
|
116
|
+
2. __Progress reporting__ - define for project progress will be recorded and reported to the project board.
|
@@ -0,0 +1,112 @@
|
|
1
|
+
% Easy approach to requirements syntax (EARS)
|
2
|
+
|
3
|
+
# Overview
|
4
|
+
|
5
|
+
Type Template
|
6
|
+
----------------- --------
|
7
|
+
Normal behavior The `system name` shall `system response`.
|
8
|
+
Unwanted behavior If `optional preconditions trigger`, then the `system name` shall `system response`.
|
9
|
+
Event-driven When `trigger` the `system name` shall `system response`.
|
10
|
+
State-driven While `in a specific state` the `system name` shall `system response`.
|
11
|
+
Options Where `feature is included` the `system name` shall `system response`.
|
12
|
+
Complex Where the car includes an "owner alert" system, if the car detects attempted intrusion, then the car shall send a message to the owner and activate the car alarm.
|
13
|
+
|
14
|
+
# General template
|
15
|
+
|
16
|
+
`optional preconditions` `optional trigger` the `system name` shall `system response`.
|
17
|
+
|
18
|
+
# Normal behaviour
|
19
|
+
|
20
|
+
The `system name` shall `system response`.
|
21
|
+
|
22
|
+
## Car
|
23
|
+
|
24
|
+
__[car.1]__ The car shall have a maximum retail sale price of XXX.
|
25
|
+
|
26
|
+
__[car.2]__ The car shall be compliant with the safety requirements defined in XXX.
|
27
|
+
|
28
|
+
## Laptop
|
29
|
+
|
30
|
+
__[lap.1]__ The laptop shall have a mass of no more than XXX grams.
|
31
|
+
|
32
|
+
__[lap.2]__ The laptop shall have a minimum battery life of XXX hours.
|
33
|
+
|
34
|
+
# Unwanted behavior
|
35
|
+
|
36
|
+
If `optional preconditions` `trigger`, then the `system name` shall `system response`.
|
37
|
+
|
38
|
+
## Car
|
39
|
+
|
40
|
+
__[car.1]__ If the car detects attempted intrusion, then the car shall operate the car alarm.
|
41
|
+
|
42
|
+
__[car.2]__ If the car detects low oil pressure, then the car shall display a "low oil pressure" warning.
|
43
|
+
|
44
|
+
## Laptop
|
45
|
+
|
46
|
+
__[lap.1]__ If the incorrect password is entered, then the laptop shall display XXX warning message.
|
47
|
+
|
48
|
+
__[lap.2]__ If the laptop is connected to a non-compatible device, then the laptop shall prevent transfer of data, prevent transfer of charge, display XXX warning message and not be damaged.
|
49
|
+
|
50
|
+
# Event-driven, When
|
51
|
+
|
52
|
+
When `trigger` the `system name` shall `system response`.
|
53
|
+
|
54
|
+
## Car
|
55
|
+
|
56
|
+
__[car.1]__ When the clutch pedal is depressed, the car shall disengage the driving force.
|
57
|
+
|
58
|
+
__[car.2]__ When the "turn indicator" command is received, the car shall operate the indicator lights on the front, side and rear of the vehicle, and provide audible and visual confirmation to the driver.
|
59
|
+
|
60
|
+
## Laptop
|
61
|
+
|
62
|
+
__[lap.1]__ When the laptop is off and the power button is pressed, the laptop shall boot up.
|
63
|
+
|
64
|
+
__[lap.2]__ When the laptop is running and the laptop is closed, the laptop shall enter "powersave" mode.
|
65
|
+
|
66
|
+
# State-driven, While
|
67
|
+
|
68
|
+
While `in a specific state` the `system name` shall `system response`.
|
69
|
+
|
70
|
+
## Car
|
71
|
+
|
72
|
+
__[car.1]__ While the ignition is on, the car shall display the fuel level and the oil level to the driver.
|
73
|
+
|
74
|
+
__[car.2]__ While the key is in the ignition, the car alarm shall be inhibited.
|
75
|
+
|
76
|
+
__[car.3]__ While the handbrake is applied, the wheels shall be locked.
|
77
|
+
|
78
|
+
## Laptop
|
79
|
+
|
80
|
+
__[lap.1]__ While the laptop is running on the battery and the battery is below XXX % charge, the laptop shall display "low battery".
|
81
|
+
|
82
|
+
__[lap.2]__ While an external audio output device is connected, the laptop shall mute the built-in speaker and send the audio output signal to the external audio output device.
|
83
|
+
|
84
|
+
# Option, Where
|
85
|
+
|
86
|
+
Where `feature is included` the `system name` shall `system response`
|
87
|
+
|
88
|
+
## Car
|
89
|
+
|
90
|
+
__[car.1]__ Where the car has electric windows, the electric window controls shall be on the driver's door panel.
|
91
|
+
|
92
|
+
__[car.2]__ Where the car includes automatic windscreen wipers, the car shall sense moisture on the windscreen and operate the windscreen wipers without driver commands.
|
93
|
+
|
94
|
+
## Laptop
|
95
|
+
|
96
|
+
__[lap.1]__ Where a "long life" battery is fitted, the laptop shall have a minimum battery life of XXX hours.
|
97
|
+
|
98
|
+
__[lap.2]__ Where the laptop is a "lightweight" model, the laptop shall have a mass of no more than XXX grams.
|
99
|
+
|
100
|
+
# Complex requirements
|
101
|
+
|
102
|
+
## Car
|
103
|
+
|
104
|
+
__[car.1]__ Where the car includes an "owner alert" system, if the car detects attempted intrusion, then the car shall send a message to the owner and activate the car alarm.
|
105
|
+
|
106
|
+
__[car.2]__ While the car is being driven forwards above a speed of XXX, if the driver attempts to engage reverse gear, then the car shall prevent engagement of reverse gear.
|
107
|
+
|
108
|
+
## Laptop
|
109
|
+
|
110
|
+
__[lap.1]__ Where the laptop includes "voice input" option, while the voice input option is selected, the laptop shall accept voice input commands.
|
111
|
+
|
112
|
+
__[lap.2]__ While the laptop is running on mains electrical power, if the power cable is disconnected, then the laptop shall display a warning message.
|
@@ -0,0 +1,183 @@
|
|
1
|
+
# Generate actors, use cases, and entites from Punch::Domain::DSL
|
2
|
+
# see [Punch](https://github/nvoynov/punch)
|
3
|
+
#
|
4
|
+
require "optparse"
|
5
|
+
require "erb"
|
6
|
+
require "punch"
|
7
|
+
require "optparse"
|
8
|
+
require_relative "domain"
|
9
|
+
require_relative "sampler"
|
10
|
+
include Punch
|
11
|
+
|
12
|
+
@domain = build_domain
|
13
|
+
|
14
|
+
parser = OptionParser.new {|cmd|
|
15
|
+
cmd.banner = "Usage: ruby marko.rb [OPTIONS]"
|
16
|
+
cmd.on('-b DIRECTORY', '--basedir DIRECTORY',
|
17
|
+
'Setup base punching directory', String)
|
18
|
+
cmd.on('-d', '--dry-run true|false', 'Print result instead of punch', TrueClass)
|
19
|
+
}
|
20
|
+
|
21
|
+
puts "Punch Marko Genearator v0.1"
|
22
|
+
puts "#{parser}"
|
23
|
+
options = {}
|
24
|
+
parser.parse(ARGV, into: options)
|
25
|
+
|
26
|
+
nulldir = File.expand_path(__FILE__).sub(/\.rb$/, '')
|
27
|
+
basedir = options.fetch(:basedir, nulldir)
|
28
|
+
dryrun = options.fetch('dry-run'.to_sym, true)
|
29
|
+
|
30
|
+
generate = proc{|file, body|
|
31
|
+
meth = dryrun == true ? Sampler.method(:preview) : Sampler.method(:write)
|
32
|
+
meth.(file, body)
|
33
|
+
}
|
34
|
+
|
35
|
+
samples = Sampler.()
|
36
|
+
# special case for services, few files
|
37
|
+
services_source = "fr/uc/%{uc}.md"
|
38
|
+
services_sample = samples.delete(services_source)
|
39
|
+
samples.each{|source, sample|
|
40
|
+
location = File.join(basedir, source)
|
41
|
+
erbsample = sample.match?(/@domain/)
|
42
|
+
content = if erbsample
|
43
|
+
renderer = ERB.new(sample, trim_mode: "-")
|
44
|
+
renderer.result
|
45
|
+
else
|
46
|
+
sample
|
47
|
+
end
|
48
|
+
generate.(location, content)
|
49
|
+
}
|
50
|
+
|
51
|
+
# services_source = "fr/uc/%{uc}.md"
|
52
|
+
# services_sample = samples.delete(service_source)
|
53
|
+
renderer = ERB.new(services_sample, trim_mode: "-")
|
54
|
+
@domain.services.each{|model|
|
55
|
+
modelstr = model.name.to_s.gsub(/(\s|_)/, '.')
|
56
|
+
location = File.join(basedir, services_source % {uc: modelstr})
|
57
|
+
@model = model
|
58
|
+
generate.(location, renderer.result)
|
59
|
+
}
|
60
|
+
|
61
|
+
|
62
|
+
__END__
|
63
|
+
|
64
|
+
@@sample actors.md
|
65
|
+
# Actors
|
66
|
+
{{id: actors, parent: root}}
|
67
|
+
|
68
|
+
The system should provide services for the following actors:
|
69
|
+
|
70
|
+
@@list
|
71
|
+
|
72
|
+
<% @domain.actors.each do |actor| -%>
|
73
|
+
## <%= actor.name.capitalize %>
|
74
|
+
{{id: .<%= actor.name.downcase %>}}
|
75
|
+
|
76
|
+
<%= actor.desc %>
|
77
|
+
<% end %>
|
78
|
+
|
79
|
+
@@sample fr/uc.md
|
80
|
+
# Use Cases
|
81
|
+
{{id: fr.uc, parent: fr}}
|
82
|
+
|
83
|
+
@@list
|
84
|
+
|
85
|
+
<% @domain.actors.each do |actor| -%>
|
86
|
+
<%
|
87
|
+
order_index = actor.services
|
88
|
+
.map(&:name)
|
89
|
+
.map(&:to_s)
|
90
|
+
.map{ _1.gsub(/(\s|_)/, '.') }
|
91
|
+
.map{ _1.split(?.).drop(1).join(?.) }
|
92
|
+
.join(' .')
|
93
|
+
-%>
|
94
|
+
## <%= actor.name.capitalize %>
|
95
|
+
{{id: fr.uc.<%= actor.name %>, order_index: .<%= order_index %>}}
|
96
|
+
|
97
|
+
The system must provide the following services for <%= actor.name.capitalize %> actor:
|
98
|
+
|
99
|
+
@@list
|
100
|
+
|
101
|
+
<% end %>
|
102
|
+
|
103
|
+
@@sample fr/en.md
|
104
|
+
|
105
|
+
# Entities
|
106
|
+
{{id: .en, parent: fr}}
|
107
|
+
|
108
|
+
The system utilises the following entities:
|
109
|
+
|
110
|
+
@@list
|
111
|
+
|
112
|
+
<% @domain.entities.each do |model| -%>
|
113
|
+
## <%= model.name.capitalize %>
|
114
|
+
{{id: .<%= model.name.downcase %>}}
|
115
|
+
|
116
|
+
<%= model.desc %>
|
117
|
+
|
118
|
+
The entity should provide the following properties:
|
119
|
+
|
120
|
+
Property | Type | Multiplicity | Description
|
121
|
+
-------- | ---- | ------------ | -----------
|
122
|
+
<% model.params.each do |param| -%>
|
123
|
+
<%= param.name %> | <%= param.sentry %> | 1 | <%= param.desc %>
|
124
|
+
<% end -%>
|
125
|
+
|
126
|
+
Table: Entity "<%= model.name.capitalize %>"
|
127
|
+
|
128
|
+
<% end %>
|
129
|
+
|
130
|
+
@@sample fr/uc/%{uc}.md
|
131
|
+
<%
|
132
|
+
dummy = @model.name.to_s.gsub(/(\s|_)/, '.').split(?.).map(&:downcase)
|
133
|
+
id = dummy.drop(1).join(?.)
|
134
|
+
parent = dummy.first
|
135
|
+
header = dummy.drop(1).map(&:capitalize).join(?\s)
|
136
|
+
-%>
|
137
|
+
# <%= header %>
|
138
|
+
{{id: .<%= id %>, parent: fr.uc.<%= parent %>}}
|
139
|
+
|
140
|
+
<%= @model.desc %>
|
141
|
+
|
142
|
+
**Actors and their Goals**
|
143
|
+
|
144
|
+
1. User, wants to get
|
145
|
+
2. System, wants to ensure
|
146
|
+
|
147
|
+
**Guarantee**
|
148
|
+
|
149
|
+
[Success]{.underline}
|
150
|
+
|
151
|
+
1.
|
152
|
+
2.
|
153
|
+
|
154
|
+
[Failure]{.underline}
|
155
|
+
|
156
|
+
1.
|
157
|
+
2.
|
158
|
+
|
159
|
+
**Extend**
|
160
|
+
|
161
|
+
- no use case extensions
|
162
|
+
@@todo - [\[fr.uc]]
|
163
|
+
|
164
|
+
**Include**
|
165
|
+
|
166
|
+
- no use case inlcusions
|
167
|
+
@@todo - [\[fr.uc]]
|
168
|
+
|
169
|
+
**Main flow**
|
170
|
+
|
171
|
+
1.
|
172
|
+
2.
|
173
|
+
|
174
|
+
**Extension**
|
175
|
+
|
176
|
+
[1a] something faulty
|
177
|
+
|
178
|
+
**Data**
|
179
|
+
|
180
|
+
Entities:
|
181
|
+
|
182
|
+
@@todo - [\[fr.ent.]];
|
183
|
+
@@todo - [\[fr.ent.]].
|
@@ -0,0 +1,105 @@
|
|
1
|
+
% Requirements (BABOK)
|
2
|
+
|
3
|
+
# Classification
|
4
|
+
|
5
|
+
__Business requirements__: statements of goals, objectives, and outcomes that describe why a change has been initiated. They can apply to the whole of an enterprise, a business area, or a specific initiative.
|
6
|
+
|
7
|
+
__Stakeholder requirements__: describe the needs of stakeholders that must be met in order to achieve the business requirements. They may serve as a bridge between business and solution requirements
|
8
|
+
|
9
|
+
__Solution requirements__ : describe the capabilities and qualities of a solution that meets the stakeholder requirements. They provide the appropriate level of detail to allow for the development and implementation of the solution. Solution requirements can be divided into two sub-categories:
|
10
|
+
|
11
|
+
* __Functional requirements__: describe the capabilities that a solution must have in terms of the behaviour and information that the solution will manage, and
|
12
|
+
* __Non-functional requirements or quality of service requirements__: do not relate directly to the behaviour of functionality of the solution, but rather describe conditions under which a solution must remain effective or qualities that a solution must have.
|
13
|
+
|
14
|
+
__Transition requirements__: describe the capabilities that the solution must have and the conditions the solution must meet to facilitate transition from the current state to the future state, but which are not needed once the change is complete. They are differentiated from other requirements types because they are of a temporary nature. Transition requirements address topics such as data conversion, training, and business continuity.
|
15
|
+
|
16
|
+
# Life cycle
|
17
|
+
|
18
|
+
The purpose is to ensure that business, stakeholder, and solution requirements and designs are aligned to one another and that the solution implements them.
|
19
|
+
|
20
|
+
@@list
|
21
|
+
|
22
|
+
## Trace
|
23
|
+
|
24
|
+
Business Needs <-> Business Requirements <-> Stakeholder Requirements <-> Solution Requirements (Design <-> Code <-> Test)
|
25
|
+
|
26
|
+
## Maintain
|
27
|
+
|
28
|
+
The purpose is to retain requirement accuracy and consistency throughout and beyond the change during the entire requirements life cycle, and to support reuse of requirements in other solutions.
|
29
|
+
|
30
|
+
## Prioritize
|
31
|
+
|
32
|
+
Typical factors that influence prioritization include:
|
33
|
+
|
34
|
+
__Benefit__ the advantage that accrues to stakeholders as a result of requirement implementation, as measured against the goals and objectives for the change. The benefit provided can refer to a specific functionality, desired quality, or strategic goal or business objective. If there are multiple stakeholders, each group may perceive benefits differently. Conflict resolution and negotiation may be employed to come to consensus on overall benefit.
|
35
|
+
|
36
|
+
__Penalty__ the consequences that result from not implementing a given requirement. This includes prioritizing requirements in order to meet regulatory or policy demands imposed on the organization, which may take precedence over other stakeholder interests. Penalty may also refer to the negative consequence of not implementing a requirement that improves the experience of a customer.
|
37
|
+
|
38
|
+
__Cost__ the effort and resources needed to implement the requirement. Information about cost typically comes from the implementation team or the vendor. Customers may change the priority of a requirement after learning the cost. Cost is often used in conjunction with other criteria, such as cost-benefit analysis.
|
39
|
+
|
40
|
+
__Risk__ the chance that the requirement cannot deliver the potential value, or cannot be met at all. This may include many factors such as the difficulty of implementing a requirement, or the chance that stakeholders will not accept a solution component. If there is a risk that the solution is not technically feasible, the requirement that is most difficult to implement may be prioritized to the top of the list in order to minimize the resources that are spent before learning that a proposed solution cannot be delivered. A proof of concept may be developed to establish that high risk options are possible.
|
41
|
+
|
42
|
+
__Dependencies__ relationships between requirements where one requirement cannot be fulfilled unless the other requirement is fulfilled. In some situations, it may be possible to achieve efficiencies by implementing related requirements at the same time. Dependencies may also be external to the initiative, including but not limited to other teams’ decisions, funding commitments, and resource availability. Dependencies are identified as part of the task Trace Requirements (p. 79).
|
43
|
+
|
44
|
+
__Time Sensitivity__ the 'best before' date of the requirement, after which the implementation of the requirement loses significant value. This includes time-to-market scenarios, in which the benefit derived will be exponentially greater if the functionality is delivered ahead of the competition. It can also refer to seasonal functionality that only has value at a specific time of year.
|
45
|
+
|
46
|
+
__Stability__ the likelihood that the requirement will change, either because it requires further analysis or because stakeholders have not reached a consensus about it. If a requirement is not stable, it may have a lower priority in order to minimize unanticipated rework and wasted effort.
|
47
|
+
|
48
|
+
__Regulatory or Policy Compliance__ requirements that must be implemented in order to meet regulatory or policy demands imposed on the organization, which may take precedence over other stakeholder interests.
|
49
|
+
|
50
|
+
## Assess changes
|
51
|
+
|
52
|
+
The purpose is to evaluate the implications of proposed changes to requirements and designs. The task is performed as new needs or possible solutions are identified.
|
53
|
+
|
54
|
+
* is it align to the change strategy and/or solution scope?
|
55
|
+
* will increase the value of the solution?
|
56
|
+
* has conflicts with other requirements?
|
57
|
+
* or increase the level of risk?
|
58
|
+
* can be traced back to a need?
|
59
|
+
|
60
|
+
## Approve
|
61
|
+
|
62
|
+
The purpose is to obtain agreement on and approval of requirements and designs for business analysis work to continue and/or solution construction to proceed.
|
63
|
+
|
64
|
+
Business analysts are responsible for ensuring clear communication of requirements, designs, and other business analysis information to the key stakeholders responsible for approving that information.
|
65
|
+
|
66
|
+
Approval of requirements and designs may be formal or informal. Predictive approaches typically perform approvals at the end of the phase or during planned change control meetings. Adaptive approaches typically approve requirements only when construction and implementation of a solution meeting the requirement can begin.
|
67
|
+
|
68
|
+
Business analysts work with key stakeholders to gain consensus on new and changed requirements, communicate the outcome of discussions, and track and manage the approval.
|
69
|
+
|
70
|
+
# Quality
|
71
|
+
|
72
|
+
While quality is ultimately determined by the needs of the stakeholders who will use the requirements or the designs, acceptable quality requirements exhibit many of the following characteristics:
|
73
|
+
|
74
|
+
Quality Definition
|
75
|
+
-------------- ----------
|
76
|
+
Atomic self-contained and capable of being understood independently of other requirements or designs.
|
77
|
+
Complete enough to guide further work and at the appropriate level of detail for work to continue. The level of completeness required differs based on perspective or methodology, as well as the point in the life cycle where the requirement is being examined or represented.
|
78
|
+
Consistent aligned with the identified needs of the stakeholders and not conflicting with other requirements.
|
79
|
+
Concise contains no extraneous and unnecessary content.
|
80
|
+
Feasible reasonable and possible within the agreed-upon risk, schedule, and budget, or considered feasible enough to investigate further through experiments or prototypes.
|
81
|
+
Unambiguous the requirement must be clearly stated in such a way to make it clear whether a solution does or does not meet the associated need.
|
82
|
+
Testable able to verify that the requirement or design has been fulfilled. Acceptable levels of verifying fulfillment depend on the level of abstraction of the requirement or design.
|
83
|
+
Prioritized ranked, grouped, or negotiated in terms of importance and value against all other requirements.
|
84
|
+
Understandable represented using common terminology of the audience.
|
85
|
+
|
86
|
+
# Attributes
|
87
|
+
|
88
|
+
Attribute Definition
|
89
|
+
------------------------ ----------------------
|
90
|
+
rationale a justification
|
91
|
+
originator who raised
|
92
|
+
fit criterion how to test if the solution matches the requirement
|
93
|
+
customer satisfaction if this requirement is successfully implemented; 1-5, uninterested - extremely pleased
|
94
|
+
customer dissatisfaction measure of stakeholders unhappiness if this requirements is not part of the final product. 1-5, hardly matters - extremely displeased
|
95
|
+
conflict
|
96
|
+
complexity
|
97
|
+
effort
|
98
|
+
risk
|
99
|
+
priority
|
100
|
+
derived when a requirement is derived from another requirement
|
101
|
+
depends when a requirement depends on another
|
102
|
+
necessity when it only makes sense to implement a particular requirement if a related requirement is also implemented.
|
103
|
+
lower effort when a requirement is easier to implement if a related requirement is also implemented.
|
104
|
+
satisfy an implementation element, eg functional requirement satisfy a solution component
|
105
|
+
validate a test case that can determine whether a solution fulfills the requirement
|
Binary file
|