• Level: Senior
  • Period: Fall Semester 2022-2023

Where ? When ?

  • Theory & Exercises all during the same time slot
  • Time: MoWe 2:30PM-3:45PM
  • Location: CBC C212

Credits: 3
Prerequisites: CS 472 with a grade of C or better.
Notes: This course is crosslisted with CS 673. Credit at the 600-level requires additional work.
Introductory Slides

Rationale

Synthesis (term project) course to involve students, working in teams, in all of the activities necessary to define, model, implement, test, document, and deliver a program product. Students practice Object-Oriented and Component Based development and utilize UML and CASE tools to model the product and document the process.

Catalog Description:

This course explains the ‘state-of-the-art’ changing an existing software systems. This includes an introduction to the recent research, as well as an overview of the principles techniques and skills applied in practice today. Students will acquire a range of principles, techniques, and skills that are currently being used for changing an existing software systems. Consequently, the course has a practical ring to it with a minimal theoretical content (taught as reengineering patterns), several lab-sessions (experimenting with a suite of reengineering tools) and one project (extending an existing large software system).

Objectives (expected learning outcomes)

To goal of this course is to become acquainted with a broad selection of principles, techniques and skills used when changing existing software systems. After this course, a student will be able to:

  • assess which parts should be reengineered first;
  • identify the risks and opportunities for a given re-engineering project;
  • extract coarse-grained and fine-grained design models;
  • select the most appropriate integration strategy;
  • exploit tests during program change;
  • solve the typical problems of an object-oriented re-engineering project.

Time schedule

To realize these objectives, the course is organized as follows. We start with an introductory class outlining the state of the art in re-engineering and proceed with a couple of lab sessions (marked with [L] in the detailed time-schedule), in which several reverse and re-engineering tools will be tested under lab conditions. Afterward, students will experiment with these tools and the associated techniques in realistic circumstances by means of a Project, which will also serve as the main outcome.

Milestones

  • Announce Project: At the outset of the project, students should announce which software system they intend to reengineer (yes, you can propose one yourself) and whether they intend to do so individually or in groups (duo projects are encouraged).
  • Precondition Report - Project Setup. When announcing the project, students should demonstrate that they meet the necessary pre-condition to start the project. They need to have a Git repository for their project and also show the ability to successfully build the project.
  • Intermediate Report - Tool Usage: One third into the project, each group should hand in a status report containing screenshots of the tools applied on the project, and interpretations about these results.
  • Concluding Session: Two thirds into the project, there is a concluding session, where we will reflect on the lessons learned during the project.
  • Final Report: During the exam period you hand in a final report, listing the solutions for the problems you came across and what you learned from them. You will defend this report orally.

Below is the detailed time-schedule, which is subject to change. Changes will be notified over e-mail. [Last modified on August, 31th, 2022.]

Week Date Class Topic Date Class Topic
01 Mo 08/29 [T] Class overview We 08/31 [T] Introduction
02 Mo 09/05 Public Holiday We 09/07 [L] Metrics and Visualization 1
03 Mo 09/12 [L] Refactoring assistants 1 We 09/14 [L] Refactoring assistants 2
04 Mo 09/19 [L] Software Integration 1 We 09/21 [L] Software Integration 2
05 Mo 09/26 [L] Dynamic Analysis: Testing 1 We 09/28 [L] Dynamic Analysis: Testing 2
06 Mo 10/03 [L] Mining Software Repositories 1 We 10/05 [L] Mining Software Repositories 2
> hand out assignment here
07 Mo 10/10 Free project Work We 10/12 Free project Work
[Milestone 0] Groups Assembled +
Precondition report
08 Mo 10/17 Free project Work We 10/19 Free project Work
09 Mo 10/24 Free project Work We 10/26 Free project Work
[Milestone 1] Report on usage of tools
10 Mo 10/31 Free project Work
[Milestone 1] Feedback Session
We 11/02 Free project Work
11 Mo 11/07 Free project Work We 11/09 Free project Work
[Milestone 2] Intermediate Report
12 Mo 11/14 Free project Work We 11/16 Free project Work
13 Mo 11/21 Concluding Remarks
[Milestone 2] Feedback session
We 11/23 Free project Work
14 Mo 11/28 Free project Work We 11/30 Free project Work
15 Mo 12/05 Free project Work We 12/07 Free project Work >> Final Report
16 Mo 12/12 Free project Work We 12/14 Oral Exam



Course Material

All students should have read the following book; acquiring the terminology inside is required to write the final project report.

For the lab sessions there is the following material (please only get the materials after it is updated to the current year):

  1. Metrics and Visualization (Updated 2022-08-16)
  2. Refactoring assistants (Updated 2022-08-16)
  3. Software Integration (Updated 2022-08-16)
  4. Dynamic Analysis: Testing (Updated 2022-08-16)
  5. Mining Software Repositories (Updated 2022-08-16)

Project

To demonstrate that you indeed acquired the range of principles, techniques, and skills that are currently being used for changing a project students must restructure an existing software system to prepare for a given suite of new requirements. Note, that the extra functionality as such needs not be implemented; but that the existing design must be adjusted in such a way that adding the new functionality becomes a proverbial “piece of cake”.

Project: Assignment 2022

Milestones

  • Monday 12-Oct-2022 - 11h59 pm - Project Definition & Group Assembly & Precondition Report: Confirm your project (standard or custom) and group members by e-mail to John Businge with: (please check the details on the subject and message content in the Assignment page). Include a precondition report, details of this report to follow on the project page.
  • Wednesday 26-Oct-2022 - 11h59 pm - Intermediate Report - Tool Usage: Send the Intermediate Report (in PDF format) by e-mail to Dr. John Businge.
  • Wednesday 16-Nov-2022 Concluding Session & Feedback Session
  • Wednesday 30-Nov-2022 11h59pm (Date to be confirmed; one week before the oral exam) - Final Report: Send the Report (in PDF format) by e-mail to Dr. John Businge.
  • The oral exams themselves are scheduled on XXX Date to be confirmed XXX. See the detailed schedule below

Group Work

It is possible (even encouraged) to work out the assignment in a group, but such a group will preferably not consist of more than three individuals. Of course, the expectations towards the end result of such a project are related to the size of the group. Also, remember that all members of the group will be given the same grade (report-wise).

Exam

The end result of this project consists of a written project report that needs to be elaborated upon during an oral project defense. Emphasis is on the solutions for the problems you came across and what you learned from them. Everything you claim in your project report must be backed up during the defense, using code and electronic documentation. The actual exam (= oral defense) takes place during the regular exam period and is scheduled accordingly. The report needs to be handed in a week beforehand electronically.

Guidelines for the Intermediate Report - Tool Usage

This report should be concise and to the point; its main purpose is to demonstrate that you have had personal hands-on experience with the tool suite explored in the lab sessions.

For each tool

  • show at least one screen-dump with the results of applying the tool on the project
  • provide brief interpretations (telegram style) of what you observe and what actions you would consider
  • give estimations on when your tasks will be completed

Guidelines for the Final Report

  • Short summary (Who, What, How): Who are the target users? What was the problem? How did we go about things?
  • Status: What did you do, and what is (possibly) going to happen next?
  • Which techniques and reengineering patterns did you use during requirements analysis, design, implementation, and testing. How did you identify the differences between the old requirements and the new ones, the old design and the new one? How did you transform the existing code into the new code? How did you ensure these restructurings did not introduce any errors?
  • Project process: Overview of planning, time schedule, and intermediary problems.

In the project report and during the project defense you should express yourself using the right terminology. (cfr . Serge Demeyer, Stephane Ducasse, and Oscar Nierstrasz. Object-Oriented Reengineering Patterns. Morgan Kaufmann, 2002).

Evaluation Criteria

A. PRECONDITIONS: You have to meet the following entry criteria; if you don’t your project report will be discarded without evaluation

  • You have submitted the Intermediate Report on Tool Usage on time
  • You did not copy other students work (we do check for plagiarism)

B. SELECTION: In order to receive a passing grade (MINIMUM NORM), you have to show that you are at least capable of restructuring an existing software system.

  • You can extract the existing design from the available data (i.e. reverse engineering)
  • You can transform the existing source code so that it is more fit to implement the new requirements (i.e. refactoring)
  • You can demonstrate that the code transformations have not affected the existing functionality (i.e. regression tests)

C. DIVERSIFICATION: To do better than a passing grade, you have to show that you have control over the restructuring process.

  • Which techniques (re-engineering patterns) did you use for the different phases? To what extent are you able to back up your choice?
  • How did you analyze the new requirements? To what extent will you be able to maintain control over future changing requirements?
  • How did you validate the design (architecture) that you extracted from the source code? How did you use this design to identify potential problems?
  • How did you handle the code transformation itself? Why will these transformations help to implement the new functionality which is to be added?
  • How did you check on the quality of your test procedure? To what extent are you able to justify the amount of time you put into the testing, related to the existing functionality and the improvements that were made?
  • How did you handle the restructuring process itself? How accurate were your planning and estimation? How did you react to unanticipated circumstances?

The following check-list will be used to assess your reengineering project

  • Checklist reengineering Pre-conditions Report PDF
  • Checklist reengineering Intermediate Report PDF
  • Checklist reengineering Final Report PDF

Assessment (CS 673):

Students in CS 673 do the same course as those in 473, with two exceptions which are detailed on the project page.

Detailed exam schedule (Last modified on Monday, -)

Below is the detailed schedule for the oral exam (i.e. discussing the project report and your individual role in the project). If you see your name is missing, or if you spot any other mistakes, please contact Dr. John Businge immediately.

  • Exams in room - (office of Dr. John Businge)
  • To be determined

Attendance:

While I will not directly track your attendance, your class, even online, is designed to be interactive with your classmates. The purpose of this is to encourage active learning, where you engage with the material during the class sessions. As such, a video would not do the course justice and you are highly recommended to attend the online sessions.

Academic Misconduct

Academic integrity is a legitimate concern for every member of the campus community; all share in upholding the fundamental values of honesty, trust, respect, fairness, responsibility and professionalism. By choosing to join the UNLV community, students accept the expectations of the Student Academic Misconduct Policy and are encouraged when faced with choices to always take the ethical path. Students enrolling in UNLV assume the obligation to conduct themselves in a manner compatible with UNLV’s function as an educational institution. Many of us on the computer science faculty share, or copy, very similar statements about misconduct. An example of academic misconduct is plagiarism. Plagiarism is using the words or ideas of another, from the Internet or any source, without proper citation of the sources. See the Student Academic Misconduct Policy (approved December 9, 2005) located at: http://studentconduct.unlv.edu/misconduct/policy.html

Department of Computer Science Academic Integrity Policy

Each student enrolled in a course offered by the Department of Computer Science is expected to do his/her own work when preparing written or programming assignments, as well as, examinations. He/She must adhere to the academic integrity policy provided by his/her instructor and the university. It is also each student’s responsibility to notify the instructor if he/she becomes aware of any activities that would violate the academic integrity policy of the class. I reserve the right to fail any student, from the assignment or the course, for violating the policy, at my discretion.

The University requires all members of the University Community to familiarize themselves with and to follow copyright and fair use requirements. You are individually and solely responsible for violations of copyright and fair use laws. The university will neither protect nor defend you nor assume any responsibility for employee or student violations of fair use laws. Violations of copyright laws could subject you to federal and state civil penalties and criminal liability, as well as disciplinary action under University policies. Additional information can be found at: www.unlv.edu/provost/copyright

ADA Statement:

Students who have special needs or disabilities that may affect their ability to access information and/or material presented in this course are encouraged to contact me or appropriate on campus entities for additional disability-related educational accommodations. Also, excellent students with a documented disability are sometimes eligible for internship opportunities through a grant program out of the University of Washington. Those students that are interested may optionally get in touch with me about this if they wish.

Disability Resource Center (DRC)

The UNLV Disability Resource Center (SSC-A 143, http://drc.unlv.edu/, 702-895- 0866) provides resources for students with disabilities. If you feel that you have a disability, please make an appointment with a Disabilities Specialist at the DRC to discuss what options may be available to you. If you are registered with the UNLV Disability Resource Center, bring your Academic Accommodation Plan from the DRC to the instructor during o ce hours so that you may work together to develop strategies for implementing the accommodations to meet both your needs and the requirements of the course. Any information you provide is private and will be treated as such. If you desire to maintain the confidentiality of your request, please do not approach the instructor before or after class to discuss your accommodation needs.

Incomplete Grades

The grade of I - Incomplete - can be granted when a student has satisfactorily completed three-fourths of course work for that semester/session but for reason(s) beyond the student’s control, and acceptable to the instructor and the Department, cannot complete the last part of the course, and the instructor believes that the student can finish the course without repeating it. The incomplete work must be made up before the end of the following regular semester. If course requirements are not completed within the time indicated, a grade of F will be recorded and the GPA will be adjusted accordingly. Students who are fulfilling an Incomplete do not register for the course but make individual arrangements with the instructor who assigned the I grade.

Tutoring

The Academic Success Center (ASC) provides tutoring and academic assistance for all UNLV students taking UNLV courses. Students are encouraged to stop by the ASC to learn more about subjects offered, tutoring times and other academic resources. The ASC is located across from the Student Services Complex (SSC). Students may learn more about tutoring services by calling 702-895-3177 or visiting the tutoring web site at: http://academicsuccess.unlv.edu/tutoring/

UNLV Writing Center

One-on-one or small group assistance with writing is available free of charge to UNLV students at the Writing Center, located in CDC-3-301. Although walk-in consultations are sometimes available, students with appointments will receive priority assistance. Appointments may be made in person or by calling 702-895- 3908. The student’s Rebel ID Card, a copy of the assignment (if possible), and two copies of any writing to be reviewed are requested for the consultation. More information can be found at: http://writingcenter.unlv.edu/

UNLV Library Resources

Students may consult https://www.library.unlv.edu/consultation with a librarian on research needs. For this class, the subject librarian is Sue Wainscott. See: https://www.library.unlv.edu/contact/librarians_by_subject for more information. UNLV Libraries provides resources to support students’ access to information. Discovery, access, and use of information are vital skills for academic work and for successful post-college life. Access library resources and ask questions at https://www.library.unlv.edu.

Rebelmail

By policy, faculty and staff should e-mail students’ Rebelmail accounts only. Rebelmail is UNLV’s official e-mail system for students. It is one of the primary ways students receive official university communication such as information about deadlines, major campus events, and announcements. All UNLV students receive a Rebelmail account after they have been admitted to the university. Students’ e-mail prefixes are listed on class rosters. The suffix is always @unlv.nevada.edu. Emailing within WebCampus is acceptable. Final Examinations The University requires that final exams given at the end of a course occur at the time and on the day specified in the final exam schedule. See the schedule at: http://www.unlv.edu/registrar/calendars.

Caveat:

The schedule and procedures for this course are subject to change. It is the student’s responsibility to learn of and adjust to changes.

COVID-19:

COVID-19 has caused serious problems for all of us, students and faculty alike. It is possible that any of us this semester will have even more serious health or life challenges. Please keep this in mind when interacting with team mates, faculty, and others. A little bit of kindness and understanding goes a long way.