article

Achieving extensibility through product-lines and domain-specific languages: a case study

Published:01 April 2002Publication History

Abstract

This is a case study in the use of product-line architectures (PLAs) and domain-specific languages (DSLs) to design an extensible command-and-control simulator for Army fire support. The reusable components of our PLA are layers or "aspects" whose addition or removal simultaneously impacts the source code of multiple objects in multiple, distributed programs. The complexity of our component specifications is substantially reduced by using a DSL for defining and refining state machines, abstractions that are fundamental to simulators. We present preliminary results that show how our PLA and DSL synergistically produce a more flexible way of implementing state-machine-based simulators than is possible with a pure Java implementation.

References

  1. FSATS 1999. "System Segment Specification (SSS) for the Fire Support Automated Test System", Applied Research Laboratories, The University of Texas. See URL http://www. arlut.utexas.edu/fsatswww/fsats.shtml.]]Google ScholarGoogle Scholar
  2. BATORY, D. AND O'MALLEY, S. 1992. The Design and Implementation of Hierarchical Software Systems with Reusable Components. ACM Trans. Softw. Eng. Methodol. (Oct.).]] Google ScholarGoogle Scholar
  3. BATORY, D., COGLIANESE, L., GOODWILL, M., AND SHAFER, S. 1995. Creating Reference Architectures: An Example from Avionics. Symposium on Software Reusability, Seattle, WA. (Apr.).]] Google ScholarGoogle Scholar
  4. BATORY, D., LOFASO, B., AND SMARAGDAKIS, Y. 1998. JTS: Tools for Implementing Domain- Specific Languages. 5th International Conference on Software Reuse, Victoria, Canada (June). http://www.cs.utexas.edu/users/schwartz/JTS30Beta2.htm.]] Google ScholarGoogle Scholar
  5. BATORY, D. AND GERACI, B. J. 1997. Composition Validation and Subjectivity in GenVoca Generators. IEEE Trans. Softw. Eng. (Feb.), 67-82.]] Google ScholarGoogle Scholar
  6. BATORY, D. 1998. Product-Line Architectures. Smalltalk and Java Conference, Erfurt, Germany (Oct.).]]Google ScholarGoogle Scholar
  7. BATORY, D., SMARAGDAKIS, Y., AND COGLIANESE, L. 1999. Architectural Styles as Adaptors. Software Architecture, Patrick Donohoe, ed., Kluwer Academic Publishers.]] Google ScholarGoogle Scholar
  8. BATORY, D., CHEN, G., ROBERTSON, E., AND WANG, T. 2000. Design Wizards and Visual Programming Environments for GenVoca Generators. IEEE Trans. Softw. Eng. (May), 441-452.]] Google ScholarGoogle Scholar
  9. BAXTER, I. 1992. Design Maintenance Systems. CACM (Apr.).]] Google ScholarGoogle Scholar
  10. BERRY, G. AND GONTHIER, G 1992. The Esterel Synchronous Programming language: Design, Semantics, and Implementation. Science of Computer Programming. 87-152.]] Google ScholarGoogle Scholar
  11. BOSCH, J. 1999. Product-Line Architectures in Industry: A Case Study. ICSE, Los Angeles, CA.]] Google ScholarGoogle Scholar
  12. CARDONE, R. AND LIN, C. 2001. Comparing Frameworks and Layered Refinement. ICSE Toronto.]] Google ScholarGoogle Scholar
  13. CHIDAMBER S. R. AND KEMERER, C. F. 1991. Towards a Metrics Suite for Object Oriented Design. OOPSLA.]] Google ScholarGoogle Scholar
  14. CZARNECKI, K. AND EISENECKER, U. W. 1999. Components and Generative Programming. ACM SIGSOFT.]] Google ScholarGoogle Scholar
  15. VAN DEURSEN, A. AND KLINT, P. 1997. Little Languages: Little Maintenance? SIGPLAN Workshop on Domain-Specific Languages.]]Google ScholarGoogle Scholar
  16. EICK, S. G., GRAVES, T. L., KARR, A. F., MARRON, J. S., AND MOCKUS, A. 2001. Does Code Decay? Assessing the Evidence from Change Management Data. IEEE Trans. Softw. Eng., 27:1 (January), 1-12.]] Google ScholarGoogle Scholar
  17. ELLSBERGER, J., HOGREFE, D., AND SARMA, A. 1997. Formal Object-Oriented Language for Communicating Systems. Prentice-Hall, Englewood Cliffs, NJ.]]Google ScholarGoogle Scholar
  18. FINDLER, R. B. AND FLATT, M. "Modular Object-Oriented Programming with Units and Mixins", ICFP 98.]] Google ScholarGoogle Scholar
  19. GAMMA E., HELM, R., JOHNSON, R., AND VLISSIDES, J. 1995. Design Patterns Elements of Reusable Object-Oriented Software. Addison-Wesley, Reading, Massachusetts.]] Google ScholarGoogle Scholar
  20. GOGUEN, J. A. 1986. Reusing and Interconnecting Software Components. IEEE Computer (Feb.).]] Google ScholarGoogle Scholar
  21. GOMAA, H., KERSCHBERG, L., AND SUGAMARAN, V. 1992. A Knowledge-Based Approach to Generating Target System Specifications from a Domain Model. IFIP Congress 1, 252-258.]] Google ScholarGoogle Scholar
  22. GRISS, M. 2000. Implementing Product-Line Features by Composing Component Aspects. First International Software Product-Line Conference, Denver, CO. (Aug.).]] Google ScholarGoogle Scholar
  23. HAREL, D. 1987. Statecharts: A Visual Formalism for Complex Systems, Science of Computer Programming, 231-274.]] Google ScholarGoogle Scholar
  24. HAREL, D. AND GERY, E. 1996. Executable Object Modeling with Statecharts. ICSE.]] Google ScholarGoogle Scholar
  25. KANG, K. C., COHEN, S. G., HESS, J. A., NOVAK, W. E., AND PETERSON, A. 1990. Feature-Oriented Domain Analysis Feasibility Study, SEI. Technical Report CMU/SEI-90-TR-21 (Nov.).]]Google ScholarGoogle Scholar
  26. KICZALES, G., LAMPING, J., MENDHEKAR, A., MAEDA, C., LOPES, C., LOINGTIER, J., AND IRWIN, J. 1997. Aspect-Oriented Programming, ECOOP. 220-242.]]Google ScholarGoogle Scholar
  27. LOPEZ-HERREJON, R. E. AND BATORY, D. 2001. A Standard Problem for Evaluating Product-Line Methodologies. Third International Conference on Generative and Component-Based Software Engineering (GCSE 2001), (Sept. 9-13), Messe Erfurt, Erfurt, Germany.]] Google ScholarGoogle Scholar
  28. MAGNAVOX, 1999. System Segment Specification (SSS) for the Advanced Field Artillery Tactical Data System (AFATDS).]]Google ScholarGoogle Scholar
  29. NEIGHBORS, J. 1989. Draco: A Method for Engineering Reusable Software Components, in T. J. Biggerstaff and A. Perlis, eds., Software Reusability, Addison-Wesley/ACM Press.]] Google ScholarGoogle Scholar
  30. NEIGHBORS, J. 1997. "DataXfer Protocol," BayFront Technologies. 1997, URL http://bayfronttechnologies.com.]]Google ScholarGoogle Scholar
  31. REENSKAUG, T., ET AL. 1992. "OORASS: Seamless Support for the Creation and Maintenance of Object-Oriented Systems", Journal of Object-Oriented Programming, 5(6) (Oct.), 27-41.]]Google ScholarGoogle Scholar
  32. RICH, C. AND WATERS, R. C. 1990. The Programmer's Apprentice, ACM Press.]] Google ScholarGoogle Scholar
  33. Software Engineering Institute 2001. The Product Line Practice (PLP) Initiative, URL http://www.sei.cmu.edu/plp/plp init.html.]]Google ScholarGoogle Scholar
  34. SIMONYI, C. 1995. The Death of Computer Languages, the Birth of Intentional Programming, NATO Science Committee Conference.]]Google ScholarGoogle Scholar
  35. SMARAGDAKIS, Y. AND BATORY, D. 1998. Implementing Layered Designs with Mixin Layers, ECOOP.]] Google ScholarGoogle Scholar
  36. SMARAGDAKIS, Y. AND BATORY, D. 2002. Mixin Layers: An Object-Orinted Implementation Technique for Refinements and Collaboration-Based Designs. ACM Trans. Softw. Eng. Method.]] Google ScholarGoogle Scholar
  37. TARR, P., OSSHER, H., HARRISON, W., AND SUTTON, S. M. JR. 1999. N Degrees of Separation: Multi- Dimensional Separation of Concerns, ICSE.]] Google ScholarGoogle Scholar
  38. TAYLOR, R. 1999. Panel on Software Reuse. Motorola Software Engineering Symposium, Ft. Lauderdale.]]Google ScholarGoogle Scholar
  39. TOKUDA, L. AND BATORY, D. 1999. Evolving Object-Oriented Architectures with Refactorings. Conference on Automated Software Engineering, Orlando, FL.]] Google ScholarGoogle Scholar
  40. VAN HILST, M. AND NOTKIN, D. 1996. Using Role Components to Implement Collaboration-Based Designs, OOPSLA, 359-369.]] Google ScholarGoogle Scholar
  41. WEISS, D. M. AND LAI, C. T. R 1999. Software Product-Line Engineering. Addison-Wesley.]] Google ScholarGoogle Scholar

Index Terms

  1. Achieving extensibility through product-lines and domain-specific languages: a case study

                Reviews

                Glen B Alleman

                Anyone interested in the current discussion of “agile development” supported by refactoring will find this paper interesting and useful. The paper describes an example of applying layered development methods to a complex, real-time, rapidly changing requirements environment. This case study shows how software refactoring can be enhanced using abstractions of interfaces and domain-specific languages. The legacy fire support automated test system (FSATS) was redesigned to provide extensibility, using GenVoca. Although GenVoca and aspect-oriented programming (AOP) have different starting points, they both begin with some encapsulated representation of system function, and both provide a mechanism to define and apply large-scale refinements. The GenVoca system implemented in the Jakarta Tool Suite, along with a domain–specific language, is used to declare and define the state machines that form the core of the FSATS simulator. The extension of these state machines is the motivation for the GenVoca tool. A detailed description of the legacy simulator, and of the changes made to provide extensibility, occupies the majority of the paper. Some background reading in aspect-oriented programming concepts, the GenVoca system, and layer distributed object systems is needed to gain value from the paper. Once these concepts and terminology are acquired, a second reading reveals deeper insight into the process of designing a layered state-driven system using automated tools. Examples of Java State Machine (JavaSM) declarations are provided. Refinements of these state machines, the refactoring processes, and their impacts on the overall system design provide the reader with detailed examples of how GenVoca is used to create a unique software development environment. Although the paper describes techniques used for building state-driven simulators, systems of this type can be found in other domains, including workflow processing, telecommunications, and business transaction processing. By directly implementing the state specifications in JavaSM, the conceptual distance between specification and implementation was reduced. This approach is the motivation behind many of today’s modern software development methods. Here is a nontrivial example of how this can be done. Online Computing Reviews Service

                Access critical reviews of Computing literature here

                Become a reviewer for Computing Reviews.

                Comments

                Login options

                Check if you have access through your login credentials or your institution to get full access on this article.

                Sign in

                Full Access

                PDF Format

                View or Download as a PDF file.

                PDF

                eReader

                View online with eReader.

                eReader
                About Cookies On This Site

                We use cookies to ensure that we give you the best experience on our website.

                Learn more

                Got it!