修订版 | 2e4e02bb2d2091e6387a49fbffc4240ebdf99a15 (tree) |
---|---|
时间 | 2024-03-21 23:55:40 |
作者 | Albert Mietus < albert AT mietus DOT nl > |
Commiter | Albert Mietus < albert AT mietus DOT nl > |
Agile-SIA (blog) is done. Publish STAGING
@@ -0,0 +1,23 @@ | ||
1 | +# Read the Docs configuration file | |
2 | +# See https://docs.readthedocs.io/en/stable/config-file/v2.html for details | |
3 | + | |
4 | +# Required | |
5 | +version: 2 | |
6 | + | |
7 | +# Set the version of Python and other tools you might need | |
8 | +build: | |
9 | + os: ubuntu-22.04 | |
10 | + tools: | |
11 | + python: "3.11" | |
12 | + apt_packages: | |
13 | + - python3-sphinxcontrib.plantuml | |
14 | + | |
15 | +# Build documentation in the docs/ directory with Sphinx | |
16 | +sphinx: | |
17 | + configuration: conf.py | |
18 | + | |
19 | +# We recommend specifying your dependencies to enable reproducible builds: | |
20 | +# https://docs.readthedocs.io/en/stable/guides/reproducible-builds.html | |
21 | +python: | |
22 | + install: | |
23 | + - requirements: requirements.txt | |
\ No newline at end of file |
@@ -0,0 +1,123 @@ | ||
1 | +.. Copyright (C) ALbert Mietus; 2023 | |
2 | + | |
3 | +.. _SIA-demo-H1: | |
4 | + | |
5 | +============================= | |
6 | +1) The Bumper of a Muscle Car | |
7 | +============================= | |
8 | + | |
9 | + | |
10 | +.. seealso:: | |
11 | + This *first* chapter of the SIA is about requirements. Talk to **all** stakeholders, order and list **all** needs. | |
12 | + The client (ProductOwner) should react with: “*Yes, this the bumper we need*”. | |
13 | + | |
14 | + -- :ref:`AgileSIA-5chapters` | |
15 | + | |
16 | +.. Caution:: | |
17 | + | |
18 | + * We mix the (shortened) text in this SIA with tips for the apprentice(s). | |
19 | + |BR| | |
20 | + Don’t do that in a genuine SIA. | |
21 | + * We use an “interview style” for some needs to clarify the several demand types, | |
22 | + |BR| | |
23 | + You will not do that in most SIAs. | |
24 | + | |
25 | +Assignment | |
26 | +=========== | |
27 | + | |
28 | +The client’s demand is simple: | |
29 | + | |
30 | +.. demo:: Make a bumper | |
31 | + :ID: BUMPER | |
32 | + :tags: Bumper | |
33 | + :project: AgileSIA | |
34 | + | |
35 | +He reasons that whenever we are worth a penny, we know how to deliver a bumper, know all the legal specs, etc. | |
36 | + | |
37 | +Requirements | |
38 | +============ | |
39 | + | |
40 | +.. tip:: As you probably guessed, not “any bumper” will do. So, spend some time on *requirements gathering*. | |
41 | + | |
42 | +.. req:: Build to impress | |
43 | + :ID: BUMPER_chrome | |
44 | + :links: BUMPER | |
45 | + :tags: Bumper | |
46 | + :project: AgileSIA | |
47 | + | |
48 | + As it is a Muscle Car, it should impress ordinary people. They generally like *bling-bling*, shiny stuff. So | |
49 | + the car will have a lot of chrome. We mandate this for the bumper as well. | |
50 | + | |
51 | +.. req:: We are in a hurry | |
52 | + :ID: BUMPER_April1 | |
53 | + :links: BUMPER | |
54 | + :tags: Bumper | |
55 | + :project: AgileSIA | |
56 | + | |
57 | + We will race with this car on April 1! So, we need the bumper quickly. And we assume you know we need both bumpers | |
58 | + mounted before we can start regulation. So, plz deliver it as early as possible! | |
59 | + | |
60 | +.. tip:: Not all requirements are technical. Usually, there are also demands [#nf]_ on cost, duration, quality, etc. Above, you | |
61 | + find an example. | |
62 | + | |
63 | + | |
64 | +.. req:: Front and Back | |
65 | + :ID: BUMPER_1is2 | |
66 | + :links: BUMPER | |
67 | + :tags: Bumper | |
68 | + :project: AgileSIA | |
69 | + | |
70 | + Even though we always speak about “the bumper” --like everybody else-- every car needs two bumpers: one at the front | |
71 | + and one at the back. And they are not the same! | |
72 | + | |
73 | + So, whenever we ask for one, plz deliver both! Although, I assume you already know that. ... | |
74 | + | |
75 | +.. tip:: | |
76 | + | |
77 | + This :need:`BUMPER_1is2` need is trivial. At least for some. But when your solution has it wrong is costly. | |
78 | + |BR| | |
79 | + Once in a while, a client will read a triviality and correct it. Then you saved even more. | |
80 | + | |
81 | + Remember: the goal of this chapter is simple: *Make sure you solve the right problem*. | |
82 | + | |
83 | +.. req:: Impress me | |
84 | + :ID: BUMPER_SafetyImago | |
85 | + :links: BUMPER | |
86 | + :tags: Bumper | |
87 | + :project: AgileSIA | |
88 | + | |
89 | + We build a luxury, high-end car. Our clients like to be impressed. Surely we don’t want to spend a fortune on a | |
90 | + bumper, but it shouldn't be cheap. Also, we prefer to give our clients a safe & secure car. So make sure that the | |
91 | + bumpers are not only regulation-safe but also “visualise” that! | |
92 | + | |
93 | +.. req:: Give me options | |
94 | + :ID: BUMPER_Green | |
95 | + :links: BUMPER | |
96 | + :tags: Bumper | |
97 | + :project: AgileSIA | |
98 | + | |
99 | + This is our first eco-friendly muscle car; we used to be “petrol heads”. -- therefore we call it *”Green”*. | |
100 | + |BR| | |
101 | + Saying that, as the chief project manager, it worries me too. We have so many things to do, there are so many | |
102 | + project risks, and we can’t afford to delay. Therefore, I’m very happy about your offer to help me with all those | |
103 | + non-core items. | |
104 | + | |
105 | + What I’m basically saying is: “Give me options”. When you can deliver faster or find creative solutions, I am | |
106 | + interested --even when it costs more. Then, I can give you more components and remove some risk from my planning. | |
107 | + | |
108 | +.. tip:: | |
109 | + | |
110 | + For this exercise, we stop here with the demands. You should now have a quite complete image of the bumper that is | |
111 | + needed. And the (non-technical) demands for this mini-project. | |
112 | + | |
113 | + .. warning:: You can now continue with the next page, chapter: :ref:`SIA-demo-H2`. | |
114 | + |BR| | |
115 | + **OR,** you can think for a moment to find a few creative solutions that fit all needs -- Give it a try! | |
116 | + | |
117 | +----- | |
118 | + | |
119 | +.. rubric:: footnotes | |
120 | + | |
121 | +.. [#nf] | |
122 | + Experienced architects will tell you that the non-technical *needs* are the most important ones. Typically, an | |
123 | + architecture is driven by those “*non-functionals*”. |
@@ -0,0 +1,41 @@ | ||
1 | +.. Copyright (C) ALbert Mietus; 2023 | |
2 | + | |
3 | +.. _SIA-demo-H2: | |
4 | + | |
5 | +========================= | |
6 | +2) The Authentic Solution | |
7 | +========================= | |
8 | + | |
9 | +.. seealso:: This *second* chapter of the SIA contains the first of the typical three solutions. It will resolve **all** | |
10 | + needs as demanded in :ref:`The Problem analysis <SIA-demo-H1>`. | |
11 | + |BR| | |
12 | + But in another way than in “:ref:`SIA-demo-H3`” or “:ref:`SIA-demo-H4`”. *'Other'*, as in providing other business | |
13 | + needs. | |
14 | + | |
15 | + -- :ref:`AgileSIA-5chapters` | |
16 | + | |
17 | + | |
18 | +Outline | |
19 | +======= | |
20 | + | |
21 | +The basic idea of this proposal is to shop for a second-hand (set of) bumper(s). We assume finding the Oldsmobile kind | |
22 | +of bumpers is easy. They are doubtless bent or rusty, but we can fix that. | |
23 | + | |
24 | +A huge advantage is they adhere to the classic ‘70-image of the typical muscle car. Would it be great to reuse the bumpers | |
25 | +of a `1966 Pontiac GTO <https://en.wikipedia.org/wiki/Pontiac_GTO>`__? | |
26 | + | |
27 | +Pros & Cons | |
28 | +=========== | |
29 | + | |
30 | +* The cost of those bumpers is low, depending on their quality. A bit of restoration work will be needed, but nothing we | |
31 | + can't handle. | |
32 | +* This solution fits the current “one of a kind” demands. It will not scale to mass production. | |
33 | +* This *reuse* approach might fit nicely in the new “green, environmentally” concept. | |
34 | +* As we need to search for (existing) bumpers, it is hard to predict exactly when we will find one (actually: 2). | |
35 | +* There is even a (slight) risk we can’t find one. It is advisable to choose another option as a backup. | |
36 | + | |
37 | +.. note:: Complete this yourself | |
38 | + | |
39 | +.. tip:: Even this very short introduction already shows we are communicating in “car language”, not into the details of | |
40 | + the solution. | |
41 | + |
@@ -0,0 +1,64 @@ | ||
1 | +.. Copyright (C) ALbert Mietus; 2023 | |
2 | + | |
3 | +.. _SIA-demo-H3: | |
4 | + | |
5 | +===================== | |
6 | +3) The Exact Solution | |
7 | +===================== | |
8 | + | |
9 | +.. seealso:: | |
10 | + | |
11 | + | |
12 | + This (*third*) chapter of the SIA presents an alternative solution that fulfils **all** :ref:`requirements | |
13 | + <SIA-demo-H1>` again. It takes different factors and perspectives on their importance and priorities into | |
14 | + consideration. | |
15 | + |BR| | |
16 | + Where ":ref:`SIA-demo-H2`" is creative, this one is more classical. The next one, “:ref:`SIA-demo-H4`”, will be | |
17 | + completely different again. | |
18 | + | |
19 | + * :ref:`AgileSIA-5chapters` | |
20 | + | |
21 | + | |
22 | +Outline | |
23 | +======= | |
24 | + | |
25 | +We can develop a brand-new “chrome bumper” with the required old style. It gives the looks and robust image you are | |
26 | +looking for, and we can make it fit exactly. It's not just the size or width of the car that matters, but also all the | |
27 | +bolts and nuts that are needed. | |
28 | +|BR| | |
29 | +That might even help to assemble the car quickly and easily. | |
30 | + | |
31 | +Pros & Cons | |
32 | +=========== | |
33 | + | |
34 | +* It will always fit, but it requires a lot of manual labour, which makes it expensive. | |
35 | +* Working with chrome is complex; it needs time to “Stabilise” (compare it with paint that has to dry). That rest | |
36 | + period costs nothing but affects the (overall) planning. | |
37 | +* Roughly, we need 13 steps, with (on average) a week between | |
38 | + |BR| | |
39 | + Note: this is not applicable for :math:`{\alpha}`- and :math:`{\beta}`-versions; they are faster. | |
40 | + | |
41 | + * This option is scalable: more bumpers for many cars are possible. | |
42 | + | |
43 | + | |
44 | +.. attention:: This demo is small, we skip a lot of (relevant) details. | |
45 | + | |
46 | + For example, we *mention* the “assembly” topic and address the location of the bolts, nuts, and holes, but only very | |
47 | + slightly. | |
48 | + | |
49 | + An SIA (even an agile one) frequently has sub-chapters on those (functional) slices, to be introduced in | |
50 | + Chapter 1, or ’in’ one of the solutions. That mostly depends on how generic the “slice’ is for the solutions. | |
51 | + | |
52 | + .. tip:: In the workshop, we go into more detail. | |
53 | + | |
54 | + In this “bumper example” we might handle ‘slices’ like: ‘Mounting/Assembling’, ‘Reliability’, and ‘Validation of the | |
55 | + complete car’; depending on the audience. | |
56 | + |BR| | |
57 | + We can also use more software-relevant topics, directly. Like ‘does a solution fit in the existing (CI/CD) pipeline’, | |
58 | + ‘is training needed’, etc. | |
59 | + | |
60 | + To say something cleaver, including the effect on cost, duration, risks, etc a (prematurely) design may be | |
61 | + needed -- I didn't (nor can't) do it as I’m not a mechanic. | |
62 | + |BR| | |
63 | + But remember: a SIA is not a design document! Design (whiteboard style) just enough to underpin your | |
64 | + statements. Don’t present it to your stakeholders, you only will annoy them. Unburden them! |
@@ -0,0 +1,50 @@ | ||
1 | +.. Copyright (C) ALbert Mietus; 2023 | |
2 | + | |
3 | +.. _SIA-demo-H4: | |
4 | + | |
5 | +==================== | |
6 | +4) Plastic Fantastic | |
7 | +==================== | |
8 | + | |
9 | +.. seealso:: This third solution, in chapter-4, is again a completely different approach to achieving the same | |
10 | + :ref:`needs <SIA-demo-H1>`. | |
11 | + |BR| | |
12 | + Whether you like it, or prefer :ref:`SIA-demo-H2` or :ref:`SIA-demo-H3`, is not relevant! That topic is not | |
13 | + part of the (all) solutions, see the next (and last) chapter “:ref:`SIA-demo-H5`” for that! | |
14 | + | |
15 | + -- :ref:`AgileSIA-5chapters` | |
16 | + | |
17 | + | |
18 | +Outline | |
19 | +======= | |
20 | + | |
21 | +As might know, we have a department that can “3D print” big plastics, including standard bumpers -- we deliver hundreds | |
22 | +of them, for the aftermarket. Using this facility we can create safe, secure bumpers in any shape and size, in hours! | |
23 | +|BR| | |
24 | +Although almost any colour (combination) of plastics is possible (making it robust, as the colour is “inside), it is not | |
25 | +very shiny. But we can add a “chrome finish”. | |
26 | + | |
27 | +This solution has several benefits. It is cost-effective and quick (far better than any other solution). But most | |
28 | +important, it makes it easy to meet formal regulations (e.g. crash tests) as they are pre-validated. Combined with the | |
29 | +great flexibility in mounting points, it makes assembling and validating the car easy. | |
30 | + | |
31 | + | |
32 | +Pros & Cons | |
33 | +=========== | |
34 | + | |
35 | +* It is fast, fast, fast. We can deliver the first version next week. It’s also cost-effective: An extra “try-out” version | |
36 | + (not shiny) cost virtually nothing. | |
37 | +* Also, assembling and validation become easy (see above). | |
38 | +* It does meet all requirements --but it is a plastic solution, not a metal one. Plastic bumpers are generally | |
39 | + considered more secure than metal, but your bumper magnets will not stick! | |
40 | +* We can use this option as the backup of :ref:`SIA-demo-H2`. | |
41 | +* We can also provide this option as a first, fast option and switch to another one whenever this one isn't “shiny | |
42 | + enough”. | |
43 | + |BR| | |
44 | + (in this case, we need to switch in sprint- 2 or -3; otherwise, we have to replan). | |
45 | + | |
46 | +.. note:: Again, this is just an outlook for the chapter. But we keep it (extra) short for training goals. | |
47 | + | |
48 | +.. tip:: Can you see that the author is enthusiastic about this option? | |
49 | + | |
50 | + .. caution:: Being enthusiastic is fine, but avoid the pitfall of “advertising”! |
@@ -0,0 +1,76 @@ | ||
1 | +.. Copyright (C) ALbert Mietus; 2023 | |
2 | + | |
3 | +.. _SIA-demo-H5: | |
4 | + | |
5 | +================ | |
6 | +5) How To Choose | |
7 | +================ | |
8 | + | |
9 | +.. seealso:: This *last* chapter is a short overview and/or tips on “**How** to choose”. | |
10 | + | |
11 | + .. Caution:: Don’t advise on which solution is best! | |
12 | + | |
13 | + Plz, do not get trapped in the pitfall to advise which solution *is* the best-- all should be ‘great’. | |
14 | + But *‘great’*, for other (business) reasons. Some are cheaper, some are faster, etc. | |
15 | + | |
16 | + You merely advise on how the PO (client/...) shall select one of the solutions. “When T2M is most important, ...”, | |
17 | + or “When you target the top market, ...”, etc. | |
18 | + | |
19 | + -- :ref:`AgileSIA-5chapters` | |
20 | + | |
21 | +We have presented three completely different solutions, each with its pros & cons. All do fulfil all needs as | |
22 | +given in the 1ste chapter [:ref:`SIA-demo-H1`]. | |
23 | +|BR| | |
24 | +Now, it is time to decide which one you prefer to continue with -- as a polite reminder: [:need:`BUMPER_April1`]. So, hope | |
25 | +for a quick decision. | |
26 | + | |
27 | +Therefore, we present some tips. | |
28 | + | |
29 | +Tips | |
30 | +==== | |
31 | + | |
32 | +Which requirements are most prominent | |
33 | +------------------------------------- | |
34 | + | |
35 | +Even though all requirements are met in every solution, some needs might have a bit more weight. So, let’s go over the | |
36 | +most relevant ones. | |
37 | + | |
38 | +.. rubric:: :need:`BUMPER_chrome` & :need:`BUMPER_SafetyImago` | |
39 | + | |
40 | +When we like to impress on looks, the “Oldsmobile fenders” [:ref:`SIA-demo-H2`] beets all other solutions. Whereas | |
41 | +[:ref:`SIA-demo-H4`] is the most safe solution. | |
42 | + | |
43 | +The brand-new chrome solution [:ref:`SIA-demo-H3`] is a nice combination for both requirements: safe and shiny. | |
44 | + | |
45 | +.. rubric:: :need:`BUMPER_April1` | |
46 | + | |
47 | +Solution “:ref:`SIA-demo-H2`” involves finding a second-hand “Oldsmobile bumper”. This should be easy but has a risk on | |
48 | +timing. So, whenever we like to minimize risk, this solution isn’t preferable. | |
49 | +|BR| | |
50 | +Whereas the high-volume [:ref:`SIA-demo-H4`] option is very, very fast and has no risk of meeting the deadline at all; | |
51 | +therefore we even mentioned it as a backup scenario. | |
52 | + | |
53 | +.. rubric:: :need:`BUMPER_Green` | |
54 | + | |
55 | +As the bumper is important but not the most expensive part, you can also consider to play on safe. For example, use the | |
56 | +cost-effective fast [:ref:`SIA-demo-H4`] solution as a backup, and select one of the other two as the main solution. | |
57 | +|BR| | |
58 | +This guarantees a good bumper on time. And enables a risk-free great option. | |
59 | + | |
60 | +.. tip:: Skip :need:`BUMPER_1is2` | |
61 | + | |
62 | + It’s obvious, two bumpers are needed. All solutions are in harmony here. So the is no need to handle it here. | |
63 | + | |
64 | +Other factors | |
65 | +------------- | |
66 | + | |
67 | +.. rubric:: scalable & future | |
68 | + | |
69 | +Although it, is not a need, this ‘first eco-friendly muscle car’ is a first. And we assume (many) more will | |
70 | +follow. Therefore we spend a few words on that too. | |
71 | + | |
72 | +[:ref:`SIA-demo-H3`] & [:ref:`SIA-demo-H4`] are the most scalable. There is no upper limit on the number of bumpers we | |
73 | +can deliver. | |
74 | +|BR| | |
75 | +Price-wise, the plastic solution is cheaper. However, the piece price of a (new, labour-intensive) chrome bumper will | |
76 | +go down when volume rises. |
@@ -0,0 +1,40 @@ | ||
1 | +.. Copyright (C) ALbert Mietus; 2023 | |
2 | + | |
3 | +.. _SIA-demo: | |
4 | + | |
5 | +******************* | |
6 | +Demo: Make a bumper | |
7 | +******************* | |
8 | + | |
9 | +This demo is (far) outside the typical software sphere to help you focus on the Agile SIA itself. With no typical | |
10 | +software-engineering fixations, you shouldn't be distracted by with SW-details. | |
11 | + | |
12 | +At the same time, it is a technical challenge. | |
13 | +|BR| | |
14 | +I assume you are familiar with this common car background. | |
15 | + | |
16 | +We use ':ref:`AgileSIA-5chapters`, but each chapter is extremely short. Please make your next SIA short too, but with | |
17 | +some body text to make it more readable. | |
18 | + | |
19 | +Before you write your 1st genuine Agile SIA, I advise you to practice on a software engineering topic. My training has | |
20 | +one, but it isn’t published. | |
21 | + | |
22 | + | |
23 | +.. hint:: Background | |
24 | + | |
25 | + In this demo, our client is building an impressive **Green Muscle Car**. We just advised him to put his best men | |
26 | + (and women) on the electric engine, the battery and the breaks. We also convinced him to trust us for *non-core | |
27 | + components*, like the luxury, leader steering wheel, and the bumpers. | |
28 | + | |
29 | + He agreed and asked us to write an Agile SIA for the bumper. | |
30 | + | |
31 | + | |
32 | +.. rubric:: Content | |
33 | +.. toctree:: | |
34 | + :maxdepth: 3 | |
35 | + | |
36 | + H1-needs | |
37 | + H2-authentic | |
38 | + H3-exact | |
39 | + H4-plastic | |
40 | + H5-HowToChoose |
@@ -0,0 +1,92 @@ | ||
1 | +.. _AgileSIA-5chapters: | |
2 | + | |
3 | +The 5 chapter template | |
4 | +====================== | |
5 | + | |
6 | +It might help to use the following template to understand the goals of the SIA. And assist in writing a sound one. | |
7 | + | |
8 | +An SIA usually consists of only five chapters: | |
9 | + | |
10 | +1. The Problem Analyse | |
11 | +---------------------- | |
12 | + | |
13 | +This is a bit like a Requirements Gathering phase. Usually one has to communicate with all stakeholders (or read | |
14 | +their inputs) to thoroughly understand and list their needs. All the requirements and desires should be listed in | |
15 | +natural language and presented in a logical manner [#NoInterview]_. | |
16 | +|BR| | |
17 | +There is no need to select or prioritise the demands at this stage. | |
18 | + | |
19 | +In many cases, the stakeholders have already expressed their input and one uses mainly other (“higher”) documents | |
20 | +as input. Remember, however, it’s about what the stakeholders want, not about the documents themselves. | |
21 | +|BR| | |
22 | +Do not “copy” all those demands. Just mention them, link to the source and summarise them such that the document is | |
23 | +readable. | |
24 | + | |
25 | +More often than not, this is a short chapter, maybe a few pages. The goal is that the PO and all stakeholders | |
26 | +say: “Yes, that is exactly what we need” [#check]_. | |
27 | + | |
28 | +2. Solution A | |
29 | +-------------- | |
30 | + | |
31 | +It gives a highlight of the first presented (design) option, without explaining the design. Just enough so that the | |
32 | +PO (and other stakeholders) understand it -- there is no need that anybody can implement it already. | |
33 | + | |
34 | +Then, the cost, risk, duration and other relevant topics (for the stakeholders) are explained. | |
35 | +|BR| | |
36 | +Again, keep it simple and global. Don’t try to convince the PO; (s)he will (should) trust your analysis. | |
37 | + | |
38 | +Optionally you can present some sub-options. But don’t go into details. Only sub-options that are relevant for the | |
39 | +PO are relevant. | |
40 | + | |
41 | +3. Solution B | |
42 | +-------------- | |
43 | + | |
44 | +Same as above, but (completely) different. | |
45 | +|BR| | |
46 | +Sometimes a feature can be split into several functional “slices” [#cake]_. | |
47 | + | |
48 | +Different solutions may come with different slices, but we can also have common ones. Then, introduce them early, and | |
49 | +refer to them in the next solution(s). Make it explicit which slices are (partially) common and which not. | |
50 | +|BR| | |
51 | +Despite that slices can be common, they may have other effects on investments (costs etc), risk or other business | |
52 | +values Therefore, I prefer to write out those aspects in each solution. Often assisted with a phrase as *“a bit | |
53 | +more/better/... than in ..”* | |
54 | + | |
55 | +4. Solution C | |
56 | +------------- | |
57 | +Again, another way for the same result [#cents]_. | |
58 | + | |
59 | +5. Summary/Overview | |
60 | +------------------- | |
61 | + | |
62 | +This short chapter lists the relevant differences (for the PO/stakeholders) between the solutions, often in a table. | |
63 | + | |
64 | +It frequently also advice on **how** to select the best option. This is to guide the PO. | |
65 | +|BR| | |
66 | +By example: | |
67 | + | |
68 | +* *“Solution A has the shortest T2M, although it is twice as expensive”*. | |
69 | +* *“When future extensibility is key, solution B offers the most flexibility”*. | |
70 | +* *“Solution C has the main benefit that it has many slices, each can be realised independently in a series of | |
71 | + sprints”*. | |
72 | +* *“For the same reason, solution C can be implemented in 10 concurrent teams, keeping them fully loaded* | |
73 | + |BR| | |
74 | + (especially as we have the risk that two teams run out of work).” | |
75 | + | |
76 | +----- | |
77 | + | |
78 | +.. rubric:: Footnotes & Links | |
79 | + | |
80 | +.. [#NoInterview] Plz, don’t make it a conversation report. Don’t use stakeholder order. And always use your own words. | |
81 | +.. [#Check] Typically this 1st chapter is reviewed early. This chapter is also a check: When the team misunderstands the | |
82 | + feature, it is better to fail fast. | |
83 | + | |
84 | +.. [#cake] A cake is (typically) cooked bottom-up and consumed left-to-right. Even though the sum of the layers and the | |
85 | + sum of the slices are equal, the effect differs. I often use this analogy and will write a blog about it | |
86 | + “soon”. For now, plz just remember it does differ and get used to the term:-) | |
87 | + | |
88 | +.. [#cents] Be “`Pound Wise and Penny Foolish <https://www.dictionary.com/browse/penny-wise-and-pound-foolish>`__”! | |
89 | + |BR| | |
90 | + Nobody is (or should be) interested in a solution that differs only in a few (pre)cents. Not in an (upfront) SIA | |
91 | + document. Unless, of course, when that percentage is a relevant business topic. | |
92 | + |
@@ -0,0 +1,100 @@ | ||
1 | +.. Copyright (C) ALbert Mietus; 2023, 2024 | |
2 | + | |
3 | +********** | |
4 | +Objectives | |
5 | +********** | |
6 | + | |
7 | +The goal of an SIA is to *analyse* the impact of a feature (or change) and *apprise the PO* of the options he has to | |
8 | +achieve it. It typically results in a document --but the document is *not* the goal (and shouldn't be)! | |
9 | + | |
10 | +As we will see below, the goal of the SIA is to guide the next development steps: Does it bring (business) value? | |
11 | +*(typically: yes)* and what is the best option to realise it? After making those two decisions, the impact analysis | |
12 | +--and the SIA document itself-- quickly loses its value. | |
13 | +|BR| | |
14 | +In that view, the write-a-document part can even be considered a waste! That is not what I recommend, however. A written | |
15 | +document is also helpful for discussing and reviewing the SIA. | |
16 | + | |
17 | + | |
18 | +Business value | |
19 | +============== | |
20 | + | |
21 | +Before one can decide whether and how a feature brings value, one needs insight into the necessary investment [#estimate]_ | |
22 | +This is not only (development) *costs* (sw: mostly man-hours). Usually, *duration* (Time-2-Realize, or | |
23 | +Time-2-Marked) and *risks* (e.g. to introduce bugs) are as important. Depending on the ecosystem, other topics should be | |
24 | +addressed too. | |
25 | + | |
26 | +Generally, there are multiple (technical) means to accomplish the same innovation [#ISW]_, [#OneShot]_. The SIA should | |
27 | +offer a few (typically: 3 main) solutions, possibly with variants. They all fulfil the demands but differ in | |
28 | +quality, luxury, and more relevant for the PO: primary value and investments. | |
29 | + | |
30 | +Avoid common mistakes | |
31 | +===================== | |
32 | + | |
33 | +* A SIA can get too technical and appear more like a design document, which makes it difficult for people to understand | |
34 | + the impact. And to expenses to write. | |
35 | + | |
36 | + As a consequence, deciding not to go forward becomes impractical. | |
37 | + |BR| | |
38 | + At the same time, it’s often “too much work” to offer multiple solutions. Then, there is nothing to choose. --making | |
39 | + the SIA useless. | |
40 | + | |
41 | + * A design (phase & document) may be needed --even in a lean, agile approach. It is planned after the SIA. | |
42 | + * Remember, should the PO lower the priority --based on the Agile SIA-- the design effort has become a waste. | |
43 | + * Even when not: When the SIA present three options and so three designs are made, we use only one. | |
44 | + | |
45 | +* Not thinking about **design options**. | |
46 | + |BR| | |
47 | + Sometimes only one option is presented. Then, the PO can’t choose. But usually, it implies somebody else has made the | |
48 | + choice (implicitly). That is not the role of the team. | |
49 | + | |
50 | +* No upfront **design thinking**. This is the other extreme of the first mistake (too much design), and as bad. | |
51 | + |BR| | |
52 | + Even though the document shouldn't be “too technical” (*as it should focus on business value, and in the language of the PO*), that | |
53 | + does not imply the team has to think about the design. A bit of “whiteboard design” is needed, to estimate the cost | |
54 | + (etc) of that option. | |
55 | + | |
56 | + * There is no need to convert those (3) design sketches into real designs and present them in the SIA. | |
57 | + * Only the effect of that design is presented to the PO (and so globally described in the SIA) | |
58 | + | |
59 | + .. note:: Remember those sketches | |
60 | + | |
61 | + It is wise to store all those sketches, and possibly some notes, for later. Most likely one of the three will be | |
62 | + needed in an upcoming phase/sprint. Then it (only one) will be converted into a real design and worked out. | |
63 | + |BR| | |
64 | + In a typical lean, agile approach, those provisional designs are stored as a photo in a wiki, along with the | |
65 | + notes. | |
66 | + | |
67 | +Use the 5 chapters template | |
68 | +=========================== | |
69 | + | |
70 | +As we present in :ref:`AgileSIA-5chapters`, an (agile, lean) SIA has five chapters, only 5! | |
71 | +|BR| | |
72 | +However, it not the exact number that counts -- some prefer to combine the 3 “solutions chapters” is a single chapters, | |
73 | +other may varie a bit on number of solutions, or the place of sub-chapters. | |
74 | + | |
75 | +Still, using that template (as used in :ref:`SIA-demo`) will typically result in a nice SIA. | |
76 | + | |
77 | + | |
78 | + | |
79 | +----- | |
80 | + | |
81 | +.. rubric:: Footnotes & Links | |
82 | + | |
83 | +.. [#estimate] In that (limited) view, an SIA is like a complicated planning session. | |
84 | + |BR| | |
85 | + Depending on (e.g.) costs, the PO may place the feature high, or low, on the prioritised backlog. | |
86 | + | |
87 | +.. [#ISW] “*It Should Work*” is a common baseline. All presented options should work, as nobody will ever select one | |
88 | + that doesn't. But it doesn't need to be perfect (see below). | |
89 | + | |
90 | +.. [#OneShot] Mostly, software should be maintainable. *“Clean Code”* has business value in the long run. | |
91 | + |BR| | |
92 | + However, once and a while we need “One Shot” [#OneShot2]_ code, where this is less needed. Then, the PO may decide to | |
93 | + go for a (cheaper) option that has less quality. | |
94 | + | |
95 | +.. [#OneShot2] As an example: migration “scripts” to update data from version `x.1(a)` to `x.1(b)` will never be used | |
96 | + again after the update. Or a “Proof of Concept”; typically that code is written fast, to demonstrate the ability, then | |
97 | + replaced by “real code” and thrown away. | |
98 | + |BR| | |
99 | + That kind of software is often written in “another language”. The risk that nobody can maintain it is absent. | |
100 | + |
@@ -0,0 +1,61 @@ | ||
1 | +.. Copyright (C) ALbert Mietus; 2023, 2024 | |
2 | + | |
3 | +.. sidebar:: Workshop & Blog | |
4 | + | |
5 | + Welcome to the condensed "blog edition" of my workshop `“Using & Writing an Agile SIA”`. | |
6 | + |BR| | |
7 | + If you're eager for the full experience, don't hesitate to reach out for the complete workshop. | |
8 | + | |
9 | +.. _AgileSIA: | |
10 | + | |
11 | +============ | |
12 | +An Agile SIA | |
13 | +============ | |
14 | + | |
15 | +.. post:: 2024/03/21 | |
16 | + :tags: SysEng, Modernize | |
17 | + :category: lecture | |
18 | + :language: en | |
19 | + | |
20 | + The **SIA** -- an acronym for *System* (or Software) *Impact Analysis* -- is an often used approach to get insight into | |
21 | + the costs, risks, and possibilities of implementing a feature. It should result in a readable document to | |
22 | + decide whether it adds value to implement that feature and offer options on how | |
23 | + |BR| | |
24 | + But is also a document that is repeatedly incorrectly used. | |
25 | + | |
26 | + The classical SIA isn't very Lean nor Agile; certainly not when it became an (upfront) design document, as | |
27 | + often ... | |
28 | + |BR| | |
29 | + On second thought, a good SIA is lean and agile. A short, up-front *“think ahead”* document makes it possible | |
30 | + to postpone details to future sprints and assist the Product Owner in picking the right solution without adding | |
31 | + costs. | |
32 | + | |
33 | + Let’s study how we can write an Agile SIA. One with business value. | |
34 | + | |
35 | + | |
36 | +.. admonition:: *“a Bumper”* is **not any** Bumper (demo) | |
37 | + | |
38 | + .. image:: ./aBumper.jpg | |
39 | + :width: 33% | |
40 | + :align: right | |
41 | + | |
42 | + * In this workshop, we design ‘a bumper’. Or actually: we write the SIA for it. | |
43 | + * By using a not-software example, it is easier to *not focus* on the technicalities that shouldn't be in the SIA | |
44 | + anyhow | |
45 | + * For mechanical engineers: I’m probably oversimplifying and missing relevant details. Sorry about that:-) | |
46 | + |BR| | |
47 | + I welcome feedback to improve! | |
48 | + * The “bumper image” is from a `1967 Citroen 2CV | |
49 | + <https://commons.wikimedia.org/wiki/File:1967_Citroen_2CV_-_front_bumper_detail_-_16000647651_(cropped).jpg>`__, | |
50 | + which is cropped and `reused <https://www.flickr.com/photos/7467877@N07/16000647651/>`__ as permitted. Thanks! | |
51 | + | |
52 | + | |
53 | +.. rubric:: Content | |
54 | +.. toctree:: | |
55 | + :maxdepth: 2 | |
56 | + | |
57 | + goal/index | |
58 | + goal/5chapters | |
59 | + demo/index | |
60 | + notes/index | |
61 | + |
@@ -0,0 +1,13 @@ | ||
1 | +.. Copyright (C) ALbert Mietus; 2023 | |
2 | + | |
3 | +.. _SIA-notes: | |
4 | + | |
5 | +******************* | |
6 | +Notes | |
7 | +******************* | |
8 | + | |
9 | +.. toctree:: | |
10 | + :glob: | |
11 | + :maxdepth: 2 | |
12 | + | |
13 | + * |
@@ -0,0 +1,9 @@ | ||
1 | +Tracing Bumper needs | |
2 | +==================== | |
3 | + | |
4 | + | |
5 | +Just as a service, we present a (generated) overview of the requirements for the bumper needs | |
6 | + | |
7 | +.. needflow:: | |
8 | + :tags: Bumper | |
9 | + :filter: 'AgileSIA' in project |
@@ -8,9 +8,9 @@ | ||
8 | 8 | |
9 | 9 | .. post:: 2020/02/15 |
10 | 10 | :tags: SysEng |
11 | - :category: lecture | |
12 | - :location: Vianen | |
13 | - :language: en | |
11 | + :category: lecture | |
12 | + :location: Vianen | |
13 | + :language: en | |
14 | 14 | |
15 | 15 | :study-time: 1 hour |
16 | 16 |
@@ -1,12 +1,13 @@ | ||
1 | 1 | # Copyright (C) ALbert Mietus, SoftwareBeterMaken.nl; 2017- 2023 Part of my MESS project |
2 | 2 | # -*- coding: utf-8 -*- |
3 | 3 | |
4 | +DEBUG=False | |
5 | + | |
4 | 6 | # read STD config ... |
5 | 7 | #========================================== |
6 | 8 | import sys; sys.path.append('_std_settings/conf') |
7 | 9 | from std_conf import * |
8 | 10 | |
9 | - | |
10 | 11 | # For sphinx.ext.autodoc': |
11 | 12 | import os.path; sys.path.append('pyMESS/training/dPID') |
12 | 13 |
@@ -22,16 +23,19 @@ | ||
22 | 23 | # Overrule std_conf, where needed |
23 | 24 | #================================ |
24 | 25 | |
25 | -#html_title = project + " | " + release # DEFAULT: '<project> v<revision> documentation' -- Strip "documentation" | |
26 | +html_title = project + " | " + release # DEFAULT: '<project> v<revision> documentation' -- Strip "documentation" | |
26 | 27 | |
28 | +html_sidebars = { | |
29 | + '**': [ 'recentposts.html', 'tagcloud.html', 'postcardHeader.html'], | |
30 | +} | |
27 | 31 | |
28 | 32 | |
29 | 33 | # ABlog |
30 | 34 | #------ |
31 | 35 | extensions.append('ablog') |
32 | 36 | extensions.append('sphinx.ext.intersphinx') # GAM: workaround? |
33 | -import ablog; templates_path.append(ablog.get_html_templates_path()) | |
34 | -fontawesome_link_cdn = "http://maxcdn.bootstrapcdn.com/font-awesome/4.3.0/css/font-awesome.min.css" | |
37 | + | |
38 | +fontawesome_link_cdn = "https://use.fontawesome.com/releases/v5.0.10/css/all.css" | |
35 | 39 | post_date_format = '%Y/%m/%d' |
36 | 40 | post_date_format_short = '%Y/%m' |
37 | 41 |
@@ -50,15 +54,12 @@ | ||
50 | 54 | disqus_pages = True # All pages have a disqus-section |
51 | 55 | disqus_drafts = False # .. but the draft (blog) pages (.. post:: without date ) |
52 | 56 | |
53 | -html_sidebars = { | |
54 | - '**': [ 'recentposts.html', 'tagcloud.html', 'postcardHeader.html'], | |
55 | -} | |
56 | 57 | |
57 | 58 | |
58 | 59 | |
59 | 60 | html_static_path.append('_slides') |
60 | 61 | |
61 | -if False: | |
62 | +if DEBUG: | |
62 | 63 | print("Debug: show all packages:") |
63 | 64 | import os |
64 | 65 | os.system("pip list") |
@@ -1,6 +1,8 @@ | ||
1 | +sphinx==6.2.1 | |
1 | 2 | ablog |
2 | -sphinxcontrib-plantuml==0.23 | |
3 | +#sphinxcontrib-plantuml==0.23 | |
4 | +sphinxcontrib-plantuml | |
3 | 5 | sphinxcontrib-needs==0.7.9 |
6 | +sphinxcontrib-needs | |
4 | 7 | sphinx_rtd_theme |
5 | -sphinx==4.5.0 | |
6 | -urllib3==1.26.4 | |
8 | +#urllib3==1.26.4 |