Welcome to:

Course CS6201: Software Reuse (2010)

Last changed: Tuesday, April 13, 2010

This page contains  the following course information:

Course instructors     Important dates     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              

Course Instructor

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

Course info

Lectures: Wed 18:30-20:30 SR5 (COM1/201), first lecture: January 13, 2010

Consultation Hours: Wed 16:00 - 18:00, in my office, S15-06/08

Exam: 27 APR 2010 Morning

Presentation schedule (updated March 22, 2010)

Please refer to topics for presentations for readings related to presentations.

 

At least one week before the presentation, please let me know pointers to papers that you use for presentation, and I will circulate it to all the students.

 

Date

Students

Topic

Lectures

24 Feb

Li Lirong

Topic A: Programming language features for generic design and reuse (programming language D 2.0 and others)

XVCL briefing, set #2

3 March

Venkat Ramanan

Topic 1: Aspect-Oriented Programming

Software clones and Buffer library study, set #3

10 March

Marcel Boehme

Topic B: Reuseware: Invasive Software Composition

Software clones and Buffer library study, set #3

17 March

Guest lecture by Ulf Pettersson, ST Electronics (Info-Software Systems) Pte Ltd

24 March

Ye Hai Feng and Sai Nay Lynn

Topic 7: Web technologies

Software clones and Buffer library study, set #3

7 April

Bui Trong Anh and Vu Tinh Ky

Topic 8: Model-Driven Development (MDD)

 

14 April

Petrus Cornelis Johannes Bruin

Topic 11: SCM support for reuse and product lines

 

Important dates (updated Monday, December 07, 2009)

 

Dates

Presentations

Project

First four weeks: Jan 13 – Feb 3, lectures only

 

 

by Jan 21

Form presentation teams and select presentation topic from

topics for presentations.

e-mail to me:

Team name

Topic selected for presentation (topic number and title)

Team members

student matric number

student name

e-mail

etc.

 

 

 

 

by Feb 11

 

Form project teams (if different from presentation team)

e-mail to me:

Team name

Team members

student matric number

student name

e-mail

etc.

 

 

Include one-page project description.

Feb 10

from this week, each session will consist of 1 h. lecture and 1 h. presentation

presentations start

 

Feb 13 – 21

Recess week

March 5

 

project draft due

 

 

 

Sunday April 25 midnight

 

final project report due

Please submit softcopy of your report and code in zipped file.

Latest News:

Posted April 10, 2010

Project report deadline: All the CA work in courses must be completed before exams start; the deadline for project report is Sunday April 25 midnight

Please submit softcopy of your report and code in zipped file.

Posted April 10, 2010

Readings for the exam

Posted March 3, 2010

You can download lecture notes Berkeley DB case study.pdf, CS6201-4-more on PL.pdf, and  CS6201-5-DA.pdf

Posted March 1, 2010

Presentations are graded by both students and instructor.

Please grade and comment on student presentations and enter into this form Student presentation grades and comments.xlsx

Return the form to me after last presentation, latest by 17 April. Thank you.

Posted February 12, 2010

You can download lecture notes set #3 Lecture Notes   

Updated slides set #1: LN\CS6201-1-intro updated 12Feb2010.pdf

Added pointers to clone detectors in Tools section

Updates in section Readings for the course

I reorganized papers and annotated them with additional information. I added papers describing difficulties in achieving generic solutions (avoiding duplication) for reuse with PHP:

Rajapakse, D.C. and Jarzabek, S. “Practical Limits of Applying Dynamic Page Generation Techniques in Web Application Design: a Trade-off Analysis,” ICSE 2007; – shows how PHP falls short of addressing systematic reuse 

Rajapakse, D. and Jarzabek, S. “Towards generic representation of web applications: solutions and trade-offs,” Software, Practice & Experience, Volume 39 Issue 5, April 2009, pp. 501 – 530, Published Online: 27 Nov 2008 – extends ICSE’07 paper with explanation how XVCL can be applied on top of PHP for better reuse

Reading plan for coming weeks

For lectures Feb 17 and 24: Please check papers in Section Readings for Lecture Notes sets #1 and #2 – introduction to SPL and XVCL: [1]-[5] [7][9]

For lectures March 3 and 10: papers in Section Readings for Lecture Notes set #3 - Problem of similarity patterns, software clones and generic design

Posted January 26, 2010

Readings:

Please continue reading throughout the course based on Readings for the course

Posted December 6, 2009

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

You can download lecture notes set #1 and #2 from Lecture Notes   

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

Presentations are graded by both students and instructor.

Please grade and comment on student presentations and enter into this form Student presentation grades and comments.xlsx

Return the form to me after last presentation, latest by 17 April. Thank you.

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 21: 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 4

 

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 5

 

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.

Sunday April 25, midnight

 

Final Project Report    

Please submit softcopy of your report and code in zipped file.

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 draft will be accepted, but you do not get 3 marks.

2.      Final Project Report: The penalty for the late final project is 2 marks for each day. Reports will be accepted until April 23 (inclusive).

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.

Topics covered in the course, lecture schedule

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.

Week 1: Software Product Line (SPL) approach: concepts and examples

Week 2: XVCL motivation and overview

Week 3, 4: XVCL Briefing

    --- XVCL is a language, method and tool for reuse that you will use in your project xvcl.comp.nus.edu.sg

Week 5, 6: Software clones and elimination of software redundancies

Week 7.  More about SPL, domain engineering

Week 8. Domain Analysis

  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,

Week 9, 10. SPL case studies

Other related topics

  1. Aspect-oriented Programming
  2. Feature-Oriented Programming
  3. General software engineering principles and reuse

References 

Books related to various topics of the course, available in our library, in case you have special interest in certain topics:

Effective software maintenance and evolution: Reuse-based Approach /S. Jarzabek

 Facts and fallacies of software engineering / Robert L. Glass.

 Software product lines : practices and patterns / Paul Clements, Linda Northrop.

 Generative programming : methods, tools, and applications / Krzysztof Czarnecki and Ulrich W. Eisenecker

Program generators with XML and Java / J. Craig Cleaveland.

 Reuse based software engineering : techniques, organization, and measurement / Hafedh Mili ... [et a

 Aspect oriented software development / Robert E. Filman ... [et al.].

I.               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.

A.         Readings for Lecture Notes sets #1 and #2 – introduction to SPL and XVCL

[1]   XVCL technology summary

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

[3]   Controlling Software Complexity by Unifying Similarity Patterns - explains the software similarity phenomenon and  XVCL in context of software complexity; also, highlights relation to component and other technologies

[4]   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

[5]   XVCL Tutorial.

[6]   Step-by-step introduction to XVCL (optional)

General SPL readings:

[7]   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

[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]   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

[10]           Christof Ebert & Michel SmoutsTricks and Traps of Initiating a Product Line Concept in Existing Products,” ICSE’03

B.         Readings for Lecture Notes set #3 - Problem of similarity patterns, software clones and generic design

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

A study of cloning in Buffer library

Buffer library is a good example of clones that are difficult to eliminate using conventional techniques. We can also view Buffer library as a special type of an SPL, in which each buffer class is a member of SPL. At the same time, it is a good case study from which to learn what XVCL can do and how to use it.

In Section 6 in XVCL Tutorial there is a simple introduction to XVCL, complemented by explanation of the XVCL solution for Buffer library.

See case study “Eliminating redundancies” at xvcl.comp.nus.edu.sg. There is a step-by-step explanation of the solution.

Detailed analysis of cloning and XVCL solution for Buffer library also described in:

Software similarities: symptoms and causes

Mixed-strategy approach to generic design – based on Jarzabek, S. and Li, S. ”Unifying clones with a generative programming technique: a case study,” Journal of Software Maintenance and Evolution: Research and Practice, John Wiley & Sons, Volume 18, Issue 4, July/August 2006, pp. 267-292,  extended version of ESEC-FSE’03 paper

[1]   Jarzabek, S. “Genericity -  a “Missing in Action” Key to Software Simplification and Reuse,” discusses generic design; gives a glimpse of many projects with XVCL and lessons learned; contains more comprehensive description of software similarity problem; this is extended version of paper published in 13th Asia-Pacific Software Engineering Conference, APSEC’06, IEEE Comp. Soc., 6-8 December 2006, Bangalore, India, pp. 293-300

[2]   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 – STL is a hallmark of generic design, still we find many clones in certain parts of STL – why?

C.        Readings on product line projects  with XVCL and Web applications:

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

[1]   Summary of projects with mixed-strategy approach

[2]   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; describes  industrial application of XVCL to ASP portal product line;

[3]  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

[4]   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):

[5]   Other techniques related to XVCL

[6]   Evaluation of the mixed-strategy approach

D.        Problem of similarity patterns in software in Web Applications:

[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; – shows how PHP falls short of addressing systematic reuse 

[4]               Rajapakse, D. and Jarzabek, S. “Towards generic representation of web applications: solutions and trade-offs,” Software, Practice & Experience, Volume 39 Issue 5, April 2009, pp. 501 – 530, Published Online: 27 Nov 2008 – extends ICSE’07 paper with explanation how XVCL can be applied on top of PHP for better reuse

E.         General papers, read any time during the course:

[1]               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)

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

[3]               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)

F.         Classification of similarity patterns and detecting similarity patterns in software:

[1]   Basit, H. A., Jarzabek, S. “Data Mining Approach for Detecting Higher-level Clones in Software,” IEEE Trans. on Soft. Eng. July/August 2009 (vol. 35 no. 4) pp. 497-514; Published online January 2009; short version: 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]   Basit, H. A., Jarzabek, S. “Data Mining Approach for Detecting Higher-level Clones in Software,”  IEEE Trans. on Soft. Eng.,

[3]   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

XVCL Workbench and Processor

Read information about XVCL concept, documentation, demo, case studies, etc. from: http://xvcl.comp.nus.edu.sg

To use XVCL processor, you either use standalone processor or XVCL Workbench. You’re encouraged to use the XVCL Workbench.

-         XVCL Workbench includes XVCL Processor integrated in Eclipse and its tools, go to http://xvcl.comp.nus.edu.sg/forum/viewtopic.php?t=106 for information. Manas’s post gives some overview about the tools, Tin’s post gives detailed instruction how you can install it, get Workbench User Guide (info about project property setting such as –B to remove extra blanks is also there), etc.

-         If you want to use standalone version, go to http://sourceforge.net/projects/fxvcl/files/. Please download version 3.2.3 in file “edu.xvcl.core_3.2.3_bin.zip”. Refer to file “readme.txt” in that zip which has instruction to use the standalone processor.

Clone detectors

CCFinderX

– I will send you a link for download if you want to use CCFinder.

CCFinder is a commercial product. You can use it only for education and research. If you wish to use it for commercial purpose or in your company, please contact Prof Katsuro Inoue inoue@ist.osaka-u.ac.jp

CCFinder is token-based clone detector, with front-end for many programming languages, can find simple clones (similar code fragments) that differ in parametric way (e.g., in identifier or keyword names at the corresponding positions in cloned code fragments), gapped clones (inserted or deleted lines). There is visualization tool Gemini that helps analyze cloning situation. I think gapped clones are shown only in Gemini, they are not found by CCFinder.

PMD's Copy/Paste Detector (CPD)

PMD: http://pmd.sourceforge.net/   Read about the CPD: http://pmd.sourceforge.net/cpd.html

CPD works with Java, JSP, C, C++, Fortran and PHP code. You define front-ends for other languages.

Modeling tools

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/  

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%.