Welcome to:

Course CS6201: Software Reuse

January 2008

This page contains  the following course information:

Course instructors     Course schedule     Latest News   Course objective     Prerequisites   

Presentations   Project    

Grading policy     Lecture outline     

                        Tools for the Project                FAQ

                             Readings for the course (download sources via links, start reading immediately and continue during the course)

To download lecture notes:               Lecture Notes              PAPERS 

Course Instructor

JARZABEK, Stanislaw, S15-06/08, ext. 2863, 96255863, e-mail:

Course schedule

Lectures: Tuesdays 16:00-18:00 COM1/212, first lecture: January 15, 2008

Consultation Hours: Tuesdays 14:00 - 16:00, in my office, S15-06/08

Exam: 5 MAY 2008 Morning

Detailed course plan, updated: March 12, 2008

week

Student presentations

special events / deadlines

Feb 6

 

e-mail one-page project description

Feb 12

 

presentation will be at later date

 

Feb 19

Aspect-Oriented Programming (AOP), by Sim Weiqiang Alfred  and  Quak Yew Chong 

Guest lecture by Ulf Pettersson of STEE

 

Feb 23 - 29

Recess week

 

March 4

Experiences with product line approach, by Shanti Prakash and Thomas Chee

project draft due

XVCL Workbench demo

March 11

Annotations in Java and their use in EJB3.0 and JBOSS AOP, by: Bogdan Marius TUDOR, Cristina CARBUNARU

 

March 18

Pattern-driven development on .NET or JEE , by Tan Lay Cheng and Yinxing

2nd Hour: Guest lecture by Ulf Pettersson of STEE “Reuse Journey with ST Electronics Common Application Platform”, 30 minutes

March 25

Web technologies: Service-Oriented Architecture, by Daya Sakti Nawa Kartika and Zhang Jisong

 

April 1

Model-Driven Development (MDD), by Heng Boon Kui and Suriya Priya Asaithambi

 

April 8

Software Configuration Management (SCM) support for reuse and product lines, by Leng Kian Jin, Edmund and  Choo Zhi Min

last lecture

April 15

 

 

April 22

 

final project report due

Latest News:

Posted April 15:

Readings for the exam: reading-exam 08.htm

Correction to Question 1 in exam 2004:  Correction Q1-exam-04.doc

Posted March 31:

Please download lecture notes set #6 (last one) from Lecture Notes 

Posted February 21:

As mentioned during the lecture, here is paper about IBM’s research on Multi-Dimensional Separation of Concerns

Paper Web spaghetti code for 21st century

Updated Presentations assigned to students to be in sync with changes in presentation schedule.

In case you have not done so, please read these sources in coming two weeks:

P. Jensen “Experiences with Product Line Development of Multi-Discipline Analysis Software at Overwatch Textron Systems,” 11th International Software Product Line Conference, SPLC 2007, Sept. 2007, pp. 35 - 43

Deelstra, S., Sinnema, M. and Bosch, J. “Experiences in Software Product Families: Problems and Issues during Product Derivation,”  Proc. Software Product Lines Conference, SPLC3, Boston, Aug. 2004, LNCS 3154, Springer-Verlag, pp. 165-182

Cordy, J.R. “Comprehending Reality: Practical Challenges to Software Maintenance Automation”, Proc. 11th Int. Workshop on Program Comprehension, IWPC’03, Portland, Oregon, May 2003, pp. 196-206 (keynote)

Reading about Aspect-Oriented Programming for all students to read: http://www.javaworld.com/javaworld/jw-01-2002/jw-0118-aspect.html

Conventional method support for managing changes during maintenance and evolution

Software similarities: symptoms and causes

Mixed-strategy approach to generic design

Krueger, C. “Eliminating the Adoption Barrier,” Point-Counter Point Column, in IEEE Software, special issue on Initiating Software Product Lines, July/August 2002, pages 28-31 http://www.biglever.com/papers/PointCounterPoint.pdf

Posted February 14, 2008

I updated the detailed course plan, above.

Please make comments on student presentations and enter into this form Student presentation marks.xls

Return the form to me at the end of the course.

If everything goes fine, the last lecture is April 8, nor April 15 (somehow I missed March 4 from my schedule).

Posted February 11, 2008

Please download lecture notes set #4 and set #5 from Lecture Notes 

We will discuss Web Applications, set#5, on Tuesday Feb 12,

but please bring also set #4.

Posted February 5, 2008

Very interesting comments by P. Clements (SEI) on PL and other approaches:

http://www.sei.cmu.edu/news-at-sei/columns/software-product-lines/software-product-lines.htm  

Posted January 30, 2008

Presentations assigned to students

I will be updating the above file as I hear from the students about presentation topics. Please check the updates before you send your topic selection.

Posted January 25, 2008

You can download lecture notes set #3 from Lecture Notes 

Posted January 7, 2008

If you plan to take the course, it is advisable that you start reading Readings for the course as you can.

You can download lecture notes set #1 and #2 from Lecture Notes   (Set #1 and #2 are available)

Let me know if you find any broken links, especially in Readings for the course

----- End of Latest News ----

Course objective

The objective of the course is to familiarize students with principles, practicalities and key research issues in software reuse and, in particular, a Product Line approach to reuse. This course is based on lecture notes and reading of selected chapters from books and papers. Topics include principles of software design, design for reuse, software Product Lines, domain engineering, component-based software engineering, generative techniques and industrial case studies. In recent decades, we have observed proliferation of many trends in software technology, making promises that have remained mostly unfulfilled. The course will emphasize the interplay between some of those trends and the way they contribute to the overall goal of improving software quality and productivity. Active participation of students in project, discussions and research topic presentations is expected.  Students are exposed to mixed-strategy reuse approach, in which conventional OO and component-based techniques are complemented with meta-programming technique of XVCL (xvcl.comp.nus.edu.sg). Mixed-strategy achieves considerably higher rates of reuse than conventional methods alone.

Prerequisites

Students attending the course should:

  • have interest in software engineering and software development methods,
  • be familiar with software engineering principles (such as modularization, information hiding, etc.) and
  • have some programming experience and understanding of software design problems.

Conduct of the course

During first four weeks of the term, the instructor will provide motivation and background for studying reuse.

In the remaining weeks, there will be a lecture followed by student presentations and discussion. Finally, you will do a project.

Students should read sources provided at: Readings for the course

Presentations in the class

Here is a list of Presentations assigned to students

During presentations, we shall study topics in software reuse based on topics for presentations. You can also propose your own topic for presentation provided it is related to the theme of the course, requires approval of  course instructor.

Depending on the number of students, presentations will be done either individually or in teams. There should be maximum 9 teams, giving one-hour presentations. You will choose your topic for the presentation in the second week of the course, once we know the exact number of students registered in the course.

By January 24: Form presentation teams and let me know your selected topic for presentation (based on topics for presentations) by sending e-mail as follows:

Topic number  and title                                                                                                                                                       

Team name

student matric number

student name

e-mail

etc.

 

 

The first presentation will be on the 5th week of the course.

Important: before presentation:

Read guidelines in: Conduct of the Presentations

Send presentation slides (PDF) to the instructor or to all course participants one day before your presentation.

Position papers

 I strongly recommend that after each class your write a brief position paper (1/2-1 page) for each topic discussed during lectures and student presentations. In a position paper, summarize what you have learnt, provide your own comments, point out controversial issues, indicate open problems, etc. You will find position papers very useful at the end of the course and during exam preparation. You do not submit positions to the instructor.

Project See  Project Details 

Project is to give students hands on experience in implementing reusable software. You will use a generative technique of XVCL developed in our lab, along with conventional reuse mechanisms of  OO and component-based techniques.

You will do projects in teams (preferably the same as presentation teams), or you may choose to do a project individually, up to you.

Project schedule, milestones and deliverables

Due date

Deliverable

February 6

 

Send by e-mail :

Project teams (if different from presentation team)

e-mail to me:

Team name

Team members

student matric number

student name

e-mail

etc.

 

 

One-page project description

March 4

 

Draft Project Report

send by e-mail                                 

Draft Project will not be marked based on the contents. Based on the Draft Report, I will provide you with feedback on the project progress.

Describe the work accomplished. Highlight problems.

If there are changes to project objective, scope, deliverables and/or project schedule, please describe.

April 22

 

Final Project Report    

send by e-mail and also hand in hardcopy to my office S15-06/08

The final project report will be marked based on the contents, clarity, originality and quality of the XVCL solution and project documentation.

Project mark is computed as follows:

1.      Draft Project Report: For a Draft Report submitted on time, you will get 3 marks out of the 30 marks for the whole project. Late drafts will be accepted, but you do not get 3 marks.

2.      The Final Project Report: The penalty for the late final project is 2 marks for each day (excluding Sundays and public holidays) the report is late.

Grading policy

A final grade for the course will be derived as follows:

  • team project - 30%,
  • presentation and participation in discussions – 10%; presentation will be marked by other students (5%) and by the instructor (5%).
  • final exam - 60%.

Exam questions will be related to the lectures, project, and presentations.

References 

I placed books on RBR in the Central Library for your reference, in case you have special interest in certain topics:

Readings for the course

XVCL and its applications are described in Part II of the book Jarzabek, S. Effective Software Maintenance and Evolution: Reused-based Approach, Auerbach, CRC Press Taylor and Francis, May 2007

The book available in the Forum CO-OP. Selected chapters (in draft form) you can download via links below.

Book chapters and papers related to lectures on product lines, XVCL and general reading . You can download all the papers via links, read as you like.

Read before and during first two lecture weeks: XVCL briefing,(Lecture Notes set #2)

XVCL technology summary

Highlight of XVCL as a variability management mechanism for software Product Lines

Controlling Software Complexity by Unifying Similarity Patterns

Selected chapters from Effective Software Maintenance and Evolution: Reused-based Approach (not for wide distribution):

Conventional method support for managing changes during maintenance and evolution

Mixed-strategy approach – an overview

XVCL Tutorial

Step-by-step introduction to XVCL

Problem of similarity patterns and generic design (Lecture Notes set #3):

Selected chapters from Effective Software Maintenance and Evolution: Reused-based Approach (not for wide distribution):

Software similarities: symptoms and causes

Mixed-strategy approach to generic design

[1]               Jarzabek, S. “Applying Generative Programming Technique to Unify Software Similarity Patterns ,” description of similarity pattern problem and generic design, taking into account a number of empirical studies. 

[2]               Jarzabek, S. Genericity -  a “Missing in Action” Key to Software Simplification and Reuse,”

[3]               Basit, H.A., Rajapakse, D.C., and Jarzabek, S. “Beyond Templates: a Study of Clones in the STL and Some General Implications,” Int. Conf. Software Engineering, ICSE’05, St. Louis, USA, May 2005, pp. 451-459

Reading on product line projects  with XVCL and Web applications:

Chapter  from Effective Software Maintenance and Evolution: Reused-based Approach (not for wide distribution):

Summary of projects with mixed-strategy approach

[1]               Pettersson, U., and Jarzabek, S. “Industrial Experience with Building a Web Portal Product Line using a  Lightweight, Reactive Approach,” ESEC-FSE'05, European Software Engineering Conference and ACM SIGSOFT Symposium on the Foundations of Software Engineering, ACM Press, September 2005, Lisbon, pp. 326-335

[2]             Zhang, H. and Jarzabek, S. "A Mechanism for Handling Variants in Software Product Lines," a special issue on Software Variability Management of Elsevier’s journal Science of Computer Programming; this paper covers the whole product line lifecycle, using CAD product line as an example

[3]               Zhang, W. and Jarzabek, S. “Reuse without Compromising Performance: Experience from RPG Software Product Line for Mobile Devices,”  9th Int. Software Product Line Conference, SPLC’05, September 2005, Rennes, France, pp. 57-69

Other chapters from Effective Software Maintenance and Evolution: Reused-based Approach (not for wide distribution):

Other techniques related to XVCL

Evaluation of the mixed-strategy approach

Problem of similarity patterns in software in Web Applications (Lecture Notes sets #5):

[1]               Rajapakse, D.C and Jarzabek, S. “An Investigation of Cloning in Web Portals,Int. Conf. on Web Engineering, ICWE’05, July 2005, Sydney, pp. 252-262 (also poster at WWW’05)

[2]               Yang, J. and Jarzabek, S. “Applying a Generative Technique for Enhanced Reuse on J2EE Platform,” 4th Int. Conf. on Generative Programming and Component Engineering, GPCE'05, Sep 29 - Oct 1, 2005, Tallinn, Estonia, pp. 237-255

[3]               Rajapakse, D.C. and Jarzabek, S. “Practical Limits of Applying Dynamic Page Generation Techniques in Web Application Design: a Trade-off Analysis,” ICSE 2007

General papers, read any time during the course:

[1]               P. Jensen “Experiences with Product Line Development of Multi-Discipline Analysis Software at Overwatch Textron Systems,” 11th International Software Product Line Conference, SPLC 2007, Sept. 2007, pp. 35 - 43

[2]               Deelstra, S., Sinnema, M. and Bosch, J. “Experiences in Software Product Families: Problems and Issues during Product Derivation,”  Proc. Software Product Lines Conference, SPLC3, Boston, Aug. 2004, LNCS 3154, Springer-Verlag, pp. 165-182

[3]               Cordy, J.R. “Comprehending Reality: Practical Challenges to Software Maintenance Automation”, Proc. 11th Int. Workshop on Program Comprehension, IWPC’03, Portland, Oregon, May 2003, pp. 196-206 (keynote)

[4]               Reading about Aspect-Oriented Programming for all students to read: http://www.javaworld.com/javaworld/jw-01-2002/jw-0118-aspect.html

[5]               Some brief introduction to Aspect-Oriented Programming: find on  http://aosd.net/ , introduction in  Robert E. Filman, Tzilla Elrad, Siobhán Clarke, and Mehmet Aksit: Aspect-Oriented Software Development, Addison-Wesley, 2005, ISBN 0-321-21976-7 (RBR)

[6]               Capilla, R. and Duenas, J. “Light-weight Product-Lines for Evolution and Maintenance of Web Sites,” CSMR’03

[7]               Krueger, C. “Salion’s Experience,” PFE5, 2003

[8]               Krueger, C. “Eliminating the Adoption Barrier,” Point-Counter Point Column, in IEEE Software, special issue on Initiating Software Product Lines, July/August 2002, pages 28-31 http://www.biglever.com/papers/PointCounterPoint.pdf

[9]               Christof Ebert & Michel Smouts “Tricks and Traps of Initiating a Product Line Concept in Existing Products,” ICSE’03

Classification of similarity patterns and detecting similarity patterns in software:

[1]   Basit, A.H. and Jarzabek, S. “Detecting Higher-level Similarity Patterns in Programs,” ESEC-FSE'05, European Software Engineering Conference and ACM SIGSOFT Symposium on the Foundations of Software Engineering, ACM Press, September 2005, Lisbon, pp. 156-165

[2]   CM/CA technology summary

Case study with CVS:

Chapters from Effective Software Maintenance and Evolution: Reused-based Approach (not for wide distribution):

Evolution of versions and configuration management

Evolution with mixed-strategy approach: an example

Tools for the project

Download XVCL processor, documentation, demo, case studies, etc. from: http://xvcl.comp.nus.edu.sg

Download, install and use XVCL Workbench:

a.       Prerequisites:

                                                   i.      Java Runtime Environment 5.0 or above

                                                 ii.      Eclipse 3.2 or above

b.      XVCL Workbench can be installed directly from your Eclipse with following steps:

                                                   i.      From your Eclipse main Menu, go to "Help/Software Updates/Find and Install…"

                                                 ii.      Choose "Search for new features to install" and click Next

                                                iii.      Click on "New Remote Site" and enter XVCL Workbench Update Site and http://xvcl.comp.nus.edu.sg/update/ for Name and URL boxes respectively

                                               iv.      Click Finish

                                                 v.      In the next Dialog page, just tick on "XVCL Workbench" and click Next

                                               vi.      Accept the agreement in the next page and click Next again

                                              vii.      Click Finish to start Installing.

                                            viii.      Eclipse will connect to our update website to download and install the XVCL Workbench plug-in automatically. It needs to restart upon finishing.

                                               ix.      When Eclipse is up again, go to Window/Open Perspective/Other… and double click on XVCL Development.

c.       Get User Guide via XVCL Workbench Help. Start using XVCL Workbench.

If you need a CASE tool for UML modeling.

Rational Rose is installed on PCs in SOC1, Computation Lab2 (06-16) and Lab3 (06-18)

You can download a free copy of UML tool from http://argouml.tigris.org/ or http://www.ilogix.com/modeler/ 

Lecture outline

The lectures will emphasize a software Product Line (PL) approach to reuse (other names of PL are a program family or product family). A PL comprises a collection of similar systems (for example, payroll systems). PL members may share certain user requirements, a database, user interface or may run on the same platform. Often, PL members display similarities in more than one of the above areas. Systematic, reuse-based development and maintenance of Product Lines emerges as one of the most promising ways to increase software productivity and quality.

Introduction to software reuse

  1. trends in software engineering
  2. motivation for software reuse
  3. an overview of the product line approach

XVCL briefing

    --- XVCL is a language, method and tool for reuse that you will use in your project

Case studies on product lines and elimination of redundancies with XVCL

Design for reuse with information hiding and layered design

Domain engineering: a systematic support for software Product Lines (PL)

  1. a blueprint for domain engineering - activities and artifacts
  2. scoping a PL
  3. software architectures and their role in PLs
  4. construction-time versus runtime software architectures

Component-based Software Engineering (CBSE)

  1. distributed component platforms (DCP) - enabling technologies for CBSE: DCOM/ActiveX , JavaBeans, CORBA implementations
  2. modeling runtime components and runtime software architectures
  3. scripting languages
  4. relation of component technology to Product Lines

Domain analysis for Product Lines

  1. analysis of requirements for PLs
  2. techniques for modeling commonalties and variations across PL members
  3. Feature-Oriented Domain Analysis
  4. case studies: modeling a Facility Reservation System domain, a generic Failure Detection system,

Design of product line architectures

  1. review of software engineering techniques for handling system families:
    1. information hiding, layered design
    2. pre-processing, configuration management, PCL
    3. OO frameworks
    4. frame technology
    5. table-driven techniques
    6. generative techniques
    7. other techniques
  2. case study: a generic architecture for a family of Facility Reservation Systems
    1. a component-based generic architecture
    2. use of generative techniques for customization and evolution of a generic architecture
  3. separation of concerns revisited
    1. multidimensional separation of concerns in hyperspaces
    2. aspect-oriented programming (AOP)

Problems with reusing implementation level components: software - hardware analogy

FAQ

  1. When should we submit materials for our presentation in the class?
    E-mail your materials to me and I will forward to all the students or bring enough copies to the class.
  2. Is it a technical, managerial or theoretical course?
    It is primarily a technical course.
  3. What are percentages (marks) for continuous assessment and the final exam?
    CA is 40% and final exam - 60%.