Gentoo Archives: gentoo-releng

From: Pieter Van den Abeele <pvdabeel@g.o>
To: gentoo-releng@l.g.o
Cc: Pieter Van den Abeele <pvdabeel@g.o>
Subject: [gentoo-releng] software engineering standards document remarks
Date: Sat, 20 Mar 2004 19:54:10
Message-Id: 57DD080C-7AA8-11D8-A97B-0003938E7E46@gentoo.org
1 Hi,
2
3 I've read through the gentoo software engineering standards draft. I've
4 written down some remarks below.
5
6 > This document contains comprehensive standards for Gentoo software
7 > development
8 > projects. These standards should benefit nearly any Gentoo project,
9 > but are
10 > particularly critical for projects that demand a very high level of
11 > refinement
12 > and overall quality.
13
14 Software engineering standards are like licensing terms. If the GPL
15 said: nearly all users using GPL software should obey to its terms,
16 there would be a problem. It is not clear from the above paragraph,
17 that all gentoo project should look into this document. We also need a
18 formal definition of a 'project'. (modifying an ebuild is not a project
19 that requires USE cases, design, approval, ...)
20
21 It is a bad idea to suggest we have projects that need to follow
22 standards, and those that don't or to a lesser extend. Simply all
23 projects need to follow the standards. I wouldn't document what
24 projects you are going to look harder at, and what projects you don't.
25 It is clear from this document that portage is something you'll look
26 hard at. That's good to know, but I'd leave that fact out of the
27 document, unless of course you expect to use the document only for
28 portage.
29
30 My gentoo experience tells me that high standard projects are affected
31 by projects without or with only very low standards/ethics: in the high
32 standard project it would be possible to schedule things, but deadlines
33 will be missed -without doubt- because requirements for other projects
34 are changed suddenly during design or implementation, leading to at
35 least a complete rescheduling for the high-standards project because
36 they need to accommodate for the manpower loss. If you create a fire
37 somewhere, people from other projects will have to go put it out, and
38 those people will not be able to do something else while they are
39 putting out the fire.
40
41 Note that uncontrolled fires do not obey to engineering standards. More
42 specifically, their timetable is too constraining. For instance: there
43 are currently 3 features in the 2004.1 I'm guessing I need to invest
44 time into, but afaik work has only started on one of them. If catalyst
45 starts changing five minutes for the release and an incredible amount
46 of ebuilds are required to be masked stable on ppc in the last five
47 minutes, I'll be doing nothing but releasing again, in best case, only
48 miss the 2004.1 release by a few days. Even though I have been building
49 releases every two days, I can still end up with an unstable release.
50
51 These standards will without doubt be another fire too if they are
52 suddenly applied to projects without giving them time to adapt. One
53 fire can be put out really quickly, but 10 uncontrolled fires will lead
54 to some project stalling. I wonder whether this is open-source related;
55 will there always be new volunteers to replace the firemen who burned
56 themselves (out) ? My suggestion would be to switch to controlled
57 fires, and to increase the amount of fires when the amount of manpower
58 increases, but I'd stop burning people.
59
60 > Goals
61
62 > It is intended to define a waterfall model for
63
64 It might be a good idea to explain what the waterfall model is;
65
66 1. Requirements
67 2. Client approves functional/non-functional requirements
68 3. Design
69 4. Client approves design
70 5. Implementation and documentation
71 6. Requirements check - project failure or success
72 7. Revisit requirements, (add/remove/change)
73 8. Client approves revisited functional/non-functional requirements
74 9. Revisit design
75 10. Client approves revisited design
76 11. Implementation and documentation
77 12. Requirements met? - iteration failure or success
78 13. goto 7
79
80 In this case the client is our userbase. This is a special client
81 because:
82
83 - our client (a huge set of people) wants to see all their requirements
84 met in the first iteration.
85 - our client cannot approve something unanimously very easily
86
87 We therefore need to find somebody who represents the client.
88
89 My suggestion would be to let the management team represent the client,
90 with the store as an advisor. The releng team could represent the
91 'developer'. Releng should therefore be represented in the management
92 team. Care should be taken with people seated in the management team,
93 part of releng and in the store, they should make sure they keep their
94 roles separate, otherwise we will end up in an unhealthy situation
95 (where for instance releng solely represents the store and does not
96 take into account development constraints). Management needs to look
97 for a compromis between store, userbase and developer
98 requirements/constraints.
99
100 When we define requirements standards, design standards and standards
101 to see if an implementation meets requirements, we can then still
102 define how hard to be about these things. Saying in advance that some
103 projects do not need requirements, design etc is a recipe for the
104 disaster. Please note that updating an ebuild is not a project. We also
105 need a good definition of a "project".
106
107 Gentoo so far has followed a waterfall model, without visible design
108 and requirements phases, or visible but approved and tested by the
109 developer.
110
111 > First Steps
112 >
113 > target audience
114
115 Too much examples here. Nothing really concrete.
116
117 > Invite Participation
118
119 "Invite participation" alone is not good, and is not a software
120 engineering standard, rather a marketing requirement.
121
122 This should be a guideline at max: Identify USE cases by inviting
123 participation, document user USE cases, and ask people to read your USE
124 cases before sending it of to the management/releng team.
125 Please note that USE cases are not only USER USE cases but there are
126 also DEVELOPER USE cases. It is highly unlikely that inviting
127 participation will not lead to feature-bloat and unrealistic first
128 iteration requirements. Actively recruiting people is also not a
129 requirement (we have a separate project for that). If requirements can
130 be met with only passively recruiting or no recruiting at all, why not?
131 We have a recruiting team continuously looking for additional forces?
132
133 Keep in mind that the target audience is not necessarily a set of
134 developers. Also, geeks do not necessarily dislike software which
135 newbies can use (cfr. OS X).
136
137 > Create a High-Level Development timeline
138
139 A timeline is not a good idea.
140
141 Completion dates are prone to change in an open source project because
142 people work when they have time. A schedule in which the amount of time
143 needed to realize each USE flag is discussed is to be preferred
144 (possibly in combination with a weekly status update showing how much
145 time was used) over a hard deadline. Hard deadlines are only good for
146 project wide releases (2004.1, 2004.2), to help determing whether a
147 completed features falls in a release. And it is possible to see when a
148 feature will be completed based on the status updates. No status
149 updates means no project progress.
150
151 > Next, develop a tenative development roadmap for your effort that sets
152 > general
153 > completion dates for:
154 >
155 > 1) project start (public invitation)
156 > 2) initial work on design/requirements doc
157 > 3) completion of design/requirements doc (should be at least a month
158 > after #2)
159
160 cfr supra.
161
162 This is not a good template because it lacks the approval argument.
163 Approving your own requirements will lead to half-baked projects,
164 features that shouldn't be included because they're half-baked, ...
165
166 > In addition, your roadmap should also define how the design,
167 > development and
168 > testing process should proceed, so it should define steps such as:
169
170 We should have standards for those too.
171
172 > Gentoo is a volunteer project, and the nature of volunteer work can
173 > make it
174 > quite challenging to meet deadlines. Fortunately, there are quite a few
175 > techniques that can be used to make your development effort resilient,
176 > so that
177 > it can meet the unexpected challenges of volunteer development,
178 > whether this
179 > means flexibility in dealing with needed adjustments to deadlines,
180 > coping with
181 > changes in developer interest and activity, etc.
182
183 > One absolutely critical aspect to ensuring success in an uncertain
184 > environment
185 > is to *clearly define the requirements for the results of your
186 > effort*. "Hard
187 > requirements" are specific, testable aspects of your end-product --
188 > aspects
189 > that must be achieved in order for your development effort to be
190 > considered a
191 > success. If you're behind schedule, you can't compromise on a hard
192 > requirement
193 > -- doing so would undermine the entire purpose of the development
194 > effort. Instead,
195 > your schedule will need to be adjusted to reflect the your current
196 > progress.
197
198 Not a good text. The schedule is hard linked to the work performed.
199 That argument does not hold in a project where people can only work on
200 things in their free time. The only people that can 'cope', 'deal' or
201 'compromise' are those having time to do so, and wanting to do so. Time
202 needed + time spend can lead to estimates on when to expect something.
203 I would agree to your schedule if there was a paycheck in my bus for
204 every project, but unfortunately it isn't.
205
206 It looks like some parts for the document were cut/pasted from an
207 email, and I'm not sure the target audience is the same. It might help
208 to base the document on
209 http://standards.ieee.org/reading/ieee/std_public/description/se/
210
211 I'd have at least standards for SQAP, SCMP, SPMP, SRS, SDS, and STD .
212 It would be a good idea to provide template documents to fill in (like
213 the release notes) instead of a long list of requirements, otherwise
214 you'll not be seeing much documents.
215 Not all people read the DTD's or xml schema's. It would be a good idea
216 to have a tuturial on how to write gentoo XML. Otherwise templates are
217 needed.
218
219 SQAP: software quality assurance plan - coding conventions -
220 documentation standards?
221 SCMP: software configuration management plan - CVS artifacts to be used
222 - who is allowed to commit, who isn't...
223 SPMP: project management plan - the management bits (see IEEE format
224 example)
225 SRS: software requirements (USE cases, UML?, functional/non-functional
226 requirements)
227 SDS: software design document (design patterns, diagrams, ...)
228 STD: software test description (how to test the software works)
229
230 I have some good tex templates if those are needed.
231
232 Best regards,
233
234 Pieter Van den Abeele
235
236
237 --
238 gentoo-releng@g.o mailing list