home *** CD-ROM | disk | FTP | other *** search
/ ftp.umcs.maine.edu / 2015-02-07.ftp.umcs.maine.edu.tar / ftp.umcs.maine.edu / pub / WISR / wisr4 / proceedings / detex / dusink.detex < prev    next >
Text File  |  1992-04-28  |  23KB  |  424 lines

  1.  
  2.   Software Engineering and Reuse 
  3.  
  4.   E.M. Dusink 
  5.   TU Delft, Dept. Computer Science 
  6.   Julianalaan 132 
  7.   2624 BL Delft 
  8.   The Netherlands 
  9.   email: betje@dutiaa.tudelft.nl
  10.      
  11.    
  12.                      Abstract 
  13.   
  14.   This article contains relevant concepts of cognitive psychology and software 
  15.   psychology and a framework of the software engineering method based on these 
  16.   concepts.  Cognitive psychology was studied with special attention for the 
  17.   differences between problem solving with help of existing (partial) solutions   (reuse) and without help of existing (partial) solutions (no reuse).
  18.  
  19.   Keywords: reuse supporting method, cognitive psychology, software psychology
  20.  
  21.  
  22.  
  23. 1  Introduction 
  24.  
  25. This article contains relevant concepts of cognitive psychology and software 
  26. psychology and a framework of the software engineering method based on these 
  27. concepts.  Cognitive psychology studies how humans solve problems.
  28. Software psychology studies a.o. specialised problem solving methods for 
  29. software engineering.  And thus can be seen as applied cognitive psychology.
  30. Cognitive psychology was studied with special attention for the differences
  31. between problem solving with help of existing (partial) solutions (reuse)
  32. and without help of existing (partial) solutions (no reuse).  In a later stage 
  33. the framework will be completed with insight from software engineering and 
  34. reuse to a software engineering method which supports reuse.  The method will 
  35. be verified with a statistical experiment.
  36.  
  37. A rational for the use of cognitive psychology is given.  The used concepts of 
  38. cognitive psychology and software psychology are described with their 
  39. literature references as they are no common knowledge in the software 
  40. engineering society.  They are also described to provide the reader with the 
  41. necessary information for criticising the used ideas, our interpretation of 
  42. the ideas, or our usage of the ideas.  For an overview of our findings in the 
  43. field of cognitive psychology see [5].
  44.  
  45. The software engineering method being developed has to support compositional 
  46. reuse and has to result in at least the same quality products as existing 
  47. software engineering methods.  The goal, group, application domain, metrics, 
  48. and the way of testing the method are described in [6].  
  49.  
  50.  
  51.  
  52. 2  Why Cognitive Aspects in Software Engineering 
  53.  
  54. The software engineering process can be seen as the capturing of information
  55. and the solving of problems with humans as the driving force.  In this view it 
  56. is of interest how humans work with information and how they solve problems.
  57. Problem solving is the creative activity of finding a correct implementation 
  58. given certain requirements.  Within this view on software engineering cognitive psychology can be a help.
  59.  
  60. Humans tried to formalise and control the problem solving aspect of software 
  61. engineering by developing the waterfall model.  This conventional life cycle 
  62. model can be traced to the reductionist mode of inquiry in planning and 
  63. logistics. Planning and logistics were emerging as organised and systematic 
  64. approaches to problem solving [1].  The waterfall model is nothing more or less then a general problem solving method stated in software engineering terms.
  65.  
  66. As software systems grew complexer and larger, a systematic and organised 
  67. approach for problem solving on a more detailed level was needed.  An approach 
  68. to fill this need was in the form of increased attention on intermediate 
  69. products and verification steps of the transition [1].  This verification is a 
  70. step which was already accentuated in cognitive psychology [16].  That need 
  71. could already have been fulfilled before feeling it.
  72.  
  73. As software had to be written for more divers systems and for less well 
  74. informed people problems occurred with stating all the requirements beforehand 
  75. and taking all design decisions beforehand.  This was already known in 
  76. cognitive psychology from experiments with problem solvers. But than in the 
  77. form that a problem can only be stated in the direction of a possible 
  78. solution [7].  An example is with students who do not understand a lecture, 
  79. they only can tell you that they do not understand the lecture but not in what 
  80. way or what part of the lecture was outside their comprehension.
  81.  
  82. Another part of this problem, not yet understood by software engineers, is 
  83. caused by the fact that only experienced people can work top down and give a 
  84. good structured solution. Less experienced people have to go forwards and 
  85. backwards in abstraction level to be able to solve a problem.
  86.  
  87. Software engineers now try to fill this need in very divers ways: spiral model; rapid prototyping; transformational approach; incremental development; etc.
  88. As the evaluation of what caused the problem only gave part of the cause, this 
  89. solution is only partial and in the near future software engineers will see 
  90. that rapid prototyping does not solve all of the problem.
  91.  
  92. Because of all the reasons for changing the conventional life cycle model and 
  93. the fact that it is faster to use knowledge already in existence, in this paper the software engineering process will be redeveloped with help of knowledge 
  94. from the cognitive psychology in order to profit from things which are already 
  95. correct and to get knowledge about what to avoid.
  96.  
  97.  
  98.  
  99. 3  Why Cognitive Aspects in Reuse 
  100.  
  101. Reuse is the use of existing partial solutions (components) by humans in such a way that combined together given requirements are fulfilled.  Several cognitive problems prevent users from successfully exploiting reusable components, a.o. 
  102. understanding what a reusable component does and when to apply it.  In this 
  103. view reuse is also problem solving.
  104.  
  105. Understanding a component is done by learning (about) the component.  From 
  106. cognitive psychology we know that there are basically two ways of understanding a component, the broad general notion of the features which makes it possible 
  107. to use the component outside the scope of learning (important for reuse) and 
  108. the functional fixedness understanding which prevents use outside the scope of 
  109. learning (hinders reuse).  In the first kind of learning a brick has volume, 
  110. weight, colour, ...., in the second kind of learning a brick can be used for 
  111. building buildings.  This different perception makes that the question: "give 
  112. thirty different usages of a brick" is easier to answer if the first kind of 
  113. learning has occurred.  In cognitive psychology it is known how to learn about 
  114. things in order to get the first kind of learning and how to stimulate the 
  115. second kind of learning.  This problem is not yet recognized in the reuse 
  116. world, but it is not necessary to encounter the problem if we profit now from 
  117. knowledge of cognitive psychology.
  118.  
  119. The other problem, when to apply a component, is already encountered.  In an 
  120. experiment with reuse Maiden and Sutcliffe [10] saw that without guidelines 
  121. reuse was degraded to copying without understanding why and what was used.
  122. And therefor not the right usage was made of the reusable components.  It was 
  123. a form of mental laziness.  This phenomenon was already known for at least 
  124. twenty years in cognitive psychology [9].  So, once again, problems relevant 
  125. for reuse were already known in cognitive psychology before they were known 
  126. within the software engineering/reuse field.  And, in cognitive psychology a 
  127. solution for these problems exist [11] where we, software engineers and 
  128. reusers, have to start with looking for a solution.
  129.  
  130. As we want our field of science to mature as quickly as possible, let's make 
  131. use of the knowledge of cognitive psychology now we know it exists and now we 
  132. know it is applicable to both the software engineering process as well as to 
  133. reuse.
  134.  
  135.  
  136.  
  137. 4  Main Conclusions from Cognitive Psychology 
  138.  
  139. The main conclusions are on the field of problem solving methods, how reusable 
  140. components have to be learned and how to stimulate creativity.  They are 
  141. described in this section.
  142.  
  143. Depending on the understanding of the description of the problem (ie. 
  144. requirements) and the familiarity with the reusable components, there exist 
  145. three kinds of obstacles for finding a solution.  The three kinds are: 
  146. interpolation problem, dialectic problem, and synthesis problem [4].  An 
  147. interpolation problem occurs when the combination of a good understanding of 
  148. the problem and the components happens.  A dialectic problem occurs when the 
  149. combination of a good understanding of the components and a low understanding 
  150. of the problem happens.  A synthesis problem occurs when the combination of
  151. a bad understanding of the components and a high understanding of the problem 
  152. happens.  A combination of dialectic and synthesis problem exist in case of a
  153. low understanding of the problem and of the components.  The problem solving 
  154. methods which one has to follow depending on the kind of obstacle are described in [4].  General problem solving methods are described in [16, 17, 25].
  155.  
  156. Two kinds of learning of components can be of importance for the reuser.  The 
  157. first kind of learning is the acquisition of broad, non-specific, general 
  158. notions about the properties of the component experienced.  This seems to 
  159. provide the knowledge repertoire essential for productive (~creative) thinking.
  160. The second kind of learning is the acquisition of experiences which provides 
  161. perceptions of specific, limited, functional characteristics.  This seems to 
  162. lead to ``functional fixedness'' in problem solving perceptions.  Such 
  163. fixedness limits the range of perceptual organisations capable of being 
  164. developed by the reuser and so interferes with problem solving [3].
  165.  
  166. It is clear that the functional fixedness kind of learning is of little use
  167. for a reuser, but it is of use for a problem solver who only solves one kind 
  168. of problems.  The discrepancy between usefulness and uselessness of functional 
  169. fixedness can be overcome by learning basic specific facts coupled with general problem solving techniques.  In [11] it is advised to learn first the global 
  170. concepts used by the component before the mechanics.
  171.  
  172. The main difference for problem solving with and without existing components
  173. was lain in the fact that components could be seen as giving a hint as in
  174. which direction to look for a solution.
  175.  
  176. The solving of problems asks for creativity.  By accepting the idea that the 
  177. long term memory is associative [26] and that knowledge in the long term memory is clustered into schemata [12] and that the retrieval of knowledge from the 
  178. long term memory is keyword-based [26] we can sketch an approach for being 
  179. creative [26].  The memory has to be prepared to meet the conditions required 
  180. for creativity.  By storing a lot of questions in the memory answers will be 
  181. recognised when they come along.  Thus during the process of learning one has 
  182. to ask oneself all the ``w''-questions, why, when, where, etc.  One also has to try to relate new information to the own schemata [26].  If a rich store of 
  183. novel integrative schemata and unanswered questions exists in memory, and if 
  184. good cognitive plans for playing with ideas exist, ideas can be created on 
  185. demand much as any other skill can be performed [26].
  186.  
  187.  
  188.  
  189. 5  Main Conclusions from Software Psychology 
  190.  
  191. The main conclusions are about the existence of cognitive processes in software engineering, necessary mental make-up, how to understand problems and what the 
  192. problems are with reuse.
  193.  
  194. Software engineering can be seen as a special form of problem solving.  The 
  195. splitting of the software lice cycle into several steps is the division of a 
  196. problem into subproblems (a general problem solving method).  The use of 
  197. program plans [18, 8, 28, 27] can be compared with the schemata [12].  
  198. Functional fixedness in programming was proved by [11].  All these findings 
  199. supported the idea that conclusions from cognitive psychology can be used in 
  200. software engineering.
  201.  
  202. A different mental make-up was needed in the different stages of the software 
  203. engineering process.  The ability to live with uncertainties and the ability to make decisions is necessary in the beginning of the life cycle, whereas the 
  204. ability of convulsive preciseness is necessary at the end [21].
  205.  
  206. Without knowledge of problem-related concepts, the memory quickly reaches its
  207. limits when trying to understand code [21].  This is because the knowledge can 
  208. not be related to existing schemata and thus has to be stored as separate facts (for the time being in the short term memory which is non-associative and can 
  209. contain up till 7 items) [14, 26, 21, 13].  Thus documentation of code has to 
  210. give the used concepts of the application domain and the used concepts of the 
  211. computer domain.
  212.  
  213. There are different approaches when trying to understand code, a systematic 
  214. strategy and an ad hoc strategy [8,15].  In the systematic approach first the 
  215. total documentation is studied in a systematic manner. In the ad hoc approach 
  216. documentation is read at random.  The systematic approach can take too much 
  217. time for large pieces of program and the ad hoc strategy gives poorer results 
  218. when adapting a program.  Therefor documentation has to be in such a way that 
  219. it is easy to combine both strategies in an intelligent manner.  The 
  220. documentation has also to be in such a way that the limits of the memory are 
  221. not reached very quickly.  The documentation is best understood if it is in a 
  222. very succinct symbology [20], the spatial arrangement is of less importance.
  223.  
  224. In [10] mental laziness is remarked as one of the problems with reuse. In [9]
  225. some experiments are done about how to prevent that the habit masters the 
  226. individual instead of the individual mastering the habit. It appears that by 
  227. promoting productive thinking the problem of mental laziness could be overcome.
  228. If a solution is actively verbalised transformation to new situations becomes 
  229. easier [12].  This improves reuse.  The active participation in finding a 
  230. solution improves the recognition of the possibility of applying the solution 
  231. to other areas [12].
  232.  
  233.  
  234.  
  235. 6  A Framework for a Software Engineering Method 
  236.  
  237. Although software engineering life cycles can differ very much, they all have 
  238. about the same division in analysis, requirements, design, implementation, 
  239. testing and debugging. These same phases, although not necessarily in this 
  240. order or with the same emphasis, are the phases of the framework.  In this 
  241. section concrete use is made from the findings described in the former two 
  242. sections.
  243.  
  244. Before modification is possible, the part of the product to be modified has to 
  245. exist.  Before debugging, tests have to be applied.  Before it is possible to 
  246. test, design and/or implementation has to be done, etc.  But, is it necessary 
  247. to have the requirements finished before looking at the design phase?  As 
  248. humans can be seen as opportunistic processors [7], and as we always use past 
  249. experience, the answer is ``no''.  Before the requirements are finished, it has to be known whether they are implementable. For making a choice between 
  250. alternatives with regard to reuse, ease of implementation, and risks one has 
  251. to look ahead.  Also because a problem can only be stated in the direction of
  252. a possible solution one has to look ahead [19].  And of course, because of 
  253. changing insights and bugs one has to go back to previous phases and one has to look back to be able to learn.  Because of all these reasons a yoyo approach 
  254. is suggested as an ordering of the phases, where the going down and up is 
  255. steered by an ``as-needed'' strategy.
  256.  
  257. In every phase the understanding of the problem, the focusing on reuse, and 
  258. learning are stressed.  Understanding is emphasised because the right problem 
  259. has to be solved.
  260.  
  261. Components have to exist in the environment to be able to reuse.  A components 
  262. base is coupled with a means to select potentially useful components.  In an 
  263. experiment [12] 2.4 minutes were necessary to find a solution when only useful 
  264. components were given, 7.5 minutes were necessary when all components where 
  265. given and hints about which ones were useful, and 15.2 minutes were necessary 
  266. when the same components were given as to the former group but no attention was drawn to potential useful components.  This means that the selection mechanism 
  267. is critical.
  268.  
  269. The method emphasises learning as only components which are known can be used 
  270. correctly and as things which one has learned can be reused easier than things 
  271. fairly unknown to the (re)user.  Possible ways to integrate learning are:
  272.   
  273.   *  The organisation of persons on jobs has to be done in such a way that a 
  274.      junior software engineer is mentored by a senior one.  In this way 
  275.      real-time feedback on the work of the junior is possible.
  276.  
  277.   *  Feedback from next stages has to reach the engineer also as one learns 
  278.      most from ones own errors.
  279.  
  280.   *  All software engineers have regular sessions to play with the (new) 
  281.      reusable components, in order to learn them in a context free way.
  282.  
  283.   *  The software engineers have to learn general problem solving techniques to      improve their creativity.
  284.  
  285.  
  286. A possible manner to help learning passively is by documenting.  Documentation 
  287. has to state the relations among concepts backgrounds and why's. Also 
  288. alternatives with their pro's and con's and the reason for their disregarding 
  289. have to be documented.  This emphasises learning.  The experienced software 
  290. engineers in the application domain have to contribute to be sure the 
  291. information is already computer oriented formulated.
  292.  
  293.  
  294.  
  295. 7  Conclusion 
  296.  
  297. A framework for a software engineering method was retrieved from cognitive 
  298. psychology and software psychology, without any considerations on management, 
  299. economics, and current software engineering practices.  The resulting idea 
  300. corresponds with current developments in software engineering practice about 
  301. rapid prototyping and operational approach [2].  The way of working when 
  302. developing the framework was the same as suggested in the framework. This first ``evaluation'' gave the impression of an ergonomic and tailorable whole in 
  303. which much reuse was done.  Work has to be done on the software engineering 
  304. side of the method.
  305.  
  306.  
  307.  
  308. REFERENCES
  309.  
  310.  
  311. [1]  William W. Agresti.  The Conventional Software Life-cycle Model: Its 
  312.      Evolution and Assumptions.  In Agresti [2], pages 2-5.
  313.  
  314. [2]  W.W. Agresti, editor.  New Paradigms for Software Development.  IEEE 
  315.      Computer Society Press, 1986.
  316.  
  317. [3]  H.G. Birch and H.S. Rabinowitz.  The Negative Effect of Previous 
  318.      Experience on Productive Thinking.  In Wason and Johnson-Laird [24], 
  319.      chapter 3.
  320.  
  321. [4]  D. Dorner.  Problemlosen als Informationsverarbeitung.  Kohlhammer 
  322.      Standards Psychologie, Teilgebiet Denkpsychologie. W.  Kohlhammer, 
  323.      Stuttgart, 2. Auflage Edition, 1979.
  324.  
  325. [5]  E.M. Dusink. Cognitive Psychology, Software Psychology, Reuse and Software
  326.      Engineering. Technical report, TU Delft, Delft, the Netherlands, 1991.
  327.      to appear.
  328.  
  329. [6]  E.M. Dusink. Testing a Software Engineering Method Statistically.  
  330.      Technical report, TWI, TU Delft, Delft, the Netherlands, 1991.
  331.      to appear.
  332.  
  333. [7]  S. Letovsky.  Cognitive Processes in Program Comprehension.  In Soloway 
  334.      and Iyengar [23], pages 58-79.  (Human/Computer Interaction Series).
  335.  
  336. [8]  D.C. Littman, J. Pinto, S. Letovsky, and E. Soloway.  Mental Models and 
  337.      Software Maintenance.  In Soloway and Iyengar [23], pages 80--98.
  338.      (Human/Computer Interaction Series).
  339.  
  340. [9]  A.S. Luchins and E.H. Luchins.  New Experimental Attempts at Preventing 
  341.      Mechanization in Problem Solving.  In Wason and Johnson-Laird [24], 
  342.      chapter 6.
  343.  
  344. [10] Neil Maiden and Alistair Sutcliffe.  The Abuse of Re-use: Why Cognitive 
  345.      Aspects of Software Re-usability are Important.  In Liesbeth Dusink and 
  346.      Patrick Hall, editors,  Software Re-use, Utrecht 1989: Proceedings of the 
  347.      Software Re-use Workshop, 23-24 November 1989, Utrecht, The Netherlands, 
  348.      chapter 10. Springer-Verlag, 1991.
  349.  
  350. [11] R.E. Mayer.  Different Problem-Solving Competencies Established in 
  351.      Learning Computer Programming With and Without Meaningful Models.
  352.      Journal of Educational Psychology, (67):725--734, 1975.
  353.  
  354. [12] R.E. Mayer.  Thinking, Problem-Solving, Cognition.  W.H. Freeman and 
  355.      Company, 1983.
  356.  
  357. [13] Georg A. Miller.  The Magical Number Seven--- Plus or Minus Two: Some 
  358.      Limits on our Capacity for Processing Information.  Psychological Review, 
  359.      (63):81--97, 1956.
  360.  
  361. [14] Allen Newell and Herbert A. Simon.  Human Problem Solving. Prentice-Hall, 
  362.      Engle Wood Cliffs N.J., 1972.
  363.  
  364. [15] J. Pinto and E. Soloway.  Providing the requisite Knowledge Via Software 
  365.      Documentation.  In Soloway et al., pages 257--262.  special issue of 
  366.      the ACM/SIGCHI Bulletin.
  367.  
  368. [16] G. Polya.  How to Solve It.  Garden City N.Y., 1957.
  369.  
  370. [17] G. Polya.  Mathematical Discovery, volume II: On Understanding, Learning
  371.      and Teaching Problem-Solving.  Wiley, New York N.Y., 1968.
  372.  
  373. [18] R.S. Rist.  Planning in Programming: Definition, Demonstration, and
  374.      Development.  In Soloway and Iyengar, pages 28--47.  (Human/Computer 
  375.      Interaction Series).
  376.  
  377. [19] A.R. Rohr.  Kreative Prozesse und Methoden der Probleml  o sung  .
  378.   Beltz Monographien. Beltz, Weinheim, 1975.
  379.  
  380. [20] S.B. Sheppard, J.W. Bailey, and E.K. Bailey.  An Empirical Evaluation of 
  381.      Software Documentation Formats.  Human/Computer Interaction, chapter 6. 
  382.      Ablex, Norwood, New Jersey, 1984.
  383.  
  384. [21] B. Shneiderman.  Software Psychology: Human Factors in Computer and 
  385.      Information Systems.  Little, Brown Computer Systems Series. Little, Brown      & Company, 1980.
  386.  
  387. [22] E. Soloway, D. Frye, and S.B. Sheppard, editors.  CHI'88 Conference 
  388.      Proceedings, Human Factors in Computing Systems, May 15-19, 1988 
  389.      Washington, DC., 1988.  special issue of the ACM/SIGCHI Bulletin.
  390.  
  391. [23] E. Soloway and S. Iyengar, editors.  Empirical Studies of Programmers, 
  392.      papers presented at the First Workshop on Empirical Studies of 
  393.      Programmers, June 5-6, 1986, Washington, DC.  Ablex, 1986.
  394.      (Human/Computer Interaction Series).
  395.  
  396. [24] P.C. Wason and P.N. Johnson-Laird, editors.  Thinking and Reasoning, 
  397.      Selected Readings.  Penguin Modern Psychology. Penguin Books, 1968.
  398.  
  399. [25] W.A. Wickelgren.  How to Solve Problems: Elements of a Theory of Problems 
  400.      and Problem-Solving.  A Series of Books in Psychology. W.H. Freeman and 
  401.      Company, San Francisco, 1974.
  402.  
  403. [26] W.A. Wickelgren.  Cognitive Psychology.  Prentice-Hall, Inc., Englewood 
  404.      Cliffs, New Jersey, 1979.
  405.  
  406. [27] S. Wiedenbeck.  Processes in Computer Program Comprehension.  In Soloway 
  407.      and Iyengar [23], pages 48--57.  (Human/Computer Interaction Series).
  408.  
  409. [28] C.-C. Yu and S.P. Robertson.  Plan-Based Representations of Pascal and 
  410.      Fortran Code.  In Soloway et al., pages 251--256.  special issue of the 
  411.      ACM/SIGCHI Bulletin.
  412.  
  413.  
  414.  
  415. About the Author 
  416.  
  417. Liesbeth Dusink has been working at Delft University of Technolgy since 1985.
  418. She got het MD in Biology from Utrecht University.  At the moment she teaches 
  419. courses on programming, software engineering, and programming support 
  420. environments.  Her research concentrates on software engineering methods which 
  421. supports compositional reuse and on software measurement and software process 
  422. measurement.
  423.  
  424.