home *** CD-ROM | disk | FTP | other *** search
/ NetNews Usenet Archive 1993 #1 / NN_1993_1.iso / spool / comp / object / 4747 < prev    next >
Encoding:
Internet Message Format  |  1993-01-11  |  27.0 KB

  1. Path: sparky!uunet!psinntp!bse.com!eberard
  2. From: eberard@bse.com (Edward V. Berard)
  3. Newsgroups: comp.object
  4. Subject: Re: Domain Analysis references
  5. Date: Mon, 11 Jan 93 07:43:24 EDT
  6. Organization: Berard Software Engineering, Inc.
  7. Message-ID: <D2150022.ndlcrl@bse.bse.com>
  8. Reply-To: eberard@bse.com (Edward V. Berard)
  9. Distribution: world
  10. Keywords: object-oriented domain analysis
  11. Summary: reusability
  12. X-Mailer: uAccess - Macintosh Release: 1.6v1
  13. Lines: 656
  14.  
  15.  
  16. In article <C0HLCu.JxM@world.std.com> (comp.object), ematz@world.std.com (Ed Matz) writes:
  17. > Not sure if this is the appropriate newsgroup to post this query,
  18. > but I encountered the term while doing some reading on the subject
  19. > of OOA/OOD.   Can anyone out there provide me with some references
  20. > to Domain Analysis so I can find out what it is?   Just about all
  21. > I know about it is its name, but it sounds intrigueing . . .
  22.  
  23. Years ago I posted the following article to comp.object. An updated version
  24. of the article appears as chapter 10 in my book, "Essays on Object-Oriented
  25. Software Engineering, Volume 1," published by Prentice Hall (ISBN 0-13-288895-5).
  26.  
  27. I hope this helps.
  28.  
  29.                 -- Ed
  30.  
  31. ----------------------------------------
  32.  
  33.  
  34.                    PROLOGUE
  35.  
  36. If you were to ask a good number of people why they were using, or
  37. were seriously thinking about using, an object-oriented approach to
  38. software engineering, you would get responses such as:
  39.  
  40.     - enhanced interoperability,
  41.  
  42.     - software solutions which are easily modified and extended,
  43.  
  44.     - simpler, more straightforward solutions, and 
  45.  
  46.     - better suitability for real-time systems.
  47.  
  48. However, probably the most common answer would be: enhanced reusability.
  49.  
  50. Like object-orientation, software reusability is very much
  51. misunderstood. Many people think that the pinnacle of software reuse
  52. is a "library of math functions." What most software professionals do
  53. not realize is that software reusability, like object-orientation,
  54. impacts everything, from management practices to software development
  55. standards, and much more.
  56.  
  57.              SOFTWARE REUSABILITY
  58.  
  59.     "Software components (routines), to be widely acceptable to
  60.     different machines and users, should be available in families
  61.     arranged according to precision, robustness, generality and
  62.     time-space performance. Existing sources of components --
  63.     manufacturers, software houses, users' groups and algorithm
  64.     collections -- lack the breadth of interest or coherence of
  65.     purpose to assemble more than one or two members of such
  66.     families, yet software production in the large would be
  67.     enormously helped by the availability of spectra of high
  68.     quality routines, quite as mechanical design is abetted by the
  69.     existence of families of structural shapes, screws, or
  70.     resistors."
  71.  
  72.     -- Doug McIlroy (in [Naur and Randell, 1969])
  73.  
  74.     "Specialists in every part of software have a curious vision
  75.     of the world: All parts of software but his are simple and
  76.     easily parameterized; his is totally variable."
  77.  
  78.     -- A. J. Perlis (in [Naur and Randell, 1969])
  79.  
  80.     "In talking about the implementation of software components,
  81.     the whole concept of how one designs software is ignored. Yet
  82.     this is the key thing."
  83.  
  84.     -- K. Kolence (in [Naur and Randell, 1969])
  85.  
  86.     "A comparison with our hardware colleagues is relevant."
  87.  
  88.     -- Peter Naur (in [Naur and Randell, 1969])
  89.  
  90.     "Reusable code is taken seriously in Japan and should be here
  91.     too. ... To me this is the most important branching point. In
  92.     the long run, it will determine which companies will stay in
  93.     business and which ones won't."
  94.  
  95.     -- Capers Jones (_ComputerWorld_, November 24, 1986, page 19)
  96.  
  97.     "The results of a California study proved that software
  98.     systems are highly redundant, with 75% of the application
  99.     code, 50% of the systems programs and 70% of
  100.     telecommunications programs sharing identical code or
  101.     functions."
  102.  
  103.     -- News item from _ComputerWorld_, November 24, 1986, page 19
  104.  
  105. One of my primary areas of interest is software reusability. I have
  106. conducted research on, taught courses about, and developed products
  107. using, software reusability technology. Here are some of the things I
  108. found:
  109.  
  110.     - Software practitioners often incorrectly limit their
  111.       definition of "software" to source code and object code. In
  112.       truth, software includes such things as:
  113.  
  114.         - code fragments
  115.  
  116.         - modules, i.e.:
  117.  
  118.             - subprograms, e.g., procedures, functions,
  119.               subroutines, paragraphs
  120.  
  121.             - larger collections, e.g., Smalltalk's
  122.               classes, Modula's modules, and Ada's
  123.               packages
  124.  
  125.         - large object-oriented entities, e.g., subsystems
  126.           ([Levy and Ripken, 1987] and [Rational, 1986])
  127.  
  128.         - scaffolding code (and documentation)
  129.  
  130.         - test data
  131.  
  132.         - plans, policies, standards, and procedures
  133.  
  134.         - products of analysis, design, and software quality
  135.           assurance efforts
  136.  
  137.     - Management and technical staff alike often avoid thinking
  138.       about software reuse until too late, i.e., the "coding
  139.       phase." They fail to realize that reusability impacts
  140.       everything including management, contracting and legal
  141.       issues, in-house development standards, and relationships
  142.       with subcontractors. (See, e.g., [Berard, 1987].)
  143.  
  144.     - Fortunately, delaying consideration of reusability issues
  145.       until the coding phase is far less disastrous than delaying
  146.       object-oriented considerations until the design and/or
  147.       coding phase.
  148.  
  149.     - Although many people pitch software reusability on the
  150.       grounds that it will "save money," both management and
  151.       technical staffers are seldom swayed by this argument --
  152.       even when presented with hard data to back up the argument.
  153.  
  154.     - Software reusability can have a very positive impact on
  155.       software reliability, software efficiency, and "time to
  156.       market."
  157.  
  158.     - Training is essential. Simply purchasing libraries of
  159.       reusable components (e.g., [Dusink and van Katwijk, 1987],
  160.       [Russell, 1987] and [Margono and Berard, 1987]) and/or
  161.       software reusability systems (e.g., [Burton et al, 1987])
  162.       does not guarantee their (proper) use.
  163.  
  164.     - The concepts of software reusability and object-oriented
  165.       technology are so intertwined that it is often difficult to
  166.       talk about one without mentioning the other, e.g., see
  167.       [Frankowski, 1986], [Johnson and Foote, 1988], [Meyer,
  168.       1987], [Schmucker, 1986], [St. Dennis et al, 1986], [Devanbu
  169.       and Bachman, 1989], and the panel ("Experiences With
  170.       Reusability") at the 1988 OOPSLA.
  171.  
  172.     - The major obstacles to software reusability are _not_
  173.       technical, they are primarily cultural. (See, e.g.,
  174.       [Carstensen, 1987] and [Tracz, 1987].)
  175.  
  176.              DOMAIN ANALYSIS: DEFINITIONS
  177.  
  178. If you study software reusability for a little while, you will
  179. probably encounter some discussion of "domain analysis." Here are two
  180. alternative definitions of domain analysis:
  181.         
  182.     "An investigation of a specific application area that seeks to
  183.     identify the operations, objects, and structures that commonly
  184.     occur in software systems within this area."
  185.         
  186.     -- Dan McNicholl (in [Booch, 1987])
  187.  
  188.     "Systems analysis states what is done for a specific problem
  189.     in a domain while domain analysis states what can be done in a
  190.     range of problems in a domain. ... A domain analysis is only
  191.     useful if many similar systems are to be built so that the
  192.     cost of the domain analysis can be amortized over the cost of
  193.     all the systems.
  194.         
  195.     "The key to reusable software is captured in domain analysis
  196.     in that it stresses the reusability of analysis and design,
  197.     not code."
  198.         
  199.     -- Jim Neighbors (in [Neighbors, 1980])
  200.  
  201. [Note Neighbors's emphasis on the importance of non-code software.
  202. (See, also [Arango, 1989].)]
  203.  
  204. In essence, "domain" in domain analysis refers to "application
  205. domain," e.g., graphical user interfaces, embedded missile
  206. applications, and decision support systems. The reason you are
  207. conducting an "analysis" is that you hope to identify reusable items
  208. within the domain, i.e., items which may be reused to build new
  209. applications which also fall within the same domain.
  210.  
  211. Grady Booch ([Booch, 1987]) offers the following definitions of
  212. horizontal and vertical domain analysis:
  213.  
  214.     "A horizontal domain analysis studies a number of different
  215.     systems across a variety of applications."
  216.  
  217.     "A vertical domain analysis studies a number of systems
  218.     intended for the same class of applications."
  219.  
  220. There are different types of domain analysis beyond simple vertical
  221. and horizontal approaches. In general, each type of domain analysis is
  222. distinguished by the types of reusable items which are being sought,
  223. e.g.:
  224.  
  225.     - "Functional domain analysis" seeks to identify reusable
  226.       items localized around functions, e.g., functions,
  227.       subroutines, procedures, and programs.
  228.  
  229.     - "Object-oriented domain analysis" seeks to identify reusable
  230.       items localized around objects e.g., classes, instances,
  231.       systems of objects, and subsystems.
  232.  
  233.             HISTORICAL BACKGROUND
  234.  
  235. Although the concept of domain analysis (like the concept of software
  236. reusability) has been around for decades, probably the first work of
  237. any significance in the area is documented in the doctoral thesis of
  238. Jim Neighbors ([Neighbors, 1980]). It was not, however, until 1985
  239. that the term "domain analysis" began showing up with any regularity
  240. in the literature, e.g., [Adelson and Soloway, 1985].
  241.  
  242. By 1988-89, there were quite a few articles on domain analysis, e.g.,
  243. [Iscoe, 1988], [Prieto-Diaz, 1988], and [Simos, 1988]. The way we
  244. think about domain analysis has also changed. For example, by 1987
  245. there was a recognized need for a formal approach to domain analysis
  246. (e.g., [RMISE, 1987]), and by 1989, proposed "formal" approaches did
  247. begin to appear (e.g., [Arango, 1989]).
  248.  
  249. In 1989, we began to see articles on object-oriented domain analysis.
  250. The first of these articles is [Shlaer and Mellor, 1989].
  251.  
  252. In this article, I will present a very brief introduction to
  253. object-oriented domain analysis. However, please note that, as with
  254. object-oriented requirements analysis (OORA) and object-oriented
  255. design (OOD), there is more than one school of thought on the process.
  256.  
  257.          DOMAIN ANALYSIS IS NOT A LIFE-CYCLE ACTIVITY
  258.  
  259. One of the first items one encounters in the study of domain analysis,
  260. is that it is _not_ a life-cycle activity. Specifically, an overall
  261. domain analysis effort goes on _in_ _parallel_ with the software
  262. life-cycles for the products which an organization produces and
  263. maintains. As we will see shortly, there is a synergistic relationship
  264. between the overall domain analysis effort and individual software
  265. projects.
  266.  
  267. Christine Youngblut (in [Booch, 1987]) details some of the reasons for
  268. keeping domain analysis separate from any specific project:
  269.  
  270.     - "When a component is developed in the context of some
  271.       system, it is difficult to abstract from the concerns of
  272.       that system to produce a truly flexible, unbiased
  273.       component."
  274.  
  275.     - "The additional requirements of a reusable component
  276.       (increased quality assurance, testing, flexibility, etc.)
  277.       mean that it is more expensive to produce than other
  278.       components, and this may not have been allowed for in the
  279.       project budgets and schedules."
  280.  
  281.     - "It may be difficult to recognize that a particular part is
  282.       highly reusable, and so many potentially useful components
  283.       may be ignored."
  284.  
  285. The relationship between the domain analysis effort and a given
  286. project is fairly simple:
  287.  
  288.     - the project may use components identified, created,
  289.       documented, tested, and quality assured by the domain
  290.       analysis effort. (These components, along with any necessary
  291.       supporting documentation, are placed in the organization's
  292.       component library.)
  293.  
  294.     - the domain analysis effort interacts with specific projects
  295.       to identify potentially reusable items which have been
  296.       produced as a result of development or modification efforts.
  297.         
  298.                WHAT IS A DOMAIN ANALYST
  299.  
  300. One of the rarest species of software professional is the domain
  301. analyst. The reason for their rarity is that they must
  302. _simultaneously_ possess all of the following characteristics:
  303.  
  304.     - They must be familiar with the specific application domain.
  305.       (This is a fairly easy requirement.)
  306.  
  307.     - They must be familiar with the concepts, ideas, or objects
  308.       which are to be considered for reuse. (If the domain analyst
  309.       is familiar with the application domain but does not have a
  310.       fundamental understanding of object-oriented concepts, he or
  311.       she will not be able to easily recognize an object when he
  312.       or she sees one.)
  313.  
  314.     - They must have excellent abstraction skills. (Any analyst
  315.       must be able to distinguish the general from the specific,
  316.       and between concepts and implementations.)
  317.  
  318.     - They must be versed in software reusability technology.
  319.       (Software reusability technology is _not_ trivial. For
  320.       example, can the analyst examine an object in isolation and
  321.       systematically determine if the object possesses a complete
  322.       set of operations, constants, and exceptions?)
  323.  
  324.                 STEPS IN OODA
  325.  
  326. Oversimplifying, the steps in an OODA effort are:
  327.  
  328.     - Define the domain
  329.  
  330.     - Define the types of objects which are to be considered for
  331.       reuse within the defined domain
  332.  
  333.     - Collect a representative sample of applications found in the
  334.       defined domain
  335.  
  336.     - Analyze the representative applications to identify reusable
  337.       components
  338.  
  339.     - Define reusability guidelines regarding the reusable components
  340.  
  341.     - Demonstrate reuse using the reusable components and the guidelines
  342.  
  343.     - Make recommendations
  344.  
  345. [Truth in advertising: True domain analysis is a never-ending process.
  346. Specifically, as long as an organization continues to develop and/or
  347. maintain software applications, the domain analysis effort will remain
  348. active. We will describe the steps here as if they were indeed
  349. sequential, however, in practice, each of these steps is more like an
  350. on-going activity.]
  351.  
  352. In the following discussions, "object" can be taken to mean one, or
  353. more, of the following: class, instance, metaclass, metaobject,
  354. subsystem, and system of objects.
  355.  
  356.              DEFINING THE DOMAIN
  357.  
  358. It is useful to define each domain as narrowly and as quantitatively
  359. as possible, because:
  360.  
  361.     - Identification of candidate applications which fall (or will
  362.       fall) within the domain will be easier.
  363.  
  364.     - Separation of domain-specific reusable objects from
  365.       non-domain-specific reusable objects will be easier.
  366.  
  367.     - In general, analysis of the domain, and the resulting
  368.       conclusions will be more meaningful.
  369.  
  370.           DEFINING THE OBJECTS WHICH WILL BE REUSED
  371.  
  372. To perform an adequate analysis, you must know the characteristics of
  373. the objects which you are trying to identify. The object-oriented
  374. domain analyst will have to deal with the following:
  375.  
  376.     - Original identification of the objects (For example, this
  377.       may require some object decoupling.)
  378.  
  379.     - Nomenclature (Once you find it, what are you going to call
  380.       it?)
  381.  
  382.     - Identification of hierarchies, sets, or other
  383.       organizations, (e.g., subclass-superclass relationships,
  384.       partial types, and subsystems.)
  385.  
  386.     - Configuration management (How will the reusable objects,
  387.       and information relating to the reusable objects, be
  388.       tracked?)
  389.  
  390.       COLLECTING A REPRESENTATIVE SAMPLE OF APPLICATIONS
  391.  
  392. This is a continually on-going effort and requires a careful analysis.
  393. The following must be considered:
  394.  
  395.     - Are the applications in the sample truly representative of
  396.       the applications in the domain, e.g., types, sizes, and
  397.       languages?
  398.  
  399.     - What is the likelihood that the applications in the sample
  400.       contain a representative collection of reusable objects?
  401.  
  402.     - Is there a high probability that future applications within
  403.       the domain will have the same characteristics?
  404.  
  405. [Note: When an organization first begins to use object-oriented
  406. technology, it is quite likely that any previously-existing
  407. applications were _not_ created in an object-oriented manner. Hence,
  408. the analysis of existing applications will require that the
  409. object-oriented domain analyst identify the _conceptual_ (as opposed
  410. to _physical_) objects in each application.]
  411.  
  412.             ANALYSIS OF THE SAMPLE
  413.  
  414. During the analysis of the representative sample of applications, the
  415. domain analyst must:
  416.  
  417.     - identify candidate reusable objects.
  418.  
  419.     - state why the objects are considered potentially reusable
  420.  
  421.     - identify variations on the objects which will also be
  422.       reusable
  423.  
  424.     - determine the percentage of a typical application which
  425.       might be constructed from the reusable objects
  426.  
  427.     - name, catalog, and otherwise apply configuration management
  428.       to the reusable objects
  429.  
  430.     - predict the relative usefulness of each object in terms of
  431.       future applications.
  432.  
  433. [Note: The most desirable form of reuse is reuse with _no_ changes.
  434. Until they are properly trained, project software engineers will
  435. probably _not_ be designing objects with reuse in mind. (Even after
  436. they are properly trained, project management may not allow them the
  437. resources (e.g., time) to correctly implement reusable objects.)
  438. Therefore, the domain analysts should not expect to find "complete"
  439. objects.More specifically, object-oriented domain analysts will often
  440. be expected to ensure that each object represents a complete
  441. abstraction. Further, the object-oriented domain analysts must make
  442. sure that each reusable object receives the proper amount of testing
  443. and quality assurance.]
  444.  
  445.            DEFINING REUSABILITY GUIDELINES
  446.  
  447. The domain analyst must provide software engineers with a set of
  448. meaningful guidelines for the reuse of the objects within the domain.
  449. For example the analyst should identify the criteria used to select an
  450. object for use in an application, and the trade-offs to be considered.
  451.  
  452.       DEMONSTRATIONS OF REUSE USING THE REUSABLE OBJECTS
  453.  
  454. At least one representative example of an application constructed
  455. using the reusable objects must be developed. (In truth, an on-going
  456. series of sample applications will have to be constructed.) In
  457. addition to the application itself, a report describing the the
  458. experiences of the developers, and the characteristics of reuse within
  459. the application must also be produced.
  460.  
  461.             MAKING RECOMMENDATIONS
  462.  
  463. Based on the guidelines, and on the results of the demonstration, the
  464. domain analyst must provide recommendations for incorporating the
  465. reusable objects into current and future projects. The recommendations
  466. may also include recommendations for changes in life-cycle approaches,
  467. policies, standards, and tools.
  468.  
  469.           DOMAIN ANALYSIS AND LIFE-CYCLE ACTIVITIES
  470.  
  471. Software reusability is a key consideration during the object-oriented
  472. life-cycle. The analyst must both reuse existing objects, _and_ create
  473. new ones in such a way that they can be easily reused. Some of the
  474. previously existing objects may very well have been created, not for
  475. any specific project, but as a normal product of domain analysis.
  476.         
  477. Object-oriented requirements analysis (OORA) and object-oriented
  478. design (OOD) are specific to a particular application within a domain.
  479. These processes, however, benefit from domain analysis in a number of
  480. ways:
  481.  
  482.     - Since domain analysis has already identified a number of
  483.       reusable objects within the domain, the analysts and the
  484.       designers can use this information to help guide the
  485.       analysis and design.
  486.  
  487.     - If done well, domain analysis will contribute significantly
  488.       to understanding how to design complete, robust objects.
  489.         
  490.     - If done well, domain analysis will have identified those
  491.       variations on an object that appear to be most useful within
  492.       the domain, e.g., concurrent forms.
  493.  
  494.     - Many of the same techniques used by the domain analyst can
  495.       be used by the analysts and designers to help identify the
  496.       objects within a specific application -- as well as helping
  497.       to understand the interactions of these objects.
  498.  
  499. As new applications are developed, new objects will be constantly
  500. uncovered. New relationships among new, and existing, objects will
  501. also be discovered. These new relationships will often suggest
  502. different and useful variations on the existing library of objects. In
  503. effect, the development and maintenance processes will be one of the
  504. most effective "feedback" mechanisms for domain analysis.
  505.  
  506. As usual, my message runneth over. Please forgive the length. Thank
  507. you for listening.
  508.  
  509.                  BIBLIOGRAPHY
  510.  
  511. [Adelson and Soloway, 1985]. B. Adelson and E. Soloway, "The Role of
  512. Domain Experience in Software Design," IEEE Transactions on Software
  513. Engineering, Vol. SE-11, No. 11, November 1985, pp. 1351 - 1360.
  514.  
  515. [Arango, 1989]. G. Arango, "Domain Analysis: From Art to Engineering
  516. Discipline," Proceedings of the Fifth International Workshop On
  517. Software Specification and Design, May 19-20, 1989, Pittsburgh,
  518. Pennsylvania, IEEE Computer Society Press, Washington, D.C., May 1989,
  519. pp. 152 - 159.
  520.  
  521. [Berard, 1987]. E.V. Berard, "Software Reusability Cannot Be
  522. Considered in a Vacuum," Digest of Papers COMPCON, Spring 1987, IEEE
  523. Catalog Number 87CH2409-1, Computer Society Order Number 764, Computer
  524. Society Press of the IEEE, Washington, D.C., pp. 390 - 393.
  525.  
  526. [Booch, 1987]. G. Booch, Software Components With Ada,
  527. Benjamin/Cummings, Menlo Park, California, 1987.
  528.  
  529. [Brown and Quanrud, 1988]. G.R. Brown and R.B. Quanrud, "The Generic
  530. Architecture Approach to Reusable Software," Proceedings of the Sixth
  531. National Conference on Ada Technology, March 14-18, 1988, U.S. Army
  532. Communications-Electronics Command, Fort Monmouth, New Jersey, pp. 390
  533. - 394.
  534.  
  535. [Burton et al, 1987]. B.A. Burton, R.W. Aragon, S.A. Bailey, K.D.
  536. Koehler, and L. A. Mayes, "The Reusable Software Library," IEEE
  537. Software, Vol. 4, No. 4, July 1987, pp. 25 - 33.
  538.  
  539. [Carstensen, 1987]. H.B. Carstensen, "A Real Example of Reusing Ada
  540. Software," Proceedings of the Second National Conference on Software
  541. Reusability and Maintainability, National Institute for Software
  542. Quality and Productivity, Washington, D.C., March 1987, pp.  B-1 to
  543. B-19.
  544.  
  545. [Chan, 1987]. Y.K. Chan, "Lessons in Software Reusability in Large
  546. Complex Software Systems," Proceedings of the Conference on Software
  547. Reusability and Portability, National Institute for Software Quality
  548. and Productivity, Washington, D.C., September 16-17 1987, pp. B-1 to
  549. B-7.
  550.  
  551. [Devanbu and Bachman, 1989]. P. Devanbu and R. Bachman, "OOPSLA
  552. Workshop on Domain Modeling in Software Engineering," New Orleans,
  553. Louisiana, 1989.
  554.  
  555. [Dusink and van Katwijk, 1987]. E.M. Dusink and J. van Katwijk,
  556. "Reflections on Reusable Software and Software Components," Ada
  557. Components: Libraries and Tools -- Proceedings of the Ada-Europe
  558. International Conference, Stockholm 26-28 May 1987, Edited by S.
  559. Tafvelin, Cambridge University Press, Cambridge, U.K., pp. 113 - 126.
  560.  
  561. [Fischer, 1987]. G. Fischer, "Cognitive View of Reuse and Redesign,"
  562. IEEE Software, Vol. 4, No. 4, July 1987, pp. 60 - 72.
  563.  
  564. [Frankowski, 1986]. E. N. Frankowski. "Why Programs Built from
  565. Reusable Software Should be Single Paradigm," Proceedings of the STARS
  566. Reusability Workshop, March 24-27, 1986.
  567.  
  568. [Iscoe, 1988]. N. Iscoe, "Domain-Specific Reuse: An Object-Oriented
  569. and Knowledge-Based Approach," in IEEE Tutorial: Software Reuse --
  570. Emerging Technology, Edited by W. Tracz, IEEE Computer Society Press,
  571. Washington, D.C., 1988.
  572.  
  573. [Johnson and Foote, 1988]. R. E. Johnson and B. Foote, "Designing
  574. Reusable Classes," Journal of Object-Oriented Programming, Vol. 1, No.
  575. 2, June/July 1988, pp. 22 - 35.
  576.  
  577. [Kaiser and Garlan, 1987]. G.E. Kaiser and D. Garlan, "Melding
  578. Software Systems from Reusable Building Blocks," IEEE Software, Vol.
  579. 4, No. 4, July 1987, pp. 17 - 24.
  580.  
  581. [Levy and Ripken, 1987]. P. Levy and K. Ripken, "Experience in
  582. Constructing Ada Programs from Non-Trivial Reusable Modules," Ada
  583. Components: Libraries and Tools -- Proceedings of the Ada-Europe
  584. International Conference, Stockholm 26-28 May 1987, Edited by S.
  585. Tafvelin, Cambridge University Press, Cambridge, U.K., pp. 100 - 112.
  586.  
  587. [Margono and Berard, 1987]. J. Margono and E.V. Berard, "A Modified
  588. Booch's Taxonomy for Ada Generic Data-Structure Components and Their
  589. Implementation," Ada Components: Libraries and Tools - Proceedings of
  590. the Ada-Europe International Conference, Stockholm 26-28 May 1987,
  591. Edited by S. Tafvelin, Cambridge University Press, Cambridge, U.K.,
  592. pp. 61 - 74.
  593.  
  594. [Matsumoto, 1984]. Y. Matsumoto. "Some Experiences in Promoting
  595. Reusable Software: Presentation in Higher Abstract Levels," IEEE
  596. Transaction on Software Engineering, Vol. SE-10, No. 5, September
  597. 1984, pp. 502 - 513.
  598.  
  599. [Meyer, 1987]. B. Meyer, "Reusability: The Case for Object-Oriented
  600. Design," IEEE Software, Vol. 4, No. 2, March 1987, pp. 50 - 64.
  601.  
  602. [Naur and Randell, 1969].  P. Naur and B. Randell, Editors, Software
  603. Engineering: Report on a Conference Sponsored by the NATO Science
  604. Committee, Garmisch, Germany, October 7-11, 1968.
  605.  
  606. [Neighbors, 1980]. J.M. Neighbors, "Software Construction Using
  607. Components," Technical Report 160, Department of Information and
  608. Computer Sciences, University of California, Irvine, 1980.
  609.  
  610. [Neighbors, 1984]. J.M. Neighbors, "The DRACO Approach to Constructing
  611. Software From Reusable Components," IEEE Transactions on Software
  612. Engineering, Vol. SE-10, No. 5, September 1984, pp. 564 - 574.
  613.  
  614. [Prieto-Diaz, 1988]. P. Prieto-Diaz, "Domain Analysis for
  615. Reusability," in IEEE Tutorial: Software Reuse -- Emerging Technology,
  616. Edited by W. Tracz, IEEE Computer Society Press, Washington, D.C.,
  617. 1988.
  618.  
  619. [RMISE, 1987]. Rocky Mountain Institute of Software Engineering,
  620. Workshop on Software Reuse -- Participant Proceedings, October 1987.
  621.  
  622. [Rational, 1986]. Rational, Inc., Large-System Development and
  623. Rational Subsystems, Document Control Number 6004, Rational, Inc.,
  624. Mountain View, California, November, 1986.
  625.  
  626. [Reilly, 1987]. A. Reilly, "Roots of Reuse," IEEE Software, Vol. 4,
  627. No. 1, January 1987, page 4.
  628.  
  629. [Russell, 1987]. G.E. Russell, "Experiences Implementing a Reusable
  630. Data Structure Component Taxonomy," Proceedings of the Joint Ada
  631. Conference, Fifth National Conference on Ada Technology and Washington
  632. Ada Symposium, U.S. Army Communications-Electronics Command, Fort
  633. Monmouth, New Jersey, pp. 8 - 18.
  634.  
  635. [Schmucker, 1986]. K.J. Schmucker, "Object Orientation," MacWorld,
  636. Vol. 3, No. 11, November 1986, pp. 119 - 123.
  637.  
  638. [Shlaer and Mellor, 1989]. S. Shlaer and S.J. Mellor, "An
  639. Object-Oriented Approach to Domain Analysis," Software Engineering
  640. Notes, Vol. 14, No. 5, July 1989, pp. 66 - 77.
  641.  
  642. [Simos, 1988]. M.A. Simos, "The Domain-Oriented Software Life-Cycle:
  643. Towards and Extended Process Model for Reusability," in IEEE Tutorial:
  644. Software Reuse -- Emerging Technology, Edited by W. Tracz, IEEE
  645. Computer Society Press, Washington, D.C., 1988.
  646.  
  647. [St. Dennis et al, 1986]. R. St. Dennis, P. Stachour, E. Frankowski,
  648. and E. Onuegbe, "Measurable Characteristics of Reusable Ada
  649. Software,"Ada Letters, Vol. VI, No. 2, March-April 1986, pp. 41 - 50.
  650.  
  651. [Standish, 1984]. T. A. Standish. "An Essay on Software Reuse," IEEE
  652. Transaction on Software Engineering, Vol. SE-10, No. 5, September
  653. 1984, pp. 494-497.
  654.  
  655. [Tracz, 1987]. W. Tracz, "Software Reuse: Motivators and Inhibitors,"
  656. Digest of Papers COMPCON, Spring 1987, IEEE Catalog Number 87CH2409-1,
  657. Computer Society Order Number 764, Computer Society Press of the IEEE,
  658. Washington, D.C., 1987.
  659.  
  660. [Woodfield et al, 1987]. S.N. Woodfield, D.W. Embley, and D.T. Scott,
  661. "Can Programmers Reuse Software?," IEEE Software, Vol. 4, No. 4, July
  662. 1987, pp. 52 - 59.
  663.  
  664. ----------------------------------------------------------------------------
  665. Edward V. Berard                                | Phone: (301) 417-9884
  666. Berard Software Engineering, Inc.               | FAX:   (301) 417-0021
  667. 101 Lake Forest Blvd., Suite 360                | E-Mail: eberard@bse.com
  668. Gaithersburg, Maryland 20877                    | 
  669. ----------------------------------------------------------------------------
  670.