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 / palmer.detex < prev    next >
Text File  |  1992-04-05  |  18KB  |  326 lines

  1.  [12pt] article  
  2.  
  3.  
  4.  
  5.  
  6.  
  7.  
  8.  
  9.  
  10.  
  11.   Identification and Tailoring of Reusable Software Components 
  12.  
  13.                                  Constance Palmer 
  14.                    McDonnell Douglas Missile Systems Company 
  15.                             Dept. EBE2, MS 3064025 
  16.                                  P.O. Box 516 
  17.                         St. Louis, Missouri 63166-0516 
  18.                                 (314) 232-0278   
  19.                        palmer cstc.decnet@mdcgwy.mdc.com 
  20.  
  21.                           Approved for Public Release 
  22.                      Export Authority: 22CFR 125.4(b)(13) 
  23.  
  24.    
  25.  
  26.  
  27.   
  28. Two significant technical challenges facing application developers are early
  29. identification of potentially applicable software components, and adaptation and
  30. incorporation of reusable software components in new applications.  Software
  31. reuse can be facilitated by tools that support these reuse-specific tasks and
  32. that are integrated with the user's other development tools.
  33.  
  34. The CAMP program developed prototype tools to support both early component
  35. identification and tailoring of components.  The early identification is based
  36. on domain- or application-specific search, i.e., the user's view of the search
  37. is in terms of the domain or application area rather than in terms of keywords
  38. or other component attributes.  A domain analysis generally forms the basis for
  39. providing this type of search mechanism.   
  40.  
  41. Tailoring support is provided by "constructors".  These constructors automate
  42. much of the tailoring process, making reuse easier. They can lower the cost of
  43. reuse in terms of both time and resources. The CAMP project investigated ways of
  44. producing cost-effective, flexible constructors. 
  45.  
  46.   0.3in 
  47.  
  48.    Keywords: 
  49. Software reuse, software tailoring, component identification
  50.  
  51.  
  52.   Background 
  53. The Common Ada Missile Packages (CAMP) program is a U.S. Air Force sponsored
  54. contracted research and development effort.  The program began in 1984, with the
  55. initial goal of determining the feasibility of software reuse in a highly
  56. constrained real-time embedded domain, specifically, the missile operational
  57. flight software domain.  Once commonality within this domain was established,
  58. attention was turned to investigating optimal methods for component design and
  59. incorporation of software reuse into the software development lifecycle.  There 
  60. were three main thrusts: the development of reusable resources; the development
  61. of a reuse support environment; and technology transfer.  The research efforts
  62. associated with commonality identification and component design and development
  63. have been well-documented in  .
  64. The initial tool investigation
  65. and development efforts have also been documented in these same sources.
  66.  
  67. Recognizing that most software developers would not adopt software reuse
  68. practices based on studies alone, the CAMP program combined software reuse
  69. research and application.  For example, after the initial set of 450 reusable
  70. Ada components and the prototype reuse support tools were developed, a testbed
  71. program was put in place to demonstrate the feasibility of incorporating
  72. software reuse into the development process for real-time embedded applications. 
  73. Specifically, the goal of the testbed effort was to show that missile
  74. operational flight software applications incorporating significant levels of
  75. reuse could be effectively developed. 
  76.  
  77.  
  78.   Problem Statement 
  79. It seems to be a commonly held view today that the real barriers to software
  80. reuse are not technical in nature, but rather are managerial, legal, social, and
  81. psychological.  While there are barriers in these areas, there are still
  82. significant technical challenges associated with software reuse.
  83.  
  84. Two problems that have persisted in the reuse arena are those of easily
  85. identifying and incorporating reusable components into new applications. 
  86. Significant resources have been expended in developing cataloging and library
  87. schemes, but effective software reuse requires more than a library of available
  88. components.  One problem with the traditional approach to software reuse
  89. catalogs and libraries is that the user needs to have a fairly good idea of the
  90. types of components that he is looking for in order to construct appropriate
  91. queries. This poses a barrier to reuse because early in the lifecycle, when
  92. software reuse must first be considered (e.g., during system concept development
  93. and software requirements analysis), the developer may not have sufficient
  94. information about the application to get meaningful information out of a catalog
  95. or library. 
  96.  
  97. The application developer faces another barrier to reuse when, after identifying
  98. candidate reusable components, he tries to adapt or tailor them to fit his
  99. requirements.  Obviously, this is not a problem with low-level, black box
  100. components, but can become apparent when the application developer is working
  101. with higher level families of components.  These higher level components may be
  102. at the subsystem or system level, and thus, have the potential for significantly
  103. higher payback than low-level, black box components.  The developer faces a
  104. further challenge when trying to compose lower level components into higher
  105. level entities.  Despite high quality documentation, it may still be difficult
  106. for the application developer to easily and correctly tailor and compose
  107. existing components into new applications.  
  108.  
  109.   Current CAMP Research Inititatives 
  110. Two of the most recent initiatives on the CAMP program were concerned with early
  111. identification of reusable software components and with tailoring and
  112. composition of reusable components for new applications.  The first initiative
  113. was embodied in the development of a reuse support tool called ``parts
  114. exploration'', 
  115. and the latter initiative was embodied in the development of a set
  116. of facilities and procedures referred to as a ``meta-constructor''.   
  117.  
  118.    Parts Exploration 
  119. The parts exploration (PE) facility allows the user to couch his queries about
  120. available software components in terms of his application or domain rather than
  121. in terms of specific catalog attributes.  This permits more meaningful
  122. interaction between the application developer and the component library early in
  123. the application development lifecycle, thus enhancing the prospect that
  124. significant levels of reuse will be achieved. 
  125.  
  126. A prototype parts exploration system that can accommodate multiple domains
  127. simultaneously was developed. This system was used for the CAMP missile
  128. operational flight software domain, as well as for a smaller, test domain.
  129.  
  130. The PE system prompts the user for information about his domain or application,
  131. and based on the information obtained, PE will identify potentially applicable
  132. reusable components.  This information can be presented to the user in either
  133. list form or in the form of a system hierarchy tree that the user can traverse
  134. until he gets to the lowest level reusable components that comprise the leaf
  135. nodes in the tree.  Once the user has this list of components, he can obtain
  136. detailed information about them from the catalog. 
  137.  
  138. The parts exploration system must be initialized for a given domain before that
  139. domain can be supported by the tool. Initialization consists of entering
  140. domain-specific information that would generally be obtained during a domain
  141. analysis.  
  142.  
  143. Several issues were not addressed in our development of the parts exploration
  144. system.  For example, the definition of domains, and the treatment of
  145. overlapping domains and related domains were not addressed.  Although the
  146. definition of domains impacts the treatment of overlapping and related domains,
  147. this definition was left to the user.  In the case of overlapping domains,
  148. components may be developed independently for these overlapping domains, and
  149. thus the components in the domain intersection are not really in both domains;
  150. they are only in the domain for which they were developed.  This results in the
  151. user not being informed of potentially relevant components that were developed
  152. for other domains. A similar situation arises with related domains.  For
  153. example, missile and aircraft autopilot applications are, at some level,
  154. similar.  If the user were in the missile operational flight software domain and
  155. the system identified the need for an autopilot in his application, he would
  156. only be informed of the availability of reusable components for the development
  157. of missile autopilots, despite the fact that he might be able to tailor an
  158. aircraft autopilot for his application.  Another issue that bears further
  159. exploration is that of the granularity of the domain information that is needed
  160. in order for the PE system to effectively identify relevant components for the
  161. user.  
  162.  
  163. Earlier in the CAMP program, a version of PE was prototyped for the missile
  164. operational flight software domain using an expert system shell.  The current
  165. system was developed in Ada running under VAX VMS.  The interface is very simple
  166. and can accommodate even a VT100-type of terminal.  The system itself makes use
  167. of reusable components.  
  168.  
  169.   Meta-Constructor 
  170. Early in the investigation of the feasibility of software reuse, we recognized
  171. the importance of providing support for component tailoring and composition, as
  172. well as providing reusable components.  Thus, the concept of component
  173. constructors was developed.  A component constructor assists the user in
  174. tailoring and composing reusable software components for new applications.  A
  175. constructor may perform limited code generation in order to meet these
  176. requirements, but this is code generation in a very narrow sense as opposed to 
  177. generalized code generation.
  178.  
  179. A number of prototype constructors were developed to support adaptation of
  180. different types of CAMP components, e.g., there were autopilot constructors for
  181. producing application-specific lateral directional and pitch autopilots. Other
  182. constructors were developed for Kalman filters, navigation subsystems, finite
  183. state machines, etc.  These constructors demonstrated the feasibility and   
  184. usefulness of the concept.  We had domain experts use the Kalman filter
  185. constructor.  They were able to generate 18 and 20 state filters in
  186. approximately an hour. The constructor provided the required data types,
  187. operators, and tailored components based on the user's specifications.  If this
  188. development were done from scratch, it could easily have taken several weeks to
  189. produce and debug the code. 
  190.  
  191. Constructors provide the ability to easily perform ``what ifs'' by providing the
  192. capability to modify the specifications and regenerate code.  This is
  193. particularly important in Kalman filter development where implementors
  194. frequently change the number of states in the filter in an attempt to obtain
  195. optimal performance.  These changes often go on fairly late into the development
  196. cycle, thus increasing the value of constructor-type support.  
  197.  
  198. The most significant limitations of the early CAMP prototype constructors were
  199. (1) the linkage between the constructors and the underlying components that they
  200. were designed to tailor, and (2) the fact that, although there was a common
  201. paradigm for the constructors, each was custom built at a non-trivial cost with
  202. respect to effort.  The linkage between the constructors and the components
  203. resulted in significant changes to the constructor if the underlying components
  204. changed, increasing the cost of providing constructors.  The "custom built"
  205. aspect added to their cost.  Thus, the value of constructors as productivity
  206. enhancers was demonstrated, but their viability as a long term solution was
  207. questionable.  This conclusion led us to further research in this area during
  208. later phases of the CAMP program.  We wanted to investigate more efficient and
  209. effective ways of producing constructors.  
  210.  
  211. A number of alternatives were possible. We considered embedding directives in
  212. the reusable components and using a preprocessor to generate the appropriate
  213. user queries for tailoring information.  Although this idea had merit, we
  214. ultimately decided that alteration of the reusable component itself by embedding
  215. these directives was not desirable.  The approach that we prototyped was that of
  216. a "meta-constructor". The meta-constructor consists of a set of facilities and
  217. procedures for constructing constructors.  The final constructor that is
  218. produced is implemented in Ada, and thus, is able to take advantage of the Ada
  219. compiler for much of the error checking.
  220.  
  221. The meta-constructor facilities consist of utilities of different types. For
  222. example, there are user interface utilities that handle forms and menus, as well
  223. as utilities for querying the user about specific types of information, for
  224. error checking, and for code generation.  Routines have been developed for
  225. obtaining different types of Ada data types, for obtaining information about
  226. procedures and functions, and for instantiating Ada generic units.  
  227.  
  228. The meta-constructor procedures guide the constructor developer in the
  229. development of new constructors.  Much of the implementation of a constructor
  230. consists of calls to existing meta-constructor utilities and to utilities that
  231. are either specific to that particular constructor or that are general, but that
  232. were not previously needed for existing constructors.  
  233.  
  234. The meta-constructor is designed for extensibility.  That is, it consists of a
  235. basic set of facilities for implementing constructors together with a paradigm
  236. for their construction.  The initial set of facilities was identified by
  237. performing an informal domain analysis on the 12 previously developed CAMP 
  238. component constructors.  It is anticipated that, as constructors are implemented
  239. using the meta-constructor facilities, additional utilities will be added, thus
  240. facilitating implementation of future constructors.   
  241.  
  242. In order to demonstrate the capabilities of the meta-constructor, it was used to
  243. develop 2 constructors that are representative of the types of constructors that
  244. can be developed.  These two constructors are the Kalman filter (KF) constructor
  245. and the finite state machine (FSM) constructor.  The FSM constructor supports
  246. tailoring of a schematic part, i.e., a design component rather than a code
  247. component.  The KF constructor combines aspects of both generic constructors 
  248. and 
  249. schematic constructors. 
  250.  
  251. These types of constructors are based on the types of components that were
  252. identified during the initial CAMP domain analysis.  At that time, 2 different
  253. types of components were identified: simple components and meta-parts.  Simple
  254. components are components that can be used "as is" or, in the case of Ada, they
  255. can also be generic units that have little or no interaction with other units 
  256. and can be instantiated with the provision of a  relatively small number of
  257. types and operators.  Meta-parts are either complex Ada generics or schematic
  258. parts. Complex Ada generic units may require a fairly large number of types and
  259. operators for instantiation, and may have fairly significant interactions with
  260. other generic units, e.g., there may be embedded instantiations or a number of 
  261. dependencies between the units.  Schematic components are, in essence, design
  262. components rather than code components.  The design may be relatively
  263. straightforward and the code production may be algorithmic, but the variability
  264. that is possible in the family of implementations embodied by this component is
  265. not easily or possibly captured in the implementation language. 
  266.                                                            
  267. The two representative constructors have been implemented.  Although the
  268. meta-constructor does not negate the need for the constructor developer to have
  269. a thorough understanding of the component family he is going to provide, it does
  270. facilitate the development process.  A comparison of the previous,
  271. custom-crafting approach with the new meta-constructor approach will be
  272. conducted in order to assess the gain.
  273.  
  274. Although all of the constructor work performed under the CAMP program was
  275. directed at the production of tailored, executable code, this approach could
  276. also be applied to the production of documents and test procedures and code. 
  277. Further work is also needed to determine the flexibility and scalability of our
  278. approach. For example, we applied the meta-constructor approach to the tailoring
  279. of components on the scale of Kalman filters and autopilots, but we have not
  280. attempted its use on much larger scale entities (e.g., command and control
  281. center applications).
  282.  
  283.  
  284.    mcni 86 
  285.  
  286. McNicholl, D.G., Palmer, C., Cohen, S.G., et al, "Common Ada Missile
  287. Packages (CAMP)", Tech. Report AFATL-TR-85-93, Volumes 1-3, U.S. Air Force,
  288. Wright Laboratory, Armament Directorate, Eglin Air Force Base, Florida, 32542,
  289. May 1986, Distribution limited to DoD and DoD contractors only.  
  290.  
  291.  
  292. McNicholl, D.G., 
  293. Cohen, S.G., Palmer, C., et al, Common Ada Missile Packages - 
  294. Phase 2 (CAMP-2), Tech. Report AFATL-TR-88-62, Volumes 1-3, U.S. Air Force,
  295. Wright Laboratory, Armament Directorate, Eglin Air Force Base, Florida, 32542,
  296. November 1988, Distribution limited to DoD and DoD contractors only. 
  297.  
  298.  
  299. Palmer, Constance, "Developing and Using Ada Parts in Real-Time Embedded
  300. Applications", Tech. Report AFATL-TR-90-67, U.S. Air Force, Wright Laboratory,
  301. Armament Directorate, Eglin Air Force Base, Florida, 32542, April 1990. 
  302.  
  303.  
  304.   About the Author 
  305. Connie Palmer is the CAMP program manager at McDonnell Douglas Missile Systems
  306. Company (MDMSC).  The Common Ada Missile Packages (CAMP) program is a USAF
  307. contracted research and development effort that has been investigating the
  308. potential of software reuse in mission-critical real-time embedded DOD domains;
  309. the specific domain addressed is missile operational flight software.  The CAMP
  310. program has developed over 500 reusable Ada software parts, as well as explored
  311. issues and developed tools to support reuse efforts.  
  312.                                                   
  313. Ms. Palmer has been at McDonnell Douglas for almost 8 years, and has been
  314. involved in the CAMP program since its inception in 1984. She also leads a group
  315. that is working to improve the software engineering practices and processes at
  316. MDMSC.
  317.  
  318. Ms. Palmer has an M.S. in Computer Science from Washington University in St.
  319. Louis, and a B.A. in Mathematics from George Washington University in
  320. Washington, D.C..  
  321.  
  322. She is a member of IEEE, ACM, AAAI, and AIAA.    
  323.  
  324.  
  325.  
  326.