update devspec.en_US/1.0.general.md.
[devspec.git] / devspec.en_US / 2.2.develop-step-diagrams.md
blob40a87fbce31823ed9b9caecbb26cd59d29418496
1 \r
2 \r
3 # dev-work-flow-diagram\r
4 =======================\r
5 \r
6     the colored object in 'top usecase diagram' is the entrance launched by an \r
7 actor in developing. others show the steps in developing. and they are \r
8 described in other diagrams in detail. view the diagram of *-procedure.\r
9     all those develop steps is described in section of 'develop step'.\r
13 # compact design\r
14 =================\r
16   it brings design conception and work into a src-pkg, although it's simple,\r
17 easy and weakness, it helps developer to follow the regular procedure.\r
18   the meaning of the design work is for auto-sync between design and src-code,\r
19 by the same processing method.\r
21 SA(structured analysis)\r
22 @ list program or device operator and IO object in ExternalList.txt.\r
23 @ writing function feature list in TODO.\r
24 @ list the data processing procedure in program in file of DataProcessing.txt.\r
25 @ writing the function feature module invoking sequence in file \r
26   ModuleInvoking.txt\r
28 SD(structured design)\r
29 @ writing program module list in xxx.catalog accroding to file of 'TODO'.\r
30 @ writing module variable and function list in xxx.catalog, accroding to the \r
31   file of 'DataProcessing.txt' and 'ModuleInvoking.txt'.\r
32 @ generate or sync xxx.catalog design file to dir of 'src'.\r
34     the rest thing is like normal, coding and testing until done.\r
38 ## develop step\r
39 ==============\r
43 ## design files\r
44 ==============\r
48 # SE design\r
49 ============\r
51   the meaning of this design work is providing a method how to generate design\r
52 files for code generation.\r
53   SE, software engineering design, is similar with compact design. actually,\r
54 the procedure of compact design is referenced from this. but SE design use \r
55 graphical utilities for design, the content can be descripted in detail and \r
56 more humen readable.\r
60 ## develop step\r
61 ==============\r
65 analysis-procedure:\r
66 dev-initial-procedure:\r
67 design-procedure:\r
68 code-branch:\r
69 code-merge:\r
70 develop-procedure:\r
71 testing-procedure:\r
72 bug-report-task:\r
73 document-procedure:\r
74 publish-procedure:\r
77 @ new-idea-action: \r
78 @ new-demond-action: \r
79 @ analysis-action: \r
80 @ initial-dev-launch: \r
81 @ new-feature-dev-launch: \r
82 @ complete-estimate: \r
83 @ publish-estimate: \r
84 @ testing-estimate: \r
85 @ bugfix-estimate: \r
86 @ publish-launch: \r
87 @ usr-bug-report-action: \r
88 @ using-action: \r
89 @ works of bugfix, testing, document, translation: \r
90 @ tasks of analysis, design, coding, testing, document, translation: \r
94 ## design files\r
95 ==============\r
99 # develop step\r
100 ==============\r
102     it's sourced from the behaviour-action list, then translated to the work \r
103 tasks.\r
104     some of the work task can be combined in a procedure, it can be mentioned\r
105 repeatly in other place.\r
107 actor ==> behaviour action ==> procedure ==> work task ==> dev-step\r
109         all the work translated to dev-step, any actor followed with the step,\r
110 src-pkg will be developed.\r
111     those develop procedure below are used in developing under devspec, and it \r
112 is a note for usecase diagrams.\r
114 @ new src-pkg creating\r
115 # download and install pkg-builder, \r
116 # check the develop environment works well.\r
117 # create a soft-pkg by templete.\r
118 # create web home pages by program or guide documents.\r
119 # first-version-dev-env-chk: create the start version of the soft-pkg, compile, \r
120   and comit to code repo, and publist the initial blank version of soft pkg for\r
121   testing.\r
123 @ initial-dev-launch(for new project develop)\r
124 # tag-doc. record the function feature or idea for a soft-pkg.\r
125 # trimp the tag-doc, and output a feature list to be developed.\r
126 # catalog. writing function module for soft-pkg by using .catalog file.\r
127 # generate code framwork automatically by using codegen. compile and fix \r
128   compile bug, output an executables.\r
129 # modulized design:\r
130 + write unit test code, and coding for single function module, \r
131 + unit test by using cunit or scripttest.\r
132 + coding ... until the code of function module is tested ok.\r
133 # integrate testing by scripttest.\r
134 # performence testing accroding to the demand of design. memory leakage, code \r
135   coverage, and code optimization.\r
136 # multi-lang support accroding to the demand of design.\r
137 # first version testing, and bug-report, bug-fix, re-testing.\r
138 # document: manual-helper-doc, dev-api-doc, tutorial/animation, example, and so\r
139   on.\r
140 # publish for src-pkg, binary install pkg, relative resource file pkg, web \r
141   pages, documents, by using utility programs in devutils.\r
143 @ new-feature-dev-launch(part of code develop)\r
144 # get the develop task from task list, and clear what to be developed.\r
145 # create unit test code, coding for task.\r
146 # unit test, and fix-bug, re-test.\r
147 # inegerate test, or function feature loop-back test.\r
149 @ new features\r
150 # send issue by email to the maintainer, maybe with the patch code. or ideas\r
151   from the author of soft-pkg.\r
152 # view the issue by maintainer, append a feature in tag-doc if it is needed for\r
153   soft-pkg.\r
155 @ new feature branch marge\r
156 # fork a new branch from main version, modify code on it until it is done.\r
157 # check if the code of main version \r
158 # get the corresponding version of code forked from mainline. get the current\r
159   newest version of code, and compare them.\r
160 # combine the compared modification code into new branch.\r
161 # loop-back testing\r
162 # commit if the ocde of main version is not updated since it is used for \r
163   comparing. if new modification commited, compare and combine again.\r
165 @ bug-report\r
166 # send mail to the maintainer. it's better to bring test environment \r
167   description, even if the patch code.\r
168 # record the bug-report info, and append the bug re-testing task.\r
169 # tester or some one get the task of bug re-testing in current version, and \r
170   test in various long time support version. \r
171 # record the bug-report and bug-testing info, append a bug-fix task, and \r
172   specify the version code to be fixed, and record patch version publish \r
173   demaond if the fixed-bug is need to be publish as a patch version.\r
175 @ new feature develop\r
176 # get a intreast task from feature list by developer, or assign task to a \r
177   developer by the maintainer.\r
178 # developer get the task, and the relative documents. do develop works \r
179   accroding 'part of code develop'.\r
180 # check if all features developed in new version feature list, and publish \r
181   soft-pkg if done.\r
183 @ bug-fix\r
184 # create a task for bug-fixing.\r
185 # developer get the task, and the relative description text. do develop works \r
186   accroding 'part of code develop'.\r
187 # fix and test in other versions listed in task.\r
188 # publish patch version if needed.\r
190 @ publish\r
191 # check feature list that has been developed, check bug list that has been\r
192   fixed.\r
193 # build soft-pkg, generate documents.\r
194 # function feature loop-back testing, documents checking, fix-bug if needed.\r
195 # output changelog and news automatically by tag-doc. delete task record and \r
196   bug record that has been done. trimp documents in tag-doc.\r
197 # upload src-pkg and bin-pkg, update web pages by utility programs in devutils.\r
198   view the web pages, and test downloading, build and running loop-back test.\r
200     the develop of soft-pkg is driven by task and develop step. the maintainer\r
201 put developer on a task, or a developer is intreasting in some feature, or \r
202 willing to fix some bug. it push the step for soft-pkg developing.\r
204     here impmort a conception of 'procedure'. it's the step serial for works\r
205 in developing.\r
209 # design files\r
210 ==============\r
212 @ dev-design\r
213 # use-relationship\r
214 + topÓÃÀýͼ£º°üº¬user¡¢softwareÖ®¼ä¹ØÁªµÄ´óÌå¿òͼ¡£²àÖØÓÚÓû§behaviour£¬¼°¶ÔÓ¦\r
215   µÄ¹¦ÄÜÄ£¿é¡£¶ÔÓÚÒ»¸öÃüÁîÐгÌÐò£¬Í¨³£ÊÇÃüÁîÐвÎÊý¼°¶ÔÓ¦µÄ¹¦ÄÜ¡£ÔÚÓÃÀýͼÖаüº¬pkgÐÅÏ¢£¬²»ÁíÍâ»æÖÆpkgͼ¡£\r
216 + pkgÓÃÀýͼ£º°üº¬Ò»¸öpkg»òһЩ¹¦ÄÜÏà½üµÄpkgµÄuserºÍoperationÖ®¼äµÄ¹Øϵͼ¡£Èç¹û\r
217   ³ÌÐò½Ï¸´ÔÓ£¬°üº¬¶à¸ösub-pkg£¬»ò°üº¬¶à¸öexe³ÌÐòʱ£¬¶Ôpkg»òexeµÄÓÃÀýÃèÊö¡£\r
219 # analysis\r
220 + £¡¹¦Äܵ÷Óùý³Ìͼ(function-invoking-procedure-diagram)¡£\r
221     ´ÓÍⲿÊäÈëµ½¹¦ÄÜ´¦ÀíµÄÔËÐйý³Ìͼ¡£ÓëÊý¾ÝÁ÷ͼÏà¶ÔÓ¦µÄ¹¦ÄÜÔËÐйý³Ìͼ¡£ÀýÈç´Ó\r
222   Óû§ÊäÈëÃüÁîÐеÄij¸ö²ÎÊýµ½¹¦ÄÜʵÏֵŦÄÜÄ£¿éµ÷Óá£Ò»¸ö¹¦ÄÜÄ£¿é¿ÉÒÔÊÇÒ»¸ö\r
223   module£¬Ò²¿ÉÒÔÊǺ¯Êý¡£\r
224 + ¹¦ÄÜÌØÐÔÁбíÎļþ(function-feature-list-file)\r
225     ÓÃÓÚ¹¦ÄÜÌØÐÔÐèÇóµÄtracer¡£Í¬Ê±ÓÃÓÚÊä³öTODOÎļþ¡£TODOÎļþµÄ¹¦ÄÜʵÏÖºó£¬ÓÃÓÚ\r
226   changelogºÍnewsÎļþµÄÊä³ö¡£\r
227     ¶Ô¹¦ÄÜÐèÇó»ò¹¦ÄÜÌØÐÔµÄÃèÊö¡£¸ù¾ÝuserµÄ²Ù×÷£¬ÒÔ¼°¹¦ÄÜÄ£¿éµ÷Óùý³Ì£¬Êä³ö¹¦ÄÜ\r
228   ÌØÐÔÁбíÎļþ£¬ÓÃÓڼǼ¹¦ÄÜÐèÇ󡣸ù¾Ý¡®¹¦Äܵ÷Óùý³Ìͼ¡¯ÖÐʹÓõŦÄÜÄ£¿é£¬ÂÞÁÐÒ»\r
229   ¸ötable½á¹¹µÄÁбíÎļþ¡£²¢¸ù¾Ý¹¦ÄÜÄ£¿éÖ®¼äµÄ¹ØÁª¹Øϵ£¬ÒÔĿ¼½á¹¹±íʾ¹¦ÄÜÄ£¿éÁÐ\r
230   ±í¡£\r
231 + £¡Êý¾ÝÁ÷ͼ(DFD, data-flow-diagram)¡£\r
232     ¸ù¾ÝÈí¼þÓëÍⲿÎïÀíʵÌåµÄÊý¾Ý½»»¥£¬·ÖÎö¼°»æÖÆÊý¾Ý´¦Àí¹ý³Ì¡£\r
234     Ï¸»¯¹¦ÄÜÄ£¿éÖ®¼äµÄµ÷Óùý³Ì£¬\r
236 + Êý¾Ý×Öµä(data-dict)¡£DFDÖÐÿ¸öÊý¾ÝÌõÄ¿µÄ¼¯ºÏ¡£ÓÃÓÚE-RͼµÄÊý¾ÝÏî¡£E-RͼÊä³öÊý¾Ý±í¼°Êý¾ÝÄÚÈݵĶ¨Òå¡£\r
237 + E-Rͼ(ER-diagram)£¬ÊµÌå¶ÔÏóͼ¡£ÓÃÓÚÊä³öÊý¾Ý¿â±í½á¹¹¶¨Òå¡£\r
239 # deployment\r
240 + °üͼ/×é¼þͼ/²¿Êðͼ£¬ÓÃÓÚ±íʾ²»Í¬level¹æÄ£µÄÈí¼þÄ£¿é¡£×é¼þͼÓÃÓÚ±íʾϵͳ¼¶³ÌÐò\r
241   Ì×¼þ£¬²¿ÊðͼÓÃÓÚ±íʾ²»Í¬³ÌÐòÔÚ¶à»ú»·¾³µÄ°²×°²¿Ê𡣶ÔÓÚ°üͼµÄ¹¦ÄÜ£¬ÔÚc/cppÖеÄ\r
242   Èí¼þ°üÓëjÖеIJ»ÍêÈ«Ïàͬ¡£\r
243 + Êµ¼ÊÔÚc/cpp¿ª·¢ÖУ¬Êä³öbuild-destÁÐ±í£¬Êä³öinstall-pkgÁÐ±í£¬Êä³ösrc-pkgÁÐ±í£¬\r
244   ÕâЩÁбíÓÃÓÚ¹¦ÄÜÄ£¿éÁбíÎļþµÄtop-levelÉè¼Æ£¬src-pkgµ½exec-pkgµ½build-dest¡£\r
245   Ò»Ð©src-pkgµÄexec-pkg½Ï¶àʱ£¬»ò½«exec-pkg¶ÔÓ¦µÄsrcת»»Îªsub-src-pkg¡£\r
246 + ¸ù¾ÝÕâЩÁÐ±í£¬top-levelµÄ¡®¹¦ÄÜÄ£¿éÁбíÎļþ¡¯¡£ÔÚcodegenʱ£¬Êä³ösrc-pkg£¬¼°ÆäÄ¿\r
247   Â¼·ÖÀ࣬ÒÔ¼°Ò»¸ösrc-pkgÖеÄinstall-pkgºÍbuild-dest¡£\r
249 # design\r
250 + top-level¹¦ÄÜÄ£¿éÁбíÎļþ\r
251     ÓÃÓÚÈí¼þ´úÂ빤³Ì³õʼ»¯Ê±£¬Êä³ö²»Í¬µÄsrc-pkg¡£\r
252 + ¹¦ÄÜÄ£¿éÁбíÎļþ(function-module-list-file)\r
253     ¸ÃÎļþÓÃÓÚcodegenÊä³ö´úÂë¿ò¼Ü£¬ÒÔ¼°²âÊÔÓÃÀý¡£\r
254     ²»Í¬ÓÚ¹¦ÄÜÌØÐÔÁбíµÄÊÇ£¬ÕâÊÇÒ»¸ö³ÌÐò´úÂëÄ£¿éµÄ»®·Ö¡£¶ø¹¦ÄÜÌØÐÔÁбíÊǶԹ¦ÄÜ\r
255   ÐèÇ󣬹¦ÄÜÌØÐÔµÄÃèÊö¡£ÔÚ¡®¹¦ÄÜÌØÐÔÁбíÎļþ¡¯ÖУ¬½«Ä£¿éÃû³ÆÌí¼Óµ½¶ÔÓ¦µÄ¹¦ÄÜÌØÐÔÃèÊöÖУ¬Ê¹Á½¸öÁбíÄÚÈÝÉÏ¿Éͬ²½¼°¹ØÁª¡£\r
256         Ê¹ÓÃ.catalogÎļþ±àд£¬ÃèÊöÒ»¸öĿ¼½á¹¹µÄ¹¦ÄÜÄ£¿éÁÐ±í¡£ÔÚcpp³ÌÐòÉè¼Æʱ£¬»¹¿É\r
257   Ê¹ÓÃ.umlÀàͼ¡£¸ÃÎļþÓÃÓÚÊä³ö³ÌÐò´úÂë¿ò¼Ü¡£\r
258     Èí¼þ½Ï¸´ÔÓʱ£¬°üº¬¶à¸ö¹¦ÄÜÄ£¿éÁбíÎļþ¡£\r
259         topÎļþ°üº¬µÄÊÇÈí¼þdeploymentÏà¹ØµÄÉè¼ÆÐÅÏ¢¡£Ò»¸ösoftware¶ÔÓ¦Ò»¸ötopÉè¼ÆÎÄ\r
260   ¼þ£¬Ò»¸ösoftwareÖаüº¬¶à¸ösrc-pkg£¬Ò»¸ösrc-pkgÖпɰüº¬¶à¸öinstall-pkg£¬Ò»¸ö\r
261   install-pkgÖпɰüº¬¶à¸öbuild-dest¡£¸ù¾ÝÈí¼þµÄʵ¼ÊÇé¿ö£¬ÒÔ²»Í¬µÄ½á¹¹×éÖ¯¡£\r
262     Ò»¸öbuild-dest¶ÔÓ¦×ÅÒ»¸ö¶þ½øÖƳÌÐò£¬ÒÔ¼°ÏàÓ¦µÄcatalogÎļþ¡£\r
263     ÕâÀïµÄtop-catalogÎļþÔÚ³õʼ»¯Ô´Â빤³ÌÎļþʱʹÓã¬ÆäËücatalogÎļþcopyµ½¶ÔÓ¦\r
264   src-pkgµÄÖС£\r
265     ¸ù¾Ý¡®¹¦Äܵ÷Óùý³Ìͼ¡¯ÖеÄÄ£¿é£¬Êä³ö¹¦ÄÜÄ£¿éÁÐ±í¡£¸ù¾ÝͼÖеIJÙ×÷Á÷ºÍÊý¾ÝÁ÷£¬\r
266   Êä³öÄ£¿éµÄ½Ó¿Úº¯Êý¼°²ÎÊý£¬Êä³öÄ£¿éÖ®¼äµÄ¹«ÓÃÊý¾Ý£¨Îļþ£¬db-tbl£¬global \r
267   variable£©¡£ÕâЩÄÚÈÝÊä³öµ½Ò»¸öcatalogÎļþ£¬µÈͬÓÚÒ»¸ö´øĿ¼½á¹¹µÄÀàͼ¡£\r
268 + ¹¦ÄÜÄ£¿é½á¹¹Í¼(function-module-struct-diagram)/¼Ü¹¹Í¼£¨architech-diagram£©\r
269     ²ã´Î»¯Éè¼ÆµÄ¿òͼ¡£¸ù¾Ý¹¦Äܹý³Ìµ÷ÓÃͼºÍÊý¾ÝÁ÷ͼ¶øµÃ¡£\r
270     Ê¹ÓÃcatalogÎļþÒ²¿É±íʾ¹¦ÄÜÄ£¿éµÄ²ã´Î»¯½á¹¹¡£\r
271 + Ààͼ(class-diagram)\r
272     ¸ù¾Ý¹¦Äܹý³Ìµ÷ÓÃͼºÍÊý¾ÝÁ÷ͼÖеÄÄ£¿é£¬Êä³ö¹¦ÄÜÄ£¿éµÄÀàͼ¡£ÒÔ¼°Êý¾ÝºÍ¹¦Äܵ÷\r
273   ÓùØϵ£¬Êä³ö±äÁ¿ºÍº¯ÊýµÄ¶¨Òå¡£cÓïÑÔ³ÌÐòÉè¼Æʱ£¬Ò²¿ÉʹÓÃcatalogÎļþ´úÌæÀàͼ¡£\r
275     Óë³ÌÐò¿âÖÐÒÑÓÐÈí¼þÉè¼Æ½á¹¹µÄmatching£¬ÓÃÓÚÊä³öÏàͬµÄÉè¼Æ½á¹¹µÄÉè¼Æ´úÂë¡£\r
277 # design£¨opt£©\r
278 + ³ÌÐòÃüÁîÐвÎÊýÉè¼ÆÎļþ(cmd-args-design)¡£\r
279 + ³ÌÐòÔËÐвÎÊýÉè¼ÆÎļþ(running-param-design)¡£\r
280 + txtÎı¾Êý¾ÝµÄ´Ê·¨/Óï·¨¸ñʽ¶¨ÒåÎļþ(.lex/.gmr)£¬ÓÃÓÚÎļþ»òͨÐÅЭÒé¸ñʽÃèÊö¡£\r
281 + hex¶þ½øÖÆÊý¾ÝµÄ½á¹¹»¯¸ñʽ¶¨ÒåÎļþ¡£Ê¹ÓÃhexfmt(.type)£¬ÓÃÓÚÎļþ»òͨÐÅЭÒé¸ñʽ\r
282   ÃèÊö¡£\r
283 + Í¨ÐÅЭÒéµÄtime-sequenceͼ¡£\r
284 + UIÈË»ú½»»¥½çÃæµÄÉè¼ÆÎļþ(.ui)¡£Ê¹ÓÃscript»òRAD¿ª·¢Èí¼þ½øÐнçÃæÉè¼ÆºÍÏÔʾ¡£\r
285 + ÊäÈëÊä³öÐźÅ/Êý¾ÝµÄtime-sequenceͼ¡£\r
286 + Óû§Êý¾ÝÊý¾ÝÎļþ¡£E-Rͼ£¬tbl½á¹¹¡£\r
288 # implement\r
289 + Èí¼þ°ü¹¤³ÌĿ¼´´½¨£¬²¢±àдGNUÈí¼þ°üÏà¹ØµÄÎļþ¡£\r
290 + code-gen¸ù¾Ý.catalog»ò.umlÀàͼ´´½¨´úÂë¿ò¼Ü¡£\r
291 + ¸ù¾Ý¿ª·¢Ï°¹ßºÍÐèÒª£¬Ê¹ÓÃRADÈí¼þ¿ª·¢demo¡£\r
292 + ¹¦ÄÜÄ£¿éunitµÄ²âÊÔÓÃÀý¡¢±àÂë¡¢²âÊÔ¿ª·¢¡£\r
293 + ¹¦ÄÜÄ£¿é¼¯³ÉµÄ±àÂë¡¢²âÊÔ¡£\r
294 + Èí¼þÄڲ⡢¹«²â¡£\r
295 + doc£¬tutorial£¬webdoc¡£\r
296 + °æ±¾ÉèÖã¬src-pkgºÍexe-pkgµÄÖÆ×÷¡£\r
298 # publish\r
299 + pkgÔÚrepoµÄsync¡£\r
300 + ÏÂÔØ£¬±àÒ룬loop-back²âÊÔ¡£\r
301 + webdocµÄpublish¡£\r
305 # different scale of developing\r
306 ================================\r
308     most of the src-pkg is developed by one developer, and others provide\r
309 ideas, suggestion, bug-report, bug-fix-patch, maybe write a part of code. all actor is the same peron, the author/maintainer of the src-pkg.\r
310     if the soft-pkg is complex, it need many developer work together for \r
311 developing. the actor fills with an actual person. all developer cooperate to\r
312 develop the soft-pkg.\r
313     if the software is an system, such as operating system, the software is \r
314 consisted by various src-pkgs.\r
316     the example of different scale software.\r
318 @ linux operating system. not the linux kernel, it is consisted by lots of pkgs\r
319   with different function feature.\r
320 @ linux kernel. it's a complex software, but all it is in one src-pkg.\r
321 @ putty terminal program. it's an example of general application programs with\r
322   GUI. it consisted by some of src-pkg.\r
323 @ libxml2. it's a src-pkg with lib and executables. libc is a well known lib \r
324   for this type of src-pkg.\r
325 @ sed. it's a classic program, and only one utility program with docs.\r
349 ## first, writing note\r
350 ======================\r
351     writing note for function feature description, for the operation user would\r
352 do, for anything author want to record about the src-pkg, and tag the doc with\r
353 a tag-name, which is used for category and index.\r
356 ## second, \r
357 ======================\r
395 # tasks\r
396 =======\r
398 **TBD** it's the behaviour and action description of different actors. task is \r
399   the work to do.\r
401 + maintainer, \r
402  - new-idea-action, new-demand-action.\r
403  - initial-dev-launch: create a src-pkg, and develop for it's first version.\r
404  - analysis-action. analysis idea doc, and translate them into feature \r
405    list file(todo).\r
406  - new-feature-dev-launch. get the task in file of 'todo' in a version,\r
407    put them into task list(todolist) of this src-pkg, and add other tasks like\r
408    document writing, translation, testing, publish, and so on. 'devtask launch\r
409    <task-id>' will do this work automatically with version id. the task \r
410    generated in todolist can be modify manually.\r
411  - complete-estimate: check if the task launched is done.\r
412  - publish-launch: decide to publish one version of code.\r
413  - publish-estimate: decide if the src-pkg should be published.\r
414  - publish-task: loop-back testing, put src-pkg and install-pkg on web, update\r
415    homepages.\r
416  - but not do other the actual develop work.\r
417 + tech-leader, \r
418  - same as the maintainer if willing to do some of that.\r
419  - design-task: do work of the design task in new feature develop procedure. \r
420    writing or modifying program module list file. append module, ethod/function \r
421    and variable to .catalog file, develop task dispatching, and so on. design \r
422    work is the important work for developing. \r
423  - bugfix-estimate. check if the bug should not be fixed juest now. by default,\r
424    the bug reported will be fixed, and put bugfix info into 'todolist' from \r
425    'bugs'.\r
426  - testing-estimate: after testing bug-report, estimate the bugs, and decided\r
427    if it will be fix or not. end task or do next task.\r
428  - get task from task list (todolist), do the actual develop or other works.\r
429  - same work as a normal developer.\r
430 + developer, \r
431   - task-work: get coding tasks in src-pkg task list(todolist). maybe it is a \r
432     new feature job, or a bug-fix job.\r
433   - writing unit test code, or test script for bug testing.\r
434   - document and tutorial writing, especially for design document. any thing\r
435     a documentor will do.\r
436 + tester, \r
437   - task-work: test schem write with script for tool of 'scripttest'.\r
438   - white box testing.\r
439   - black box testing.\r
440   - bug-report-task: put bug description string into 'bugs', put bug detail \r
441     info into .tagdoc file, or pkg-record file under doc/testing/<version-id>/.\r
442 + user, \r
443   - use-action: download, build, install, and use.\r
444   - usr-bug-report-action: send bug-report by email, or on the webpages, \r
445     sometimes with code patch file.\r
446   - new-demand-action: \r
447 + translator, \r
448   - task-work: translation of documents by getting translation task in \r
449     'todolist'.\r
450 + documentor, \r
451   - task-work: getting task from task list about document.\r
452   - design document.\r
453   - user manual in different file format.\r
454   - man or info helper file.\r
455   - generate and check webpages.\r
456   - cmdline tutorial if needed.\r
473 # analysis and design\r
474 =====================\r
478 ## classical app feature design\r
479 ===============================\r
481     it's a topic of program style in charpter of 'prog-style'.\r
482         classical app design helps developer to develop programs rapidly.\r