This web page will change throughout the semester - please check it regularly
Description: Domain engineering, the key to systematic software reuse, has two phases--domain analysis and domain implementation. Domain analysis is the process of discovering and recording the commonalities and variabilities in a set of software systems. Domain implementation is the use of the information from domain analysis to create reusable assets and new systems within a domain. This course will cover topics in systematic reuse and domain engineering.
Grading: Exercises/Class Participation 12 pts, Midterm 30 points, Research proposal - 10 points, Project 48 points = 100 total points
The midterm will be given March 3
Final Projects will be due April 21
All coursework is subject to the Virginia Tech Honors System
Project -- Domain enginering using DARE for one of the following domains: software metrics, conflation algorithms, or one of your choice. Collect process metrics for your project such as:
-time for each step
-log of what you did
-product size/complexity metrics
Create one or more reusable components for your domain
and/or Create a little language for your domain
and/or Create an application generator for your domain
Research Proposal - Create a research proposal (project, thesis, or dissertation) concerning domain engineering and software reuse
Topics
1. Introduction
(revise and fill out survey - exercise)
Readings --
ReNews - Become familiar with this website
Frakes - Reuse Article
Frakes, W.B. and Kyo Kang, (2005), "Software Reuse Research: Status and Future", IEEE Transactions on Software Engineering, 31(7), July, pp. 529-536.
2. Domain Engineering - (aka product line
engineering)
(IR DE exercise)
Readings --
Frakes, W., R. Prieto-Diaz, & C. Fox,
(1998). DARE: Domain Analysis and Reuse Environment. Annals of Software
Engineering, 5, 125-141.
Alonso, O. (2003). Generating Text Search Applications
for Databases. IEEE Software, May/June, 98-105.
3. Reuse Libraries
(exercise: Starbucks faceted classification)
(exercise: search for reusable component)
Readings --
Frakes, W. B., & Gandel, P. (1990). Representing
Reusable Software. Information and Software Technology, 32(10), 47-54.
Frakes, W., & Pole, T. (1994). An Empirical
Study of Representation Methods for Reusable Software Components. IEEE
Transactions on Software Engineering.
A.Mili, R.Mili , and R.Mittermeir, "A Survey
of Software Reuse Libraries," Annals Software Eng., Vol. 5, 1998, pp. 349-414
4. Reuse Design
(reusable sort exercise)
Latour, L., Wheeler, T., Frakes, B., "Descriptive
and predictive aspects of the 3C's model: SETA1 working group summary.",
Ada Letters,XI, 3, (Spring 1991), pp. 9-17.
Craig Hollenbach, William Frakes , Software
Process Reuse in an Industrial Setting, 4th International Conference on
Software Reuse (ICSR '96). April 23 - 26, 1996. Pp. 22-30
5. Architectures -
(exercise - modify a design notation for reuse)
Software Architecture - Wikipedia
Readings -- Shaw and Garlan - Ch.1
Design Patterns - Wikipedia
Design Anti-Patterns - Wikipedia
6. Programming Languages
(write a little language for bivariate graphs
- exercise)
Bentley, "Little languages", Communications
of the ACM, 29(8):711-21, August 1986.
Stroustrup, B. (1996). Language-technical
aspects of reuse. In 4th International Conference on Software Reuse
(ICSR '96), (pp. 11-19). Orlando, FL: IEEE CS Press.
7. Generative Methods
(exercise - scrabble - Cleaveland)
Readings -- Cleaveland-ch1, Czarnecki-Ch1
Optional Extra Reading--
MetaTool Metacompiler article
8. Measurement and experimentation
(exercise - measure reuse in ccount)
Readings --
Frakes, W. (1993). Software Reuse as Industrial
Experiment. American Programmer, 6(9), 27-33.
Frakes, William B. and Christopher J. Fox.
"Sixteen Questions about Software Reuse" CACM, 38(6) pp. 75-87 , 1995.
Frakes, William and Carol Terry. "Software
Reuse: Metrics and Models." ACM Computing Surveys 28(2), pp. 415-435, 1996.
9. Reliability and Safety
(exercise - how would you prevent the Therac
disaster?)
Readings --
Frakes and Tortorella, Foundational Issues in Software Reuse and Reliability
Jezequel, J.-M., & Meyer, B. (1997). Design by Contract: The Lessons of Ariane. IEEE Computer, 30(1), 129-130.
Reuse and Safety Panel Slides
Favaro Slides
Rodriguez Slides
10. Business and Economics
(exercise - use Gaffney and Durek model)
Readings --
Favaro, J. (1991). What price reusability? A case study. Ada Letters,
11(3),
115-24.
Lim ch1
11. Re-Engineering for Reuse
(exercise: turn ccount into objects)
Readings --
Arnold, Robert S. and Frakes, William B., "Software
Reuse and Reengineering", CASE Trends, February 1992, pp. 44-48.
Dunn, M., & Knight, J. (1991). Software
Reuse in an Industrial Setting: A Case Study. In Proceedings 13th International
Conference on Software Engineering, (pp. 329-338).
Suryanarayanan, L., & Frakes, W. B. Re-engineering
with reuse: a case study.
12. Summary
Frakes, W., "A Case Study of a Reusable Component
Collection in the Information Retrieval Domain", Journal of Systems and
Software 2004, (Volume 72, Number 2) pp. 265-270.
References
Czarnecki, K., & Eisenecker, U. W.
Generative
programming: methods, tools, and applications.
New
York: ACM Press/Addison-Wesley Publishing
Co.
Cleaveland, J. C. (2001).
Program
Generators with XML and Java. Englewood
Cliffs, NJ: Prentice-Hall.
ICSR
Leveson, N. Safeware: System Safety and Computers, Addison-Wesley,
1995)
Lim, Wayne, Managing Software Reuse : A Comprehensive Guide to Strategically
Reengineering the Organization for Reusable Components Prentice Hall
PTR; ISBN: 0135523737; (July 1998)
Pole, T. (1992). Recovering the Implicit Reusable Objects from a Non-Object
Oriented Implementation. In 3rd Reverse Engineering Forum, Northeastern
University Burlington, Massachusetts, USA:
Mary Shaw and David Garlan, Software Architecture: Perspectives on
an Emerging Discipline, Prentice-Hall, 1996, ISBN 0-13-182957-2.