SENG 371 Software Evolution

Professor Hausi A. Müller, PhD, PEng
Department of Computer Science
Faculty of Engineering
University of Victoria

Last updated
April 18, 2013

Assignment 3

Due date

  • Thu, April 4, 2013 (i.e., Fri before 1 am)

Objectives

  • Introduction to AntiPatterns
  • Introduction to refactoring and refactoring tools
  • Introduction to tool comparisons

Instructions

This assignment consists of three parts. In Part I you are to define selected software maintenance and evolution terms. In Part II you are to investigate two AntiPatterns. In Part III you are to investigate and compare two software refactoring tools.

Part I

In this part answer simple questions and define the selected terms. Each definition may be as short as a single sentence or as long as a paragraph. Use textbooks, the library, and the Web to research these terms. Don't assume that these terms be discussed in class.

  • Data and control integration
  • End-user programmability and extensibility
  • Design pattern
  • Antipattern
  • Blob antipattern
  • Mental model (in program comprehension)
  • Cognitive model (in program comprehension)
  • Cognitive support (in program comprehension)

Part II

In this part you are to investigate two AntiPatterns

  • Vendor-Lock-In AntiPattern
  • Analysis Paralysis AntiPattern

For both patterns describe in detail

  • the problem
  • the causes
  • the symptoms
  • the refactored solution

For both AntiPatterns use a concrete example to illustrate the problem and the solution.

Part III

Recently, refactoring of object-oriented code has become a popular function of software development environments. You are to explore, compare, and contrast the capabilities of two refactoring tools: IBM's Eclipse and a refactoring tool of your choice (e.g., Microsoft Visual Studio). Eclipse provides a powerful set of automated refactorings for Java.

In this part, you are to investigate these two software refactoring tools and compare their strengths and weaknesses. Answering the following questions might help you in this investigation.

  • What are the key refactoring capabilities (i.e., functions or tasks that can be performed)?
  • What software artifacts are affected by individual refactoring operations?
  • What capabilities are missing?
  • What artifacts cannot be manipulated?
  • What kind of views does the tool support?
  • How can the tool be extended?
  • Is the tool end-user programmable?
  • Are there any levels of indirection built into the tool to extend the tool?
  • Can other tools use it as a refactoring engine?
  • Does the tool support UML (e.g., affect or refactor UML diagrams, invoke UML tools)?
  • How does the tool scale for large information spaces?
  • How does the tool integrate with other software development tools?
  • How useful is the on-line documentation and demos of the tool?
  • How do the tools support software evolution?
  • How can you refactor a "Blob AntiPattern" with these tools?

Your report should convince the grader that you studied these tools extensively. The report should be approximately four pages in length including diagrams, figures, and tables (i.e., font size 12, single spaced). The organization of the report is critical. The report must assess each tool individually as well as compare the two tools (e.g., using the kinds of questions posed above).

Useful references:

Important

The work you turn in has to be your own work. You can consult with other students and consult the web, but in the end you have to turn in your own solution in your own words.

How to submit

Submit your assignment as follows:

  1. Typeset your submission neatly using Word, Pages, or LaTex and generate pdf documents.

  2. Please use the following naming conventions for your file:

      A3-lastName-UVICID.pdf

      or alternatively

      A3-lastName-UVICID-part1.pdf
      A3-lastName-UVICID-part2.pdf
      A3-lastName-UVICID-part3.pdf

  3. Please mail your documents using the following submission interface (ideally as one .pdf file)
    seng371@uvic.ca

Marking

  • Part I is worth 20%; Part II 30%, and Part III 50%.