Course Title: Software Reuse - Product Line approach

Course duration:                2 days, 6 hours per day

Course instructor: Stan Jarzabek, stan@comp.nus.edu.sg

Synopsis of course objective and contents

The objective of this course is to familiarize attendees with practicalities and latest trends in software reuse. I shall emphasize a software Product Line approach to reuse. A software Product Line comprises a family of similar systems (for example, payroll systems). Systematic, reuse-based development and maintenance of Product Lines emerges as one of the most promising ways to increase software productivity and quality. The course will cover topics of domain analysis for reuse and design techniques for generic software architectures for Product Lines. Recent trends in component-based software engineering (using platforms such as DCOM/ActiveXÔ or JavaBeansÔ) will be assessed in the context of  Product Lines and the relationship between components-based and generative approaches will be examined. Presented concepts will be illustrated with the case study.

While the course focuses on the technical aspects of reuse, some managerial aspects of implementing reuse in a company will also be covered. I shall discuss typical scenarios for practicing reuse, how to make the first step in establishing reuse practice in a company and how to incrementally progress towards more advanced reuse solutions, that bring more substantial productivity gains.

After the course, attendees will be able to identify reuse opportunities in their software projects, plan the reuse implementation programme and carry it out.

Who should attend

¨      Academic faculty and students with interest in software design

¨      Software practitioners, Project Leaders, Analysts and Designers

¨      Managers responsible for software productivity an quality

¨      Managers responsible for software technology evaluation and adoption

Attendees are expected to have understanding of basic software design problems (gained, for example, through participation in a medium size software project).

 Keywords: software reuse, Product Lines, generic software architectures, component-based software engineering, domain modeling.


Course Outline

I.  Introduction to software reuse

1.      motivation for software reuse

2.      an overview of reuse issues: what can we reuse?

3.      building a reuse framework in a company

a)             identifying, classifying and documenting reusable assets

b)             organizing a repository of reusable assets

c)             managing reusable assets, reuse tools

4.      obstacles to effective reuse

II.  Systematic, reuse-based support for software Product Lines

1.      domain engineering and reuse-based system engineering

2.      a Domain-specific Software Architecture (DSSA) approach

3.      identifying candidate domains

4.      software architectures and their role in reuse

5.      construction-time versus runtime software architectures

6.      component-based software engineering and distributed component platforms such as DCOM/ActiveXÔ, JavaBeansÔ or CORBA implementations

III.  Domain analysis

1.      techniques for modeling commonalties and variations in a domain

2.      case study: modeling a Facility Reservation System domain

3.      open problems in domain modeling

IV.  Design of generic architectures for software Product Lines

1.         review of software engineering techniques for handling Product Lines:

a)             information hiding

b)             pre-processing, configuration management, PCL

c)             OO frameworks

d)             frame technology (P. Bassett)

e)             table-driven techniques

f)               generative techniques

2.         architectural support for Product Lines

3.         customization of a generic architecture during system engineering

4.         identifying component candidates of a generic architecture

5.         evolving a generic architecture

6.         case study: a generic architecture for a family of Facility Reservation Systems

a)             a component-based generic architecture

b)             use of generative techniques for customization and evolution of a generic architecture

7.         open problems in design of generic architectures

V.  Putting reuse into practice

1.      reuse styles (opportunistic, systematic)

2.      reuse process

3.      the impact of reuse on company structure and development practice

4.      scenarios for implementing a reuse programme in a company

Page maintained by: Damith C. Rajapakse