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 / patel.detex < prev    next >
Text File  |  1992-04-05  |  20KB  |  431 lines

  1.  [12pt] article  
  2.  
  3.  
  4.  
  5.  
  6.  
  7.  
  8.  
  9.  
  10.  
  11.  
  12.   A Top-Down 
  13. Software Reuse 
  14. Support Environment 
  15.  
  16.   Sukesh Patel, William Chu, Rich Baxter, Brian Sayrs, and Steve Sherman 
  17. Lockheed Software Technology Center 
  18. Lockheed Palo Alto Research Laboratories 
  19. 3251 Hanover Street, B/254E, O/96-10 
  20. Palo Alto, CA. 94304-1191   
  21. patel@stc.lockheed.com 
  22.  
  23.    
  24.  
  25.  
  26.  
  27.   
  28. The true potential of software reuse lies in providing facilities for reusing 
  29. large scale software systems. Given appropriate tool support software engineers 
  30. can leverage existing software investments by recovering the design of the 
  31. software and then systematically partitioning and extracting reusable 
  32. components from existing systems. It is also suggested that reusable components 
  33. must be subjected to a    certification 
  34. process prior to inclusion in a reuse 
  35. library. Moreover, simply retrieving large scale reusable components from a 
  36. library is not enough and appropriate software understanding tools must be 
  37. provided to permit interactive component understanding and selection. 
  38.  
  39.   0.3in 
  40.  
  41.    Keywords:  Reuse, Certification, Reverse Engineering, Design Recovery, 
  42. Restructuring.
  43.  
  44.  
  45.   Introduction 
  46.  
  47. The potential benefits of Software Reuse has been extensively reported, both in 
  48. commercial and defense publications and in conferences world wide
  49.  .
  50. Libraries of mathematical functions (e.g., the IMSL library collection of 
  51. mathematical routines   and Booch components  
  52. are instances of successful 
  53. (albeit limited) reuse programs. This is what we term    bottom-up reuse :
  54. the 
  55. development of compact general purpose software components that can be combined 
  56. to synthesize a class of applications.
  57.  
  58. We believe that the true potential of software reuse is in exploiting the reuse 
  59. of very large scale software systems  . 
  60. Although one would like reuse to 
  61. inform the complete software life-cycle, many times such investments are cost 
  62. prohibitive and software engineers must turn to existing systems/components for 
  63. reuse opportunities. Disparagingly, such reuse has been termed code scavenging. 
  64. But given appropriate tools, our belief is that incremental component 
  65. identification and improvement supports evolutionary development and is a cost 
  66. effective means of leveraging existing software investments. Large scale reuse 
  67. requires    top-down reuse : 
  68. the development of tools and techniques to understand, 
  69. certify, extract, and restructure components from existing software systems.  
  70. Our research suggests that solutions to the following problems must be pursued 
  71. to facilitate top-down reuse  :
  72.  
  73.   
  74.  
  75.     Reusable Component Extraction: Tools and techniques to understand and 
  76. extract components from existing software systems.
  77.  
  78.     Reusability Certification Procedures/Metrics: A set of documentation, 
  79. coding, quality and reusability checks that instill confidence in reusable 
  80. software.
  81.  
  82.     Component Location and Composition Support: Processes and tools for 
  83. designing new applications by glueing together reusable and newly developed 
  84. software components.
  85.  
  86.  
  87. We believe that (1) and (2) are critical technologies for leveraging existing 
  88. software investments. Issue (3) provides a framework to put pieces of the 
  89. puzzle together, and although important, must be established in the context of 
  90. particular applications and will not be addressed here in any depth.  This 
  91. paper is organized as follows. We cover our key technology thrusts in Sections 
  92. 2 (software re-engineering and restructuring) and 3 (reuse certification). 
  93. Section 4 illustrates our overall top-down reuse support environment and 
  94. provides a context for our technology thrusts. Section 5 summarizes our 
  95. progress.
  96.  
  97.   Software Re-Engineering and Restructuring 
  98.  
  99. Our first key technology thrust is software re-engineering and restructuring 
  100.  . 
  101. Software re-engineering and software restructuring are techniques that 
  102. facilitate the process of    design recovery   .  
  103. Design recovery attempts to 
  104. create design concepts and relationships based on analyzing source code and 
  105. available software artifacts. Our approach recognizes that full scale 
  106. automation for design recovery is difficult and instead supports tool 
  107. development that emphasizes automation of ``routine'' chores like system 
  108. partitioning and fact finding tasks. The principle steps that have been 
  109. implemented are:
  110.  
  111.   
  112.  
  113.     Partitioning systems based on minimizing the coupling relationships.
  114.  
  115.     Extracting ADTs that act as communication links between independent 
  116. components.
  117.  
  118.     Exploiting the visibility relation to yield sets of independent 
  119. components (If A and B both, call C and C does not contain state information, 
  120. then copies of C can be made to yield two components   A,C , B,C  . If C 
  121. contains recognizable traits for state information, then   A,B,C   must be 
  122. treated as a primitive component).
  123.  
  124.     Exploiting cohesion properties to identify misplaced components (e.g., 
  125. a integer add operation in a STACK package can be identified and moved to some 
  126. INTEGER-OPS utilities package that can be with'ed)
  127.  
  128.  
  129.  
  130. Ultimately, isolation of independent components facilitates complexity 
  131. management and permits reuse/maintenance personnel to acquire system knowledge 
  132. on a piecemeal basis. This in turn provides knowledge of past systems that can 
  133. be used to supplement domain analysis to define application architectures.
  134.  
  135. In summary software re-engineering and restructuring technology provide the 
  136. following services for top-down reuse:
  137.  
  138.   
  139.  
  140.     Software Understanding: Large scale software is selectively displayed 
  141. and understood.
  142.  
  143.     Software Selection: Independent components can be recognized and 
  144. extracted and reused in different contexts.
  145.  
  146.     Software Translation: Existing software must be super-imposed with 
  147. different structural views (e.g., a system in C must be partitioned into CSCIs, 
  148. CSCs, CSUs, ADTs etc.) before the system can be syntactically converted to 
  149. Ada .
  150.  
  151.     Software Generalization: Software components comprised of independent 
  152. sub-components can be recognized and generalized by domain experts.
  153.  
  154.  
  155.   Reuse Certification 
  156.  
  157. Reuse certification seeks to extract domain specific characteristics of 
  158. software components at all levels of abstractions that help to facilitate 
  159. reuse. In general, reusable software is quality software. Our strategy for 
  160. certification has been to survey characteristics of software components that 
  161. encourage reuse and then attempt to provide automated techniques for ensuring 
  162. that reusable software complies with or displays the required characteristics. 
  163. In cases where automated detection is ineffective or cost-prohibitive, 
  164. check-lists must be designed and manual procedures must be outlined as part of 
  165. a reusable software inspection process. For example, semantic checks can be 
  166. developed to recognize incomplete or inconsistent components.
  167.  
  168. Aspects of the certification process that can be automated are:
  169.  
  170.   
  171.  
  172.     Documentation Standards. Documentation prologues and certain 
  173. consistency checks on documentation (e.g., checks can be automated to ensure 
  174. that a module's call list is complete (all calls are mentioned) and consistent 
  175. (mentioned names are called somewhere in the program body)). Enforcement of 
  176. Variable and Type naming standards etc..
  177.  
  178.     Identification of system dependent features like primitive type 
  179. representations and the use of primitive I/O packages.
  180.  
  181.     Path analysis to determine if functions and procedures return valid 
  182. results on all logical paths.
  183.  
  184.     Measurable system quality indicators (cohesion, coupling, and 
  185. complexity) .
  186.  
  187.  
  188. Notice that the above checks not only facilitate software reuse but are also 
  189. required to ensure quality software. Our research indicates that there are two 
  190. facets of reusable software: (a) a quality facet that all software should 
  191. satisfy (simple interface, minimal complexity, minimal testing complexity, 
  192. etc.); and (b) a domain appropriateness facet that determines to a large extent 
  193. whether a piece of software can be used in several applications (e.g., a 
  194. generalized stack is such a component). The later facet is much more difficult 
  195. to recognize and evaluate. Issues here include:
  196.  
  197.   
  198.  
  199.     Component Granularity: Is this component a valid primitive in the 
  200. domain, or does the component require further decomposition into primitive 
  201. operations and primitive data elements?
  202.  
  203.     Component Naming Conventions: Given a potentially reusable component, 
  204. are the objects and operations named with semantically meaningfully taxonomic 
  205. terms?
  206.  
  207.     Component Flexibility: Are the objects and operations sufficient to 
  208. synthesize required components in many situations?
  209.  
  210.     Component Generality: Is the component applicable to various problem 
  211. situations?
  212.  
  213.  
  214. In view of the difficulty of recognizing the domain specific attributes of 
  215. reusable components we have initiated a research project for circumscribing the 
  216. domain appropriateness facet. More specifically, we have initiated a pilot 
  217. project whereby software engineers and researchers will interact with experts 
  218. in particular domains and establish a set of enforceable guidelines that can 
  219. help the process of identifying reusable software as (i) either one of the 
  220. output of domain analysis, or (ii) extracting such components from existing 
  221. systems. Certain progress has been made for (ii) at the Software Productivity 
  222. Consortium    
  223. and we shall extend both the scope and applicability of this 
  224. research.
  225.  
  226.   
  227.  
  228.    
  229.  
  230.   Overall Approach 
  231.  
  232. Fig. 1 depicts the support necessary for depositing components into a reuse 
  233. repository. As shown in Fig. 1 reusable components are generated from two 
  234. primary sources: (1) the extraction and restructuring of components from 
  235. existing systems written in conventional imperative languages (C, Fortran, and 
  236. Ada), and (2) the development of domain specific components given broad 
  237. knowledge of intended applications.
  238.  
  239. Given a collection of reusable components, we must provide for some means to 
  240. organize these components in a user friendly manner. Software components can be 
  241. organized as appropriate to the intended applications: (a) a large set of 
  242. independent domain specific components for libraries, and (b) organization 
  243. along application architectures for narrow domains. Library organization is 
  244. common and is not discussed further.
  245.  
  246.   
  247.  
  248.    
  249.  
  250. Fig. 2 displays our vision of structures to support the reuse of existing 
  251. components for narrow domains.  This vision follows the design memory metaphor 
  252. outlined in    
  253. and seeks to provide designers a platform for visualizing and 
  254. inferring the consequences of design decisions. A user typically enters the 
  255. reuse environment and is given a top level view of a typical application 
  256. architecture. The architectures displays the principle top-level architectural 
  257. components, their associated information flows and relationships, and the 
  258. top-level storage structures. Components that be further decomposed into 
  259. sub-components are shaded. Such components have sub-components that may be 
  260. organized and controlled to perform the task required of the higher level 
  261. component. Components that are hatched indicate that there is no available 
  262. executable image associated with the module . 
  263. This can occur when a component 
  264. is    functionally coupled    
  265. to environmental objects that are likely to 
  266. change; for example a set of routines that read radar sensors and organize the 
  267. data in specific formats. 
  268.  
  269. For existing software systems without an associated knowledge base, the system 
  270. hierarchy is generated by reverse engineering tools that act as selective 
  271. display mechanisms. Here the system provides little inferencing ability but 
  272. allows a user to traverse the system and select components of various 
  273. granularity. 
  274.  
  275.       Conclusions 
  276.  
  277. In this paper we have illustrated a promising architecture for solving problems 
  278. associated with large scale reuse. Currently, we are tackling both angles of 
  279. our overall approach (Figs. 1 and 2). We are in the process of developing a 
  280. prototype system that can accomplish the objectives of Fig. 2 for the 
  281.    target 
  282. tracker domain . Here our intent is to provide knowledge based support for 
  283. enhancing reuse opportunity. We have made substantial strides in re-engineering 
  284. and restructuring technology. We have applied our techniques to large software 
  285. systems in C and Ada with encouraging results. Currently, we are actively 
  286. involved in the following: (1) refining our re-engineering and restructuring 
  287. capabilities and expanding the scope of our techniques by experimenting with 
  288. other imperative languages like COBOL and FORTRAN, and (2) establishing 
  289. cooperative efforts to flesh out reuse certification procedures.
  290.  
  291.  
  292.  
  293.    arno86b 
  294.  
  295.  R.S. Arnold (Ed.), Tutorial: On Software Restructuring, IEEE Press, Washington 
  296. D.C., 1986.
  297.  
  298.  T. J. Biggerstaff,   A. J. Perlis (Eds.), Software Reusability Volume 1: 
  299. Concepts and Models, and Volume 2: Applications and Experience, ACM Press, 
  300. Addison-Wesley Publishing Company, New York, NY, 1989.
  301.  
  302.  Biggerstaff, T. J., ``Design Recovery for Maintenance and Reuse'', IEEE 
  303. Computer, July 1989, pp. 36-49.
  304.  
  305.  G. Booch, Software Components with Ada: Structures, Tools, and Subsystems, The 
  306. Benjamin/Cummings Publishing Company, Inc., Menlo Park, CA., 1987.
  307.  
  308.  P. Freeman (Ed.), Tutorial: Software Reusability, IEEE Press, Washington D.C., 
  309. 1987.
  310.  
  311.  IMSL Inc., Library Reference Manual, Houston TX, 1987.
  312.  
  313.  Mark, W., ``Software Design Memory'', Proc. Workshop Notes AAAI-91: Automating 
  314. Software Design: Interactive Design, AAAI, Anaheim, CA., July 15, 1991, pp. 
  315. 115-120.
  316.  
  317.  Mark, W.,   Schlossberg, J., ``Interactive Acquisition of Design Decisions'', 
  318. Proc. 5th Knowledge Knowledge Acquisition for Knowledge-Based Systems, Banff, 
  319. Canada, Nov. 1990.
  320.  
  321.  Neighbors, J.M., ``The Draco Approach to Constructing Software from Reusable 
  322. Components'', In P. Freeman (Ed.), Tutorial: Software Reusability, IEEE Press, 
  323. Washington D.C., 1987, pp. 181-191.
  324.  
  325.  Patel, S. J., Chu, W., and Baxter, R. W., ``A Measure for Composite Module 
  326. Cohesion'', Submitted, Proc. 14-th Intl. Conf. Soft. Engr., Melbourn, 
  327. Austrilia, 1992.
  328.  
  329.  Prieto-Diaz, R., ``Domain Analysis for Reusability'', InW. Tracz (Ed.), 
  330. Tutorial: Software Reuse: Emerging Technology, IEEE Press, Washington D.C., 
  331. 1988, pp. 347-353.
  332.  
  333.  Software Productivity Consortium (Author: R.S. Arnold), ``Heuristics for 
  334. Salvaging Reusable Parts from Ada Source Code'', SPC Tech. Report: Ada Reuse 
  335. Heuristics-90011-N, Version 01.00.00, March 1990.
  336.  
  337.  Stevens, W. P., Myers, G. J.,   Constantine, L.L., ``Structured Design'', IBM 
  338. Systems Journal, Vol. 13, No. 2, 1974, pp. 115-139.
  339.  
  340.  W. Tracz (Ed.), Tutorial: Software Reuse: Emerging Technology, IEEE Press, 
  341. Washington D.C., 1988.
  342.  
  343.  Tracz, W., ``Software Reuse Myths'' in W. Tracz (Ed.),  Tutorial: Software 
  344. Reuse: Emerging Technology, IEEE Press, Washington D.C., 1988, pp. 18-22.
  345.  
  346.  
  347.   Notes 
  348.  
  349.   
  350.  
  351. As noted in Tracz [15], management and economic reasons can also hinder 
  352. software reuse. However, in the following we assume the existence of 
  353. appropriate management structures that encourage and reward software reuse.
  354.  
  355. Ada is a registered trademark of the U.S. Government (Ada Joint Program 
  356. Office).
  357.  
  358. We have successfully developed a metric for module cohesion [10]. We have 
  359. also established some criteria that  lead to undesiriable coupling and are in 
  360. the process of proposing a measure for module coupling.
  361.  
  362. Note that it is not necessary to always have a executable object file of 
  363. the component. Rather the component may itself be a application generator or 
  364. some expert system that can synthesize the required executable image.
  365.  
  366.  
  367.   About the Authors 
  368.  
  369. Dr. Sukesh Patel is the  Principal Investigator for the Software Reuse and 
  370. Maintenance project at Lockheed's Software Technology Center (STC). Sukesh 
  371. received his B.S. in Electrical Engineering from Sardar Patel University
  372. (India) and his M.S. and Ph.D. degrees in Computer Engineering from the Center
  373. for Advanced Computer Studies at the University of Southwestern Louisiana. His 
  374. primary interests are design automation, design recovery, and the development 
  375. of evaluation techniques for large scale hardware and software systems. Sukesh 
  376. is a member of the IEEE and AAAI societies.
  377.  
  378. Dr. William Chu received his B.S. degree from the Tamkung University (Taipei, 
  379. Taiwan) in 1982 and his M.S. and Ph.D. degrees from Northwestern University, 
  380. Evaston, Illinois in 1987 and 1989, respectively, all in computer science. He 
  381. is currently a research scientist at the Software Technology Center of Lockheed 
  382. Missiles and Space Company, Palo Alto, California. His current interests are 
  383. software maintenance and reuse, with special focus on software re-engineering 
  384. and restructuring, software engineering, and software quality.
  385.  
  386. Mr. Rich Baxter received his M.S. degree in Computer Science in 1985 from the 
  387. New Mexico Institute of Mining and Technology (NMIMT). Mr Baxter joined 
  388. Lockheed Missiles and Space, Co. (LMSC) Research and Development Division's 
  389. Software Technology Center's (STC) Ada Technology group as a Scientific 
  390. Programmer/Analyst in 1988. Mr. Baxter is participating in several Ada related 
  391. internal research and development (IRAD) projects in the STC including the 
  392. Software Reuse in Large Ada Systems project. As a member of the Ada technology 
  393. group, Mr. Baxter is actively participating in the group's infusion of Ada 
  394. technology into LMSC and other Lockheed companies. Mr. Baxter has co-authored 
  395. several papers dealing with Ada Software topics while at Lockheed. Mr. Baxter 
  396. has been a member of the ACM since 1981 and of the IEEE Computer society since 
  397. 1989.
  398.  
  399. Mr. Brian Sayrs is the principal investigator for Software Re-engineering at 
  400. the Software Technology Center (STC). Brian has been involved with several 
  401. software re-engineering projects and is currently developing methods and 
  402. techniques for integrating forward and reverse engineering.
  403.  
  404. Dr. Steve Sherman is manager of the Software Technology Center (STC), Research 
  405. and Development Division, Lockheed Missiles and Space Company (LMSC). Dr. 
  406. Sherman received his B.S. in Mathematics from North Carolina State University. 
  407. After working for Pratt   Whitney in West Palm Beach, FL, Dr. Sherman joined 
  408. the University of Wisconsin where he received his M.S. in Computer Science in 
  409. 1968. Dr. Sherman worked for Sandia Corporation in the systems and nuclear 
  410. simulation groups in Albuquerque and subsequently received his Ph.D. in 
  411. Computer Science from the University of Texas at Austin in 1972. His 
  412. dissertation addressed the simulation of operating system heuristics for 
  413. performance prediction.
  414.  
  415. Dr. Sherman taught at the University of Houston for 2 years in the Computer 
  416. Science Department and left on leave in 1974 to work for the Institute for 
  417. Computer Applications in Engineering at NASA Langley in Hampton, VA where he 
  418. conducted research in data base management. In 1976, Dr. Sherman joined the 
  419. University of Nevada at Las Vegas as a faculty member in the Computer Science 
  420. department and was promoted to full professor in 1984.In 1985, Dr. Sherman 
  421. joined LMSC working for the STC in Austin, Texas where he led the technology 
  422. transfer group and the Ada environment project. In 1987, STC teamed with the 
  423. Space Systems Division (SSD) of LMSC to merge the Ada environment with SSDs 
  424. language independent software engineering environment. In 1988 Dr. Sherman led 
  425. his group to support a Lockheed Space Operations Company proposal and training 
  426. effort. Dr. Sherman led the Software Automation research group in Palo Alto and 
  427. his current group, also in Palo Alto, is conducting research in software 
  428. engineering.
  429.  
  430.  
  431.