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 / li.detex < prev    next >
Text File  |  1992-04-05  |  34KB  |  809 lines

  1.  [12pt] article  
  2.  
  3.  
  4.  
  5.  
  6.  
  7.  
  8.  
  9.  
  10.  
  11.   A Model for Reuse-in-the-Large 
  12.    Haikuan Li   Jan van Katwijk  
  13.      
  14. Delft University of Technology 
  15. Faculty of Mathematics and Computer Science 
  16. Julianalaan 132, Delft, The Netherlands  
  17. Tel: 31-15-784433, Fax: 31-15-787141 
  18. Email: li@dutiaa.tudelft.nl   
  19.    
  20.  
  21.  
  22.  
  23.  
  24.   
  25. In this paper,  a model for Reuse-in-the-Large (RITL) is proposed.
  26. RITL aims at providing large-grain components and giving 
  27. information about the creation of these components,  in order to 
  28. reuse these components and the information to
  29. improve the process of software development and maintenance. 
  30.  
  31.   0.3in 
  32.  
  33.    Keywords :  large-scale component, design framework,
  34. design instance, domain resource.
  35.  
  36.   7pt
  37.   Introduction 
  38.  
  39. The technologies applied to software reuse may
  40. be classified into two groups, i.e. reuse-in-the-small and
  41. reuse-in-the-large. The former is centered on the reuse of small
  42. code components  such as objects in object-oriented 
  43. programming or packages in Ada ,
  44. while the latter is centered on the reuse of large-grain code 
  45. components such as subsystems and the information about their designs.
  46.  
  47. Following   , we believe that, although
  48. reuse-in-the-small is a necessary part of software reuse and 
  49. is moderately successful in some areas, it is
  50. fundamentally limited by our lack of information about the
  51. whole process of software development and maintenance in which
  52. the reuse is going to take place  .
  53. Therefore, our research attention is drawn to reuse-in-the-large.
  54.  
  55. In this paper, a model for reuse-in-the-large is presented. 
  56. This model aims at providing large-grain components and giving 
  57. information about the creation of these components,  in order to 
  58. improve the process of software development and maintenance 
  59. by reusing both these components and the information.
  60.  
  61. The motivation to establish the particular model is derived from
  62. observing
  63. forward engineering and reverse engineering .  
  64. In forward engineering a lot of information remains undelivered
  65.   whereas, for the sake of reuse, in reverse 
  66. engineering quite a lot of similar information has 
  67. to be recovered  : software producers 
  68. make puzzles that reverse engineers solve. 
  69.  
  70. As Webster points out , conventional software 
  71. methodologies are product-oriented; they were developed to address 
  72. design artifacts, they do not adequately address representation needs 
  73. about the creation of the artifacts. 
  74. Accordingly, we need a means to strengthen software representation
  75. and we need to address research questions:
  76.     (1) How to make a large-grain component reusable,  i.e. 
  77.         how to make a large-grain component easy to 
  78.          maintain, evolve and reconstruct in order to adapt the 
  79.         component to similar applications.
  80.     (2) How to organize, manage, and manipulate a collection of 
  81.         reusable (large-grain and small) components in order to 
  82.         improve the process of software development and maintenance.
  83.  
  84. In this paper, we distinguish    design representation  
  85. from    implementation  . A design representation refers to the 
  86. output of the design phase of a  software life cycle, such as a design 
  87. specification,  while an implementation  refers to the  output of the 
  88. implementation phase, such as executable code.  Consistent with this 
  89. distinction, we use the term    design information   to refer to the information
  90. concerned with design, the information about design and the information 
  91. about design process  .
  92.  
  93. In section 2 the criteria and the strategies of reuse-in-the-large
  94. are presented. In section 3 the model for reuse-in-the-large is 
  95. addressed. In section 4, 5 and 6 the concept, structure and features 
  96. of large-scale components are described. In section 7 we demonstrate 
  97. how the process of software development and maintenance may be 
  98. improved by the reuse of large-scale components. Finally, in section 8
  99. the conclusion is provided.
  100.  
  101. This work is part of a reuse project in Delft University of Technology,
  102. The Netherlands. 
  103.  
  104.  
  105.  
  106.   7pt
  107.   The criteria and strategies of reuse-in-the-large 
  108. Criteria  normally refer to a group of standards by which
  109. something can be judged or decided.  In order to judge 
  110. the capability of reuse-in-the-large and evaluate the strategies 
  111. to realize reuse-in-the-large, several criteria are addressed as follows.
  112.     
  113.  
  114.          capability of representing large-grain components and design 
  115.      information, 
  116.  
  117.          capability of generating a group of large-grain components,
  118.  
  119.         capability of applying organizational principles for component 
  120.         representation including information hiding, genericity,
  121.         tailoring and so on, and
  122.  
  123.         capability of enhancing the process of software development and
  124.         maintenance in terms of reuse.   
  125.  
  126. The strategies which we address in order to realize reuse-in-the-large, are
  127.      
  128.  
  129.             design-centered reuse, 
  130.  
  131.             domain-oriented reuse, 
  132.  
  133.             architecture-based reuse, and 
  134.  
  135.             life-cycle-supported reuse.  
  136.  
  137. In the following part of this section, we outline the strategies
  138. and evaluate them according to the criteria.
  139.  
  140.   7pt
  141.   Design-Centered Reuse 
  142. Software reuse may refer to the reuse of code components,  the 
  143. reuse of design information, or the reuse of both. 
  144. Design-centered reuse refers to the reuse of both code components and 
  145. design information in such a way that the design information is taken
  146. as the key to reuse.  Representation of design information should be 
  147. reused in the phases of software design and software analysis; while
  148. furthermore it should allow to provide an abstraction to 
  149. support the reuse of code components.
  150.  
  151. In order to provide an abstraction of a large-grain component,
  152. design-centered reuse suggests that the structure of a large-grain 
  153. component should contain  the different levels of abstraction of the 
  154. component.  The structure of the large-grain components describes 
  155. the organization of the design specifications, the implementations 
  156. and other information about the design of the components. 
  157. The different levels of abstraction may be derived from the process 
  158. of software design which is seen as successive elaborations of
  159. design representation . 
  160. The design representation may be given  in
  161. terms of specification languages.  The relationships 
  162. between the different levels of design representation is:
  163. a higher level design representation acts as the abstraction
  164. of the lower level design, and the lowest level design representation
  165. acts as the abstraction of its implementation. 
  166.  
  167. Design-centered reuse aims at providing guidelines to bind small 
  168. components into the structures of large-grain ones,  offering information to  
  169. understand and reuse large-grain components, and giving support for 
  170. the maintenance, evolution and reconstruction of the components.
  171.  
  172.  
  173.  
  174.   Domain-Oriented Reuse 
  175. Software reuse often refers to the reapplication of the same software 
  176. artifacts to meet requirements in the same or different 
  177. applications (   use-as-is  ) .
  178. However, in most cases, rather than the same artifacts, similar artifacts 
  179. are required .
  180. Domain-oriented reuse emphasizes 
  181. the capability of generating  a collection of similar
  182. large-grain components, in order to meet similar requirements
  183. on the same domain (Note:    Domain   refers to a set of current 
  184. and future applications marked by a set of common capabilities and data
  185.  ).
  186. So, whereas some other kinds of  software reuse aim at
  187. reducing the redundant efforts in the design of the same
  188. artifacts, domain-oriented reuse aims at reducing the 
  189. redundant effort in the design of similar  artifacts in a 
  190. domain. 
  191.   
  192.  
  193. Domain-oriented reuse is based on the apparent commonality in
  194. the capabilities and data about a set of similar applications
  195. of the same domain. 
  196. For example, when an operating system must be designed, the
  197. designers have to identify the domain by simply answering the 
  198. question `   what operating system is  '. 
  199. Such a question together with its answer is domain information.
  200. Furthermore, we think that
  201. the design decision about a particular design  is usually
  202. concerned with the selection of an appropriate design instance 
  203. from a collection of alternatives . 
  204. For example, when an application is concerned with
  205.    sorting  , a  designer usually investigates the properties
  206. of a group of components for sorting, such as     Quick-Sort,
  207. Heap-Sort, Merge-Sort   and so on.
  208.  
  209.   Architecture-Based Reuse 
  210. The key organizational principle used to form modules is 
  211.    information hiding  .  However, as indicated by Parnas
  212.  , applying this principle as a basis for
  213. developing software components  
  214. is not always easy because additional design information 
  215. is required when decisions have to be made 
  216. about the change of the components. Furthermore, currently
  217. used techniques for information hiding, typically leading to   
  218. black-boxes  , may not be directly applicable for
  219. large-grain components ( subsystems or even systems)
  220. without loosing the ability to reuse , due
  221. to the heavy degree of parameterization required for
  222. reusing the components.  This is 
  223. because the changes of large-grain components are too difficult
  224. to be represented by means of parameterization .
  225.  
  226. Architecture-based reuse provides  an organizational principle
  227. for organizing both large-grain code components and design information
  228. into a unique software component, which supports
  229. a flexible change of the component.
  230. The term (software)    architecture   refers to the 
  231. organization of functions and objects, their interfaces, and  the
  232. control to implement applications in a domain  .  
  233. The term    flexible change    refers to the capability of maintenance, 
  234. evolution and reconstruction of large-grain components.  
  235.  
  236. It is our opinion that the architecture of a large-grain component
  237. takes the design and the 
  238. sub-designs of the component as black-boxes at different abstract levels.
  239. Such an architecture implies that each of the black-boxes may be opened 
  240. once the detailed design has to be modified.
  241.  
  242. Using the different levels of abstraction is beneficial to both the 
  243. understanding and the manipulation of large-grain components. 
  244. First, we believe that, in developing and understanding complex phenomena, 
  245. the different levels of abstraction are the most common 
  246. and most efficient tools to human intellect. 
  247. Second, in software engineering practice, the methods of 
  248. software development are commonly  based on object-oriented decomposition
  249. or algorithm decomposition , yielding the
  250. different levels of abstraction. Therefore, the history of decomposition
  251. can be tracked down if the architecture of a large-grain component
  252. provides the different levels of abstraction, as discussed before.
  253. Maintaining such history allows guiding
  254. reusers to browse through the architecture of the components, to locate
  255. elements to modify, and to supply necessary information and resources
  256. for any required modification. 
  257.  
  258.  
  259.   Life-Cycle-Oriented Reuse 
  260. The term life-cycle-oriented reuse refers to reuse during
  261. the whole life-cycle of software, including analysis, design,
  262. implementation and maintenance.  Such a reuse requires a means 
  263. of representing the information concerned with
  264. each phase of the life-cycle and to develop tools to 
  265. support the reapplication of the information.
  266.  
  267. Although many kinds of information can be reused,
  268. at present, only  small pieces of information can  efficiently be
  269. formalized and efficiently be 
  270. reused . Our strategy is, therefore, to identify
  271. the information which can be formalized and adopted in the practice 
  272. of software development. 
  273.  
  274. First, diagrams are perhaps the best-known 
  275. means of representing  software analysis and design. 
  276. The basic advantage of using diagrams such as data-flow
  277. graph is their graphical nature, although their basic disadvantage 
  278. is the lack of semantics  .
  279.  
  280. Secondly, we select  design specification as the information 
  281. of design phase. Such specifications may be either semantic 
  282. specification in terms of VDM , Z 
  283. and so on,  or  specifications such as 
  284. MILs  and EDFG .
  285. Such design representations provide semantics of the design 
  286. artifacts or bring about abstraction of the artifacts.
  287.  
  288. Thirdly, in order to support software maintenance, we may build the 
  289. connection between the different levels of decomposition,  representing
  290. the history (snapshot) of software de velop ment. Such a 
  291. connection may provide an architectural
  292. super structure  that binds small 
  293. components into a large-grain one, and may be used for 
  294. the understanding, the modification and the manipulation of  large-grain 
  295. components.
  296.  
  297. Finally, in order to support the evolution and reconstruction
  298. of large-grain components, we further select information to 
  299. represent design frameworks (generic designs).
  300. as well as the resources for the instantiation of the frameworks.
  301.  
  302. We are of the opinion that -- if the information discussed above is reused 
  303. efficiently --
  304. the life-cycle of software development and maintenance can significantly
  305. be improved. The questions are, however, how to
  306. organize these  kinds of information  and
  307. how to apply them to software life-cycle.
  308.  
  309.  
  310.   0pt
  311.   What is the model? 
  312.  
  313.    The model. 
  314. RITL (Reuse-in-the-Large) is a model for software reuse, concerned 
  315. with methods and a support environment for the creation and
  316. reapplication of    large-scale components  .  
  317. Applying this model aims at improving the process of 
  318. software development and software maintenance.
  319.  
  320.    Large-scale components. 
  321. A large-scale component is an integral representation of a software 
  322. component and containing both the code component and the information 
  323. about its design.
  324. A large-scale component may be as large as a module ( a package
  325. of a set of interrelated objects as
  326. addressed in object-oriented design ), 
  327. a subsystem or even a complete system. The advantage of using large-scale 
  328. components over using small code components is that 
  329. a large-scale component provides a basis for the construction of similar 
  330. large-grain components by reusing  both code and design information.
  331.  
  332.    The support environment. 
  333. The envisaged support environment of RITL encompasses a component base,
  334. which provides a repository for large-scale components, 
  335. and a design assistant, i.e.  a set of tools to represent and 
  336. manipulate  large-scale
  337. components. The examples of these tools  are: tools to specify the design 
  338. of large-scale components; tools to browse through the structure 
  339. of the whole or any part of a large-scale component;  tools to generate 
  340. implementations (large-grain code components) from large-scale components; 
  341. tools to support the construction of design
  342. and tools to modify and reconstruct a large-scale component.
  343.  
  344.  
  345.    Reuse, cost and limitation. 
  346. RITL aims at improving the process of software development
  347. and maintenance by the reuse of large-scale components.
  348. As indicated, this kind of reuse is very different from the 
  349. reuse of small code components. RITL supports 
  350. the reuse of the super structure that small components may be bound into.
  351. Moreover, the classification problem and the search 
  352. problem  can be minimized
  353. by the reuse of design information appended to the structure, as discussed 
  354. later on.  This design information specifies the binding of small components
  355. into the super structure in order to generate a large-grain component.
  356. Therefore, the cost of reusing small components on particular building 
  357. the super structure  may be significantly reduced.
  358. Finally, there is the limitation that whereas a small code component may be 
  359. reapplied to many different application domains, the reuse  potentials of
  360. a large-scale component are logically limited to a single domains, 
  361. although there has nothing to reject the normal reuse of small components.
  362.  
  363.  
  364.   7pt
  365.   The concept of large-scale components 
  366. A large-scale component may be formally defined as 4-tuple:
  367.  
  368.  
  369.  
  370.  
  371.  
  372.  
  373.   7pt
  374.  
  375.    Design framework   is an abstraction of a scope of similar
  376. components in a problem domain.  A design framework consists of 
  377. a    specification   and a    structure  ,
  378. the former specifying the generic design  of the
  379. similar components, the latter describing the analysis
  380. corresponding to the design.   Both of them are centered on  
  381. a set of abstract (or non-abstract) objects and the relationships
  382. between the objects.
  383. The semantics of
  384. a design framework acts as an algorithm which tells us how to 
  385. organize lower level entities (objects and relationships) into 
  386. alternative design instances.
  387.  
  388.    Design instance   is an instance of design framework, 
  389. a representation of a specific design.
  390. A design instance consists of  a    specification   and an 
  391.    architecture  .  The specification of a design instance 
  392. specifies the design of a large-grain component  and describes 
  393. the dependency between this component and other components.  
  394. The architecture consists of a set of objects and the relationships
  395. between them. 
  396.  
  397.    Domain resources   consist of a    domain model   and 
  398. a set of    domain entities   . 
  399. The domain model is the definition of the abstract objects
  400. and relationships appearing in the design framework.
  401. The domain entities provide the instances of the abstract objects 
  402. and relationships being defined.
  403. The domain entities are the values of the domain model.
  404.  
  405.    Refinement   is the detailed design or the implementation 
  406. of the design instance. A refinement consists of a set of 
  407. (lower level) large-scale components or implementations. Each of the
  408. (lower level) large-scale components or implementations is an elaboration of
  409. an object appearing in the design instance,  and such an elaboration 
  410. inherits the semantics of this object and relationships between this object 
  411. and others.  The refinement may be recursively continued 
  412. until all objects in the design instance are suitable to 
  413. be implemented in terms of small components, such as objects 
  414. in object-oriented programming language or the packages in Ada.
  415.  * 10cm 
  416.   
  417. Figure 1: The structure of a large-scale component
  418.  
  419.  
  420.   7pt
  421.   The structure of large-scale components 
  422.  
  423. As a large-scale component is defined recursively, a hierarchical 
  424. structure can be identified from it.  The hierarchical structure 
  425. can be identified by taking the    refinement  of a large-scale 
  426. component as lower level representation of the large-scale component. 
  427. Such a hierarchical structure can be formally defined
  428. as follows.
  429.  
  430.  
  431.  
  432.  
  433.  
  434.  
  435.  
  436.  
  437.  
  438.  
  439.  
  440.  
  441.  
  442.  
  443.  
  444.  
  445. The nodes only containing code components
  446. are called    terminal nodes  , and    non-terminal nodes   otherwise.
  447.  
  448.   7pt
  449.  
  450. From the hierarchical structure, the design information and
  451. the implementation of a large-grain component can easily be 
  452. distinguished.
  453. Considering the nodes of the structure, we find that the terminal 
  454. nodes of the structure form the implementation of a large-grain
  455. component, and the non-terminal nodes of the structure contain
  456. information about the  analysis and design of the component.  
  457.  
  458. Looking into each non-terminal node, three pieces of information 
  459. can be investigated: design framework, design instance and domain
  460. resources.  Let DF stand for design framework, DI for a range of design
  461. instances, and DR for domain resources. According to the definition
  462. of large-scale component, the relationships between DF, DI and DR may 
  463. be described as follows:
  464.  
  465. i.e. a design framework is a mapping from domain resources to 
  466. a range of design instances.
  467.  
  468. Additionally, in order to provide an intuitive impression of large-scale
  469. components, the structure of large-scale components is 
  470. sketched in Fig. 1.
  471.  
  472.  
  473.  
  474.   7pt
  475.   The features of large-scale components 
  476.  
  477. There are several features of large-scale components which may be 
  478. used to 
  479. improve the capability of reusing large-grain code components and  
  480. its design information.
  481.  
  482.  
  483.   Different Levels of Abstraction  
  484. A large-scale component provides different levels of abstraction 
  485. for a large-grain component. At top level, a large-scale component 
  486. provides specifications of the large-grain component, allowing
  487. identification, understanding, and use of the large-grain component 
  488. at the highest abstract level. 
  489. Furthermore, we can look into the detailed design of the large-grain 
  490. component, which is provided by the refinement of the large-scale
  491. component. The refinement of a large-scale component refines 
  492. the objects which form the design instance.
  493. According to the definition of large-scale components, the refinement may 
  494. be continued recursively, level by level, until the objects to be refined 
  495. are suitable to be implemented in terms of small code components.
  496. The representations derived from the different levels of refinement 
  497. provide the different levels of abstraction.
  498. Obviously, according to the different levels
  499. of abstraction, each sub-large-grain component (or sub-sub-large-grain 
  500. component, etc.) can be identified, understood and reused at an
  501. abstract level.
  502.  
  503.   Information for Generating Similar Components 
  504. A large-scale component provides information (i.e. design framework
  505. and domain resources) to modify or reconstruct its constitution.
  506. A design framework of a 
  507. large-scale component can be seen as a template which provides 
  508. a pattern to generate similar components; and the domain resources 
  509. provide candidates (other reusable components) to instantiate the 
  510. template.  The design instance of a large-scale
  511. component is to be seen as an instance of the template, and
  512. one or more similar (but different) design instances may also 
  513. be generated by the instantiation of the design framework.
  514. Therefore, similar large-scale components may be generated
  515. by replacing one or more design instances with other
  516. instances of design frameworks according to the different levels of
  517. abstraction.
  518. As a result, a large-scale component is a component itself, 
  519. while,  it is, furthermore, a basis for the construction of 
  520. similar components from this and other reusable components.
  521.  
  522.  
  523.   7pt
  524.    Outline of reuse-in-the-large 
  525.  
  526. RITL may be characterized by the creation and reuse of large-scale
  527. components and the claim is that the process of software development 
  528. and maintenance can be enhanced by the reuse of large-scale components.
  529. In this section  we will discuss such an enhancement.
  530.  
  531.   Reusability Information for Analysis 
  532. According to Booch , analysis is the process of 
  533. modeling the world by identifying real world components such as 
  534. subsystems, modules and primary objects, which form the vocabulary 
  535. of a problem domain  . 
  536. Practically, each large-scale component or its sub-component provides 
  537. a concept which may be characterized by three dimensions: 
  538.     design framework (a general concept), 
  539.     design instance (an instance of the general concept),  and
  540.     domain resources (sub-concepts and their thesauruses),
  541. and these provide a vocabulary.
  542.  
  543. The output of analysis is information which tells us the required  
  544. behavior of the system (or component) we must build . 
  545. We claim that such information is contained in a large-scale component. 
  546. The behavior of a large-grain component is described in a large-scale
  547. component in two  ways: First, the design framework of
  548. a large-scale component catches the common behaviors of a set of 
  549. components of a domain, described in terms of a set of 
  550. abstract (or non-abstract) objects and their relationships.  Secondly,
  551. the design instance describes  the behavior of specific 
  552. components
  553. in terms of a set of objects and the relationships between them.
  554. While the information provided by a design framework may
  555. be used to analyse  a collection of components in an abstract
  556. form,  the information provided by a design instance includes
  557. the analysis of an element of this collection.
  558.  
  559.   Reusability Information for Design 
  560. Design is a process of inventing the abstractions and mechanisms 
  561. that provide the behavior a system  requires  .  
  562. Our claim here is also that the abstraction and mechanisms 
  563. may be provided by  the 
  564. specification of design framework, the specification
  565. of design instance and the domain resources.
  566.  
  567. The specification of a design framework provides a generic design 
  568. by representing the commonalities of a set of design instances.
  569. Such a specification can be fully reapplied to build 
  570. a collection of similar design instances in a domain and is, therefore,
  571. reusability information for design.
  572.  
  573. The specification of a design instance provides abstraction for 
  574. further refinement or accommodates blueprint for implementation.
  575. The same specification of a design instance can be shared 
  576. by either different refinements or implementations and is ,therefore,
  577. reusability information for design.
  578.  
  579. The domain resources are created somewhere else and
  580. listed in a large-scale component as candidates for the re-design 
  581. or re-implementation of a large-grain component, in order 
  582. to reuse this component in different applications.
  583. Therefore, they are reusability information for design.
  584.  
  585. Moreover, the structure of a large-scale component partially  
  586. records the history (snapshot) of design decomposition and, therefore, 
  587. partially supports the reuse of design process. Using this structure,  
  588. similar large-scale components can be designed by browsing through the 
  589. structure and modifying the old decisions of design decomposition.
  590.  
  591.  
  592.    Implementation Enhanced with Reusability  
  593. Traditionally, software reuse is supported by library components.
  594. In terms of RITL, large-grain components
  595. can be reused, based on the reuse of large-scale components. Firstly, 
  596. according to the structure of large-scale components, a set of large-grain
  597. or small-grain components may be identified from the hierarchical structure
  598. of a large-scale component and each of them can be used at specification 
  599. level. Secondly, since a single
  600. large-scale component may easily be modified, evolved, or reconstructed, 
  601. a range of similar code components can be generated, based on a 
  602. single large-scale component, as discussed before. Finally, reuse-in-the-large
  603. is not a way to deny  reuse-in-the-small.  A large-scale component may 
  604. be viewed as a mechanism in which small components are organized in such
  605.  a way that reusability may be emphasized.  For example,
  606. instead of retrieving components from library, domain resources provide 
  607. the components when needed; by identifying the relationships 
  608. between a component and its related domain resources and design
  609. frameworks, the user may not only  obtain the thesaurus 
  610. of the component, but also find a group of application environments 
  611. where the component may be applied to. 
  612. The thesaurus of a component refers to the components which are 
  613. the values of the same domain model of the domain resources.  
  614. The application environments of a component refer to the 
  615. design frameworks which can be instantiated with this component.  
  616. Therefore, in terms of large-scale components, the process of 
  617. software implementation may be enhanced.
  618.  
  619.   Maintenance Enhanced with Reusability 
  620. It is generally accepted that the lack of design information 
  621. and the lack of automated support in component manipulation
  622. complicate software maintenance and enhancement.
  623.  
  624. RITL supports software maintenance by allowing the modification and
  625. reconstruction of a sub-system or system (large-grain component) 
  626. at different design levels. 
  627. First, when a system is represented as a large-scale 
  628. component, the design information of the
  629. system is distributed on a hierarchical structure. Such a structure
  630. can be browsed with a tool of design assistant. Because of the browsing
  631. of this structure each particular part of the system can be located 
  632. when it needs to
  633. be modified, enhanced or reconstructed.  Associated  with  such a 
  634. located part, there is a template (design framework) which may be used 
  635. to produce a similar design of the part, while furthermore there are 
  636. domain resources which provide candidates to instantiate the template. 
  637. Since the elements of domain resources may be other large-scale 
  638. components, the detailed design and the  code of the located part 
  639. may be provided automatically.
  640.  
  641.   7pt
  642.   Conclusion 
  643. In order to support reuse-in-the-large, criteria were addressed and
  644. strategies were  proposed. Following these strategies, a model 
  645. for reuse-in-the-large was provided, which is centered on the 
  646. representation and reuse of large-scale components.
  647. After the description about the concept, structure and features 
  648. of large-scale components, we described how the process of software 
  649. development and maintenance may be improved by the reuse of large-scale 
  650. components. 
  651.  
  652. However, as indicated by Biggerstaff ,
  653. reuse-in-the-large ( or very-large-scale reuse alternatively 
  654.  ) 
  655. introduces a whole new set of research problems. The final target 
  656. of this kind of reuse
  657. is to make component representation sufficiently general
  658. and to allow reuse over a broad range of software systems.
  659. Our model is one step forward towards this final target.
  660. Although we are satisfied with our model as it shows already the power 
  661. of reuse-in-the-large, there is still a lot of work to be done.
  662. Our future research will be centered on developing tools concerned 
  663. with an evolutionary process for the creation of large-scale
  664. components and the accumulation of reusability information. 
  665.  
  666.   Acknowledgement.   We would like to thank our colleagues
  667. of the reuse project at Delft University of Technology, the Netherlands,
  668. in particular E. M. Dusink and F. Ververs. The many discussions with 
  669. them have been essential for this work. We would also like to thank
  670. Trudie Stoute, who has carefully read through the earlier versions of 
  671. this paper and provided helpful comments on it.
  672.  
  673.  
  674.  
  675.    Aran 89 
  676.  
  677.  
  678.  Arango, Guillermo,    DOMAIN ANALYSIS -- from
  679.     Art To Engineering Dicpline--  , Communication of ACM, 
  680.     1989 ACM 0-89791-305-1/89/05000/0152.
  681.  
  682.   Bassett, P. G., ``Frame-based Software 
  683.     Engineering'' IEEE Software, July, 1987, pp. 9-19.
  684.  
  685.  Victor R. Basili,    Viewing Maintenance as 
  686.     Reuse-Oriented Software Development  , IEEE Software, Jan. 1990.
  687.  
  688.  Ted J. Biggerstaff, Alan J. Perlis,
  689.     Software Reusability, Vol. I, Concepts and Models, ACM press,
  690.     Addison-Wesley publishing company, 1989.
  691.  
  692.  Grady Booch,    Object-Oriented Design with 
  693.     applications  , The Benjamin/Cummings Publishing 
  694.     Company, Inc., 1991.
  695.  
  696.  Elliot J. Chikofsky, James H. Cross II,
  697.        Reverse Engineering and Design Recovery: A Taxonomy  ,
  698.     IEEE Software, Jan, 1990.
  699.  
  700.  Jones, Cliff B.,     System Software Development
  701.     Using VDM  , Prentice/Hall international, Series in Computer 
  702.     Sciences, 1986.
  703.  
  704.  Lano, K. and Breuer P. T.,    From Programs
  705.     to Z Specification  , Z User's Meeting, Dec. 1989.
  706.  
  707.  Li, Haikuan,    An Introduction to Software 
  708.     Reuse  , Technical Report 91-50, ISSN 0922-5641, Faculty of 
  709.     Mathematics and Computer Science. Technical University of 
  710.     Delft, The Netherlands, 1991.
  711.  
  712.  Katwijk, van Jan, A. M. Levy etc. 
  713.     "Software Design for Distributed (Real-Time) systems 
  714.     using EDFG approach", Technical report, Software Engineering,
  715.     TWI, Technical University of Delft, The Netherlands, October, 1990.  
  716.  
  717.  Levy, A., Katwijk, van Jan, Pavlides, G., 
  718.     and Tolsma.    SEPDS: A Support Environment for prototyping
  719.     distributed systems  , In Proceedings of the first International
  720.     Conference on System Integration, New Jersay, USA, Apr, 1990.
  721.  
  722.  Parnas, D. L., Clements, P. C., and Weiss, D. M.,
  723.        Enhancing Reusability with Information Hiding  ,
  724.     Software Reusability, Volume I, Concepts and Model,
  725.     edited by Biggerstaff, Ted J., and Perlis, Alan J., ACM press, 
  726.  
  727.  Peterson, A. Spencer,    Coming to
  728.     Terms with Software Reuse Terminology: a Model-Based Approach  
  729.     ACM SIGSOFT, Software Engineering Notes, Vol 16, No. 2, Apr 1991,
  730.     pp. 45-51.
  731.  
  732.  Levy, Philip, and Ripken, Knut ``Experience in 
  733.     Constructing Ada Programs from Non-Trivial Reuse Models'',
  734.     The Ada companion Series: Ada components and tools, Cambridge
  735.     University Press, May 1987.
  736.  
  737.  Prieto-Diaz, Ruben, Neighbors, J. M.,   
  738.     Model Interconnection Languages  , The Journal of Systems and
  739.     Software 6, 307-337, 1986. 
  740.  
  741.  Prieto-Diaz, Ruben,    Software Engineering  ,
  742.     Communications of ACM, May 1991, Vol.34, No.5, 89-97.
  743.  
  744.  Neighbors, James M.,  Draco: A Method for
  745.     Engineering Reusable Software Systems, Programming, Software 
  746.     reusability, Volume I, Concepts and Models, edited by Ted J. 
  747.     Biggerstaff, Alan J. Perlis,  ACM Press, Frontier Series, 1989.
  748.  
  749.  Rugaber, S., Ornburn, S. B., and LeBlanc, Jr.,
  750.        Recognizing Design Decision in Programs  , IEEE Software,
  751.     January, 1990, pp. 46-54.
  752.  
  753.  Ververs Frans,  Katwijk, Jan van, Dusink, Liesbeth 
  754.        Directions in reusing software  , technical report 88-58 
  755.     Faculty of mathematics and Informatics, Delft University of 
  756.     Technology 1988.
  757.  
  758.  Webster, Dallas E.,     Mapping the Design 
  759.     information representation Terrain  , Computer, December, 1988.
  760.  
  761.  
  762.  
  763.  
  764.   About the Authors 
  765.  
  766. Haikuan Li has graduated from Beijing University, 
  767. Beijing, China. He held lectureship in the Graduate School 
  768. of Academia Sinica, Beijing, China. Since 1988 he has been 
  769. working and studying for his PhD degree at the Faculty of 
  770. Technical Mathematics and Informatics, Delft University of 
  771. Technology, the Netherlands.  He is working on the reuse 
  772. project at this university, and  his PhD thesis will be 
  773. concerned with software reuse.
  774.  
  775.  
  776. Jan van Katwijk is a professor of Software 
  777. Engineering at the Faculty of Technical Mathematics and 
  778. Informatics.  Delft University of Technology, the Netherlands.  
  779. He received his MSc and PhD degree at this University.
  780.  
  781. By his work at this university and by cooperating with
  782. industry, he has obtained a wide experience in computer
  783. science in general and especially in software engineering.
  784. In the area of compiler building and programming languages 
  785. he has given many courses and developed several compilers, 
  786. including a very large subset of the Ada language.
  787. In the area of software engineering he is working on combining 
  788. the best of the formal and informal development methods for 
  789. the development of software, both in the real-time and in the 
  790. data processing domain.  His research interests  
  791. include various aspects of software reuse concerned
  792. with software design, formal specification, software 
  793. environment and programming language issues.
  794.  
  795. Prof. Dr. Ir. Jan van Katwijk acted as a consultant both for
  796. Ada and for general software engineering principles for several 
  797. companies in the Netherlands and, apart from being a member
  798. of the International ISO-JTC1/SC22-WG9 on Ada,  a member of 
  799. the CEC VDM-Europe Working Group  and a member of IFIP-TC2, 
  800. WG 4 (WG2.4 on systems implementation languages), he is also
  801. the Dutch representative within IFIP TC2.
  802.  
  803.  
  804.  
  805.  
  806.  
  807.  
  808.  
  809.