CS 6704 -- Advanced Topics in Software Engineering
Domain Engineering and Systematic Reuse

Spring 2006

Virginia Tech - Computer Science

Prof. W. Frakes

Course Hours: Friday  4:00-6:45 (First Class - January 20) Room 325

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.

Design rules from WISR

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.

FOSS Reuse Metrics

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.

Therac_25

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

ReNews,

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.

WISR