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 / levine.detex < prev    next >
Text File  |  1992-04-05  |  11KB  |  293 lines

  1.  [12pt] article 
  2.  
  3.  
  4.  
  5.  
  6.  
  7.  
  8.  
  9.  
  10.  
  11.   
  12. Software Reuse, A Fundamental Aspect of Software Engineering 
  13.  
  14.   
  15.             Gertrude Levine 
  16.         Fairleigh Dickinson University 
  17.             1000 River Road 
  18.           Teaneck, New Jersey 07666 
  19.            
  20.            levine@sun490.fdu.edu
  21.  
  22.  
  23.    
  24.  
  25.  
  26.  
  27.   
  28.     Structured programming, modular programming, information hiding,
  29. and abstraction are all widely recognized and accepted areas of good
  30. programming design.  Software reuse, however, has just recently come
  31. under intense investigation as a software engineering discipline.  Yet
  32. the economics of the construction of large software systems warrant the
  33. recognition and study of software reuse as a fundamental aspect of
  34. software engineering.
  35.  
  36.   0.3in 
  37.  
  38.    Keywords:  
  39. Domain Analysis, Software Engineering, Software Reuse
  40.  
  41.  
  42.  
  43.   Introduction 
  44.  
  45.     Fairleigh Dickinson University is offering, for the first time,
  46. a graduate course in Software Reuse in the Spring 1992 semester.  Our 
  47. computer science department recognizes the importance of software
  48. engineering, although individual faculty differ in the material to be
  49. covered.
  50.  
  51.     A course entitled Software Engineering is a core requirement of
  52. the graduate program and a course called Software Techniques is an
  53. undergraduate requirements.  Both of these courses include top down
  54. design, modularity, verification and testing, efficiency considerations,
  55. user interfaces, and documentation.  In addition, the graduate course
  56. stresses the design of large systems, assigning large projects for team
  57. programming.
  58.  
  59.     As part of my research interests, I have taught a special
  60. topics course using Ada several times, with a main focus on software
  61. engineering principles.  Course work includes encapsulation, design of
  62. packages, generics, object oriented design, and specification,
  63. implementation, modification, and integration of library units.
  64.  
  65.     I requested teaching a course in software reuse because many
  66. important issues are not covered or not adequately covered in any of our
  67. present course work.  Yet these issues are fundamental to the control of
  68. the increased complexity of current and future software systems.
  69. Software factories that outsource and assemble software components may
  70. be the most cost effective method of constructing large systems; present
  71. technology in the United States does not support such "manufacturing."
  72. I am interested not only in the specification, construction, and
  73. cataloging of reusable software components, but in a methodology for
  74. putting such modules together and for testing these integrated systems.
  75. It is time to introduce into the study of software engineering, standards
  76. for reuse technology in general and the concepts of reuse architecture
  77. (i.e., domain specific software architecture or canonical architecture)
  78. in particular.
  79.  
  80.   Course Introduction 
  81.  
  82.     The course is designed as a one semester graduate level
  83. seminar, with student research and experience contributing strongly to
  84. the material covered in class.  Many of our graduate students hold
  85. responsible fulltime software positions; their strong working
  86. backgrounds have supplied supporting material for numerous lectures.
  87.  
  88.     Thus the initial lecture will focus upon student experiences.
  89. All of our students have some reuse knowledge, although they may never
  90. have so identified it.
  91.  
  92.     From the days when Grace Hopper shared cosine routines written
  93. in octal, software functions have been widely reused.  Early
  94. applications were mathematical, with domains that were well understood.
  95. Such functions were quickly added to libraries that were included with
  96. compilers.  More general subroutines were soon developed for broader
  97. purposes, but depending on the language, the domain of the arguments,
  98. and the documentation, they were not quite so easily understood or
  99. reused.  How many students have written their own sort in C because
  100. they did not know how to utilize C's quicksort?
  101.  
  102.     All students have had experience with sorts and searches; some
  103. have seen list components generalized with Ada's generic capability.
  104. Those students who have had exposure to Ada or object oriented languages
  105. can discuss the advantages of encapsulation for reuse.  Communication
  106. through global data and through reference parameters are other familiar
  107. concepts that can be discussed in a reuse framework.  Such examples
  108. illustrate, in a small way, the importance of programming environments.
  109.  
  110.     Students probably all remember code written for one project that
  111. proved, perhaps partially, appropriate for another.  Some may have
  112. written code specifically with reuse in mind.  What did they place in
  113. the code to encourage reuse?  What kind of documentation did they add?
  114. Did they include the reason for any distinctive features   of the
  115. design?
  116.  
  117.     How often have students rewritten code that they could not find,
  118. although they "knew they had it somewhere?"  Do they store and classify
  119. their work? How many times after they have written code have they found
  120. that someone else had solved the same problem and in a better way?
  121.  
  122.     Some of our Ada students use a language sensitive editor to
  123. generate code.  MIS students use CASE tools for their projects.  They
  124. realize the role of tools in the generation of systems.
  125.  
  126.     Many of our students have worked in the same application area
  127. for many years and have reused their system design for multiple
  128. customers.  The student that designs office systems for doctors, for
  129. example, will probably testify that the first system was completed at a
  130. loss; only the ability to reuse it and customize it made the venture
  131. economically feasible.
  132.  
  133.     All computer science students have some reuse experience.  These
  134. will be collected and classified.
  135.  
  136.   Course Material 
  137.     After this introduction, we will be ready to formalize the
  138. course work.  The textbook for the course is Software Reusability,
  139. Biggerstaff and Perlis, Volume I 
  140.  .  Papers in Volume II will be used
  141. in discussion of topics in Volume I.  In addition, other papers will be
  142. made available to the class.  Each student will be required to be the
  143. expert on a different paper that will supplement class discussion on the
  144. papers of the textbook.
  145.  
  146.     Discussion of the first three papers of the book 
  147.       will
  148. be integrated.  I will provide an outline for discussion, but feel that
  149. all three of these papers are important and complement each other in
  150. presentation of most of the issues.
  151.  
  152.     The book is organized into sections of composition-based systems
  153. and generation-based systems, although there is overlap in material.
  154. Standards are sought for unit and system composition that achieve
  155. "pluggable" software components.
  156.  
  157.     Programming design techniques  ,
  158. component classification and
  159. search techniques  
  160. and programming environments   are important
  161. and comparatively easy to understand.  I plan to assign only two of the
  162. papers  
  163. that emphasize theory for class discussion, although any
  164. of the others will be available for student presentation.
  165.  
  166.     A particularly well written paper on generation-based systems
  167.   
  168. will have its discussion on domain analysis directly preceded by
  169. others papers  .
  170. Several weeks will be devoted to management
  171. issues such as quantitative results  ,
  172. since a reuse course should be effective for FDU's MIS Master's program
  173. as well.  I have not yet chosen all of the papers that I consider
  174. important to the course, although the textbook contains enough for a
  175. strong basis.
  176.  
  177.   Expected Results 
  178.  
  179.  
  180.     A seminar course in software reuse must address a wide range of
  181. current issues.  The papers chosen for discussion introduce most of
  182. these issues.  The fact that so many overlap in material will aid team
  183. discussion.
  184.  
  185.     As a secondary goal, students might repeat presentations for
  186. faculty.  I am hoping to influence the department to update the material
  187. in the required software engineering courses, to include some of the
  188. basic concepts of software reuse.
  189.  
  190.     Software reuse is perhaps the most cost effective methodology
  191. available for the development of software.  Reuse architecture shows
  192. promise in the handling of the complexity of large systems.  If the
  193. United States is to remain competitive in this field, faculty and
  194. students must become familiar with the material.
  195.  
  196.  
  197.    BAIL 91a 
  198.  
  199.  
  200. Bailin, S. Correspondence.
  201.  
  202.  
  203. Biggerstaff, T. and Perlis A., ed. Software Reusability. Concepts and
  204. Models. Vol. I   II. Addison-Wesley Publishing Co. Reading, Mass.
  205. 1989.
  206.  
  207.  
  208. Biggerstaff, T. and Richter, C. ``Reusability Framework, Assessment,
  209. and Directions'',    IEEE Software , Vol. 4, No. 2, March, 1987 
  210. (Reprinted in Biggerstaff and Perlis, Vol. I).
  211.  
  212.  
  213. Deutsch, L.P. ``Design Reuse and Frameworks in the Smalltalk-80
  214. System'' in Biggerstaff and Perlis, Vol. II.
  215.  
  216.  
  217. Durek, T. ``Software Production Through Reuse: Key to Improved Quality
  218. and Productivity.'' Software Productivity Consortium, 1991.
  219.  
  220.  
  221. Goguen, J. ``Principles of Parameterized Programming'' in Biggerstaff
  222. and Perlis, Vol. I.
  223.  
  224.  
  225. Horowitz, E. and Munson, J. ``An Expansive View of Reusable Software'',
  226.    IEEE Transactions on Software Engineering , Vol. SE-10, No. 5,
  227. September, 1984
  228. (Reprinted in Biggerstaff and Perlis, Vol. I).
  229.  
  230.  
  231. Jette, C. and Smith, R. ``Examples of Reusability in an
  232. Object-Oriented Programming Environment'' in Biggerstaff and Perlis, II.
  233.  
  234.  
  235. Litvintchouk, S. and Matsumoto, A. ``Design of Ada Systems Yielding
  236. Reusable Components: an Approach Using Structured Algebraic
  237. Specification'',    IEEE Transactions on Software
  238. Engineering , Vol. SE-10, No. 5, September, 1984
  239. (Reprinted in Biggerstaff and Perlis, Vol. I).
  240.  
  241.  
  242. Meyer, B. ``Reusability: The Case for Object-Oriented Design'',
  243.    IEEE Software , Vol. 4, No. 2, March, 1987
  244. (Reprinted in Biggerstaff and Perlis, Vol. I).
  245.  
  246.  
  247. Neighbors, J. "Draco: A Method for Engineering Reusable Software
  248. Systems" in Biggerstaff and Perlis, I.
  249.  
  250.  
  251. Parnas, D., Clements, P. and Weiss, D. ``Enhancing Reusability with
  252. Information Hiding'',    ITT Proceedings of the Workshop on
  253. Reusability in Programming , Newport, R.I., 1983
  254. (Reprinted in Biggerstaff and Perlis, Vol. I).
  255.  
  256.  
  257. Prieto-Diaz, R. ``Classification of Reusable Modules'',    IEEE
  258. Software , Vol. 4, No. 1, 1987
  259. (Reprinted in Biggerstaff and Perlis, Vol. I).
  260.  
  261.  
  262. Rice, J. and Schwetman, H. ``Interface Issues in a Software Parts
  263. Technology'' in Biggerstaff and Perlis, I.
  264.  
  265.  
  266. Selby, R. ``Quantitative Studies of Software Reuse'' in Biggerstaff
  267. and Perlis, II.
  268.  
  269.  
  270. Tracz, W. Software Reuse: Emerging Technology. IEEE Computer
  271. Society, Washington, D.C., 1988.
  272.  
  273.  
  274. Wegner, P. ``Capital-Intensive Software Technology'',    IEEE
  275. Software , Vol. 1, No. 3, July, 1984
  276. (Reprinted in Biggerstaff and Perlis, Vol. I).
  277.  
  278.  
  279.   Biography 
  280. Gertrude Levine is an associate professor of computer science at
  281. Fairleigh Dickinson University.  Her present research interests are in
  282. conflict control, the Ada programming language, and software reuse.  She
  283. has introduced into the FDU computer science curriculum undergraduate
  284. courses in computer networks and the Ada programming language, as well
  285. as a special topics graduate course in Ada, made possible through
  286. equipment grants from the New Jersey Technological/Engineering Education
  287. Grant Program.  She has been contributing a column on Reusable
  288. Software Components to Ada Letters for the past two years.
  289.  
  290.  
  291.  
  292.  
  293.